模式识别作业一
习题222.(1).(1).(1).P(x∣w1)P(w1)=0.25×0.8=0.2P(x|w_1)P(w_1)=0.25\times0.8=0.2P(x∣w1)P(w1)=0.25×0.8=0.2P(x∣w2)P(w2)=0.6×0.2=0.12P(x|w_2)P(w_2)=0.6\times0.2=0.12P(x∣w2)P(w2)=0.6×0.2=0.12根据基于最小错误率的Baye
习题
2
2
2.
(
1
)
.
(1).
(1).
P ( x ∣ w 1 ) P ( w 1 ) = 0.25 × 0.8 = 0.2 P(x|w_1)P(w_1)=0.25\times0.8=0.2 P(x∣w1)P(w1)=0.25×0.8=0.2
P ( x ∣ w 2 ) P ( w 2 ) = 0.6 × 0.2 = 0.12 P(x|w_2)P(w_2)=0.6\times0.2=0.12 P(x∣w2)P(w2)=0.6×0.2=0.12
根据基于最小错误率的Bayes,该细胞为正常细胞。
( 2 ) (2) (2)
计算后验概率:
P ( w 1 ∣ x ) = P ( x ∣ w 1 ) P ( w 1 ) ∑ j = 1 2 P ( x ∣ w j ) P ( w j ) = 0.25 × 0.8 0.25 × 0.8 + 0.6 × 0.2 = 0.625 P(w_1|x)=\frac{P(x|w_1)P(w_1)}{\sum^{2}_{j=1}{P(x|w_j)P(w_j)}}=\frac{0.25\times0.8}{0.25\times 0.8+0.6\times0.2}=0.625 P(w1∣x)=∑j=12P(x∣wj)P(wj)P(x∣w1)P(w1)=0.25×0.8+0.6×0.20.25×0.8=0.625
P ( w 2 ∣ x ) = 1 − P ( w 1 ∣ x ) = 0.375 P(w_2|x)=1-P(w_1|x)=0.375 P(w2∣x)=1−P(w1∣x)=0.375
条件风险:
R ( a 1 ∣ x ) = ∑ i = 1 2 λ 1 i P ( w i ∣ x ) = 2.25 R(a_1|x)=\sum^{2}_{i=1}{λ_{1i}P(w_i|x)}=2.25 R(a1∣x)=∑i=12λ1iP(wi∣x)=2.25
R ( a 2 ∣ x ) = ∑ i = 1 2 λ 2 i P ( w i ∣ x ) = 0.625 R(a_2|x)=\sum^{2}_{i=1}{λ_{2i}P(w_i|x)}=0.625 R(a2∣x)=∑i=12λ2iP(wi∣x)=0.625
因为 R ( a 1 ∣ x ) > R ( a 2 ∣ x ) R(a_1|x)>R(a_2|x) R(a1∣x)>R(a2∣x),所以该细胞为异常细胞。
一、实验内容
- 应用单个特征进行实验:
以 (a)身高 或者 (b)体重 数据作为特征,在正态分布假设下利用最大似然法估计分布密度参数,建立最
小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到测试样本,考察测试错误情况。
在分类器设计时可以考察采用不同先验概率(如 0.5对0.5 , 0.75对0.25 , 0.9对0.1 等)进行实验,考察
对决策规则和错误率的影响。 - 自行给出一个决策表,采用最小风险的Bayes决策重复单个特征的实验
二、原理简述、程序流程图及相应结果
(一)、实验原理
1、最小错误率贝叶斯决策,常用的判别函数:
①. g i = P ( w i ∣ x ) g_i=P(w_i|x) gi=P(wi∣x)
②. g i = P ( x ∣ w i ) P ( w i ) g_i=P(x|w_i)P(w_i) gi=P(x∣wi)P(wi)
③. g i = l n P ( x ∣ w i ) + l n P ( w i ) g_i=lnP(x|w_i)+lnP(w_i) gi=lnP(x∣wi)+lnP(wi)
…
在两类的情况下,对于二分类问题,一般只用一个判别函数:
g ( x ) = g 1 ( x ) − g 2 ( x ) g(x)=g_1(x)-g_2(x) g(x)=g1(x)−g2(x)
其决策面方程为 g ( x ) = 0 g(x)=0 g(x)=0。对应的判决规则为:若 g ( x ) > 0 g(x)>0 g(x)>0,则样本判决为 w 1 w_1 w1,否则判决为 w 2 w_2 w2。
2、最小风险决策判别规则:
g ( x ) = ∑ i = 1 2 λ 1 i P ( w 1 ∣ x ) − ∑ i = 1 2 λ 1 i P ( w 2 ∣ x ) g(x)=\sum^{2}_{i=1}{λ_{1i}P(w_1|x)}-\sum^{2}_{i=1}{λ_{1i}P(w_2|x)} g(x)=∑i=12λ1iP(w1∣x)−∑i=12λ1iP(w2∣x)
其决策面方程为 g ( x ) = 0 g(x)=0 g(x)=0。对应的判决规则为:若 g ( x ) > 0 g(x)>0 g(x)>0,则样本判决为 w 2 w_2 w2,否则判决为 w 1 w_1 w1。
(二)、流程图
1.最小错误率贝叶斯决策流程图
2.最小风险决策流程图
三、实验结果及分析
(一)、最小贝叶斯错误率决策
1.只考虑身高的不同先验概率下男女判错统计表
女生先验概率 P ( w 1 ) P(w_1) P(w1) | 男生先验概率 P ( w 2 ) P(w_2) P(w2) | test1判错个数 | test1错误率 | test2判错个数 | test2错误率 |
---|---|---|---|---|---|
0.5 | 0.5 | 2 | 5.71% | 27 | 9.00% |
0.25 | 0.75 | 4 | 11.43% | 66 | 22.00% |
0.1 | 0.9 | 7 | 20.00% | 147 | 49.00% |
2.只考虑体重的不同先验概率下男女判错统计表
女生先验概率 P ( w 1 ) P(w_1) P(w1) | 男生先验概率 P ( w 2 ) P(w_2) P(w2) | test1判错个数 | test1错误率 | test2判错个数 | test2错误率 |
---|---|---|---|---|---|
0.5 | 0.5 | 2 | 5.71% | 44 | 14.67% |
0.25 | 0.75 | 4 | 11.43% | 78 | 26.00% |
0.1 | 0.9 | 10 | 28.57% | 133 | 44.33% |
对于测试样本,当女生先验概率为0.5时,测试样本1、测试样本2判别错误率最小;故可推测用最小错误率贝叶斯决策当女生先验概率等于0.5时有最小错误率贝叶斯决策。
(二)、最小风险决策
决策表:
女生 | 男生 |
---|---|
0 | 4 |
3 | 0 |
1.只考虑身高的不同先验概率下男女判错统计表
女生先验概率 P ( w 1 ) P(w_1) P(w1) | 男生先验概率 P ( w 2 ) P(w_2) P(w2) | test1判错个数 | test1错误率 | test2判错个数 | test2错误率 |
---|---|---|---|---|---|
0.5 | 0.5 | 2 | 5.71% | 20 | 6.67% |
0.25 | 0.75 | 4 | 11.43% | 58 | 19.33% |
0.1 | 0.9 | 6 | 17.14% | 120 | 40.00% |
2.只考虑体重的不同先验概率下男女判错统计表
女生先验概率 P ( w 1 ) P(w_1) P(w1) | 男生先验概率 P ( w 2 ) P(w_2) P(w2) | test1判错个数 | test1错误率 | test2判错个数 | test2错误率 |
---|---|---|---|---|---|
0.5 | 0.5 | 2 | 5.71% | 44 | 14.67% |
0.25 | 0.75 | 4 | 11.43 | 68 | 22.67% |
0.1 | 0.9 | 6 | 17.14% | 97 | 32.33% |
对于测试样本,当女生先验概率为0.5时,测试样本1、2判别错误率最小;
故可推测用最小风险决策假设身高或者体重不相关当女生先验概率等于0.5时有最小风险决策。
附录
部分截图
1.最小贝叶斯错误率决策
2.最小风险决策
c
o
d
e
:
code:
code:
clear all;%最小贝叶斯错误率决策
load FEMALE.txt;
load MALE.txt;
fid=fopen('test2.txt','r');
test1=fscanf(fid,'%f %f %c',[3,inf]);
test=test1';
fclose(fid);
tot=300
Fmean = mean(FEMALE);
Mmean = mean(MALE);
Fvar = std(FEMALE);
Mvar = std(MALE);
preM = 0.1; preF = 0.9;%先验概率
error = 0; Nerror = 0;
figure;
for i=1:tot
PFheight = normpdf(test(i,1),Fmean(1,1),Fvar(1,1)) ;
PMheight = normpdf(test(i,1),Mmean(1,1),Mvar(1,1)) ;
p=(log(PFheight)+log(preF))-(log(PMheight)+log(preM));
if(p>0)
plot(i,test(i,1),'r+');
if (test(i,3)=='1')
Nerror = Nerror +1;
end;
else
plot(i,test(i,1),'b*');
if (test(i,3)=='2')
Nerror = Nerror +1;
end
end;
hold on;
end;
title('身高最小风险的Bayes决策');
xlabel('测试序号'),ylabel('身高(cm)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')
error=0;
Nerror=0;
figure;
for i=1:tot
PFweight = normpdf(test(i,2),Fmean(1,2),Fvar(1,2)) ;
PMweight = normpdf(test(i,2),Mmean(1,2),Mvar(1,2)) ;
p=(log(PFweight)+log(preF))-(log(PMweight)+log(preM));
if(p>0)
plot(i,test(i,1),'r+');
if (test(i,3)=='1')
Nerror = Nerror +1;
end;
else
plot(i,test(i,1),'b*');
if (test(i,3)=='2')
Nerror = Nerror +1;
end
end;
hold on;
end;
title('体重最小风险的Bayes决策');
xlabel('测试序号'),ylabel('体重(kg)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')
clear all;%最小风险决策
load FEMALE.txt;
load MALE.txt;
fid=fopen('test1.txt','r');
test1=fscanf(fid,'%f %f %c',[3,inf]);
test=test1';
fclose(fid);
Fmean = mean(FEMALE);
Mmean = mean(MALE);
Fvar = std(FEMALE);
Mvar = std(MALE);
preM = 0.25; preF = 0.75;%先验概率
error = 0; Nerror = 0;
%损失矩阵
DFF=0;DFM=4;
DMF=3;DMM=0;
tot=35
figure;
for i=1:tot
PFheight = normpdf(test(i,1),Fmean(1,1),Fvar(1,1)) ;
PMheight = normpdf(test(i,1),Mmean(1,1),Mvar(1,1)) ;
p=DMF*PFheight*preF-DFM*PMheight*preM;
if(p>0)
plot(i,test(i,1),'r+');
if (test(i,3)=='1')
Nerror = Nerror +1;
end;
else
plot(i,test(i,1),'b*');
if (test(i,3)=='2')
Nerror = Nerror +1;
end
end;
hold on;
end;
title('身高最小风险的Bayes决策');
xlabel('测试序号'),ylabel('身高(cm)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')
error=0;
Nerror=0;
figure;
for i=1:tot
PFweight = normpdf(test(i,2),Fmean(1,2),Fvar(1,2)) ;
PMweight = normpdf(test(i,2),Mmean(1,2),Mvar(1,2)) ;
p=DMF*PFweight*preF-DFM*PMweight*preM;
if(p>0)
plot(i,test(i,1),'r+');
if (test(i,3)=='1')
Nerror = Nerror +1;
end;
else
plot(i,test(i,1),'b*');
if (test(i,3)=='2')
Nerror = Nerror +1;
end
end;
hold on;
end;
title('体重最小风险的Bayes决策');
xlabel('测试序号'),ylabel('体重(kg)');
error = Nerror/tot*100;
sprintf('%s %d %s %0.2f%s','分类错误个数:',Nerror,'分类错误率为:',error,'%')
更多推荐
所有评论(0)