一、概述

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。贝叶斯分类器的分类原理是通过先验概率,利用贝叶斯公式计算出后验概率,选择最大后验概率所对应的分类结果。

二、算法

1、原理

首先,我们需要了解条件概率,基本公式为:

其中P(A|B)表示在B发生的情况下A发生的可能性。

贝叶斯定理是关于随机事件A和B的条件概率,有时候我们很容易得出P(A|B),P(B|A)则很难直接得到,但当我们需要得到P(B|A)时,则需要用到贝叶斯定理:

P(A),P(B)是A、B的先验概率,因为它不考虑任何B的因素。P(A|B)是B发生的情况下A发生的概率,P(B|A)是A发生的条件下B发生的概率,他们都称为后验概率。这样可以看出,后验概率与先验概率和相似度的乘积成正比。

2、推导

我们从一个通俗的例子来讲,假如你在街上看到一个黑人,让你猜这个人哪里来的,你十有八九猜非洲。为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础。

朴素贝叶斯分类的正式定义如下:

1、设为一个待分类项,而每个a为x的一个特征属性。

2、有类别集合

3、计算

4、如果,则

现在,我们需要知道的是第三步中的概率,因此我们需要进行如下操作:

1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

2、统计得到在各类别下各个特征属性的条件概率估计。即

3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:

因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:

有上面可知,朴素贝叶斯分为三个阶段:

第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。

第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。

三、例子

某个医院早上收了六个门诊病人,如下表。

  症状  职业   疾病

  打喷嚏 护士   感冒 
  打喷嚏 农夫   过敏 
  头痛  建筑工人 脑震荡 
  头痛  建筑工人 感冒 
  打喷嚏 教师   感冒 
  头痛  教师   脑震荡

现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?

根据贝叶斯定理:

 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%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。

这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。

参考:

https://blog.csdn.net/AnneQiQi/article/details/59666980

http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html

http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html

机器学习十大算法之贝叶斯算法相关推荐

  1. (六十四)朴素贝叶斯算法

    贝努利朴素贝叶斯 朴素贝叶斯算法会把数据集中的各个特征看作完全独立的,而不考虑特征之间的相关关系.贝努利朴素贝叶斯(Bernoulli Naive Bayes)这种方法比较适合于服从贝努利分布的数据集 ...

  2. 机器学习(8)朴素贝叶斯算法(20条新闻分类)

    目录 一.基础理论 二.实战:20条新闻分类 1.读取数据 2.训练集划分 3.特征工程(文本特征提取) 4.朴素贝叶斯算法训练 5.模型评估 方法一:预测值与真实值比对 方法二:计算准确率 总代码 ...

  3. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集

    各位同学好,今天我和大家分享一下朴素贝叶斯算法中的三大模型.在上一篇文章中,我介绍了朴素贝叶斯算法的原理,并利用多项式模型进行了文本分类预测. 朴素贝叶斯算法 -- 原理,多项式模型文档分类预测,附p ...

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

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

  5. 机器学习算法: 朴素贝叶斯算法

    朴素贝叶斯算法原理简述 理解朴素贝叶斯算法之前, 先应该理解什么是条件概率. 条件概率是指, 在事件A已经发生的情况下, 事件B发生的概率. 数学符号记作P(A|B). 机器学习就是利用这个原理, 对 ...

  6. 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...

    在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...

  7. 机器学习算法之贝叶斯算法 2、案例一:鸢尾花数据分类

    贝叶斯原理是怎么来的呢?贝叶斯为了解决一个叫"逆向概率"问题写了一篇文章,尝试解答在没有太多可靠证据的情况下,怎样做出更符合数学逻辑的推测. 什么是"逆向概率" ...

  8. 机器学习-分类算法-朴素贝叶斯算法07

    概率:概率定义为一件事情发生的可能性 如:扔硬币某一面朝上有50%概率 "朴素"贝叶斯:所有特征之间条件独立 朴素贝叶斯-文档分类 from sklearn.datasets im ...

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

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

  10. python实现朴素贝叶斯算法_机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)...

    在这里,我们使用一份皮马印第安女性的医学数据,用来预测其是否会得糖尿病.文件一共有768个样本,我们先剔除缺失值,然后选出20%的样本作为测试样本. 特征分别是: 怀孕次数 口服葡萄糖耐量试验中血浆葡 ...

最新文章

  1. 使用和制作patch文件
  2. python 文本相似度计算函数_四种计算文本相似度的方法对比
  3. 在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄?
  4. 和大家谈谈数学模型之美
  5. GeoTools应用-JTS(Geometry之间的关系)
  6. 机器学习和AI的区别是什么?| 今日吐槽
  7. centos8安装mysql_Linux宝塔面板安装
  8. 三组划分//巧妙填数
  9. 将公共云延伸至本地,阿里云推出本地化部署服务云盒Cloud Box
  10. 正在启动文档服务器,正在启动远程服务器
  11. 【入门必备】Java数据结构详解
  12. 金融项目app业务及测试策略
  13. winrar 4.20 注册码
  14. 在一起计时器_三种在PPT里制作计时器的方法,超详细!超漂亮!
  15. web前端课程课件汇总
  16. 关于django中render_to_response()的用法以及外键的使用
  17. DWORD WINAPI
  18. EQ频响曲线绘制和DRC特性曲线绘制
  19. 【掩码机制】解决LSTM中特征长度不一致问题
  20. Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法

热门文章

  1. 深入原理64式:46 高中数学公式总结
  2. 解决android studio编译的速度慢,安装apk过慢的问题
  3. ESP32 HttpServer模式下 本地OTA 例程(基于ESP-IDF类似Arduino下OTAWebUpdater例程)
  4. linux中read函数的用法,Linux中read命令的简介及使用方法
  5. python处理心电图_【技术博客】Python玩转信号处理与机器学习入门
  6. 17.2.3 通过查看triggers数据表中的数据查看触发器的信息
  7. VSTO C# 操作excel
  8. 1KB=多少B=多少byte=多少bit
  9. html阻止手机休眠,阻止系统休眠怎么关掉
  10. JETSON TX2烧写系统