(Liblinear) Грешка: 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