繁体   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