【问题标题】:Using LIBSVM on Visual studio 2010在 Visual Studio 2010 上使用 LIBSVM
【发布时间】:2013-05-11 11:39:53
【问题描述】:

我想在 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 中我都没有找到任何用于缩放我的训练和测试数据的函数.....

【问题讨论】:

    标签: visual-studio-2010 opencv python-2.7 classification libsvm


    【解决方案1】:

    您对命令行工具的使用看起来还不错。如果您不以与训练数据相同的方式扩展测试数据,那么 predict 将会失败,正如您所发现的那样。

    只需从http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 获取 libsvm 的源代码,并将 svm-scale.c 中的缩放还原逻辑合并到您的代码中。 要查看读入缩放参数的位置,请搜索:

        if(restore_filename)
    

    实际的缩放是在一个名为 output() 的函数中完成的。显然,返回一个值而不是打印结果会很直接。

    顺便说一句,opencv 中的 libsvm 版本相当旧(所以我避免使用它)。

    【讨论】:

    • 你确定吗? (我的意思是我的问题在于“不缩放”我的测试特征向量?
    • 如果你缩放了你的训练数据并且没有对测试数据应用相同的缩放,那么这绝对是一个问题。您可以在命令行上使用svm-predict test train.model test.out(而不是使用test.scale)进行检查。当然,您的 VS 代码中也可能存在其他问题。您使用的测试数据是否与您在命令行上使用的相同(可能打印出一些数据以检查它是否真的相同)?
    • 我没那么粗心 ;) ,我很确定这些初步步骤 .... ,但无论如何谢谢,你帮了我很多,至少我知道从哪里开始下一步该做什么...
    • 请注意,从 LIBSVM 源代码复制代码还需要您复制其版权(BSD 许可证)。
    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多