朴素贝叶斯预测分类的思想就是根据待预测文档的特征(TF-IDF高的词)分别计算属于各个类别的概率,其中概率最大的类别,就是预测的类别。(朴素的意思就是文档的特征(词)之间相互独立)


朴素贝叶斯进行文档分类的简单案例:



demo.py(朴素贝叶斯算法实例,预测新闻类别):

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# 加载数据集 从scikit-learn官网下载新闻数据集(共20个类别)
news = fetch_20newsgroups(subset='all')  # all表示下载训练集和测试集# 进行数据分割 (划分训练集和测试集)
x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)# 对数据集进行特征抽取 (进行特征提取,将新闻文档转化成特征词重要性的数字矩阵)
tf = TfidfVectorizer()  # tf-idf表示特征词的重要性
# 以训练集数据统计特征词的重要性 (从训练集数据中提取特征词)
x_train = tf.fit_transform(x_train)print(tf.get_feature_names())  # ["condensed", "condescend", ...]x_test = tf.transform(x_test)  # 不需要重新fit()数据,直接按照训练集提取的特征词进行重要性统计。# 进行朴素贝叶斯算法的预测
mlt = MultinomialNB(alpha=1.0)  # alpha表示拉普拉斯平滑系数,默认1
print(x_train.toarray())  # toarray() 将稀疏矩阵以稠密矩阵的形式显示。
'''
[[ 0.     0.          0.   ...,  0.04234873  0.   0. ][ 0.     0.          0.   ...,  0.          0.   0. ]...,[ 0.     0.03934786  0.   ...,  0.          0.   0. ]
'''
mlt.fit(x_train, y_train)  # 填充训练集数据# 预测类别
y_predict = mlt.predict(x_test)
print("预测的文章类别为:", y_predict)  # [4 18 8 ..., 15 15 4]# 准确率
print("准确率为:", mlt.score(x_test, y_test))  # 0.853565365025

朴素贝叶斯算法不需要调参,(K近邻和决策树需要调参),朴素贝叶斯受训练集的误差(特征词的提取,例如某篇文章有大量相同的词)影响较大。

朴素贝叶斯算法优点:
1、朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
2、对缺失数据不太敏感(缺词少句),算法也比较简单,常用于文本分类。
3、分类准确度高,速度快

朴素贝叶斯算法缺点:
1、需要知道先验概率P(F1,F2,…|C),因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。(要求特征词之间相互独立)
2、受训练集的误差(特征词的提取,例如某篇文章有大量相同的词)影响较大。
3、不能进行调参调优

