function [feature,accuracy]=CFSPabs_SBFS(data_input)
%%
% 实现 CFSPabs 与SVM的顺序后向 浮动 混合特征选择
%%
[m,n]=size(data_input);
% [ gi ,giF ]=f_score( data_input );
rest_fea=1:1:n-1;
select_fea=rest_fea;
%% 首先使用 全部特征子集 训练SVM,得到一个平均正确率
tem_acc=[];
% feature={};
indices=crossvalind('Kfold',data_input(1:m,n),5); % 十折交叉验证 随机分包
for i=1:5
test=(indices==i); % 获得test集元素在数据集中对应的单元编号
train=~test; % train集元素的编号为非test元素的编号
train_data=data_input(train,:); % 从数据集中划分出train样本的数据
test_data=data_input(test,:);
[pre_label,acc]=SVM_SFS(train_data,rest_fea);
tem_acc=[tem_acc,acc(1,1)];
end
max_acc=mean(tem_acc);
% feature{1}=rest_fea;
%% 尝试从剩余特征子集中去除一个特征,并计算相应的DFS的值
k=1;
% while ~isempty(rest_fea)
while length(rest_fea)-1>0
dfs=[];
k=k+1;
d=size(rest_fea,2);
for i=1:d
data=[];
visit=zeros(1,d);
%%
visit(i)=1;
rest=(visit==1);
select=~rest;
tem_fea=rest_fea(1,select);
len=size(tem_fea,2);
% tem_fea=select(1,rest);
%%
for j=1:len
data(:,j)=data_input(:,tem_fea(j));
end
data(:,end+1)=data_input(:,end); %加类标列
ms=CFSPabs_score(data); % 计算临时特征的DFS值
% dfs(i)=dfsi(k);
% if dfsi(k)>tem1
% tem1=dfsi(k);
% max=rest_fea(i);
% end
% select_fea=[select_fea,max];
% if rest_fea(j)==max
dfs=[dfs,ms];
end
[~,ind]=sort(dfs,'descend');
visit=zeros(1,d);
visit(ind(1))=1;
delete_fea=rest_fea(ind(1)); % 本次去除的特征编号
rest1=(visit==1);
select1=~rest1;
rest_fea=rest_fea(1,select1);
%% 计算特征数减 1 的特征子集的正确率
tem_acc=[];
indices=crossvalind('Kfold',data_input(1:m,n),5); % 十折交叉验证 随机分包
for i=1:5
test=(indices==i); % 获得test集元素在数据集中对应的单元编号
train=~test; % train集元素的编号为非test元素的编号
train_data=data_input(train,:); % 从数据集中划分出train样本的数据
test_data=data_input(test,:);
[pre_label,acc]=SVM_SFS(train_data,rest_fea);
tem_acc=[tem_acc,acc(1,1)];
end
meanAcc=mean(tem_acc);
% accuracy=[accuracy,mean(tem_acc)];
if meanAcc>=max_acc
% delete_fea=rest_fea(ind(1));
len1=length(select_fea);
for i=1:len1
if select_fea(i)==delete_fea
visit=zeros(1,len1);
visit(i)=1;
rest2=(visit==1);
select2=~rest2;
select_fea=select_fea(1,select2);
break;
end
end
end
max_acc=meanAcc;
end
feature=select_fea;
accuracy=max_acc;
end
qq_36524233
- 粉丝: 6
- 资源: 8
最新资源
- 自己写的一个很小的工具,用于替换文件的扩展名 文件扩展名匹配的才会被替换,如果不指定原始扩展名,将修改所有文件的扩展名为新扩展名 如果新扩展名为空,则替换后文件将没有扩展名
- nginx整合lua脚本demo
- 欧标TYPE 2桩端充电枪
- (22782460)单片机设计(详细教程MSP430.zip
- UE-ORCA.zip
- (11696858)条形码生成打印
- 个人使用资源,请勿下载使用
- (180014056)pycairo-1.21.0-cp37-cp37m-win-amd64.whl.rar
- (3268844)3G无线基本知识.pdf
- 捷米特JM-PN-EIP(Profinet转Ethernet-IP)应用案例.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