【机器学习】朴素贝叶斯算法-程序员宅基地

技术标签: 机器学习  深度学习  人工智能  概率论  

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

1.贝叶斯公式

           贝叶斯公式又被称为贝叶斯规则,是概率统计中的应用所观察到的现象有关概率分布的主观判断(先验概率)进行修正的标准方法。如果你看到一个人总是做一些好事,则那个人多半会是一个好人。这就是说,当你不能准确知悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。用数学语言表达就是:支持某项属性的事件发生得愈多,则该属性成立的可能性就愈大。贝叶斯公式中涉及到先验概率后验概率条件概率等,具体解释如下。

        先验概率:即基于统计的概率,是基于以往历史经验和分析得到的结果,不需要依赖当前发生的条件。

        后验概率:则是从条件概率而来,由因推果,是基于当下发生了事件之后计算的概率,依赖于当前发生的条件。

        条件概率:记事件A发生的概率为P(A),事件B发生的概率为P(B),则在B事件发生的前提下,A事件发生的概率即为条件概率,记为P(A|B),读作“在B条件下A的概率”。

        联合概率:表示两个事件共同发生的概率。A与B的联合概率表示为P(AB),或者P(A,B),或者P(A∩B)。

        贝叶斯公式:贝叶斯公式便是基于条件概率P(B|A)求的联合概率,再求得P(A|B)。       

         将A看成“类别”,B看成“属性”,那么贝叶斯公式看成:

 2.朴素贝叶斯算法的原理

        朴素贝叶斯分类器是一类简单的概率分类器,在强(朴素)独立性假设的条件下运用贝叶斯公式来计算每个类别的后验概率,假设每个特征之间没有联系。

        通俗的解释:已知结果(先验概率),结果与在此结果为条件下出现的现象(条件概率)相乘的到结果和现象同时发生的联合概率。除以现象单独发生的概率,就得出在某现象发生的条件下,发生结果的概率(后验概率)

 3.案例

        问题:给出下列训练数据(X,Y)共计17条数据,X是属性集合(色泽、根蒂、敲声、纹理、脐部、触感、密度、含糖率),Y是类别标记(是否是好瓜)。这时来了一个新的样本“测1”,我们想要预测它的类别y(是否是好瓜)。

        首先,计算类别的先验概率。在17个样例中,有8个是好瓜,9个不是好瓜,我们可以根据给出的样例,得出是否是好瓜的先验概率。

         然后,为“测1”中给定的属性估计条件概率。针对测试样例给定的属性值统计在好瓜=是和好瓜=否中的数量,为计算条件概率提供数据。

         对于数值属性,一般假设同一类别中属性值服从正态分布,首先计算当前类别所在属性下的属性值分布的均值和方差,然后计算当前属性值在这个分布中的概率密度。计算公式如下所示。

  

         按照均值和方差公式计算出'好瓜=是'的密度均值、密度方差,'好瓜=否'的密度均值、密度方差,'好瓜=是'的含糖量均值、含糖量方差,'好瓜=否'的含糖量均值、含糖量方差。并且将其带入公式的到条件概率。

        将计算结果代入公式。比较结果,0.063>>0.0000680,因此,朴素贝叶斯分类器将测试样本“测1”判别为“好瓜”。

Reference:

        1.https://blog.csdn.net/kevinjin2011/article/details/125099177

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44750512/article/details/129147217

智能推荐

dataguard主库丢失archivelog,如何不重建备库?-程序员宅基地

文章浏览阅读112次。dataguard主库丢失archivelog,如何不重建备库?本站文章除注明转载外,均为本站原创:转载自lovewife&lovelife—Roger提供oracle技术支持服务本文链接地址:dataguard主库丢失archivelog,如何不重建备库?昨天群中有网友问到dataguard环境中,由于主库archiv..._oracle dataguard主库丢失archivelog,如何不重建备库完成同步? ————————

java 字符串工具_字符串工具——StrUtil-程序员宅基地

文章浏览阅读7k次。字符串处理工具类 StrUtil这个工具的用处类似于Apache Commons Lang中的StringUtil,之所以使用StrUtil而不是使用StringUtil是因为前者更短,而且Str这个简写我想已经深入人心了,大家都知道是字符串的意思。常用的方法例如isBlank、isNotBlank、isEmpty、isNotEmpty这些我就不做介绍了,判断字符串是否为空,下面我说几个比较好用的..._strutil

C语言计算函数运行时间+随机数-程序员宅基地

文章浏览阅读872次。文章目录C语言计算函数运行时间C语言计算函数运行时间#include <time.h>double time1=(double)clock()/CLOCKS_PER_SEC;double time2=(double)clock()/CLOCKS_PER_SEC;printf("%lf\n",double(time2-time1));...

android html5播放器,用 HTML5 播放器在 iOS 或 Android 等移动设备上播放视频-程序员宅基地

