[英]Using LIBSVM on Visual studio 2010
我想在Visual Studio 2010中使用libsvm只是為了對測試樣本進行分類,僅此而已。
我已經使用libsvm的官方網站提供的文檔來工作...
所以我按順序使用了這些步驟
1)。 svm-scale -l 0 -s范圍train.txt> train.scale
2)。 svm-scale -r范圍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火車規模火車模型
5)。 svm-predict 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代碼的結果,在python中,我的測試數據的精度為98%,但在這里不到20%!!! 真是太棒了...
我還使用OPENCV訓練數據並測試樣品(使用ml.h),但在OPENCV中,我的准確率達到了70%。 仍然比我的實際結果減少了20%以上!
我認為問題在於縮放..因為在svm.h和OPENCV中我都沒有找到任何縮放我的訓練和測試數據的功能.....
您對命令行工具的使用看起來不錯。 如果您沒有以與訓練數據相同的方式擴展測試數據,則預測將失敗,因為您發現了這一點。
只需從http://www.csie.ntu.edu.tw/~cjlin/libsvm/獲取libsvm的源代碼,然后將svm-scale.c中的縮放恢復邏輯合並到您的代碼中。 要查看在哪里讀取縮放參數,請搜索:
if(restore_filename)
實際縮放是在稱為output()的函數中完成的。 很明顯,直接返回一個值而不是打印結果。
順便說一句,opencv中的libsvm版本比較舊(因此避免使用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.