2014-12-17 1 views
0

Matlab의 grid.py (LIBSVM에서)를 실행할 수있는 방법이 있습니까? Iam은 SVM 분류를하고 있으며 매개 변수 C와 g에 대한 그리드 검색을 수행해야합니다. LIBSVM에서 grid.py 파일은 최상의 매개 변수를 찾습니다. 그러나 그것은 파이썬 스크립트이며 Matlab에서 어떻게 실행할지 모르겠습니다. 매개 변수의 최적 값을 예측하는 다른 방법이 있습니까? 미리 감사드립니다.Matlab LIBSVM의 grid.py

+1

음, 방금해야 할 일은 "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 코드를 읽고 이러한 매개 변수에 사용할 간격 값을 확인하십시오. –

답변

1

MATLAB에서 파이썬 코드를 실행할 수는 있지만 직접 해본 적이 없습니다. @Mihia Todor가 말했듯이, 당신 자신과 같은 이유로 그것을 조사해 보았습니다. 자신의 grid.py 버전을 작성하는 것이 더 쉬울 것입니다. 여기에 내가 MATLAB에서 LIBSVM를 사용하여 그리드 검색 및 교차 검증을 할 작성한 기본 코드입니다 :

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를 갖고 싶다면 다음을 검색하는 것이 좋습니다 : Call Python Libraries.

2014b 이상이없는 경우 Call Python function from MATLAB입니다.

이 두 가지 방법 중 하나를 사용하면 질문에 대한 답변을 직접 작성할 수 있습니다. 나는 그 (것)들이 일하는 것을보고 싶을 것이고 나는 다른 사람들이 그것을 아주 유용 할 것이 찾아 낼 것이라는 점을 확실하다!