Есть ли способ, которым я могу запустить grid.py (из LIBSVM) в Matlab? Я делаю классификацию svm, и мне нужно выполнить поиск сетки для параметров C и g. В LIBSVM файл grid.py находит лучшие параметры. Однако это скрипт python, и я не знаю, как запустить его в Matlab. Есть ли другой способ предсказать наилучшее значение для параметров? Заранее спасибо.grid.py в Matlab LIBSVM
ответ
В MATLAB можно запустить код Python, хотя я никогда не делал этого сам. Я просмотрел его по той же причине, что и вы, и нашел, как сказал @ Михия Тодор, было бы проще написать собственную версию 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
Предполагая, что вы сократили, разреженные х-данные это должны работать вне коробки.
Если вы хотите продолжить с grid.py и у вас есть 2014b, это могло бы стать полезным местом для начала работы: Call Python Libraries.
Если у вас нет 2014b или новее, то Call Python function from MATLAB.
Должны ли вы использовать любой из этих двух методов, чтобы написать свой собственный ответ на свой вопрос. Мне бы очень хотелось, чтобы они работали, и я уверен, что другие сочтут это очень полезным!
Ну, вы только что сказали в своем вопросе, что нужно сделать: «выполнить сетку для поиска параметров C и g». Вы можете просто сделать это в Matlab: перебрать все пары (C, g) и подготовить свою модель для каждого из них и оптимизировать точность в [наборе данных проверки] (http://stats.stackexchange.com/questions/19048/ то, что-это-разностной-между-тест-набор-и-проверка-набор). Вы также можете использовать другие критерии оптимизации, используя [this] (http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/eval/index.html) расширение libsvm. Прочтите код grid.py, чтобы узнать, какие значения интервалов использовать для этих параметров. –