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