实验一 Bayes实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 Bayes 分类器设计
一、 实验原理
最小风险贝叶斯决策可按下列步骤进行:
(1)在已知)(i P ω,)(i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计算出后验概率: ∑==
c
j i
i
i i i P X P P X P X P 1
)
()()
()()(ωωωωω j=1,…,x
(2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险
∑==
c
j j j
i
i X P a X a R 1
)(),()(ωω
λ,i=1,2,…,a
(3)对(2)中得到的a 个条件风险值)(X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的决策k a ,即
()()1,min k i i a
R a x R a x ==
则k a 就是最小风险贝叶斯决策。
二、 流程图
应用两个特征进行实验
三、 实验结果及分析总结 测试test1结果估计出男生样本的,,女生样本的,
∈
∈
∈
男生:随着男生先验概率的减小,男生被判错的概率呈现增大的趋势。并且,身高170cm以下,体重50至60kg基本判为女生。
女生:随着女生先验概率的增大,女生被判错的概率呈现减小的趋势。
四、程序源代码(Matlab):
function errorRatio=Bayes(data,ma,fe)
%读入两类训练样本数据
female = dlmread('FEMALE.txt');
female = female(:,1:2);
male = dlmread('MALE.txt');
male = male(:,1:2);
%求两类训练样本的均值和方差
favg=mean(female);
mavg=mean(male);
fsig=cov(female);
msig=cov(male);
%对测试样本分类
errorF = 0;
errorM = 0;
test = dlmread(data);
[length,width]=size(test);
for i = 1:length
Pm = mvnpdf(test(i,1:2),mavg,msig) * ma; %p(x|w1)*p(w1)
Pf = mvnpdf(test(i,1:2),favg,fsig) * fe; %p(x|w2)*p(w2)
if Pm > Pf
if (test(i,3) == 2)
errorF = errorF + 1;
end
else
if (test(i,3) == 1)
errorM = errorM + 1;
end
end
end
errorRatio = (errorF+errorM)/length ;
for i = 1:length
if(test(i,3)==1)
plot(test(i,1),test(i,2),'X')
hold on
else
plot(test(i,1),test(i,2),'O')
hold on
end
end
%加标头
title(strcat('男生:X 女生:O'))
xlabel('身高')
ylabel('体重')
%画线
h = 150:0.5:200;
w = 40:0.5:90;
b = [h;w];
a = b';
[x,y] = size(a);
for i = 1 : x
for j = 1 : x
%[a(i,1),a(j,2)]
result = (([a(i,1),a(j,2)]-mavg) * inv(msig) * ([a(i,1),a(j,2)]-mavg)' - ([a(i,1),a(j,2)]-favg) * inv(fsig) * ([a(i,1),a(j,2)]-favg)') + log(det(msig)/det(fsig)) -2*log(ma/fe);
if(result > -0.1 & result < 0.1)
if(ma == 0.5)
plot(a(i,1),a(j,2),'k*')
hold on
elseif(ma == 0.75)
plot(a(i,1),a(j,2),'b*')
hold on
else
plot(a(i,1),a(j,2),'r*')
hold on
end
end
end
end
legend('黑色:男vs 女= 0.5 vs 0.5','蓝色:男vs 女= 0.75 vs 0.15','红色:男vs 女= 0.9 vs 0.1')