前言:现在网络上有很多文章,数据和代码都不全,胖哥对此重新梳理后,把用到的数据和代码全部奉上,如果想直接要数据和代码,请查看文章最后,胖哥对此代码加了详细的注释!!!

一、贝叶斯分类介绍

贝叶斯分类器是一个统计分类器。它们能够预测类别所属的概率,如:一个数据对象属于某个类别的概率。贝叶斯分类器是基于贝叶斯定理而构造出来的。对分类方法进行比较的有关研究结果表明:简单贝叶斯分类器(称为基本贝叶斯分类器)在分类性能上与决策树和神经网络都是可比的。在处理大规模数据库时,贝叶斯分类器已表现出较高的分类准确性和运算性能。基本贝叶斯分类器假设一个指定类别中各属性的取值是相互独立的。这一假设也被称为:类别条件独立,它可以帮助有效减少在构造贝叶斯分类器时所需要进行的计算。

 二、贝叶斯定理
p(A|B) 条件概率 表示在B发生的前提下,A发生的概率;

贝叶斯定理如下:

基本贝叶斯分类器通常都假设各类别是相互独立的,即各属性的取值是相互独立的。对于特定的类别且其各属性相互独立,就会有:
P(AB|C) = P(A|C)*P(B|C)

贝叶斯决策理论的核心思想,即选择具有最高概率的决策。

优点
①可以处理小样本情况(样本少,基于频率可以算)
②可以处理多分类问题()

缺点
对于输入数据比较敏感(样本少,则对要求会高,样本间是要求独立的)

数据类型
标称型数据

