特征选择与压缩模式识别Word格式.docx
- 文档编号:21453007
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:10
- 大小:31.06KB
特征选择与压缩模式识别Word格式.docx
《特征选择与压缩模式识别Word格式.docx》由会员分享,可在线阅读,更多相关《特征选择与压缩模式识别Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
特征的权重越大,表示该特征的分类能力越强,反之,表示该特征分类能力越弱。
RELIEF算法的运行时间随着样本的抽样次数M和原始特征个数N的增加线性增加,因而运行效率非常高。
1.2主要代码
%%特征选择测试
nSample=[500,500,500];
%2维情况
dim=6;
coeff={
[-20.8;
-10.9;
20.7;
-11.5;
-11.4;
-21.1],....
[10.9;
-20.7;
-20.8;
11.2;
-11.1;
-11.0],...
[-20.7;
20.8;
-11.3;
11.3],};
data=createSample(nSample,dim,coeff);
%%得到训练数据nClass=length(nSample);
tlabel=[];
tdata=[];
fori=1:
nClass
tlabel=[tlabel;
i*ones(nSample(i),1)];
tdata=[tdata;
data{i}'
];
end
%%调用relieff算法
m=500;
k=20;
outDim=2;
outData=stpReliefF(tlabel,tdata,nSample,m,k,outDim);
%绘制数据
result=cell(1,nClass);
index=0;
result{i}=outData(index+1:
index+nSample(i),:
);
index=index+nSample(i);
figure;
subplot(1,2,1);
plot(result{1}(:
1),result{1}(:
2),'
*'
...result{2}(:
1),result{2}(:
o'
...result{3}(:
1),result{3}(:
x'
);
title('
Relieff特征选择法'
%%K变换法
outData=stpKLTransformAll(tdata,outDim);
subplot(1,2,2);
holdon;
result{2}(:
result{3}(:
K-L变换法'
function[outData]=stpReliefF(label,data,nSample,m,k,outDim)%%ReliefF算法
%
%%输入
%label类别标签
%data样本数据
%nSample每一类的样本数的向量
%m算法循环次数m
%kk近邻
%outDim算法选出的特征数,应该小于输入数据的特征数
%%输出
%outData寻找到的k个样本数据
%outClass寻找到的数据对应的类别
[n,dim]=size(data);
%%初始化
%初始化权重
weight=zeros(1,dim);
%类的个数
nClass=length(nSample);
%每个特征的最大最小值,并计算每个特征的跨度interval
minD=min(data);
maxD=max(data);
interval=maxD-minD;
%%计算先验概率
p=zeros(1,nClass);
p(i)=nSample(i)/n;
%实际上,n是所有样本的个数
%%核心算法
%进行m次随机选择
m
%随机从样本集合中选择一个样本
index=floor(rand()*n+1);
curData=data(index,:
%选中的当前样本数据
curClass=label(index);
%选中的当前样本所属分类
%得到与curData最近邻的同类k个样本
[hData,hClass]=stpGetRandSamples(label,data,index,k,1);
%得到与curData最近邻的不同类k个样本
[mData,mClass]=stpGetRandSamples(label,data,index,k,0);
%遍历所有的特征,更新该特征的权重
forj=1:
dim
%初始化第j特征的权重更新量为0
temp=0;
%需要对近邻的同类k个元素进行遍历
fort=1:
k
temp=temp-abs(curData(j)-hData(t,j))/interval(j);
%需要对近邻的不同类的k个元素进行遍历
coff=p(curClass)/(1-p(mClass(t)));
temp=temp+coff*abs(curData(j)-mData(t,j))/interval(j);
temp=temp/(m*k);
%跟新特征权重
weight(j)=weight(j)+temp;
outData=zeros(n,outDim);
dimIndex=zeros(1,outDim);
%%获取权重最大的outDim个特征
outDim
pe=dim-i+1;
[~,index]=max(weight(1:
pe));
dimIndex(i)=index;
%把当前找到的最大元素交换到最后面去去temp=weight(index);
weight(index)=weight(pe);
weight(pe)=temp;
outData(:
i)=data(:
index);
function[outData,outClass]=stpGetRandSamples(label,data,index,k,flag);
%%从样本数据中获取索引为index的k个近邻
%index参考点的索引
%flag如果为1,则表示同类的k近邻,如果为0则表示不同类的k近邻
%outData寻找到的k个样本数据
%参考点数据
rData=data(index,:
rClass=label(index);
%%缩小data的范围
if(flag==1)
%如果是同类中的近邻
temp=find(label==rClass);
data=data(temp,:
label=label(temp,:
else
%如果不同类
temp=find(label~=rClass);
sData=data;
%计算距离
temp=data(:
i)-rData(i);
data(:
i)=temp.*temp;
dist=sum(data,2);
outData=zeros(k,dim);
outclass=zeros(k,1);
n=length(dist);
%寻找第i个近邻
%找出k个最小元素
pe=n-i+1;
[~,index]=min(dist(1:
outClass(i)=label(index);
outData(i,:
)=sData(index,:
%交换最后一个元素
tv=dist(index);
dist(index)=dist(pe);
dist(pe)=tv;
1.3结果分析
针对给定的参数
%:
塔性兄
din*6caeff工(
[-2OnB.-13.9.2山丁;
-11.5.TLU.~Zhl],flOhS;
-2'
Q.7;
-2Q*日:
:
1,2;
-11+L;
-1L.Qh.・*[-2Q.i;
S0,5;
-JQ*9;
-I1.3J1,2;
:
L3]r);
抽取2个维度的结果后如下图(1-1)所示:
图1-1relieff特征提取算法2维结果图
最后计算的权重结果如下(按照维度顺序排序):
0.03800.04390.0679-0.0016-0.00000.0146
故而选择的特征是第3,2个特征(其权重按顺序排列,取前两个),分析生成数据的参数
■2堆10见
difl=或:
=I
[-20..5;
-11.9,20,7;
-11.-1L.4;
-21.订」
[L山9;
-J0・T;
-2L1,2;
-IUL;
-1L-0],...
卜gQ.;
;
ga$;
'
JQ」;
TLI;
1LJ.3]J):
第1个特征的1类和3类很近,第4个特征的1类和3类也很近,第5个特征的1类和2类较为接近,因此,算法计算结果体现了提取出更好区分类别的特征的思想。
2.K丄变换算法
2.1算法原理
其变换的主要流程图如下:
NAn惟壮征
加噩不剧'
'
Ms冲*)
求£
43舸酣列I
K厂
"
{/#,.七屮]
莎mm祐」F削换面
特祉向呈组成&
卿:
轴
样本向劉0夥到以选取的].-
翔正向涵Qfl9tUE菊可*・e亠恋・ffi-工A、
—
榕A睛佝曇G看件(醴空间的基*常量mR初耳分布的特性,故傑
[E7钿看作S成分严山小卄耳耐原財弟融空®
的标
图2-1K-L变换算法图
22主要代码
function[outData]=stpKLTransformAII(data,outDim)
%%KI变换的算法-最优描述的K-L变换(沿类间距离大的方向降维)
%参考网址:
%outData压缩特征后的数据
[〜,dim]=size(data);
%%计算每个样本的协方差的和,均值
covD=cov(data);
meanD=mean(data);
data(:
i)-meanD(i);
%%求取特征值和特征向量
[eigM,eigV]=eig(covD);
value=zeros(1,dim);
%提取eigV的对角元素导特征向量
value(i)=eigV(i,i);
并转换数据
%%寻找特征向量中的最大的两个元素vector=zeros(outDim,dim);
[~,index]=max(value(1:
%把当前找到的最大元素交换到最后面去去temp=value(index);
value(index)=value(pe);
value(pe)=temp;
vector(i,:
)=eigM(:
index)'
;
%转换数据
outData=data*vector'
2.3结果分析
此算法运行结果如下:
图2・1K-L变换结杲图
对比两种方法图如下:
HgU卅吐仪W亡MjUk右
Relieff算法和K-L变换结果对比图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 特征 选择 压缩 模式识别