贝叶斯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%%%%%%%%bayes分类器%%%%%%%%%%%%%%%
clear;clc;
labeta2=0.5;labeta1=5;
m1=[3 1];sigma1=[1 0;0 1.5];
m2=[2 4];sigma2=[1 0;0 1];
m4=[3 2];sigma4=[1 1;1 3];
yangben1=NormRandomFun(m1',sigma1,100);
yangben2=NormRandomFun(m2',sigma2,100);
yangben4=NormRandomFun(m4',sigma4,10);
%%%%%%%%%%%%%%样本产生%%%%%%%%%%%%%%%%%%%%
m1=mean(yangben1);sigma1=cov(yangben1);
m4=mean(yangben4);sigma4=cov(yangben4);
m2=mean(yangben2);sigma2=cov(yangben2);
%%%%%%%%%%%%%%%%估计参数%%%%%%%%%%%%%%%
[x y]=meshgrid(-3:0.2:8);
[g w]=size(x);
fj=0;%最小错分概率
fj_s=0;%最小损失
z=zeros(g,g);
for i=1:g
for j=1:g
y1=normgailv(m1,sigma1,[x(i,j),y(i,j)]);
y2=normgailv(m2,sigma2,[x(i,j),y(i,j)]);
%最小错分概率%最小错分概率%最小错分概率%最小错分概率
z(i,j)=max(y1,y2);
if abs(y1-y2)<0.02*z(i,j)
fj=fj+1;
fenjie(fj,:)=[x(i,j) y(i,j)];
end
%最小错分概率%最小错分概率%最小错分概率%最小错分概率
%最小损失%最小损失%最小损失%最小损失%最小损失
y1_s=y1*labeta2;
y2_s=y2*labeta1;
z_s(i,j)=max(y1,y2);
if abs(y1_s-y2_s)<0.02*z_s(i,j)
fj_s=fj_s+1;
fenjie_s(fj_s,:)=[x(i,j) y(i,j)];
end
%最小损失%最小损失%最小损失%最小损失%最小损失
end
end
zs=0;zs_s=0;
yangben=[yangben1;yangben2];
[h w]=size(yangben);
%统计最小错分概率之错分概率
for i=1:2
for j=1:h/2
yc(1)=normgailv(m1,sigma1,yangben(j+(i-1)*h/2,:));
yc(2)=normgailv(m2,sigma2,yangben(j+(i-1)*h/2,:));
if yc(i)~=max(yc)
zs=zs+1;
end
end
end
cuolv=double(zs/h);%错分概率
for i=1:2%统计最小损失之错分概率
for j=1:h/2
yc_s(1)=normgailv(m1,sigma1,yangben(j+(i-1)*h/2,:))*labeta2;
yc_s(2)=normgailv(m2,sigma2,yangben(j+(i-1)*h/2,:))*labeta1;
if yc_s(i)~=max(yc_s)
zs_s=zs_s+1;
end
end
end
cuolv_s=double(zs_s/h);%错分概率
%%%%%%%%%%%%%作图%%%%%%%%%%%
mesh(x,y,z);
title('分布概率图');
figure;
hold on;
xlabel('分界线图');
scatter(yangben1(:,1),yangben1(:,2),'r.');
scatter(yangben2(:,1),yangben2(:,2),'g.');
plot(fenjie(:,1),fenjie(:,2),'k-.');
plot(fenjie_s(:,1),fenjie_s(:,2),'r-..');%按最小损失法求得分界线
%错分
str=strcat('bayes分类器 最小错分之错误率=',num2str(cuolv),...
' labeta1=',num2str(labeta1),' labeta2=',num2str(labeta2),...
'最小损失之错误率=',num2str(cuolv_s));
text(6,6,'black 最小错分');
text(6,6.5,'red 最小损失');
axis([-3,7,-3,7]);
title(str);