得到我的測試標籤和訓練標籤後,我在libsvm上實現了SVM,得到了97.4359%的準確度。 (C = 1和g = 0.00375)LibSVM的準確性下降
model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00375');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);
i之後找到最好的C和G,
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
C = 8和g = 0.125
我再次實現該模型:
model = svmtrain(TrainLabel, TrainVec, '-c 8 -g 0.125');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);
我得到的82.0513%的精度
精度如何降低?它不應該增加?或者我犯了什麼錯誤?
我不熟悉的LIBSVM的Matlab的API,但你肯定'CV = svmtrain去(TrainLabel,TrainVec,CMD);'會給你的準確度? –
這是他們在LIBSVM常見問題解答中提供的內容:http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html下我如何使用MATLAB界面進行參數選擇? – lakesh