zoukankan      html  css  js  c++  java
  • LibSVM学习(三)——LibSVM使用规范

    转自http://blog.csdn.net/flydreamGG/article/details/4468995

    其实,这部分写也是多余,google一下“libsvm使用”,就会N多的资源,但是,为了让你少费点心,在这里就简单的介绍一下,有不清楚的只有动动你的mouse了。需要说明的是,2.89版本以前,都是svmscale、svmtrain和svmpredict,最新的是svm-scale、svm-train和svm-predict,要是用不习惯,只需要把那四个exe文件名去掉中间的短横线,改成svmscale、svmtrain和svmpredict就可以了,我们还是按原来函数名的讲。

    1. libSVM的数据格式

    Label 1:value 2:value ….

    Label:是类别的标识,比如上节train.model中提到的1 -1,你可以自己随意定,比如-10,0,15。当然,如果是回归,这是目标值,就要实事求是了。

    Value:就是要训练的数据,从分类的角度来说就是特征值,数据之间用空格隔开

    比如: -15 1:0.708 2:1056 3:-0.3333

    需要注意的是,如果特征值为0,特征冒号前面的(姑且称做序号)可以不连续。如:

           -15 1:0.708 3:-0.3333

    表明第2个特征值为0,从编程的角度来说,这样做可以减少内存的使用,并提高做矩阵内积时的运算速度。我们平时在matlab中产生的数据都是没有序号的常规矩阵,所以为了方便最好编一个程序进行转化。

    2. svmscale的用法

     

        svmscale是用来对原始样本进行缩放的,范围可以自己定,一般是[0,1]或[-1,1]。缩放的目的主要是

    1)防止某个特征过大或过小,从而在训练中起的作用不平衡;

    2)为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。

    用法:svmscale [-l lower] [-u upper]

                             [-y y_lower y_upper]

                             [-s save_filename]

                             [-r restore_filename] filename

    其中,[]中都是可选项:

             -l:设定数据下限;lower:设定的数据下限值,缺省为-1

             -u:设定数据上限;upper:设定的数据上限值,缺省为 1

             -y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;

             -s save_filename:表示将缩放的规则保存为文件save_filename;

             -r restore_filename:表示将按照已经存在的规则文件restore_filename进行缩放;

             filename:待缩放的数据文件,文件格式按照libsvm格式。

    默认情况下,只需要输入要缩放的文件名就可以了:比如(已经存在的文件为test.txt)

            

                             svmscale test.txt

        这时,test.txt中的数据已经变成[-1,1]之间的数据了。但是,这样原来的数据就被覆盖了,为了让规划好的数据另存为其他的文件,我们用一个dos的重定向符 > 来另存为(假设为out.txt):

            

                            svmscale test.txt > out.txt

       运行后,我们就可以看到目录下多了一个out.txt文件,那就是规范后的数据。假如,我们想设定数据范围[0,1],并把规则保存为test.range文件:

                             svmscale –l 0 –u 1 –s test.range test.txt > out.txt

    这时,目录下又多了一个test.range文件,可以用记事本打开,下次就可以用-r test.range来载入了。

    3. svmtrain的用法

          svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM模型。

            用法: svmtrain [options] training_set_file [model_file]

    其中,options为操作参数,可用的选项即表示的涵义如下所示:

    -s 设置svm类型:

             0 – C-SVC

             1 – v-SVC

             2 – one-class-SVM

             3 – ε-SVR

             4 – n - SVR

    -t 设置核函数类型,默认值为2

             0 -- 线性核:u'*v

             1 -- 多项式核: (g*u'*vcoef 0)degree

             2 -- RBF 核:exp(-γ*||u-v||2)

             3 -- sigmoid 核:tanh(γ*u'*vcoef 0)

     

    -d degree: 设置多项式核中degree的值,默认为3

    -gγ: 设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;

             -r coef 0:设置核函数中的coef 0,默认值为0;

             -c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;

             -n v :设置v-SVC、one-class-SVM 与n - SVR 中参数n ,默认值0.5;

             -p ε :设置v-SVR的损失函数中的e ,默认值为0.1;

             -m cachesize:设置cache内存大小,以MB为单位,默认值为40;

             -e ε :设置终止准则中的可容忍偏差,默认值为0.001;

             -h shrinking:是否使用启发式,可选值为0 或1,默认值为1;

             -b 概率估计:是否计算SVC或SVR的概率估计,可选值0 或1,默认0;

             -wi weight:对各类样本的惩罚系数C加权,默认值为1;

             -v n:n折交叉验证模式;

             model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。

        

        默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:test.model,则命令为:

                                             svmtrain test.txt test.model

    结果说明见LibSVM学习(二)。

    4. svmpredict 的用法

        svmpredict 是根据训练获得的模型,对数据集合进行预测。

       用法:svmpredict [options] test_file model_file output_file

       其中,options为操作参数,可用的选项即表示的涵义如下所示:

    -b probability_estimates——是否需要进行概率估计预测,可选值为0 或者1,默认值为0。

    model_file ——是由svmtrain 产生的模型文件;

    test_file—— 是要进行预测的数据文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;

    output_file ——是svmpredict 的输出文件,表示预测的结果值。

       至此,主要的几个接口已经讲完了,满足一般的应用不成问题。对于要做研究的,还需要深入到svm.cpp文件内部,看看都做了什么。

  • 相关阅读:
    WCF 第十三章 可编程站点 为站点创建操作
    WCF 第十三章 可编程站点 所有都与URI相关
    WCF 第十二章 对等网 使用自定义绑定实现消息定向
    WCF 第十三章 可编程站点 使用WebOperationContext
    Using App.Config for user defined runtime parameters
    WCF 第十三章 可编程站点
    WCF 第十三章 可编程站点 使用AJAX和JSON进行网页编程
    WCF 第十二章 总结
    WCF 第十三章 可编程站点 使用WebGet和WebInvoke
    WCF 第十三章 可编程站点 URI和UriTemplates
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2248132.html
Copyright © 2011-2022 走看看