0

在尝试训练 SVM 时,我从 Liblinear 收到以下错误:'错误:C <= 0'。虽然很明显出了什么问题,但我无法弄清楚为什么会出现问题,因为通过交叉验证找到的 CI 是肯定的。

这是用于查找 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 正数)

4

1 回答 1

0

我认为你应该写:

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

还要确保值为bestc正,即>=0

于 2014-08-09T22:04:26.610 回答