⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 featureselect_fw_fast.m

📁 按分类效率对属性进行选择
💻 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 + -