📄 sfs.m
字号:
function [output_array, Subset, Cost_subsets, Cost,Same_subset] = SFS(X, Y, new_size,data)
selectioncriteria='NN';
[n m] = size(X); % n-rows m-features
j=1;
% Find the cost criterion for each feature
for(loop=1:new_size)
loop
if(loop == 1)
cost(1:m,1) = 0; % initialise
cost(1:m,2) = [1:m]';
else
% Form new feat vect combos of winner and remaining features
cost = zeros(K-1,L+1); %reinitialise
lp=1;
for(i=1:m)
if(isempty(find(winner == i)) == 1) % i is not equal to any of the numbers made up by winner ie [2 3 4]
cost(lp,1)=0; % Reinitialise cost value
cost(lp,2:L+1) = [winner i];
lp=lp+1;
end
end
end
%cost = zeros(m+(loop-1),2+(loop-1));
[K L] = size(cost); % find length of feat vector
for(i=1:K) % m-feature subsets 9,8,7,6-> (x1), (x1 x2), (x1 x2 x3), etc...
% cost array = cost value, feature sequence x No feat combo's
% Form feature test vector, form different combinations (x1), (x1 x2), (x1 x2 x3), etc...
subset=cost(i,2:L);
% cost(i,1) = rand();
cost(i,1) = fs_knn(subset,X,Y,data);
end
% perform quicksort of measure column
B = sortrows(cost,1);
winner = B(K,2:L); % feat combo of winner
%--------my code for same performance for different subset
nSame=0;
for(i=1:K) %count the number of subset
if(B(i,1)==B(K,1))
nSame=nSame+1;
Same_subset(j,1:L-1)=B(i,2:L); %store same performance for feature subset
subpop_size=1;
T=1;
pc1=1;
j=j+1;
end
end
if(nSame==1)
j=j-1;%only one subset,no storage
end
if(nSame>1)
% [p q]=size(Same_subset)
for(i=1:nSame)
k=write_file(Same_subset(j-nSame+i-1,:),subpop_size,T,pc1);%only subset
[winner2, Cost2, retfeat] = addfeat(X, Y, selectioncriteria, Same_subset(j-nSame+i-1,:));
one_feature(i,1)=Cost2;
one_feature(i,2)=retfeat;
end
one_feature;
[max_subset index] = sortrows(one_feature,1);
one_feature(nSame,2)
mySubset = B(K-3+index(nSame),2:L); % max J(X+)
winner = B(K-3+index(nSame),2:L); % modify the winner ,choose the search direction
end
% [max_subset, Subset1, Cost_subsets1, Cost1,Same_subset1] = search_max(X, Y, Same_subset);
% j=loop+j+1;
%-----------------------end-----------
% Ammend Subset & Cost to Stored subsets
Subset(L-1,1:L-1)=B(K,2:L);
Cost_subsets(L-1)=B(K,1);
end
%Same_subset=Same_subset;
Cost = B(K,1); % Lst! winners Cost
% return optimal feature vector combo
output_array = winner;
return; % End function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -