2015-12-03 2 views
0

Я классифицирую некоторые данные на основе классификатора libsvm. Я использовал технику K-fold для оценки производительности. Правильно ли, что я использую технику выбора элементов в K-fold loop? Я написал код matlab, я считаю, что приоритет FS ошибочен, и его следует удалить из этого цикла. Пожалуйста, ответьте мне. ThanksПриоритет выбора функции (Matlab)

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

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

Смежные вопросы