朴素贝叶斯分类器python代码实现
时间: 2024-09-04 10:00:27 浏览: 53
朴素贝叶斯分类器算法Python代码实现
朴素贝叶斯分类器是一种基于贝叶斯定理和特征条件独立假设的分类方法,适用于文本分类、垃圾邮件过滤、情感分析等领域。
以下是使用Python实现朴素贝叶斯分类器的代码示例:
```python
import numpy as np
class NaiveBayes:
def __init__(self):
self.classes = None
self.class_priors = None
self.feature_probs = None
def fit(self, X, y):
# 获取类别
self.classes = np.unique(y)
n_classes = len(self.classes)
# 计算每个类别的先验概率
self.class_priors = np.zeros(n_classes)
for i, c in enumerate(self.classes):
self.class_priors[i] = np.sum(y == c) / float(len(y))
# 计算每个类别下每个特征的条件概率
n_features = X.shape
self.feature_probs = np.zeros((n_classes, n_features, 2))
for i, c in enumerate(self.classes):
X_c = X[y == c]
for j in range(n_features):
self.feature_probs[i, j, 0] = np.sum(X_c[:, j] == 0) / float(len(X_c))
self.feature_probs[i, j, 1] = np.sum(X_c[:, j] == 1) / float(len(X_c))
def predict(self, X):
y_pred = []
for x in X:
probs = []
for i, c in enumerate(self.classes):
# 计算后验概率
posterior_prob = np.log(self.class_priors[i])
for j in range(len(x)):
posterior_prob += np.log(self.feature_probs[i, j, x[j]])
probs.append(posterior_prob)
# 取最大后验概率对应的类别作为预测结果
y_pred.append(self.classes[np.argmax(probs)])
return y_pred
```
以上代码实现了一个简单的朴素贝叶斯分类器,其中`fit`方法用于训练模型,`predict`方法用于预测新样本的类别。在训练过程中,先计算每个类别的先验概率,然后计算每个类别下每个特征的条件概率。在预测过程中,计算每个类别的后验概率,取最大后验概率对应的类别作为预测结果。
阅读全文