python 代码实现类条件概率呈正太分布的贝叶斯分类器简单案例

在这里我们有一个例题来分别演示讲解

假定某个局部区域细胞识别中正常P(w1)和非正常
P(w2)两类先验概率分别为:
正常状态:P(w1)=0.9;异常状态:P(w2)=0.1。
现有一系列待观察的细胞,其观察值为:-2.67 -3.55 -1.24 -
0.98 -0.79 -2.85 -2.76 -3.73 -3.54 -2.27 -3.45 -3.08 -1.58 -1.49
-0.74 -0.42 -1.12 4.25 -3.99 2.88 -0.98 0.79 1.19 3.07
两类的类条件概率符合正态分布,分别为p(x|w1)=(-2,
1.5),p(x|w2)=(2,2)。风险决策表为:λ12=7, λ21=2,λ11=λ22=0。

首先需要计算出类条件概率

p(x|w1)以及p(x|w2)
由题知呈正太分布,则在Python中调用统计函数库

from scipy.stats import norm

生成正太函数设置均值和标准差

gauss1=norm(loc=-2,scale=1.5)#loc:均值,scale:标准差
gauss2=norm(loc=2,scale=2)#loc:均值,scale:标准差
pxw1=gauss1.pdf(x)#第一类的类条件概率P(x|w1)
pxw2=gauss2.pdf(x)#第二类的类条件概率p(x|w2)

一、最小错误率贝叶斯决策

在这类决策中,最重要的是求出两类后验概率来进行比较,后验概率较大的意味着错误率较小。
后验概率
在这里插入图片描述
p(x)是全概率
在这里插入图片描述
计算出后验概率平p(w1|x)以及p(w2|x)后进行比较
取后验概率较大的作为决策类
如p(w1|x)>p(w2|x)则x为w1类

二、最小风险贝叶斯决策

在这里插入图片描述
这这道例题中的两类条件风险R就为
在这里插入图片描述
计算出R(a1|x)以及R(a2|y)比较取风险较小的作为决策类
如R(a1|x)<R(a2|y)则决策为w1类

三、具体代码如下

from scipy.stats import norm  #统计函数库
x=[-2.67,-3.55,-1.24,-0.98,-0.79,-2.85,-2.76,-3.73,-3.54,-2.27,-3.45,-3.08,-1.58,-1.49,-0.74,-0.42,-1.12,4.25,-3.99,2.88,-0.98,0.79,1.19,3.07]
pw1=0.9
pw2=0.1
gauss1=norm(loc=-2,scale=1.5)#loc:均值,scale:标准差
gauss2=norm(loc=2,scale=2)#loc:均值,scale:标准差
pxw1=gauss1.pdf(x)#第一类的类条件概率P(x|w1)
pxw2=gauss2.pdf(x)#第二类的类条件概率p(x|w2)
px=(pxw1*pw1+pxw2*pw2)#全概率P(x)
pwx1=pxw1*pw1/px#第一类后验概率P(w1|x)
pwx2=pxw2*pw2/px#第一类后验概率P(w2|x)
print(pwx1)
print(pwx2)
r=[0]*24
for i in range(0,24):
    if pwx1[i]>pwx2[i]:
        r[i]=1
    else:
        r[i]=2
    i=i+1
print('基于最小错误率的决策结果')
print(r)#最小错误率贝叶斯决策

#最小风险贝叶斯决策
loss12=7
loss21=2
loss11=loss22=0
r1=loss11*pwx1+loss12*pwx2#判断为第一类的条件风险
r2=loss21*pwx1+loss22*pwx2#判断为第二类的条件风险
print(r1)
print(r2)
y=[0]*24
for j in range(0,24):
    if r1[j]<r2[j]:
        y[j]=1
    else:
        y[j]=2
    j=j+1
print('基于最小风险的决策结果')
print(y)

运行结果
在这里插入图片描述

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值