特征选择优先级(Matlab)

时间:2015-12-03 20:19:10

标签: classification feature-selection

我基于libsvm分类器对一些数据进行分类。我用K-fold技术来评估性能。这是正确的,我在K-fold循环中使用特征选择技术?我写了一个matlab代码,我觉得FS的优先级是错误的,它应该从这个循环中删除。 请回答我。感谢

for i=1:NumKfold 

   train_data=train{i}(:,1:end-1);
   train_p_target=train{i}(:,end);
   test_data=test{i}(:,1:end-1);
   test_target=test{i}(:,end);

    %======================Selecting Best Features=======================
     ------Feature Selection Based on Evolutionally Algorithm----

      ind0=output; % The index of best features

     str= '-c 1 -g 2 -b 1';
     svmStruct = svmtrain(train_p_target, train_data(:,ind0) , str);
     [predicted_label, accuracy, decision_values] = svmpredict(test_target,          
     C=confusionmat(test_target,predicted_label);
     acc_Selected_LibSvm(i)=sum(diag(C))/sum(C(:)); 
end

1 个答案:

答案 0 :(得分:0)

没有!您必须在K-fold循环中选择功能。实际上,首先通过进化算法选择要素子集,然后评估此子集。要评估任何子集,请将您选择的子集也传递给您的分类器,并在数据的k倍上返回准确度的平均值。例如,如果k = 10,则您的分类器运行10次,并且此10次运行精度的平均值是输入子集的适应度。