我想在Visual Studio 2010中使用LIBSVM只是爲了我的測試樣品,僅此而已..在Visual Studio 2010中
我已經用它的官方網站提供的資料與LIBSVM工作分類使用SVM ...
所以我用這些步驟依次
1)。 svm-scale -l 0 -s range train.txt> train.scale
2)。 svm-scale -r range test.txt> test.scale
3)。 grid.py -svm-train「MYSVM_TRAIN_PATH」-gnuplot「MY_GNUPLOT_PATH」train.scale
4)。 svm-train -c 32 -g 0.05 -b 1 train.scale train.model
5)。 SVM-預測test.scale train.model test.out
,它工作得很好,但問題是,我不知道該怎麼做在Visual Studio中這些步驟...我只是裝我train.model從上面(步驟4),並沒有重複VS10訓練過程....這裏是我的代碼:
void main(){ svm_model *Model; Model = svm_load_model("train.model");//loaded from svm-train (step4 above) svm_node x[feature_size]; (Some internal Process for obtaining new feature vector for testing) double result = svm_predict(Model,x); std::cout<<"result is"<<result<<std::endl; return 0}
,但是這不會導致如Python代碼,在蟒蛇我我的測試數據的精度爲98%,但在這裏不到20%!這在某種程度上aweful ...
我也用OpenCV進行訓練我的數據和測試我的示例(使用ml.h) 但在OpenCV中,我得到了70%的準確率。而且我的實際結果還是減少了20%以上!
我認爲這個問題是在縮放..因爲在這兩種svm.h和OpenCV我沒有找到我的縮放火車和測試數據的任何功能.....
你確定嗎? (我的意思是我的問題在於「不縮放」我的測試特徵矢量? – PsP
如果您縮放了訓練數據並且沒有對測試數據應用相同的縮放比例,那麼這肯定是一個問題,您可以使用'svm-在命令行上預測test.model test.out'(而不是'test.scale')。當然,你的VS代碼中可能還有其他問題。你是否使用了與你在命令中使用的測試數據相同的測試數據行(也許打印出來一些它來檢查它確實是一樣的)? – Bull
我並不那麼粗心;),我很確定這些初步步驟......但是,非常感謝,你幫了我很多,至少我知道從哪裏開始以及接下來要做什麼...... – PsP