采用朴素贝叶斯分类器对本文进行分类关于20_newsgroups数据集的分类代码
时间: 2024-09-26 15:17:42 浏览: 48
Text classification_20_newsgroups_贝叶斯分类器_Fetch!_文本分类_
5星 · 资源好评率100%
朴素贝叶斯分类器是一种基于概率统计的简单而强大的机器学习模型,尤其适用于文本分类任务,如新闻主题分类。在Python的scikit-learn库中,可以使用`sklearn.naive_bayes`模块来进行这个过程。对于20_newsgroups数据集,这是一个包含20个新闻组的大型文本数据集,我们可以按照以下步骤进行分类:
首先,你需要导入必要的库并加载数据:
```python
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
# 加载数据
twenty_train = fetch_20newsgroups(subset='train')
twenty_test = fetch_20newsgroups(subset='test')
```
然后,创建一个管道,用于特征提取(CountVectorizer)和分类器(MultinomialNB):
```python
# 创建pipeline
text_clf = Pipeline([
('vect', CountVectorizer()), # 文本向量化
('clf', MultinomialNB()) # 分类器
])
```
接着,将数据分为训练集和测试集,并训练模型:
```python
# 划分数据
X_train, X_test, y_train, y_test = train_test_split(twenty_train.data, twenty_train.target, test_size=0.2, random_state=42)
# 训练模型
text_clf.fit(X_train, y_train)
```
最后,评估模型性能:
```python
# 预测
predicted_labels = text_clf.predict(X_test)
# 评估
accuracy = text_clf.score(X_test, y_test)
print(f"Accuracy: {accuracy}")
```
阅读全文