Приоритет выбора функций (Matlab)

Я классифицирую некоторые данные на основе классификатора 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

person Khosro Rezaee    schedule 03.12.2015    source источник


Ответы (1)


Нет! Вы должны выбрать функцию вне цикла K-fold. Фактически, сначала выберите подмножество функций с помощью вашего эволюционного алгоритма, а затем оцените это подмножество. Чтобы оценить любое подмножество, передайте это выбранное подмножество в свой классификатор и верните среднее значение точности в k-кратном размере ваших данных. например, если k = 10, ваш классификатор выполняется 10 раз, и средняя точность этих 10 запусков является пригодностью входного подмножества.

person Ahmad Sarabian    schedule 10.12.2015