我想在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