基于最小错误率的贝叶斯分类器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于最小错误率的贝叶斯分类器设计
实验原理:
在已知P(w i),P(X|w i) ,i=1,…,c 及给出待识别的X的情况下,根据贝叶斯公式计算出后验概率:
将X归类于后验概率最小的那一类。
实验数据:
假定某个局部区域细胞识别中正常(w1)和非正常(w2)两类先验概率分别为正常状态:P(w1)=0.9;
异常状态:P(w2)=0.1。
现有一系列待观察的细胞,其观察值为x :
-3.9847 -3.5549 -1.2401 -0.9780 -0.7932 -2.8531
-2.7605 -3.7287 -3.5414 -2.2692 -3.4549 -3.0752
-3.9934 2.8792 -0.9780 0.7932 1.1882 3.0682
-1.5799 -1.4885 -0.7431 -0.4221 -1.1186 4.2532
已知类条件概率密度曲线如下图:
P(X|w1),P(X|w2)类条件概率分布满足正态分布,分别为(-2,0.25)(2,4)。
画出相应的后验概率分布曲线和分类结果。
程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 主函数main.m,最小错误贝叶斯分类
clear all
pw(1)=0.9; %w1 类别的先验概率
pw(2)=0.1; %w2 类别的先验概率
x=[-3.9847,-3.5549,-1.2401,-0.9780,-0.7932,-2.8531,-2.7605,-3.7287, -3.5414,-2.2692,-3.4549,-3.0752,
-3.9934,2.8792,-0.9780,0.7932,1.1882,3.0682,-1.5799,-1.4885,-0.7431 ,-0.4221,-1.1186,4.2532];%%观察值x
y=zeros(2,length(x));
y(1,:)=normpdf(x,-2,0.5); %w1类别在观察值x条件下得出的概率
y(2,:)=normpdf(x,2,2); %w2类别在观察值x条件下得出的概率
for n=1:length(x)
!echo ==============================================
!echo 第n个细胞
n
for i=1:2
pwx(n,i)=p(pw,y,n,i);%贝叶斯后验概率
end
disp('判断为正常类的后验概率为:');
p1=pwx(n,1)
disp('判断为异常类的条后验概率为:');
p2=pwx(n,2)
if pwx(n,1)>pwx(n,2)
disp(' 根据观察值x判断为正常类!');
else
disp(' 根据观察值x判断为异常类!');
end
end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 类条件概率密度图和后验概率密度图
xplot=-6:0.1:6;
yplot=zeros(2,length(xplot));
yplot(1,:)=normpdf(xplot,-2,0.5);
yplot(2,:)=normpdf(xplot,2,2);
for n=1:length(xplot)
for i=1:2
pwx2(n,i)=p(pw,yplot,n,i);
end
end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%子图1,最小错误率的后验概率分布
subplot(2,1,1),
plot(xplot,pwx2(:,1),'b');hold on
plot(xplot,pwx2(:,2),'r'); hold on
for n=1:length(x)
plot(x(n),pwx(n,1),'b*');hold on
plot(x(n),pwx(n,2),'r*');hold on
end
grid on
axis([-6,6,0,1]);
xlabel('x'), ylabel('后验概率p(w|x)'),title('最小错误率的后验概率密度')
legend('正常状态后验概率密度','异常状态后验概率密度') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%子图2,最小错误率的分类结果subplot(2,1,2),
for n=1:length(x)
if pwx(n,1)>pwx(n,2)
plot(x(n),pwx(n,1),'b*');hold on
else
plot(x(n),pwx(n,2),'r*');hold on
end
end
grid on
axis([-6,6,0,1]);
xlabel('x'), ylabel('选取较大的后验概率值p'),title('最小错误率的分类结果')
子程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 调用子程序p.m,计算贝叶斯后验概率
function pcount=p(pw,y,n,i)
%%%%%%%%%%%计算在类别条件下观察值的概率值,pw为类别先验概率,y为在某类别下的观察值的概率矩阵,n为第n个细胞,i为所分类别
pcount=pw(i)*y(i,n)/(pw(1)*y(1,n)+pw(2)*y(2,n));。