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