西电模式识别大作业Word文档下载推荐.docx
- 文档编号:21296324
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:14
- 大小:261.17KB
西电模式识别大作业Word文档下载推荐.docx
《西电模式识别大作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西电模式识别大作业Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
定义各类样本均值向量mi:
样本类内离散度矩阵Si和总类内离散度矩阵Sw:
样本类间离散度矩阵Sb:
我们希望投影后,在低维空间里个样本尽可能的分开些,即希望两类均值(m1-m2)越大越好,同时希望各类样本内部尽量密集,即Si越小越好。
因此,我们定义Fisher准则函数为:
采用Lagrange乘子法求解它的极大值
我们很容易得到
忽略比例因子R/
,得
这就是我们Fisher准则函数
取极大值时的解。
三、实验数据
表1实验数据
类别数
特征维数
样本个数
Wdbc
2
30
M:
212
B:
357
sonar
60
W1:
98
W2:
110
表2实验结果(准确率%)
不降维(最近邻法)
降维(Fisher判别)
78%
96%
73%
69%
四、实验结果
1.Wabc
由结果可知,在特征向量维数较低时,用Fisher判别准则的正确率较高且比较稳定。
最近邻法的正确率比Fisher低,且正确率依赖于随机抽取的训练样本,波动较大。
2.Sonar
由结果可知,在特征向量维数较高时,用最近邻法则的正确率较高,但其正确率依赖于随机抽取的训练样本,波动较大。
Fisher判别准则的正确率比Fisher低,但较稳定。
代码为:
Wdbc:
clc;
totalsum1=0;
totalsum2=0;
truerate=zeros(2,10);
forii=1:
10
data=load('
wdbc.txt'
);
data1=data(1:
212,2:
32);
%任取w1类数据中的106组
rbow1=randperm(212);
trainsample1=data1(rbow1(:
1:
106),1:
31);
rbow1(:
107:
212)=sort(rbow1(:
212));
%剩余的106组按行下标大小顺序排列
testsample1=data1(rbow1(:
212),1:
data2=data(213:
569,2:
%任取w2类数据中的178组
rbow2=randperm(357);
trainsample2=data2(rbow2(:
178),1:
rbow2(:
179:
357)=sort(rbow2(:
357));
testsample2=data2(rbow2(:
357),1:
trainsample=cat(1,trainsample1,trainsample2);
%包含284组数据的样本集
testsample=cat(1,testsample1,testsample2);
%包含285组数据的测试集
newchar=zeros(1,285);
sum=0;
[i,j]=size(trainsample);
%i=284,j=31
[u,v]=size(testsample);
%u=285,v=31
result=0;
min=1000000000;
true1=0;
error1=0;
forx=1:
u%最近邻法
fory=1:
i
forz=2:
31
result=result+((testsample(x,z)-trainsample(y,z))^2);
%欧氏距离
end;
result=sqrt(result);
ifresult<
min
lab=y;
min=result;
iftestsample(x,1)==trainsample(lab,1)
true1=true1+1;
else
error1=error1+1;
truerate(1,ii)=true1/285;
disp(sprintf('
第%d次最近邻分类识别率为%4.2f'
ii,truerate(1,ii)));
totalsum1=totalsum1+truerate(1,ii);
mm1=zeros(1,30);
%Fisher线性准则
mm2=zeros(1,30);
true2=0;
error2=0;
trainsample11=trainsample1(:
2:
trainsample22=trainsample2(:
forn1=1:
106
fornn1=1:
mm1(1,nn1)=mm1(1,nn1)+trainsample(n1,nn1+1);
forn2=107:
284
fornn2=1:
mm2(1,nn2)=mm2(1,nn2)+trainsample(n2,nn2+1);
mm1=mm1/106;
mm2=mm2/178;
ss1=zeros(30,30);
ss2=zeros(30,30);
forxx=1:
ss1=ss1+((trainsample11(xx,1:
30)-mm1)'
*(trainsample11(xx,1:
30)-mm1));
foryy=1:
178
ss2=ss2+((trainsample22(yy,1:
30)-mm2)'
*(trainsample22(yy,1:
30)-mm2));
ss=ss1+ss2;
ww=inv(ss)*((mm1-mm2)'
%变换向量
y0=ww'
*mm1'
+ww'
*mm2'
;
y0=y0/2;
%分界阈值点
forzz=1:
285
y=ww'
*((testsample(zz,2:
31))'
ify>
y0
flg=1;
flg=2;
if(flg==testsample(zz,1))
true2=true2+1;
error2=error2+1;
truerate(2,ii)=true2/285;
第%d次Fisher分类识别率为%4.2f'
ii,truerate(2,ii)));
totalsum2=totalsum2+truerate(2,ii);
end;
disp(sprintf('
10次最近邻分类平均识别率为%4.2f'
totalsum1/10));
10次Fisher分类平均识别率为%4.2f'
totalsum2/10));
linetype={'
r-'
'
k-'
};
%画图程序
fork1=1:
k2=1:
plot(k2,truerate(k1,k2),linetype{k1});
holdon;
legend(['
最近邻法'
],['
Fisher线性判别'
]);
xlabel('
实验次数'
ylabel('
准确率%'
gridon;
axis([01001]);
title('
wdbc十次分类的准确率'
sonar:
sonar.txt'
98,1:
61);
%任取w1类数据中的49组
rbow1=randperm(98);
49),1:
50:
98)=sort(rbow1(:
98));
%剩余的49组按行下标大小顺序排列
98),1:
data2=data(99:
208,1:
%任取w2类数据中的55组
rbow2=randperm(110);
55),1:
56:
110)=sort(rbow2(:
110));
110),1:
%包含104组数据的样本集
newchar=zeros(1,104);
%i=104,j=61
%u=104,v=61
forz=1:
iftestsample(x,61)==trainsample(lab,61)
truerate(1,ii)=true1/104;
mm1=zeros(1,60);
%Fisher线性准则
mm2=zeros(1,60);
49
mm1(1,nn1)=mm1(1,nn1)+trainsample(n1,nn1);
forn2=50:
104
mm2(1,nn2)=mm2(1,nn2)+trainsample(n2,nn2);
mm1=mm1/49;
mm2=mm2/55;
ss1=zeros(60,60);
ss2=zeros(60,60);
60);
60)-mm1)'
60)-mm1));
55
60)-mm2)'
60)-mm2));
*((testsample(zz,1:
60))'
if(flg==testsample(zz,61))
truerate(2,ii)=true2/104;
sonar十次分类的准确率'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 作业