1. 朴素贝叶斯理论基础

贝叶斯决策理论方法时统计模型决策中的一个基本方法,基本思想如下:
(1)已知类条件概率密度参数表达式和先验概率
(2)利用贝叶斯公式转换成后验概率
(3)根据后验概率大小进行决策分类
其实就是利用统计中的“条件概率”来进行分类的一种算法。古典概型的概率计算方法是穷举出所有的情况,然后看看每种情况的占比,这都是基于排列组合的方式去做的概率分析。

而朴素贝叶斯分类用的是条件概率,也就是在某些场景下(带有某些前提条件)或者某些背景条件的约束下发生的概率问题。
贝叶斯公式如下:设D1、D2、D3.......DnD_1、D_2、D_3.......D_n为样本空间的SS的一个划分,如果以P(Di)P(D_i)表示DiD_i发生的概率,且P(Di)>0(i=1,2,.....,n)P(D_i)>0(i=1,2,.....,n)。对于任何一个事件xx,P(x)>0P(x)>0,则有

P(Dj|x)=P(x|Dj)P(Dj)∑ni=1P(x|Di)P(Di)

P(D_j|x)=\frac{P(x|D_j)P(D_j)}{\sum_{i=1}^nP(x|D_i)P(D_i)}
从上式可以推出 P(Dj|x)P(x)=P(x|Di)P(Di)P(D_j|x)P(x)=P(x|D_i)P(D_i)
也就是在全样本空间下,发生x的概率乘以在发生x的情况下发生 DjD_j的概率,等于发生 DjD_j的概率乘以在发生 DjD_j的情况下发生x的概率,如下图:

中间交集的部分就是上式等号两边各自表示的内容。但贝叶斯分类器通常有一个假设:给定目标值时属性之间相互条件独立。基于这种“朴素”的假设,贝叶斯公式一般写成:
P(A|B)P(B)=P(B|A)P(A)P(A|B)P(B)=P(B|A)P(A)。
对于上式有以下的说法:

  • P(A)P(A)叫做A事件的先验概率,就是一般情况下,认为A发生的概率
  • P(B|A)P(B|A)叫似然度,是A假设条件成立的情况下发生B的概率
  • P(A|B)P(A|B)叫做后验概率,在B发生的情况下发生A的概率,也就是要计算的概率。
  • P(B)P(B)叫标准化常量,和A的先验概率定义类似,就是一般情况下,B的发生概率。

2. 疾病的预测示例

这里用的是python的Scikit-learn库中的高斯朴素贝叶斯模型。
这里的示例只是简单的说明问题,忽略了其他的影响因素。所以在得到的训练样本给出了个体基因信息和个体的疾病信息,然后建模分析得到基因片段和患病之前的概率转换关系。

代码:

from sklearn.naive_bayes import GaussianNB#疾病预测
#基因片段A  基因片段B 高血压 胆结石
#1: 是    0:否
data_table = [[1, 1, 1, 0],[0, 0, 0, 1],[0, 1, 0, 0],[1, 0, 0, 0],[1, 1, 0, 1],[1, 0, 0, 1],[0, 1, 1, 1],[0, 0, 0, 0],[1, 0, 1, 0],[0, 1, 0, 1]
]#基因片段
X = [[1, 1], [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], [0, 0], [1, 0], [0, 1]]#高血压
y1 = [1, 0, 0, 0, 0, 0, 1, 0, 1, 0]#训练
clf = GaussianNB().fit(X, y1)#高血压预测
p = [[1, 0]]
print clf.predict(p)#胆结石
y2 = [0, 1, 0, 0, 1, 1, 1, 0, 0, 1]#训练
clf = GaussianNB().fit(X, y2)#胆结石预测
p = [[1, 0]] # 要预测的用户
print clf.predict(p)

运行结果:

[0]
[0]

贝叶斯的理论体系其实是一种机器学习思想,而不是一种简单的套用公式。

参考:《白话大数据与机器学习》

