Има ли начин да стартирам 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.
Ако някой от тези два метода работи, напишете своя собствен отговор на въпроса си. Бих се радвал да ги видя как работят и съм сигурен, че другите ще го намерят за много полезно!