P(A)称为”先验概率”(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。
P(A|B)称为”后验概率”(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。
P(B|A)/P(B)称为”可能性函数”(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

这就是贝叶斯推断的含义。我们先预估一个”先验概率”,然后加入实验结果,看这个实验到底是增强还是削弱了”先验概率”,由此得到更接近事实的”后验概率”。
在这里,如果”可能性函数”P(B|A)/P(B)>1,意味着”先验概率”被增强,事件A的发生的可能性变大;如果”可能性函数”=1,意味着B事件无助于判断事件A的可能性;如果”可能性函数”<1,意味着”先验概率”被削弱,事件A的可能性变小。

三、贝叶斯分类案例
1.分类属性是离散
假设有样本数为6个的训练集数字如下:

现在假设来又来了一个人是症状为咳嗽的教师,那这位教师是患上感冒、发烧、鼻炎的概率分别是多少呢?这个问题可以用贝叶斯分类来解决,最后三个疾病哪个概率高,就把这个咳嗽的教师划为哪个类,实质就是分别求p(感冒|咳嗽*教师)和P(发烧 | 咳嗽 * 教师)
P(鼻炎 | 咳嗽 * 教师) 的概率;

假设各个类别相互独立:

P(感冒)=3/6    P(发烧)=1/6     P(鼻炎)=2/6
 p(咳嗽) = 3/6   P(教师)= 2/6
 p(咳嗽 | 感冒) = 2/3   P(教师 | 感冒) = 1/3

按以上方法可分别求  P(发烧 | 咳嗽 × 教师) 和P(鼻炎 |咳嗽 × 教师 )的概率;

2.分类属性连续
如果按上面的样本上加一个年龄的属性;因为年龄是连续,不能采用离散变量的方法计算概率。而且由于样本太少,所以也无法分成区间计算;这时,可以假设感冒、发烧、鼻炎分类的年龄都是正态分布,通过样本计算出均值和方差,也就是得到正态分布的密度函数;

下面就以求P(年龄=15|感冒)下的概率为例说明:
   第一:求在感冒类下的年龄平均值  u=(15+48+12)/3=25
   第二:求在感冒类下年龄的方差 代入下面公司可求:方差=266

第三:把年龄=15 代入正太分布公式如下:参数代进去既可以求的P(age=15|感冒)的概率

其他属性按离散方法可求;

四、概率值为0处理
假设有这种情况出现,在训练集上感冒的元祖有10个,有0个是孩子,有6个是学生,有4个教师;当分别求
      P(孩子|感冒) =0; P(学生|感冒)=6/10 ; P(教师|感冒)=4/10  ;出现了概率为0的现象,为了避免这个现象,在假设训练元祖数量大量的前提下,可以使用拉普拉斯估计法,把每个类型加1这样可求的分别概率是
      P(孩子|感冒) = 1/13  ; P(学生|感冒) = 7/13   ; P(教师|感冒)=4/13

五、垃圾邮件贝叶斯分类案例
1.准备训练集数据
假设postingList为一个六个邮件内容,classVec=[0,1,0,1,0,1]为邮件类型,设1位垃圾邮件

2.根据所有的邮件内容创建一个所有单词集合

3.根据第2步所有不重复的单词集合对每个邮件内容向量化

4.训练模型,此时就是分别求p(垃圾|文档) = p(垃圾)*p(文档|垃圾)/p(文档)

5.定义分类方法

6.以上分类完成,下面就对其进行测试,测试方法如下:

需要完整Python代码的朋友们,请关注如下微信公众号,回复"朴素贝叶斯分类",即可获取完整内容;

添加胖哥微信:zy10178083,回复"入群",胖哥拉你进去python学习交流群,胖哥会不定期分享干货!

微信公众号:胖哥真不错。

【机器学习实战】python机器学习之贝叶斯分类相关推荐

  1. 【机器学习】python机器学习使用scikit-learn对模型进行评估:使用t分布及z分布评估模型误差的95%置信空间

    端到端机器学习导航: [机器学习]python借助pandas加载并显示csv数据文件,并绘制直方图 [机器学习]python使用matplotlib进行二维数据绘图并保存为png图片 [机器学习]p ...

  2. 机器学习-2.Python机器学习软件包Scikit-Learn的学习与运用

    EduCoder:机器学习-Python机器学习软件包Scikit-Learn的学习与运用 第1关:使用scikit-learn导入数据集 编程要求: 本关任务是,使用 scikit-learn 的d ...

  3. 01、python数据分析与机器学习实战——Python数据可视化库-Matplotlib

    Matplotlib介绍 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. Matplotlib基础 1.折线图绘制 假设,我 ...

  4. 01、python数据分析与机器学习实战——python数据分析处理库-Pandas

    pandas介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. panda ...

  5. 01、python数据分析与机器学习实战——Python科学计算库-Numpy

    深度学习--学习目录 NumPy介绍 NumPy系统是Python的一种开源的数值计算扩展. 这种工具可用来存储和处理大型矩阵, 比Python自身的嵌套列表(nested list structur ...

  6. 机器学习实战(python)-Ch02KNN-Notes

    Chapter2 KNN 1.numpy.tile函数 格式:tile(A,reps)  * A:array_like  * 输入的array  * reps:array_like  * A沿各个维度 ...

  7. 机器学习实战 | Python 信用卡欺诈检测其实特简单

    本文旨在使用 XGBoost.随机森林.KNN.逻辑回归.SVM 和决策树解决分类问题.喜欢记得收藏.关注.点赞. 注:文末提供技术交流群 案例简介 假设你受雇于帮助一家信用卡公司检测潜在的欺诈案件, ...

  8. 01、python数据分析与机器学习实战——Python可视化库Seaborn

    seaborn简介 Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图. seaborn基础 i ...

  9. 机器学习实战python版决策树以及Matplotlib注解绘制决策树

    这一章代码比较难懂,主要是matplotlib的函数调用参数多,调用灵活,让初学者费解. <span style="font-size:18px;"><span ...

  10. 【A-003】python数据分析与机器学习实战 Python科学计算库 Pandas数据分析处理库(二)

    目录: 处理缺失数据制作透视图删除含空数据的行和列多行索引使用apply函数 本节要处理的数据来自于泰坦尼克号的生存者名单,它的数据如下: PassengerId Survived Pclass .. ...

最新文章

  1. GPT-3 的到来,程序员会被 AI 取代吗?
  2. Linux的判断命令
  3. swift处理网络返回数据(封装)
  4. OPPO智能眼镜发布,撕掉手机标签,CEO陈明永罕见亮相砸500亿投研发
  5. 一元多项式的乘法与加法运算_行测数学运算之速算与技巧
  6. es6学习笔记11--Proxy和Reflect
  7. mysql strtolower_GitHub - redfoxli/mysqlstr: a php extension provide string processing of mysql
  8. leetcode 464. Can I Win | 464. 我能赢吗(博弈论,动态规划)
  9. 【AC自动机】【数据结构】【树】【Aho-Corasick automation】AC自动机理解(入门)...
  10. 多媒体技术基础及应用
  11. (转)如何使用CodeSmith批量生成代码
  12. android studio快捷键与Eclipse快捷键对比-没有之一
  13. bzoj2530 [POI2011]Party
  14. js排序的时间复杂度_各种排序算法时间复杂度
  15. linux系统刷苹果4s,iOS8.4降级6.1.3教程 iPhone4s降级iOS6.1.3
  16. PDF转Word软件
  17. 思岚S2激光雷达3—ROS node and test application for RPLIDAR
  18. eda交通灯控制器波形输入_用VHDL设计交通灯控制器
  19. 微信公众号发送红包(源码)
  20. 大厂秋招~华为荣耀字节腾讯美团滴滴

热门文章

  1. 数据挖掘习题之决策树算法
  2. js正则表达式验证手机号,邮箱,QQ,密码
  3. 使用qq邮箱作为找回密码发件邮箱。报错:参数或变量中有语法错误。 服务器响应为:mail from address must be same as authorization u
  4. java正则表达式 密码强度_密码验证,密码强度正则表达式
  5. angular:ng-template 使用ngif和ngifelse
  6. 卖表情包的LINE市值都超过87亿美元 微信应该值多少?
  7. 在eclipse中jflow.properties文件乱码的解决办法
  8. Outlook超大附件解决方案哪家强?可从四方面比较
  9. MaxProxy代理怎么样?MaxProxy的家庭住宅IP怎么提取?
  10. cssbefore图片大小_css :after和:before