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