(Либлинейная) Ошибка: C ‹= 0

Я получаю следующую ошибку от Liblinear при попытке обучить SVM: «Ошибка: 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 положительные, если это имеет какое-либо значение)


person user3023621    schedule 09.08.2014    source источник


Ответы (1)


Я думаю, вам следует написать:

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

Также убедитесь, что значение bestc положительное, т.е. >=0

person Autonomous    schedule 09.08.2014
comment
Да! Спасибо, я полностью пропустил преобразование его в строку. Вы избавили меня от большого стресса! - person user3023621; 10.08.2014
comment
Я думаю, вы просто пропустили это. Вы сделали это правильно выше при определении cmd - person Autonomous; 10.08.2014