朴素贝叶斯—疾病的预测相关推荐

  1. python基于朴素贝叶斯模型的预测概率和标签信息可视化ROC曲线

    python基于朴素贝叶斯模型的预测概率和标签信息可视化ROC曲线 目录 python基于朴素贝叶斯模型的预测概率和标签信息可视化ROC曲线

  2. 朴素贝叶斯基本原理和预测过程、先验概率、后验概率、似然概率概念

    贝叶斯原理是英国数学家托马斯·贝叶斯提出的. 贝叶斯原理 建立在主观判断的基础上:在我们不了解所有客观事实的情况下,同样可以先估计一个值,然后根据实际结果不断进行修正. 举例: 一个袋子里有10个球, ...

  3. 朴素贝叶斯python实现预测_Python实现朴素贝叶斯分类器的方法详解

    本文实例讲述了Python实现朴素贝叶斯分类器的方法.分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位. 先 ...

  4. [转载] 朴素贝叶斯python实现预测_Python实现朴素贝叶斯分类器的方法详解

    参考链接: Python朴素贝叶斯分类器 本文实例讲述了Python实现朴素贝叶斯分类器的方法.分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进 ...

  5. 【机器学习基础】朴素贝叶斯的算法实现

    前言 本次我们将梳理下朴素贝叶斯(Naive Bayes)的相关内容. 本文约1.6k字,预计阅读10分钟. 概要 朴素贝叶斯算法是一种适用于二分类和多分类分类问题的「分类算法」.在贝叶斯概率框架下, ...

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

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

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

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

  8. 朴素贝叶斯算法-分类算法

    朴素贝叶斯算法-分类算法 1 概率基础 概率定义为一件事情发生的可能性 联合概率:包含多个条件,且所有条件同时成立的概率,记作P(A,B) 条件概率:事件A在另一个事件B已经发生条件下的发送概率,记作 ...

  9. 逻辑回归与朴素贝叶斯的战争

    0 一起走过的 首先,小夕带领大家回顾一下文章<逻辑回归>.<Sigmoid与Softmax>.<朴素贝叶斯>中的几点内容,这几点内容也是本文的前置知识: 1. 逻 ...

最新文章

  1. 关于 Python 3.9,那些你不知道的事
  2. Linux shell if判断=左右必须要有空格
  3. How to use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem
  4. java培训第一阶段测试总结,达内学员Java培训阶段总结:反躬自省,愈渐完美
  5. 调查:Java程序员最伤心,C++程序员最年老
  6. [WCF安全系列]认证与凭证:用户名/密码认证与Windows认证
  7. date format 精辟讲解
  8. 仿微软Office 迷你工具条(简易编辑器)
  9. HTML5的web开发,基于Html5技术的WEB开发
  10. 优化Hibernate所鼓励的7大措施:
  11. SpringSocial业务系统与社交网站的绑定与解绑
  12. 在html中显示word,如何在浏览器网页中显示word文件内容
  13. WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行
  14. sqlserver修改实例名
  15. LINUX右键打开方式,如何同时存在多种应用?
  16. 对接微信支付服务商后商户能得到哪些服务?
  17. E-R图转化为关系模型
  18. 音视频技术之《移动直播秒开优化经验》
  19. [Linux Shell] su和sudo命令
  20. 统计学习导论 - 基于R的应用 学习笔记1

热门文章

  1. C++以二进制形式生成介于1到N之间的数字的算法(附完整源码)
  2. OpenGL 泛光Bloom
  3. C++二叉堆binary heap (附完整源码)
  4. 给定三角形 ABC 和一点 P(x,y,z),判断点 P 是否在 ABC 内,给出思路并手写代码
  5. C++什么时候需要使用“常引用”?
  6. QT绘制嵌套的圆饼状图
  7. B01_NumPy Ndarray对象(ndarray内容结构,参数,多维,最小维度,dtype参数)
  8. Scala类的继承,抽象类定义,接口定义
  9. 内存中原码,反码,补码,查看数值范围,,或,异或,取反,左右移位操作
  10. oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息