特征选择特征提取matlab算法实现模式识别.docx

上传人:b****7 文档编号:15785951 上传时间:2023-07-07 格式:DOCX 页数:8 大小:92.46KB
下载 相关 举报
特征选择特征提取matlab算法实现模式识别.docx_第1页
第1页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第2页
第2页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第3页
第3页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第4页
第4页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第5页
第5页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第6页
第6页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第7页
第7页 / 共8页
特征选择特征提取matlab算法实现模式识别.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

特征选择特征提取matlab算法实现模式识别.docx

《特征选择特征提取matlab算法实现模式识别.docx》由会员分享,可在线阅读,更多相关《特征选择特征提取matlab算法实现模式识别.docx(8页珍藏版)》请在冰点文库上搜索。

特征选择特征提取matlab算法实现模式识别.docx

特征选择特征提取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的特征值。

二基于离差矩阵和自相关矩阵进行的特征变换本质上是相同的。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2