(Liblinear)错误:C <= 0

时间:2014-08-09 21:45:42

标签: matlab machine-learning libsvm liblinear

在尝试训练SVM时,我从Liblinear得到以下错误:'错误:C&lt; = 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正数)

1 个答案:

答案 0 :(得分:0)

我认为你应该写:

models{i} = train(trainLabel, trainFeats, ['-s 2 -c ', num2str(bestc)]);

同时确保bestc的值为正,即>=0