小试libSVM

    本文将粗略解释如何使用libSVM程序,使用SVM的流程大概就是:

   (1)准备数据并做成指定的格式(有必要时许svm_scale)

    (2)用svm-train来训练成model

     (3)对新的输入,使用svm-predict来预测新数据的类(class)

 

     下面分别解释svm-train以及svm-predict的用法

      (1)svm-train 的语法是:svm-train   [options]   training_set_file   [model_file]

       training_set_file  :按照之前的格式,而model_file若不特指,则结果会以[training_set_file].model形式保存,options可以先不给出。  

   如下的例子:

      ./svm-train  heart_scale

      optimization  finished,#iter = 219

      nu = 0.431030

      obj = -100.877286,rho = 0.424632

      nSV = 132,nBSV = 107

      Total  nSV = 132

     执行结果产生heart_scale.model 

 

      (2)svm-predict的语法是: svm-predict   test_file  model_file   output_file

      test_file:即我们要predict的数据,其格式与svm-train的输入(即training_set_file )是一样的,不过,每行最前面的label可以省略(因为predict就是要预测那个label),

                        若test_file有label值的话,predict以后会顺便拿predict出来的值域test_file里面写的值做对比,这代表着:test_file写的label是真正的分类结果,与predict的结果

                       做对比集合知道predict是否正确。 故可以拿原来的训练集当做test_file,再丢给svm-predict去预测,看看正确率有多高,方便后面调参数。

      model_file :就是svm-train出来的模型

     out_file:存储输出的结果

    输出的格式很简单,每行一个label,对应到  test_file里面的各行。

 

   下列的程序执行会产生heart_scale.out

  ./svm-predict   heart_scale   heart_scale.model    heart_scale.out

  Accuracy  = 86.6667% (234/270)  (calssification分类)

  Mean squared error = 0.533333 (regession回归)

  Squared correlation coefficient = 0.532639(regession回归) 

  将原输入丢 回去predict,第一行的Accuracy 就是预测的正确率,若输入没有label的话,则是真的predict。

 

简而言之,利用SVM来实现:只要写程序输出正确格式的数据,交给SVM训练,再predict并读入结果即可。

        

你可能感兴趣的:(小试libSVM)