テストサンプルを分類するためだけに、Visual Studio 2010でlibsvmを使用したかったのですが、それ以上のものはありません..
公式サイトで提供されているドキュメントを使用して libsvm を使用しました...
したがって、これらの手順を順番に使用しました
1)。svm-scale -l 0 -s range 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 train.scale train.model
5)。svm-predict test.scale train.model test.out
それはかなりうまくいきましたが、問題は、ビジュアルスタジオでこれらの手順を実行する方法がわからないことです...上記から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%未満です!!!! ある意味羨ましい…
データのトレーニングとサンプルのテスト (ml.h を使用) にも OPENCV を使用しましたが、OPENCV では 70% の精度が得られました。そして、それは私の実際の結果からまだ20%以上削減されています!!!!
問題はスケーリングにあると思います..svm.hとOPENCVの両方で、トレーニングとテストデータをスケーリングするための関数が見つからなかったので.....