После получения моей testlabel и trainlabel, я реализовал SVM на libsvm, и я получил точность 97.4359%. (С = 1 и г = 0,00375)Точность LibSVM уменьшается
model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00375');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);
После того, как я найти лучший с и г,
bestcv = 0;
for log2c = -1:3,
for log2g = -4:1,
cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(TrainLabel,TrainVec, cmd);
if (cv >= bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
end
fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
end
end
с = 8 и г = 0,125
Я реализовать модель снова:
model = svmtrain(TrainLabel, TrainVec, '-c 8 -g 0.125');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);
Я получаю точность 82.0513%
Как можно уменьшить точность? разве он не должен увеличиваться? Или я ошибаюсь?
Я не знаком с Matlab API LibSVM, но вы уверены, что 'резюме = svmtrain (TrainLabel, TrainVec, CMD);' даст вам точность? –
Это то, что они давали в LIBSVM FAQ: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html в разделе Как я могу использовать интерфейс MATLAB для выбора параметров? – lakesh