【问题标题】:Libsvm parameters (c, g, p) searchLibsvm 参数 (c, g, p) 搜索
【发布时间】:2013-12-05 19:02:35
【问题描述】:

有没有办法在 MATLAB 中找到 REGRESSION 的 libsvm 参数(c、g、p)? 可以用 gridgregression.py 找到它们,但是如果我们想在 Matlab 中使用它们怎么办?导出 train x 和 y 矩阵并通过 gridregression.py 找到参数有点耗时。

【问题讨论】:

    标签: regression matlab libsvm


    【解决方案1】:

    手动编写交叉验证过程。它只是 3 个嵌套循环(超过 $c$、$g$ 和 $p$ 的可能值)。在内部循环中,您在交叉验证模式 (-v k) 中调用 svm-train 进行 k 折交叉验证。

    保存你获得的最好的 $(c,g,p)$-tuple,你就完成了。

    【讨论】:

    • 我已经使用 'bestcv = 0;对于 log2c = -1:6,对于 log2g = -8:0,对于 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;最佳 = 2^log2c;最佳 = 2^log2g;最佳 = 2^log2p; end fprintf('(最佳 c=%g, g=%g, p=%g, rate=%g)\n',bestc, bestg, bestp, bestcv);休息; end end end`但是它没有给出解决方案(MSE)以及gridregression.py
    • 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
    猜你喜欢
    • 2015-02-17
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2021-10-21
    • 2015-04-02
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多