我想在 Visual Studio 2010 中使用 libsvm 只是为了对我的测试样本进行分类,仅此而已..
我使用 libsvm 使用其官方网站提供的文档...
所以我按顺序使用了这些步骤
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-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 中我都没有找到任何用于缩放我的训练和测试数据的函数.....