Как я могу использовать grid.py для выбора параметров? - PullRequest
3 голосов
/ 30 марта 2012

Я хочу выбрать параметры c и гамма для классификации C-SVM, используя ядро RBF (радиальная базисная функция) с libsvm \ tools \ grid.py, но я не знаю, как это возможно? я установил libsvm, gnuplot и python и запустил grid.py в python, но он имел ошибку и не показал результатов.

Ответы [ 2 ]

12 голосов
/ 08 апреля 2012
%grid of parameters
folds = 5; 
[C,gamma] = meshgrid(-5:2:15, -15:2:3); 
%# grid search, and cross-validation 
cv_acc = zeros(numel(C),1); 
d= 2;
for i=1:numel(C)   
    cv_acc(i) = svmtrain(TrainLabel,TrainVec, ...          
        sprintf('-c %f -g %f -v %d -t %d', 2^C(i), 2^gamma(i), folds,d));
end
%# pair (C,gamma) with best accuracy
[~,idx] = max(cv_acc); 
%# contour plot of paramter selection 
contour(C, gamma, reshape(cv_acc,size(C))), colorbar
hold on;
text(C(idx), gamma(idx), sprintf('Acc = %.2f %%',cv_acc(idx)), ...  
    'HorizontalAlign','left', 'VerticalAlign','top') 
hold off 
xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title('Cross-Validation Accuracy') 
%# now you can train you model using best_C and best_gamma
best_C = 2^C(idx); best_gamma = 2^gamma(idx); %# ...

Это также выполняет поиск по сетке ... но с использованием matlab ... без использования grid.py ... может быть, это помогает ...

6 голосов
/ 02 августа 2012

Вы можете использовать предоставленный скрипт matlab вместо grid.py FAQ

В: Как я могу использовать интерфейс MATLAB для выбора параметров?http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f803

bestcv = 0;
for log2c = -1:3,
  for log2g = -4:1,
    cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
    cv = svmtrain(heart_scale_label, heart_scale_inst, cmd);
    if (cv >= bestcv),
      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
    end
    fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...