基于sklearn的朴素贝叶斯
时间: 2024-05-04 14:18:17 浏览: 92
朴素贝叶斯分类器是一种基于贝叶斯定理的简单且高效的分类算法,它假设特征之间是相互独立的。在sklearn中,实现朴素贝叶斯分类器的类是`sklearn.naive_bayes`中的`MultinomialNB`和`GaussianNB`。
- `MultinomialNB`适用于文本分类问题,它假设特征是来自于多项式分布,即每个特征都是离散的,并且每个特征的可能取值个数是有限的。
- `GaussianNB`适用于连续数据的分类问题,它假设特征是来自于高斯分布。
下面是一个基于sklearn实现朴素贝叶斯分类器的示例代码:
```python
from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score
# 加载数据集
train_data = fetch_20newsgroups(subset='train')
test_data = fetch_20newsgroups(subset='test')
# 特征提取
vectorizer = TfidfVectorizer()
train_features = vectorizer.fit_transform(train_data.data)
test_features = vectorizer.transform(test_data.data)
# 构建模型
clf = MultinomialNB(alpha=0.01)
clf.fit(train_features, train_data.target)
# 预测
y_pred = clf.predict(test_features)
# 评估
accuracy = accuracy_score(test_data.target, y_pred)
print('Accuracy:', accuracy)
```
在上述代码中,我们使用`fetch_20newsgroups`函数加载了20类新闻文本数据集,并使用`TfidfVectorizer`类进行特征提取。然后,我们使用`MultinomialNB`类构建模型,并使用`alpha`参数控制平滑度。最后,我们使用`accuracy_score`函数计算分类准确率。
阅读全文