https://www.toutiao.com/a6647102437532369421/

2019-01-17 08:01:00

大家好,今天跟大家学习一下通过sklearn的朴素贝叶斯模型实战。前面在 朴素贝叶斯分类原理篇 中介绍了朴素贝叶斯的分类原理。想了解的同学可以去看看。

朴素贝叶斯模型有着广泛的应用场景,尤其在文本分类任务中表现突出,如新闻分类、垃圾邮件的区分等,本文将学习研究一下 如何对新闻文本数据进行分类。

本次使用的数据为经典的20类新闻文本数据,来源于sklearn.data。获取数据代码如下:

from sklearn.datasets import fetch_20newsgroups
news_data = fetch_20newsgroups(subset = 'all')
print("本次下载的新闻条数为:",len(news_data.data))
#本次下载的新闻条数为: 18846
print("第一篇文章内容的字符数量为:",len(news_data.data[0]))
#第一篇文章内容的字符数量为: 902
print(news_data.data[0]

由上可知,本次下载的新闻共有18846条,这些文本数据没有数字化的量度,也没有具体的特征,因此需要对数据进行向量处理。首先对数据进行分割,并随机采样出一部分数据用于对训练模型进行测试。

x = news_data.data
y = news_data.target
from sklearn.cross_validation import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25,random_state=33)

通过sklearn.feature_extraction.text 中的CountVectorizer模块将文本转化为特征向量。

from sklearn.feature_extraction.text import CountVectorizer
#文本数据向量化
vec = CountVectorizer()
x_train=vec.fit_transform(x_train)
x_test=vec.transform(x_test)

通过 sklearn.naive_bayes 导入 朴素贝叶斯分类模型(MultinomialNB),并对训练数据进行参数估计,再通过向量化后的测试数据进行预测。

from sklearn.naive_bayes import MultinomialNB
model = MultinomialNB() #初始化模型
model.fit(x_train,y_train) #调用fit函数进行模型训练
y_predict = model.predict(x_test) #使用predict 函数进行预测

模型评估在 3分钟了解监督与无监督模型的性能评估标准 一文中介绍过,可以使用准确率、召回率、精确率 和 F1指标对分类问题进行评估。

from sklearn.metrics import classification_report
print("模型得分:%.2f" % (float(model.score(x_test,y_test))*100))
模型得分:83.98
print(classification_report(y_test,y_predict,target_names= news_data.target_names))

从上图中可以看出,朴素贝叶斯模型对4712条测试样本新闻进行分类的精确率为83.98%,平均的精确率(0.86)、召回率 (0.84)和 F1指标(0.82) 都在0.8以上,效果还不错。

由于其较强的特征条件独立假设,使得计算规模极大的降低,极大的降低资源消耗和时间开销,因此被广泛的用于海量的文本分类中,但正是这个优点导致了在该模型在关联性较强的分类任务上表现不好。

好了,今天就到这里,如有疑问,欢迎大家关注留言。

机器学习实战:朴素贝叶斯算法在新闻文本数据上的分类表现相关推荐

  1. 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)

    <机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...

  2. 机器学习实战 朴素贝叶斯分类器

    基于概率论的分类方法: 朴素贝叶斯 我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!! k-近邻算法和决策树会给出"该数据属于哪一类"的明确回答.不过,分类 ...

  3. 机器学习(7): 朴素贝叶斯算法 小结及实验

    文章目录 1 朴素贝叶斯简介 2 条件概率与全概率公式 3 贝叶斯推断 4 引例 5 朴素贝叶斯算法分类 (1) GaussianNB (2) MultinomialNB (3) BernoulliN ...

  4. 朴素贝叶斯 php,PHP实现机器学习之朴素贝叶斯算法详解.pdf

    PHP实实现现机机器器学学习习之之朴朴素素贝贝叶叶斯斯算算法法详详解解 本文实例讲述了PHP实现机器学习之朴素贝叶斯算法.分享给大家供大家参考 具体如下: 机器学习已经在我们的生活中变得随处可见了.比 ...

  5. 朴素贝叶斯算法实现英文文本分类

    目录 1. 作者介绍 2. 朴素贝叶斯算法简介及案例 2.1朴素贝叶斯算法简介 2.2文本分类器 2.3对新闻文本进行文本分类 3. Python 代码实现 3.1文本分类器 3.2 新闻文本分类 参 ...

  6. python人工智能——机器学习——分类算法-朴素贝叶斯算法对新闻进行分类案例

    朴素贝叶斯案例流程 1.加载20类新闻数据,并进行分割 2.生成文章特征词 3.朴素贝叶斯estimator流程进行预估 代码 from sklearn.datasets import fetch_2 ...

  7. matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)

    原理知道一百遍不如自己动手写一遍,当然,现在基本上不需要自己来写算法的底层code了,各路大神们已经为我等凡夫俗子写好了,直接调用就行. 这里介绍在MATLAB中和Python中应用贝叶斯算法的小例子 ...

  8. 机器学习之朴素贝叶斯算法

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 贝叶斯公式与朴素贝叶斯算法 贝叶斯公式推导 用机器学习的视角理解贝叶斯公式 NB ...

  9. 【机器学习】朴素贝叶斯算法

    朴素贝叶斯(Naive Bayes)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.由于朴素贝叶斯计算联合概率,所以朴素贝叶斯模型属于生成式模型.经典应用案例包括:文本分类.垃圾邮件过滤 ...

最新文章

  1. Django REST framework API 指南(11):序列化·关系
  2. Timer计时不准确的解决方案 每次都重新调整,修正误差
  3. 我的博客博客之路....
  4. 开始使用asp.net ajax的控件工具包AJAX Control Toolkit
  5. Microsoft-Office-Professional-Plus-2007
  6. mysql定期执行备份语句_【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件...
  7. 人机交互、大数据分析:移动互联网的技术创新探索
  8. java 批量验证_正则表达式批量验证函数
  9. 1.7编程基础之字符串 03 基因相关性 python
  10. python直接用解释器编写和编辑器的区别_Python语言编译器与解释器
  11. jQuery源码解析(2)—— Callback、Deferred异步编程
  12. 对象关系映射文件详解
  13. C# Emoji在Web端显示
  14. 01 牛顿迭代公式
  15. 我的世界神奇宝贝服务器怎么修改6v,我的世界神奇宝贝mod修改精灵6V满努力等级图文教程...
  16. ​交大最新研究:长江学者和杰青平均在47岁前达到科研产出高峰
  17. 收集的13个杀毒软件和安全防护软件(有图哦)
  18. ai的智能发展不会超越人类_人工智能:超越炒作
  19. 列出叶节点 python
  20. python 如何安装numpy库?

热门文章

  1. java 算法练习题
  2. 清华朱民:数据「资产化」,将是大变革!
  3. 打开深度学习的黑盒,详解神经网络可解释性
  4. 智源-AI Time 5 | 无人驾驶距离我们还有多远?(活动报名)
  5. Windows程序设计“圣经”
  6. Pytorch-学习记录 卷积操作——Tensor.size()
  7. 如何上手深度学习中的图像处理?有这个代码资源库就够了
  8. MVC、JSP实现mysql的增删改查功能的封装和简陋的界面交互
  9. 收藏 | 图神经网络的解释性综述
  10. 微分方程VS机器学习,实例讲解二者异同