您好,欢迎来到独旅网。
搜索
您的当前位置:首页基于最小错误率的贝叶斯分类器设计

基于最小错误率的贝叶斯分类器设计

来源:独旅网


基于最小错误率的贝叶斯分类器设计

实验原理:

在已知P(wi),P(X|wi) ,i=1,…,c 及给出待识别的X的情况下,根据贝叶斯公式计算出后验概率:

将X归类于后验概率最小的那一类。

实验数据:

假定某个局部区域细胞识别中正常(w1)和非正常(w2)两类先验概率分别为

正常状态:P(w1)=0.9;

异常状态:P(w2)=0.1。

现有一系列待观察的细胞,其观察值为x :

-3.9847 -3.59 -1.2401 -0.9780 -0.7932 -2.8531

-2.7605 -3.7287 -3.14 -2.2692 -3.49 -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.59,-1.2401,-0.9780,-0.7932,-2.8531,-2.7605,-3.7287,-3.14,-2.2692,-3.49,-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));

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dcrkj.com 版权所有 赣ICP备2024042791号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务