python代码实现朴素贝叶斯
时间: 2023-05-17 12:04:34 浏览: 127
朴素贝叶斯是一种基于贝叶斯定理的分类算法,常用于文本分类、垃圾邮件过滤等领域。以下是一个简单的 Python 代码实现朴素贝叶斯分类器的示例:
```python
import numpy as np
class NaiveBayes:
def __init__(self):
self.prior = None
self.conditional = None
def fit(self, X, y):
n_samples, n_features = X.shape
self.classes = np.unique(y)
n_classes = len(self.classes)
# 计算先验概率
self.prior = np.zeros(n_classes)
for i, c in enumerate(self.classes):
self.prior[i] = np.sum(y == c) / n_samples
# 计算条件概率
self.conditional = np.zeros((n_classes, n_features))
for i, c in enumerate(self.classes):
X_c = X[y == c]
self.conditional[i, :] = (X_c.sum(axis=0) + 1) / (np.sum(X_c) + n_features)
def predict(self, X):
y_pred = []
for x in X:
posteriors = []
for i, c in enumerate(self.classes):
prior = np.log(self.prior[i])
conditional = np.sum(np.log(self.conditional[i, :]) * x)
posterior = prior + conditional
posteriors.append(posterior)
y_pred.append(self.classes[np.argmax(posteriors)])
return y_pred
```
以上代码实现了一个简单的朴素贝叶斯分类器,其中 `fit` 方法用于训练模型,`predict` 方法用于预测新样本的类别。具体实现过程中,先计算先验概率和条件概率,然后利用贝叶斯公式计算后验概率,最终选择后验概率最大的类别作为预测结果。
阅读全文