特征选择特征提取matlab算法实现模式识别.docx
- 文档编号:28050584
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:8
- 大小:92.46KB
特征选择特征提取matlab算法实现模式识别.docx
《特征选择特征提取matlab算法实现模式识别.docx》由会员分享,可在线阅读,更多相关《特征选择特征提取matlab算法实现模式识别.docx(8页珍藏版)》请在冰豆网上搜索。
特征选择特征提取matlab算法实现模式识别
6特征选择
6.1问题
对“threethreelarge.m”数据,采用任意一种特征选择算法,选择2个特征
6.2思路
采用简单特征选择法(simplefeatureselectionapproach),首先计算每一个特征的分类能力值,再选择出其中最大分类能力的l个特征。
6.3结果
eigs= 8.9234 0.0000 0.0767
SelectedFeature=1 3
也就是说,选取x和z坐标作为特征。
6.4代码
%特征选择代码,见FSthrthrlrg.m文件
m1=[0,0,0]; m2=[0,0,0]; m3=[0,0,0]; m=[0,0,0];
fori=1:
200
m1
(1)=m1
(1)+(x1(i,1)-m1
(1))/i;
m1
(2)=m1
(2)+(x1(i,2)-m1
(2))/i;
m1(3)=m1(3)+(x1(i,3)-m1(3))/i;
end;
fori=1:
190
m2
(1)=m2
(1)+(x2(i,1)-m2
(1))/i;
m2
(2)=m2
(2)+(x2(i,2)-m2
(2))/i;
m2(3)=m2(3)+(x2(i,3)-m2(3))/i;
end;
fori=1:
210
m3
(1)=m3
(1)+(x3(i,1)-m3
(1))/i;
m3
(2)=m3
(2)+(x3(i,2)-m3
(2))/i;
m3(3)=m3(3)+(x3(i,3)-m3(3))/i;
end;
m
(1)=(m1
(1)+m2
(1)+m3
(1))/3;
m
(2)=(m1
(2)+m2
(2)+m3
(2))/3;
m(3)=(m1(3)+m2(3)+m3(3))/3;
sw1=zeros(3,3);sw2=zeros(3,3);sw3=zeros(3,3);sw=zeros(3,3);sb=zeros(3,3);
fori=1:
200
sw1=sw1+([x1(i,1),x1(i,2),x1(i,3)]-m1)'*([x1(i,1),x1(i,2),x1(i,3)]-m1);
end;
fori=1:
190
sw2=sw2+([x2(i,1),x2(i,2),x2(i,3)]-m2)'*([x2(i,1),x2(i,2),x2(i,3)]-m2);
end;
fori=1:
210
sw3=sw3+([x3(i,1),x3(i,2),x3(i,3)]-m3)'*([x3(i,1),x3(i,2),x3(i,3)]-m3);
end;
N1=200; N2=190; N3=210; N=N1+N2+N3;
p1=N1/N; p2=N2/N; p3=N3/N;
sw1=sw1/N1;sw2=sw2/N2;sw3=sw3/N3;
sw=p1*sw1+p2*sw2+p3*sw3;
sb=p1*(m1-m)'*(m1-m)+p2*(m2-m)'*(m2-m)+p3*(m3-m)'*(m3-m);
s=inv(sw)*sb;
j1=trace(s)
eigs=eig(s)';eigsIndex=[1,2,3];
%冒泡法排序,注意的是特征值顺序变化的同时要与相对应的下标同步
fori=1:
3
forj=i:
3
if(eigs(i) eigstemp=eigs(i); eigs(i)=eigs(j); eigs(j)=eigstemp; eigsIndextemp=eigsIndex(i); eigsIndex(i)=eigsIndex(j); eigsIndex(j)=eigsIndextemp; end; end; end; %降序排列后的特征值,直接选取前L个特征 SelectedFeature=[eigsIndex (1),eigsIndex (2)] %FSthrthrlrg.m程序结束 6.5讨论 从实验结果中我们可以看到y特征的分类能力最小,这一点可以从实验数据中得到验证——三类数据在y方向的分布几乎是相同的(见下图)。 Threethreelarge: 在y(横轴)方向上,三类数据几乎呈现一致的分布规律。 7特征提取 7.1问题 对“threethreelarge.m”数据,采用任意一种特征选择算法,选择2个特征 7.2思路 采用简单特征选择法(simplefeatureselectionapproach),首先计算每一个特征的分类能力值,再选择出其中最大分类能力的l个特征。 7.3结果 左图为Threethreelarge原始数据;右图将原始数据基于离差矩阵特征选择后进行的重构。 eigs= 8.9234 0.0000 0.0767 SelectedFeature= 1 3 左图为基于离差矩阵进行特征提取后的重构数据;右图为基于自相关矩阵进行特征提取后的重构数据 eigRx=1.0e+003*0.0057 0.0961 2.2111 SelF= 3 2 7.4代码 %特征提取代码,代码前半部分同特则选择代码(FSthrthrlrg.m),见FPthrthrlrg.m文件 Yslc=zeros(600,2); fori=1: 600 Yslc(i,1)=xnew(i,SelectedFeature (1)); Yslc(i,2)=xnew(i,SelectedFeature (2)); end; fori=1: 200r16(i)=Yslc(i,1);end; fori=1: 200r17(i)=Yslc(i,2);end; fori=1: 190r18(i)=Yslc(i,1);end; fori=1: 190r19(i)=Yslc(i,2);end; fori=1: 210r20(i)=Yslc(i,1);end; fori=1: 210r21(i)=Yslc(i,2);end; figure (2); plot(r16,r17,'*',r18,r19,'o',r20,r21,'.'); gridon; [eigV,eigD]=eig(s); A=[eigV(1,eigsIndex (1)),eigV(1,eigsIndex (2)); eigV(2,eigsIndex (1)),eigV(2,eigsIndex (2)); eigV(3,eigsIndex (1)),eigV(3,eigsIndex (2));]; Ynew=zeros(600,2); fori=1: 600 Xktemp=[xnew(i,1);xnew(i,2);xnew(i,3)]; Ytemp=A'*Xktemp; Ynew(i,1)=Ytemp(1,1);Ynew(i,2)=Ytemp(2,1); end; fori=1: 200r10(i)=Ynew(i,1);end; fori=1: 200r11(i)=Ynew(i,2);end; fori=1: 190r12(i)=Ynew(i,1);end; fori=1: 190r13(i)=Ynew(i,2);end; fori=1: 210r14(i)=Ynew(i,1);end; fori=1: 210r15(i)=Ynew(i,2);end; figure(3); plot(r10,r11,'*',r12,r13,'o',r14,r15,'.'); gridon; Rx=zeros(3,3); fori=1: 600 Xk=[xnew(i,1),xnew(i,2),xnew(i,3)]; Rx=Rx+Xk'*Xk; end; Rx=Rx/599; [eigRxv,eigRx]=eig(Rx); eigRx=eig(Rx)' eigRxIndex=[1,2,3]; fori=1: 3 forj=i: 3 if(eigRx(i) eigRxtemp=eigRx(i); eigRx(i)=eigRx(j); eigRx(j)=eigRxtemp; eigRxIndextemp=eigRxIndex(i); eigRxIndex(i)=eigRxIndex(j); eigRxIndex(j)=eigRxIndextemp; end; end; end; SelF=[eigRxIndex (1),eigRxIndex (2)] ARx=[eigRxv(1,eigRxIndex (1)),eigRxv(1,eigRxIndex (2)); eigRxv(2,eigRxIndex (1)),eigRxv(2,eigRxIndex (2)); eigRxv(3,eigRxIndex (1)),eigRxv(3,eigRxIndex (2))]; Ynew=zeros(600,2); fori=1: 600 Xktemp=[xnew(i,1);xnew(i,2);xnew(i,3)]; Ytemp=ARx'*Xktemp; Ynew(i,1)=Ytemp(1,1);Ynew(i,2)=Ytemp(2,1); end; fori=1: 200r22(i)=Ynew(i,1);end; fori=1: 200r23(i)=Ynew(i,2);end; fori=1: 190r24(i)=Ynew(i,1);end; fori=1: 190r25(i)=Ynew(i,2);end; fori=1: 210r26(i)=Ynew(i,1);end; fori=1: 210r27(i)=Ynew(i,2);end; figure(4); plot(r22,r23,'*',r24,r25,'o',r26,r27,'.'); gridon; %FPthrthrlrg.m程序结束 7.5讨论 从实验结果可以看出,不论是进行特则选择还是基于自相关矩阵或者离差矩阵进行的特则提取最终得到的2维新数据分布都极其相似,说明了两点: 一本问题给出的数据具有特殊性,离差矩阵有一个为0的特征值。 二基于离差矩阵和自相关矩阵进行的特征变换本质上是相同的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 特征 选择 提取 matlab 算法 实现 模式识别
![提示](https://static.bdocx.com/images/bang_tan.gif)