2013-11-21 29 views
0

有沒有辦法在MATLAB中找到REGRESSION的libsvm參數(c,g,p)? 可以用gridgregression.py找到它們,但是如果我們想在Matlab中使用它們呢?導出列車x和y矩陣並通過gridregression.py找到參數是有點時間的。Libsvm參數(c,g,p)搜索

回答

0

手動編寫交叉驗證程序。這只是3個嵌套循環(超過$ c $,$ g $和$ p $的可能值)。在內部循環中,您使用交叉驗證模式(-v k)將svm-train稱爲k-fold交叉驗證。

保存您獲得的最佳$(c,g,p)$ - 元組,然後就完成了。

+0

我已經使用'bestcv = 0; log2c = -1:6, for log2g = -8:0, for log2p = -8:-1, cmd = ['-v 5 -c',num2str(2^log2c),'-g ',num2str(2^log2g),'-p',num2str(2^log2p)]; cv = svmtrain(y,x,cmd); (cv> = bestcv), bestcv = cv; bestc = 2^log2c; bestg = 2^log2g; bestp = 2^log2p; end fprintf('(best c =%g,g =%g,p =%g,rate =%g)\ n',bestc,bestg,bestp,bestcv); 休息; 結束 結束 結束然而它並沒有給出解決方案(MSE)以及gridregression.py – user2602256

+0

'bestcv = 0; log2c = -1:6, for log2g = -8:0, for log2p = -8:-1, cmd = ['-v 5 -c',num2str(2^log2c),'-g ',num2str(2^log2g),'-p',num2str(2^log2p)]; cv = svmtrain(y,x,cmd); (cv> = bestcv), bestcv = cv; bestc = 2^log2c; bestg = 2^log2g; bestp = 2^log2p; end fprintf('(best c =%g,g =%g,p =%g,rate =%g)\ n',bestc,bestg,bestp,bestcv); 休息; 結束 結束 結束 – user2602256