模式识别大作业许萌1306020Word下载.docx
《模式识别大作业许萌1306020Word下载.docx》由会员分享,可在线阅读,更多相关《模式识别大作业许萌1306020Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
A(159.2333,49.9333)
B(168.8158,57.0105)
C(176.4375,70.0156)
A(163.3438,51.8742)
B(174.5561,64.5024)
C(178.8657,80.4776)
4
A(157.4286,49.2381)
B(164.7727,53.3545)
C(170.4400,58.2640)
D(176.4375,70.0156)
A(159.8548,48.3145)
B(167.5567,56.6485)
C(175.4783,65.7908)
D(179.3684,81.7368)
5
A(158.1579,47.3684)
B(163.3913,54.4652)
C(170.3462,58.1423)
D(176.0741,67.7593)
E(178.4000,82.2000)
A(160.5732,50.0512)
B(170.0510,57.5020)
C(175.3836,65.9452)
D(178.6429,75.7589)
E(179.6667,91.3889)
6
A(158.3462,49.8462)
B(166.9259,54.5889)
C(171.4737,60.8158)
D(175.6842,68.1842)
E(178.0000,80.6667)
F(183.3333,66.6667)
A(160.8427,50.6596)
B(170.6296,55.1241)
C(172.6381,62.9143)
D(176.8488,76.8837)
E(177.2955,68.0057)
F(181.5952,89.1905)
表1.1 不同聚类初值对聚类结果的影响
第二题Bayes分类器
用FAMALE.TXT和MALE.TXT的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。
调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。
2.1实验原理
首先,以两个训练样本身高数据作为特征,利用最大似然法分别算出均值的最大似然估计和方差的最大似然估计,分别带入到假设模型一维正态分布中得出类条件概率密度,通过结合不同的先验概率计算出后验概率并对test1和test2进行基于最小错误率的Bayes决策,待测样本属于后验概率较大的一方。
最后考察测试错误情况及对决策和错误率的影响。
2.2Bayes分类器算法流程图
图2.1Bayes分类器算法流程图
3.实验结果及分析
图2Bayes分类器的MATLAB仿真结果
3.1当先验概率相等时(0.5/0.5):
由类条件概率以及先验概率可得测试样本集合test1和test2的后验概率,可得决策
所造成的风险为
对于具体的损失比较二者大小即可作出决策判断。
当b=0.5,c=0.5,相应错误率为error1=5.71%,error2=9%;
当b=5,c=5,相应错误率为error1=5.71%,error2=9%;
当b=0.1,c=10.相应错误率为error1=28.57%,error2=13.33%
当b=10,c=0.1.相应错误率为error1=57.14%,error2=83.33%.
当b=0.1,c=100.相应错误率为error1=31.43%,error2=14.67%
3.2当先验概率不等时:
●PX1(男生)=0.25,PX2(女生)=0.75,对于具体的损失比较二者大小即可作出决策判断。
当b=0.5,c=0.5.相应错误率为error1=11.43%,error2=22%.
当b=5,c=5.相应错误率为error1=11.43%,error2=22%.
当b=0.1,c=10.相应错误率为error1=22.86%,error2=8%.
当b=0.1,c=100.相应错误率为error1=28.57%,error2=13.33%.
●PX1=0.75,PX2=0.25,
当b=0.5,c=0.5.相应错误率为error1=8.57%,error2=6.67%.
当b=5,c=5.相应错误率为error1=8.57%,error2=6.67%.
当b=0.1,c=10.相应错误率为error1=28.57%,error2=13.33%.
当b=0.1,c=100.相应错误率为error1=42.86%,error2=16.67%.
●PX1=0.9.PX2=0.1
当b=0.5,c=0.5.相应错误率为error1=11.43%,error2=5.67%.
当b=5,c=5.相应错误率为error1=11.43%,error2=5.67%.
当b=0.1,c=10.相应错误率为error1=28.57%,error2=14%.
●PX1=0.1.PX2=0.9
当b=0.5,c=0.5.相应错误率为error1=20%,error2=49%.
当b=5,c=5.相应错误率为error1=20%,error2=49%.
当b=0.1,c=10.相应错误率为error1=11.43%,error2=5.67%.
b|c
Error总
|
0.5|0.5
0.25|0.75
0.75|0.25
0.9|0.1
0.1|0.9
0.5|0.5
14.71%
33.43%
15.24%
17.1%
69%
5|5
14.7%
0.1|10
41.9%
30.86%
41.90%
42.57%
0.1|100
46.1%
59.53%
表2.1采用最小风险的Bayes决策对test1和test2测试错误率情况
注:
1)PX1为男生先验概率,PX2为女生先验概率。
2)Error总为每种情况下对test1和test2测试的总错误率。
3)b为把女生归为男生的损失函数,c为把男生归为女生的损失函数。
3.3结论
从上表可以看出,在先验概率相等与否以及损失函数的改变对决策和错误率均有影响。
(1)当先验概率不变时,损失函数相差越大,错误率越高;
(2)当损失函数之比等于1时,错误率相等;
(3)当损失函数不变时,先验概率两极分化越严重,错误率越高;
当男女生训练样本先验概率对调时,女生先验概率大时,错误率大,原因可能是两个测试样本的女生数量相对比较多,不确定性比较大造成的。
第三题利用K-L变换进行特征提取
1.题目要求
用FAMALE.TXT和MALE.TXT的数据作为本次实验使用的样本集,利用K-L变换对该样本集进行变换,加深对所学内容的理解和感性认识。
2.K-L变换原理
设n维随机向量
,其均值向量
,相关矩阵
,协方差矩阵
,
经正交变换后产生向量
。
设有标准正交变换矩阵T,(即T'
T=I)
(称为
的K-L展开式)
取前m项为
的估计值
其均方误差为
在T‘T=I的约束条件下,要使均方误差
为此设定准则函数
由
可得
即
表明:
i是
的特征值,而
是相应的特征向量。
利用上式有:
用“截断”方式产生x的估计时,使均方误差最小的正交变换矩阵是其相关矩阵Rx的前m个特征值对应的特征向量构成的。
图3.1K-L变换算法流程图
3.结果分析
图3.2K-L变换特征提取的MATLAB仿真
由上图可知:
且考虑类别信息的特征提取再分类与Fisher分类器效果差不多,不过在本次实验中,Fisher判别更胜一筹。
考虑类别信息时,分类效果会受到先验概率的影响。
MATLAB程序附录
1.C均值聚类算法的MATLAB程序
clc;
clearall;
[FHFW]=textread('
C:
\Users\FREEMAN\Desktop\FEMALE.txt'
'
%f%f'
);
[MHMW]=textread('
\Users\FREEMAN\Desktop\MALE.txt'
FA=[FHFW];
FA=FA'
;
MA=[MHMW];
MA=MA'
fork=1:
50
NT(:
k)=FA(:
k);
end
fork=51:
100
k)=MA(:
k-50);
end
z1=NT(:
1);
z2=NT(:
51);
fork=1:
a=z1,b=z2
G1=zeros(2,100);
G2=zeros(2,100);
fori=1:
d1=sqrt((NT(1,i)-z1(1,1))^2+(NT(2,i)-z1(2,1))^2);
d2=sqrt((NT(1,i)-z2(1,1))^2+(NT(2,i)-z2(2,1))^2);
ifd1<
d2
G1(:
i)=NT(:
i);
else
G2(:
end
find(sum(abs(G1),1)==0))=[];
find(sum(abs(G2),1)==0))=[];
z1=mean(G1,2);
z2=mean(G2,2);
ifisequal(a,z1)==1&
&
isequal(z2,b)==1
break
z1,z2,G1,G2,size(G1,2),size(G2,2)
size(G1,2)
x=G1(1,i);
y=G1(2,i);
plot(x,y,'
G.'
holdon
size(G2,2)
x=G2(1,i);
y=G2(2,i);
R*'
plot(z1(1,1),z1(2,1),'
B+'
)
holdon
plot(z2(1,1),z2(2,1),'
2层次聚类算法的MATLAB程序
G1=NT;
G2=zeros(2,100);
X1=mean(G1,2);
X2=mean(G2,2);
E=0;
B=zeros(1,100);
ifk==1
g1=NT;
else
g1=p1;
101-k
ifi==1
a=0;
a=E;
i)=[0;
0];
k)=g1(:
N1=size(G1,2);
N2=size(G2,2);
E=N1*N2/100*(X1-X2)'
*(X1-X2);
ifE>
a
x1=X1;
x2=X2;
p1=G1;
p2=G2;
B(1,k)=E;
G1=g1;
E=a;
G2=p2;
ifk>
=2&
B(1,k)<
B(1,k-1)
x1,x2,p1,p2
size(p1,2)
x=p1(1,i);
y=p1(2,i);
size(p2,2)
x=p2(1,i);
y=p2(2,i);
plot(x1(1,1),x1(2,1),'
plot(x2(1,1),x2(2,1),'
3.Bayes分类器(以身高为数据作为特征)
%仅身高作为特征时
Result(1,1:
2)=0;
%判别矩阵的初始化
%------------------------------------------------------------------------%
%训练样本
\Desktop\FEMALE.txt'
\Desktop\MALE.txt'
%身高作为特征
X1=FH;
X1=X1'
X2=MH;
X2=X2'
%测试样本
[t2Ht2W]=textread('
Desktop\test2.txt'
%f%f%*s'
X=t2H;
X10=X(1:
50,:
X10=X10'
%test2中的女生50
X20=X(51:
300,:
X20=X20'
%test2中的男生250
%画出各样本的分布情况
figure;
subplot(3,1,1)
plot(X1(1,:
),'
r.'
LineWidth'
2),holdon
plot(X2(1,:
b+'
title('
训练样本仅身高时的分布情况'
legend('
训练样本FAMALE'
训练样本MALE'
subplot(3,1,2)
plot(X10(1,:
plot(X20(1,:
测试样本test2仅身高时的分布情况'
FAMALE'
MALE'
%先验概率
P
(1)=length(X1)/(length(X1)+length(X2));
P
(2)=length(X2)/(length(X1)+length(X2));
%计算相关量cov(X):
协方差矩阵Ave:
均值
%--------------------------------------------------------%
W1=-1/2*inv(cov(X1'
));
W2=-1/2*inv(cov(X2'
%inv()方阵的逆
Ave1=(sum(X1'
)/length(X1))'
Ave2=(sum(X2'
)/length(X2))'
w1=inv(cov(X1'
))*Ave1;
w2=inv(cov(X2'
))*Ave2;
w10=-1/2*Ave1'
*inv(cov(X1'
))*Ave1-1/2*log(det(cov(X1'
)))+log(P
(1));
%det()方阵的行列式
w20=-1/2*Ave2'
*inv(cov(X2'
))*Ave2-1/2*log(det(cov(X2'
)))+log(P
(2));
X=X'
forj=1:
300
g1=X(:
j)'
*W1*X(:
j)+w1'
*X(:
j)+w10;
%判别函数
g2=X(:
*W2*X(:
j)+w2'
j)+w20;
ifg1>
=g2
Result(1,1)=Result(1,1)+1;
%记录FAMALE
XF(:
j)=X(:
j);
Result(1,2)=Result(1,2)+1;
%记录MALE
XM(:
subplot(3,1,3)
plot(XF(1,:
plot(XM(1,:
测试样本test2仅身高时的测试分布情况'
Result
4.K-L特征提取(不考虑分类)
clearall
clc
A=textread('
\Users\FREEMAN\Desktop\MALE.TXT'
B=textread('
\Users\FREEMAN\Desktop\FEMALE.TXT'
male=A(:
1:
2);
female=B(:
T=[male;
female];
s=cov(T)
[m,n]=eig(s);
ifn(1,1)>
n(2,2)
w=m(:
elseifn(1,1)<
2);
hei_m=male(:
wei_m=male(:
hei_fe=female(:
wei_fe=female(:
plot(hei_m,wei_m,'
g*'
hei_fe,wei_fe,'
ro'
y=w'
*[male'
female'
];
fori=1:
plot(y(:
i),'
fori=51:
l=mean(y);
k=0;
m=0;
ify(i)<
l&
i<
=50
k=k+1;
elseify(i)>
i>
m=m+1;
k,m
ess1=k/100
ess2=m/100