在尝试训练SVM时,我从Liblinear得到以下错误:'错误:C< = 0'。虽然很明显出了什么问题,但我无法弄清楚为什么会出现问题,因为通过交叉验证找到的C是正面的。
这是用于查找C
的交叉验证代码(我已删除了较低位)for log2c = 2:1:6,
cmd = ['-s 2 -v 5 -c ', num2str(2^log2c)];
cv = train(labels, features, cmd);
我得到的结果是
Cross Validation Accuracy = 91.6772%
bestc = 4, cv = 91.6772
然而,当我接着训练SVM时,我得到了
models{i} = train(trainLabel, trainFeats, ['-s 2 -c ', bestc]);
Error: C <= 0
如果有人有任何建议,我们将不胜感激!
(另外,我的数据大致为2/3负数,如果有任何用途,则为1/3正数)
答案 0 :(得分:0)
我认为你应该写:
models{i} = train(trainLabel, trainFeats, ['-s 2 -c ', num2str(bestc)]);
同时确保bestc
的值为正,即>=0