grid.py в Matlab LIBSVM

Есть ли способ запустить grid.py (из LIBSVM) в Matlab? Я делаю классификацию SVM, и мне нужно выполнить поиск по сетке для параметров C и g. В LIBSVM файл grid.py находит лучшие параметры. Однако это скрипт на Python, и я понятия не имею, как запустить его в Matlab. Есть ли другой способ прогнозирования наилучшего значения параметров? Заранее спасибо.


person Danai Tri    schedule 17.12.2014    source источник
comment
Ну, вы только что сказали в своем вопросе, что нужно сделать: выполнить поиск по сетке для параметров C и g. Вы можете просто сделать это в Matlab: перебрать все пары (C,g) и обучить свою модель для каждой из них и оптимизировать точность на проверочный набор данных. Вы также можете указать другие критерии оптимизации, используя это Расширение libsvm. Прочтите код grid.py, чтобы узнать, какие интервальные значения использовать для этих параметров.   -  person Mihai Todor    schedule 18.12.2014


Ответы (1)


Можно запустить код Python в MATLAB, хотя я никогда не делал этого сам. Я изучил это по той же причине, что и вы, и обнаружил, как сказал @Mihia Todor, что было бы проще написать свою собственную версию grid.py. Вот базовый код, который я написал для поиска по сетке и перекрестной проверки с использованием LIBSVM в MATLAB:

gamma=1;
cost=1;
J=10;
K=12;
kernal=2; %RBF 

besterr=[];
bestc=[];
bestg=[];
for j=1:J;
    gamma=2^(2*(j-round(J/3))); %Calculates a nice spread of search numbers centred above zero
    for k=1:K;
        cost=2^(2*(k-round(K/3)));
        err=svmtrain(y,x,sprintf('-s 4 -t %g -v 5 -c %g -g %g -q', kernal, cost, gamma)); %Nu-SVR change -s if you want SVC
        if isempty(besterr)|err<besterr;
            besterr=err;
            bestc=cost;
            bestg=gamma;
        end
    end
end
besterr=sqrt(besterr) %Prints the average RMSD of the 5-fold cross-validation
bestg %Prints best gamma
bestc %Prints best cost

model=svmtrain(y,x,sprintf('-s 4 -t %g -c %g -g %g -q', kernal, bestc, bestg)); %Retrain using new c and g

Предполагая, что вы масштабировали разреженные x-данные, это должно работать из коробки.

Если вы хотите продолжить работу с grid.py и иметь версию 2014b, это может быть полезным местом для начала поиска: Вызов библиотек Python.

Если у вас нет версии 2014b или новее, вызовите функцию Python из MATLAB.

Если вы заработаете одним из этих двух методов, напишите свой собственный ответ на свой вопрос. Я хотел бы видеть, как они работают, и я уверен, что другие найдут это очень полезным!

person Little Bobby Tables    schedule 09.01.2015