Python scikit-learn,分类,朴素贝叶斯算法,文档分类,MultinomialNB,拉普拉斯平滑系数相关推荐

  1. 垃圾邮件分类-朴素贝叶斯算法

    目录 一.贝叶斯公式原理 二.使用朴素贝叶斯进行文档分类 三.Python代码实现 一.贝叶斯公式原理 在基础的概率学中,经典的有求独立事件的概率以及求关联时间的概率,贝叶斯所要解决的问题就是在有条件 ...

  2. Python微调文本顺序对抗朴素贝叶斯算法垃圾邮件分类机制

    封面图片:<Python可以这样学>,ISBN:9787302456469,董付国,清华大学出版社 图书详情(京东): ================= 关于朴素贝叶斯算法中文垃圾邮件分 ...

  3. 机器学习:朴素贝叶斯算法+中文情感分类+python

    朴素贝叶斯中文情感分类 1.写在前面 朴素贝叶斯算法理论在很多博客上已经解释的很详细了,本文就不再叙述,本文注重于算法的应用以及编程实现,在读取前人的博客以及他们的项目应用,本人结合书本<机器学 ...

  4. 贝叶斯文本分类python_scikit_learn 中朴素贝叶斯算法做文本分类的 实践总结

    朴素贝叶斯算法对于分类非常高效 想了解的可以参考这篇博文:贝叶斯从浅入深详细解析,详细例子解释 - zwan0518的专栏 - 博客频道 - CSDN.NET贝叶斯从浅入深 先来做个小小总结说明 在这 ...

  5. 朴素贝叶斯算法新闻文本分类

    新闻数据有20个主题,有10万多篇文章,每篇文章对应不同的主题,要求是任意输入一篇新的文章,模型输出这篇文章属于哪个主题. 一. 算法原理 1. 朴素贝叶斯方法 朴素贝叶斯方法涉及一些概率论知识,我们 ...

  6. 《机器学习实战》学习笔记之第四章朴素贝叶斯进行文档分类

    朴素贝叶斯有两个假设: 1."朴素":特征之间相互独立,单词出现的概率相同,当然这个假设不合理 2."权重相同":每个特征等同重要,这个假设也不太合理 尽管如此 ...

  7. 实战:手把手教你用朴素贝叶斯对文档进行分类

    朴素贝叶斯分类最适合的场景就是文本分类.情感分析和垃圾邮件识别.其中情感分析和垃圾邮件识别都是通过文本来进行判断.所以朴素贝叶斯也常用于自然语言处理 NLP 的工具. sklearn 机器学习包 sk ...

  8. 朴素贝叶斯算法python sklearn实现_朴素贝叶斯算法优化与 sklearn 实现

    进行拉普拉斯平滑运算后,我们运行程序,仍然得出了两个测试样本均属于非侮辱类的结果,这是为什么呢? 我们查看最终计算出的 p0 和 p1 会发现,他们的结果都是 0,这又是为什么呢? 这是因为出现了另一 ...

  9. 【机器学习入门】(2) 朴素贝叶斯算法:原理、实例应用(文档分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍python机器学习中的朴素贝叶斯算法.内容有:算法的基本原理:案例实战--新闻文档的分类预测. 案例简介:新闻数据有20个主题,有10万多篇文章,每篇文章对应不同的主题, ...

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

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

最新文章

  1. apache ab test使用 单独安装ab和htpasswd
  2. CentOs下php连mssql并配置unixODBC
  3. 【Python】学习笔记总结2(Python面向对象)
  4. 项目简单实用方式_组合替代继承_算法切换
  5. 30.275MHz 调频无线对讲机原理、制作与调试
  6. Can not issue data manipulation statements with executeQuery()错误解决
  7. 【Git、GitHub、GitLab】九 工作中非常重要的一些git用法
  8. UsernamePasswordAuthenticationFilter源码分析
  9. Win10下python不同版本同时安装并解决pip共存问题
  10. Android Studio开发学习 - 1. 添加Activity
  11. 2.1 机器中数据的存储
  12. 液压伺服控制系统设计
  13. Windows下无损分区
  14. 使命召唤4:现代战争
  15. 计算机学院的入场词,大学校运会入场词
  16. 易企秀 伪静态 linux,最新仿易企秀V15.1完整版开源版源码分享,修复采集功能,新增同行站模板采集功能等等...
  17. iOS内嵌unity
  18. TI CC3200 launchpad 简介
  19. Vegas和Pr哪个好?看完这篇你就明白了
  20. 超前进位加法器(附Verilog代码)

热门文章

  1. 通过微信小程序来实现线上健步走活动,统计大家的微信运动步数,函数参数(Function parameters)是在函数定义中所列的名称。
  2. Mac 升级系统后导致的Android Studio无法找到Git
  3. fax T30传真简介
  4. KGH: NO ACCESS内存分配过大,引起的ORA-4031故障
  5. JS表单验证(HTML+CSS+JS)详细教程
  6. nginx外网 + harbor拉取推送镜像
  7. pip 报错Traceback (most recent call last):
  8. Java中的锁-浅析
  9. nofile和noproc
  10. java加快页面加载速度方法_关于页面加载速度优化的11种方法