?? pluslr.m
字號:
%----4.18編 增 l減 r法 特征選擇
clear;
clc;
%--------特征導入 請自行修改
M=256;N=256;
load coourfeature_0420_FGL-5 %%%共生矩陣 96.14%
feature{1}=coourfeature(:,1);
feature{2}=coourfeature(:,2);
feature{3}=coourfeature(:,3);
load fufeature_0420_FGL-5 %%復小波 98.26%
for i=1:13
feature{3+i}=wavefeature(:,i);
end
load wavefeature_feixia_0420_FGL-5%%%非下采樣小波 97.58%
for i=1:7
feature{16+i}=wavefeature(:,i);
end
load wavefeature_0420_FGL-5%%小波 97.65%
for i=1:7
feature{23+i}=wavefeature(:,i);
end
%%%%%%%----------歸一化
[m n]=size(feature{1});
for j=1:30%一共30組特征 這里 請自行修改
mx=max(feature{j});
mi=min(feature{j});
mxx=(mx-mi);
mii=ones([m n])*mi;
feature{j}=(feature{j}-mii)./mxx;
end
%-------------------------特征選擇開始啦!!
%-說明:本算法是l>r,就是自下而上的計算
l=4;r=3;d=1;%d 是最終要得到的特征數 l是每次增加的特征 r是每次減去的特征
chosen=[];%%表示已選的特征
chosen=[chosen 1];
while d<12
%-----------------------------1 選l個特征-------------------------------------
for j=1:l %選l個特征
J=zeros([1 30]);
for i=1:30 %%一共30組特征 這里 請自行修改
[mm nn]=size(chosen);
for p=1:nn
if i==chosen(p)
J(i)=0;
break;
else
J(i)=J(i)-sum(sum((feature{i}-feature{chosen(p)}).^2));
end
end
end
mi=min(J);
for i=1:30
if J(i)==0
J(i)=mi;
end
end
[ma1 we1]=max(J);
chosen=[chosen we1];
end
%-----------------------------2 去掉r個特征-------------------------------------
dele=[];
for j=1:r %%刪r個
[ch chnum]=size(chosen);
J=zeros([1 chnum]);ii=0;
for i=1:chnum % 去掉chosen中第i個的效果
[mm nn]=size(chosen);
for p=1:nn
for q=1:nn
if (chosen(q)~=chosen(i)) & (chosen(p)~=chosen(i))
J(i)=J(i)-sum(sum((feature{chosen(q)}-feature{chosen(p)}).^2));
end
end
end
end
% mi=min(J);
for cc=1:chnum
if J(cc)==0
J(cc)=mi;
end
end
[ma we]=max(J);
chosen(we)=[];
end
d=d+l-r
end
[mm nn]=size(chosen);
tezh=[];
for i=1:nn
tezh=[tezh feature{chosen(i)}];
end
% %%%%%%%%聚類
% [IDC,U]=kmeans(tezh,4);
% cc(IDC==1,1)=0;
% cc(IDC==2,1)=0.25;
% cc(IDC==3,1)=0.5;
% cc(IDC==4,1)=0.75;
% % g=reshape(cc,M,N);
% % figure,imshow(g);
% save 0423gFGL g
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -