【发布时间】:2013-12-05 19:02:35
【问题描述】:
有没有办法在 MATLAB 中找到 REGRESSION 的 libsvm 参数(c、g、p)? 可以用 gridgregression.py 找到它们,但是如果我们想在 Matlab 中使用它们怎么办?导出 train x 和 y 矩阵并通过 gridregression.py 找到参数有点耗时。
【问题讨论】:
标签: regression matlab libsvm
有没有办法在 MATLAB 中找到 REGRESSION 的 libsvm 参数(c、g、p)? 可以用 gridgregression.py 找到它们,但是如果我们想在 Matlab 中使用它们怎么办?导出 train x 和 y 矩阵并通过 gridregression.py 找到参数有点耗时。
【问题讨论】:
标签: regression matlab libsvm
手动编写交叉验证过程。它只是 3 个嵌套循环(超过 $c$、$g$ 和 $p$ 的可能值)。在内部循环中,您在交叉验证模式 (-v k) 中调用 svm-train 进行 k 折交叉验证。
保存你获得的最好的 $(c,g,p)$-tuple,你就完成了。
【讨论】:
bestcv = 0; for 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); if (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); break; end end end