• libsvm学习(三)——libsvm使用规范(转)


     其实,这部分写也是多余,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文件内部,看看都做了什么。

  • 相关阅读:
    php curl 获取 邮箱通讯录 126
    php curl 获取 邮箱通讯录 sns(hotmail)
    让input表单不显示历史记录
    array_multisort() 排序理解
    jquery对表单checkbox复选框的操作例子(全选,反选,获取选取值)
    php curl 获取 邮箱通讯录 sohu
    xdebug 显示数组深度 netbeans配置Xdebug
    期末考试总结
    Win32 Application和Win32 Console Application的区别(转载)
    《大师的智慧::十五位杰出电脑科学家们的生平与发现》读书笔记(未完)
  • 原文地址:https://www.cnblogs.com/Miliery/p/4394076.html
Copyright © 2020-2023  润新知