python用sklearn朴素贝叶斯实现新闻分类
时间: 2023-11-11 17:05:49 浏览: 109
首先,你需要准备好新闻分类的数据集。可以使用sklearn中自带的20 Newsgroups数据集,也可以使用其他的新闻数据集。
然后,你需要将数据集进行处理和预处理,例如去除停用词、提取特征等。
接下来,你可以使用sklearn中的CountVectorizer或TfidfVectorizer来将文本数据转换成数字特征向量。
最后,你可以使用sklearn中的朴素贝叶斯算法进行分类。sklearn中提供了三种朴素贝叶斯分类算法:MultinomialNB、BernoulliNB和GaussianNB。在文本分类中,MultinomialNB是最常用的算法,因为它适用于多项式分布的特征,而且在文本分类中效果比较好。
下面是一个示例代码:
```python
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# 加载数据集
newsgroups_train = fetch_20newsgroups(subset='train')
newsgroups_test = fetch_20newsgroups(subset='test')
# 特征提取
vectorizer = CountVectorizer(stop_words='english')
X_train = vectorizer.fit_transform(newsgroups_train.data)
X_test = vectorizer.transform(newsgroups_test.data)
y_train = newsgroups_train.target
y_test = newsgroups_test.target
# 训练模型
clf = MultinomialNB()
clf.fit(X_train, y_train)
# 预测分类结果
y_pred = clf.predict(X_test)
# 计算模型准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
这个示例代码使用了20 Newsgroups数据集,并将文本数据转换成数字特征向量。然后使用MultinomialNB算法进行分类,并计算模型的准确率。
阅读全文