朴素贝叶斯—疾病的预测

1. 朴素贝叶斯理论基础

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

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

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

从上式可以推出 P(Dj|x)P(x)=P(x|Di)P(Di)
也就是在全样本空间下,发生x的概率乘以在发生x的情况下发生 Dj 的概率,等于发生 Dj 的概率乘以在发生 Dj 的情况下发生x的概率,如下图:

这里写图片描述

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

  • P(A) 叫做A事件的先验概率,就是一般情况下,认为A发生的概率
  • P(B|A) 叫似然度,是A假设条件成立的情况下发生B的概率
  • P(A|B) 叫做后验概率,在B发生的情况下发生A的概率,也就是要计算的概率。
  • 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]

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

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

  • 2
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值