贝叶斯决策(习题)代码演示
程序员文章站
2022-05-20 19:36:53
...
一、 题目
假定某个局部区域细胞识别中正常P(ω1)和非正常P(ω2)两类先验概率分别为:
正常状态: P(ω1) =0.9;
异常状态: P(ω2) =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|ω1)=(-2,1.5),
p(x|ω2)=(2,2)。
风险决策表为:
λ12=7, λ21=2,
λ11=λ22=0。
1) 依据最小错误率的贝叶斯决策对观察的结果进行分类。
2) 依据最小风险贝叶斯决策对观察的结果进行分类。
二、 代码演示
1.最小错误率的贝叶斯决策
clc
clear
%导入数据
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] ;
pxw1 = normpdf(x,-2,1.5);%计算每个数据在第一类的类条件概率
pxw2 = normpdf(x,2,2); %计算每个数据在第二类的类条件概率
pw1=0.9; %先验概率
pw2=0.1;
px=(pxw1*pw1+pxw2*pw2); %全概率
%计算数据属于第一,二类的后验概率(.避免pw强制转换带来的错误)
pw1x=pxw1*pw1./px;
pw2x=1-pw1x;
%判断哪个一个后验概论较大
R=zeros(1,24); %建立初始分类矩阵
for i=1:24
%如果第i个数据属于第一类的后验概率大于第二类
if pw1x(i)>pw2x(i)
R(i)=1; %该数据属于第一类,分类矩阵中该数据所对应的位置置为1
else
R(i)=2;
end
i=i+1;
end
display(' 基 于 最 小 错 误 率 的 贝 叶 斯 分 类 结 果 :');
display('1表示该点属于第一类,2表示该点属于第二类 ');
R %显示分类矩阵,其中1表示第一类,2表示第二类
2.最小风险贝叶斯决策
clc
clear
%导入数据
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] ;
pxw1 = normpdf(x,-2,1.5); %计算每个数据在第一类的类条件概率
pxw2 = normpdf(x,2,2); %计算每个数据在第二类的类条件概率
pw1=0.9;
pw2=0.1;
px=(pxw1*pw1+pxw2*pw2); %全概率
pw1x=pxw1*pw1./px; %计算数据属于第一类的后验概率
pw2x=1-pw1x; %计算数据属于第二类的后验概率
%风险决策表
loss11=0;loss12=7;
loss21=2;loss22=0;
R1=loss11*pw1x+loss12*pw2x; %属于第一类的条件风险
R2=loss21*pw1x+loss22*pw2x ; %属于第二类的条件风险
Y=zeros(1,24); %建立初始分类矩阵
for i=1:24
if R1(i)<R2(i)
Y(i)=1;
else
Y(i)=2;
end
end
display(' 基 于 最 小 风险的 贝 叶 斯 分 类 结 果 :');
display('1表示该点属于第一类,2表示该点属于第二类');
Y %显示分类矩阵,其中1表示第一类,2表示第二类
上一篇: ES6之新增let命令使用方法
下一篇: 老哥心态不错啊!