python实现贝叶斯分类器
时间: 2023-07-07 07:20:37 浏览: 146
纯python朴素贝叶斯分类器
好的,以下是一个简单的朴素贝叶斯分类器的 Python 实现:
```python
from collections import defaultdict
import math
class NaiveBayesClassifier:
def __init__(self):
self.classes = defaultdict(int)
self.words_count = defaultdict(lambda: defaultdict(int))
def train(self, documents, labels):
for i, doc in enumerate(documents):
label = labels[i]
self.classes[label] += 1
for word in doc.split():
self.words_count[label][word] += 1
def predict(self, document):
scores = defaultdict(int)
for label in self.classes:
score = math.log(self.classes[label])
for word in document.split():
count = self.words_count[label][word]
score += math.log((count + 1)/(sum(self.words_count[label].values()) + len(self.words_count[label])))
scores[label] = score
return max(scores, key=scores.get)
```
使用示例:
```python
docs = ["hello world", "goodbye world", "hello"]
labels = ["greeting", "farewell", "greeting"]
nb = NaiveBayesClassifier()
nb.train(docs, labels)
print(nb.predict("hello"))
# 输出:greeting
print(nb.predict("world"))
# 输出:farewell
```
在这个示例中,我们使用朴素贝叶斯分类器对文本进行分类,分类标签为“greeting”或“farewell”。在训练过程中,我们统计了每个类别的文本中每个单词出现的次数,然后使用这些统计信息进行分类。在预测过程中,我们计算了每个类别的概率得分,并返回得分最高的类别作为分类结果。
阅读全文