文章浏览阅读986次。如果你想把自己网站上的视频弄得能在 iOS 或者 Android 设备上播放,你需要想两个事儿,一个是你网站上的视频播放器要支持 HTML5,还有你的视频得支持在这些设备上看。网站的视频播放器我们可以使用 JW Player,这个播放器有三种模式,Flash,HTML5,下载。就是如果浏览器不支持Flash模式,播放器会切换到 HTML5 模式,都不支持的话可以提供一个下载视频的链接。(你可以设置..._安卓 ios都适配的视频组件 h5

java实现flv转mp4/视频格式转换_java flv 转 mp4-程序员宅基地

文章浏览阅读604次。java实现flv转mp4/视频格式转换,今天在开发过程中,突然遇到给前端flv格式视频还播放不了,flv在开发印象中就是跟mp4格式差不多,本地静态视频资源,怎么还就播放不了,为此只能特别做下视频转换。_java flv 转 mp4

ImportError: cannot import name 'pyplot' from 'matplotlib'-程序员宅基地

文章浏览阅读1.9w次,点赞13次,收藏14次。当前文件名为: matplotlib.pyfrom matplotlib import pyplotyears = [1950,1960,1970,1980,1990,2000,2010]gdb = [300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]# 创建一幅线图,x轴是年份,y轴是gdbpyplot.plot(years,gdb,..._importerror: cannot import name 'pyplot' from 'matplotlib' (unknown location

随便推点

usb一转多 树莓派zero_树莓派 Zero USB/以太网方式连接配置教程-程序员宅基地

文章浏览阅读327次。树莓派 Zero 之所以成为一款非常棒的单板计算机并不全因为它小巧的尺寸和便宜的价格,还得益于它便捷、易用的特性。在加装了Zero Quick Plug或microUSB/USB 转换头之后,将树莓派 Zero 和电脑连接起来。树莓派 Zero 即可配置成 USB/以太网设备,这时仅需要一个 USB 接口就实现给树莓派供电的同时将它接入因特网。不再需要携带额外的电源适配器、 USB HUB和..._usb以太网hub后,ifconig

python中power的用法_BI工具学习:在Power BI中运行Python并使用Python绘图-程序员宅基地

文章浏览阅读423次。之前的文章讲解了BI工具学习:手把手地教你用Power BI绘制数据分析图表,其实Power BI还支持Python,我们可以在Power BI中运行Python代码,而且还可以利用Python对Power BI中的数据进行可视化。说明:在Power BI中运行Python,需要先安装Python,关于如何安装Python,网上有无数的教程,这里就不写了。使用Power BI连接Python数据源..._power bi 中如何使用python

Transactional超时时间控制_@transactional添加超时时间-程序员宅基地

文章浏览阅读7.4k次。项目使用的是spring+mybatis+MySQL,今天,我需要把处理一个业务就是,当用户出金失败时,事务能够回滚,同时减少用户的等待时间,因为我发现当处理失败时,用户需要等上1分钟以上的时间,这是不合理的。那么经过一系列的调查发现:spring的事务超时(使用Java注解方式)和mysql InnoDB事务超时是相互关联的。在一个需要进行事务回滚的方法上加入@Trans_@transactional添加超时时间

关于--windows能ping通linux的ip,但是无法访问linux的tomcat首页 的解决办法_windows可以ping通linux服务器,但是打不开服务器的网页-程序员宅基地

文章浏览阅读6.6k次。CentOS版本:6.8Windows操作系统版本:Win10Linux上的tomcat版本:7.0.65linux是使用的NAT模式,及共享主机的IP地址。本来想使用windows本地访问linux上的tomcat首页,结果一直访问不成功;但在windows下能够ping通linux的ip,这很明显就是linux的端口没有开放,所以就在linux上设置了一下防火墙,将以下配置加入到了..._windows可以ping通linux服务器,但是打不开服务器的网页

Dbeaver一次执行多条MySQL语句报错_dbeaver执行多条语句报错-程序员宅基地

文章浏览阅读969次。选择驱动属性,将allowMultiQueries设置为TRUE,然后点击确定即可。解决方法,打开编辑选项。_dbeaver执行多条语句报错

炼丹记之国家电投2020风电机组异常数据识别与清洗 baseline f1=0.858分享_2020 ccf 大数据与计算智能大赛 风电机组异常数据识别与清洗-程序员宅基地

文章浏览阅读2.9k次,点赞5次,收藏15次。赛题地址:https://www.datafountain.cn/competitions/451赛题任务:依据提供的12台风力电机1年的10min间隔SCADA运行数据,包括时间戳信息、风速信息和功率信息等,利用机器学习相关技术,建立鲁棒的风电机组异常数据检测模型,用于识别并剔除潜在的异常数据,提高数据质量。此任务未给出异常数据标签,视为聚类任务,为引导选手向赛题需求对接,现简单阐述异常数据定义。异常数据是由风机运行过程与设计运行工况出现较大偏离时产生,如风速仪测风异常导致采集的功率散点明显_2020 ccf 大数据与计算智能大赛 风电机组异常数据识别与清洗