簡體   English   中英

在Visual Studio 2010上使用LIBSVM

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM