朴素贝叶斯实战:新闻文本分类
Posted Python大数据与人工智能
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朴素贝叶斯实战:新闻文本分类相关的知识,希望对你有一定的参考价值。
今日分享:基于贝叶斯模型的新闻文本分类
一:流程
1、从网站下载获取数据集,该数据集也是由sklearn提供的,不过由于数据集较大(其实也就15M左右),因此需要在使用时从网站直接下载(如若下载不成功,请在本QQ学习群获取)
2、数据集划分
3、进行特征工程,对新闻文本数据进行 TF-IDF 提取
4、实例化贝叶斯估计器,训练,预测
二:数据集介绍
该新闻数据集大约包含11314个新闻文本,共20大类
(单个新闻文本示例)
(类别编码及实际类别描述)
三:代码演示
#导入相关库
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report
def naba():
'''朴素贝叶斯新闻文本分类'''
#获取数据集 网络下载获取 参数表明将训练集和测试集的数据全部下载
news = fetch_20newsgroups(subset='all')
#划分数据集
x_train,x_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25)
#对文本进行特征提取
tf = TfidfVectorizer()
x_train = tf.fit_transform(x_train)
# print(tf.get_feature_names())
x_test = tf.transform(x_test)
#贝叶斯实例化
mlt = MultinomialNB(alpha=1.0)
mlt.fit(x_train,y_train)
y_predict = mlt.predict(x_test)
print('预测的文章类别为:',y_predict)
print('准确率为:',mlt.score(x_test,y_test))
print('每个类别的精确率和召回率:',
classification_report(y_test,y_predict,target_names = news.target_names))
if __name__ == '__main__':
naba()
输出结果
预测的文章类别为:
[16 6 4 ... 13 14 14]
准确率为:
0.8539898132427843
每个类别的精确率和召回率:
precision recall f1-score support
alt.atheism 0.84 0.78 0.81 179
comp.graphics 0.94 0.73 0.82 271
comp.os.ms-windows.misc 0.87 0.83 0.85 250
comp.sys.ibm.pc.hardware 0.79 0.77 0.78 254
comp.sys.mac.hardware 0.87 0.87 0.87 234
comp.windows.x 0.92 0.91 0.92 239
misc.forsale 0.92 0.72 0.81 248
rec.autos 0.91 0.90 0.90 245
rec.motorcycles 0.91 0.96 0.93 248
rec.sport.baseball 0.96 0.95 0.96 243
rec.sport.hockey 0.93 0.98 0.96 253
sci.crypt 0.81 0.98 0.88 251
sci.electronics 0.85 0.85 0.85 237
sci.med 0.96 0.90 0.93 247
sci.space 0.88 0.95 0.92 263
soc.religion.christian 0.56 0.98 0.71 241
talk.politics.guns 0.73 0.99 0.84 222
talk.politics.mideast 0.92 0.97 0.95 237
talk.politics.misc 0.97 0.60 0.74 192
talk.religion.misc 0.93 0.16 0.27 158
avg / total 0.87 0.85 0.85 4712
或在后台回复:加群
以上是关于朴素贝叶斯实战:新闻文本分类的主要内容,如果未能解决你的问题,请参考以下文章