朴素贝叶斯分类器基于统计的分类器
一、病人分类的例子
让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。
某个医院早上收了六个门诊病人,如下表。
症状 职业 疾病
打喷嚏 护士 感冒
打喷嚏 农夫 过敏
头痛 建筑工人 脑震荡
头痛 建筑工人 感冒
打喷嚏 教师 感冒
头痛 教师 脑震荡
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?
根据贝叶斯定理:
P(A|B) = P(B|A) P(A) / P(B)
可得
P(感冒|打喷嚏x建筑工人)
= P(打喷嚏x建筑工人|感冒) x P(感冒)
/ P(打喷嚏x建筑工人)
假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了
P(感冒|打喷嚏x建筑工人)
= P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)
/ P(打喷嚏) x P(建筑工人)
这是可以计算的。
P(感冒|打喷嚏x建筑工人)
= 0.66 x 0.33 x 0.5 / 0.5 x 0.33
= 0.66
因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。
这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。
二、朴素贝叶斯分类器的公式
假设某个体有n项特征(Feature),分别为F1、F2、...、Fn。现有m个类别(Category),分别为C1、C2、...、Cm。贝叶斯分类器就是计算出概率最大的那个分类,也就是求下面这个算式的最大值:
P(C|F1F2...Fn)
= P(F1F2...Fn|C)P(C) / P(F1F2...Fn)
由于 P(F1F2...Fn) 对于所有的类别都是相同的,可以省略,问题就变成了求
P(F1F2...Fn|C)P(C)
的最大值。
朴素贝叶斯分类器则是更进一步,假设所有特征都彼此独立,因此
P(F1F2...Fn|C)P(C)
= P(F1|C)P(F2|C) ... P(Fn|C)P(C)
上式等号右边的每一项,都可以从统计资料中得到,由此就可以计算出每个类别对应的概率,从而找出最大概率的那个类。
虽然"所有特征彼此独立"这个假设,在现实中不太可能成立,但是它可以大大简化计算,而且有研究表明对分类结果的准确性影响不大。
相关推荐
实现朴素贝叶斯分类器算法基本功能,代码有注释,还包括一个垃圾邮件过滤的实例。另外我这次用的是python2.7版,如果用python3的可能需要根据提示修改几个语法(sorted函数的参数)。
朴素贝叶斯分类器的代码,还有一些hadoop运行时出现的问题
朴素贝叶斯分类器 MATLAB 源代码,里面含有使用实例,用的是 UCI 的 mushroom 数据集。 分类器详细介绍见: http://blog.csdn.net/yunduanmuxue/article/details/39693917
这个是我自己写的朴素贝叶斯分类器,离散化用的是信息增益率算的!里面有Readme.txt说的还算详细,程序里也有注释!程序写的比较简单,希望高手能指点!这个是个VS工程。 忘说了,如果自己做测试数据集的话,最后...
基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯分类器设计与实现基于权重的朴素贝叶斯...
基于朴素贝叶斯分类器的简单手写体数字识别 .
基于Matlab的朴素贝叶斯分类器,该文件为压缩文件,解压后可用。包含了实验数据。是离散类型的朴素贝叶斯分类器
朴素贝叶斯分类器的构建,陈文成,邢冬丽,本文基于信息几何和Fisher分,提出了一种创建属性集的方法。把原有属性经过Fisher分映射成新的属性集,并在新属性集上构建贝叶斯分类
本人根据模式识别教材写的朴素贝叶斯分类器,用于人脸识别,人脸参数化方式为,把人脸分为9个区域,计算9个区域的黑白对比度,希望能抛砖引玉,人脸库请自己下载
Spring-Boot集成Neo4j并利用Spark的朴素贝叶斯分类器实现基于电影知识图谱的智能问答系统
本系统是C++写的基于机器学习的朴素贝叶斯分类器,系统比较简单,可扩展性强。
C++编写的朴素贝叶斯分类器跟k-means聚类,用于学习机器学习,最好是在Linux上运行,可以运行
基于朴素贝叶斯分类器的文本分类算法(C语言).doc
基于SpringBoot+Neo4j+Spark实现的论文智能分析问答系统(采用朴素贝叶斯分类器) 基于SpringBoot+Neo4j+Spark实现的论文智能分析问答系统(采用朴素贝叶斯分类器) 基于SpringBoot+Neo4j+Spark实现的论文智能分析...
用python写的简单的朴素贝叶斯分类器,一共有两个主文件,nbayes1和nbayes1_run1还有两个训练数据文件,望大家多多指教。
一个实现朴素贝叶斯分类器简单的Python 库
朴素贝叶斯分类器.本例用于识别手写的数字A~J!!!!