python实现朴素贝叶斯
时间: 2023-11-29 11:07:00 浏览: 76
朴素贝叶斯Python实例及解析
5星 · 资源好评率100%
朴素贝叶斯(Naive Bayes)是一种简单而又高效的分类算法,常用于文本分类、垃圾邮件过滤、情感分析等任务。下面是使用Python实现朴素贝叶斯分类器的基本步骤:
1. 数据预处理:将文本数据转换成词向量,去除停用词和无关词汇。
2. 计算词频:统计每个词在文本中出现的次数。
3. 计算先验概率:计算每个类别(如正面、负面)的文本占比。
4. 计算条件概率:计算每个词在每个类别下出现的概率。
5. 预测分类:根据样本词向量,利用贝叶斯公式计算样本属于每个类别的概率,选择概率最大的类别作为预测结果。
下面是一个简单的朴素贝叶斯分类器的代码示例:
```python
import numpy as np
from collections import defaultdict
class NaiveBayes:
def __init__(self):
self.word_counts = defaultdict(lambda: defaultdict(int))
self.class_counts = defaultdict(int)
self.classes = set()
self.vocab = set()
def train(self, X, y):
for i in range(len(X)):
x = X[i]
c = y[i]
self.class_counts[c] += 1
self.classes.add(c)
for word in x:
self.word_counts[c][word] += 1
self.vocab.add(word)
def predict(self, X):
predictions = []
for x in X:
probs = []
for c in self.classes:
log_prob = np.log(self.class_counts[c])
for word in x:
count = self.word_counts[c][word] + 1
total = sum(self.word_counts[c].values()) + len(self.vocab)
log_prob += np.log(count / total)
probs.append(log_prob)
predictions.append(self.classes[np.argmax(probs)])
return predictions
```
这个代码实现了一个基本的朴素贝叶斯分类器,其中 train 方法用于训练模型,predict 方法用于预测新样本的分类。在训练过程中,我们统计每个类别下每个词的出现次数,以及每个类别的文本总数。在预测过程中,我们首先计算每个类别的先验概率,然后计算每个词在每个类别下的条件概率,最后利用贝叶斯公式计算样本属于每个类别的概率,选择概率最大的类别作为预测结果。
阅读全文