📄 featureselect_fw_fast.m
字号:
%程序描述:featureselect_FW_fast.m,按分类效率对属性进行选择,前向方法,快速算法---------优化算法(胡),
%邻域依赖性指标计算复杂度
%efficiency:所选中的属性组合后的分类效率
%data_array:标准化之后的数据,数组,列表示一个属性在不同样本上的取值,行表示一个样本在不同属性上的取值
%delta:邻域大小
%fun_dpd:看下面switch说明
function [feature_slct,efficiency]=featureselect_FW_fast(data_array,delta,efc_ctrl,fun_dpd)
[m,n]=size(data_array);
feature_slct=[];
efficiency=0;
feature_lft=(1:n-1);
sample_lft=(1:m);
sample_all=(1:m);
smp_csst_all=[];
array_cur=[];
num_cur=0;
while num_cur<n-1
if num_cur==0
array_cur=[];
else
array_cur(:,num_cur)=data_array(:,feature_slct(num_cur));%将新选中的属性对应数据列加到原有表中
end
%开始进行组合
dpd_tmp=[];
smp_csst_tmp=[];
for i=1:length(feature_lft)
array_tmp=array_cur;
array_tmp(:,[num_cur+1,num_cur+2])=data_array(:,[feature_lft(i),n]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不同的策略,速度有差别
switch fun_dpd
case 'clsf_dpd_fast' %优化算法(胡),距离计算完了,2范数----较快
[w,e]=clsf_dpd_fast(array_tmp,delta,sample_lft);
case 'clsf_dpd_fast2' %优化算法(胡),距离没计算完,2范数----最快
[w,e]=clsf_dpd_fast2(array_tmp,delta,sample_lft);
case 'clsf_dpd' %优化算法(胡),速度慢,用于对比,2范数----最慢
[w,e]=clsf_dpd(array_tmp,delta,sample_lft);
case 'clsf_dpd_fast_3' %优化算法(胡),无穷范数
[w,e]=clsf_dpd_fast_3(array_tmp,delta,sample_lft);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%继续
dpd_tmp(i)=w;
if length(e)~=0
smp_csst_tmp(i,(1:length(e)))=e;
end
end
[max_dpd,max_sequence1]=max(dpd_tmp);
if num_cur>0 & dpd_tmp<efc_ctrl
num_cur=n-1;
else
if max_dpd>0 | num_cur>0
if num_cur==0
efficiency(1)=max_dpd;
else
efficiency(num_cur+1)=efficiency(num_cur)+max_dpd;
end
feature_slct(num_cur+1)=feature_lft(max_sequence1);
if length(smp_csst_tmp)~=0
smp_csst_all=[smp_csst_all,smp_csst_tmp(max_sequence1,:)];
end
sample_lft=sample_all;
sample_lft(smp_csst_all)=[];
feature_lft(max_sequence1)=[];
num_cur=num_cur+1;
else
num_cur=n-1;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -