LibSVM学习(三)——LibSVM使用规范

来源:互联网 发布:上海礼品店知乎 编辑:程序博客网 时间:2024/06/04 23:31

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

转这篇文章的主要原因就是最后面的加红字,predict的数据格式。


      其实,这部分写也是多余,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/kk为特征(或者说是属性)数;

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

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

         -n v :设置v-SVCone-class-SVM n - SVR 中参数,默认值0.5

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

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

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

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

         -b 概率估计:是否计算SVCSVR的概率估计,可选值1,默认0

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

         -v nn折交叉验证模式;

         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——是否需要进行概率估计预测,可选值为或者1,默认值为0

 

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

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

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

 

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机提示当前为耳机播放模式怎么办 华为手机进水了显示耳机模式怎么办 苹果6s突然变成耳机模式怎么办 华为手机出现耳机标志没声音怎么办 苹果手机微信变成耳机模式怎么办 5s不能用4g网络怎么办 华为麦芒四手机系统乱了好卡怎么办 信翼路由器登录密码忘了怎么办 苹果手机电信4g信号变3g怎么办 苹果7手机4g变3g怎么办 朵唯v3逆客手机不支持计步怎么办 移动卡升级4g后网络不好怎么办 电信办宽带送的手机卡不用了怎么办 移动华为悦盒遥控器丢了怎么办 移动签了两年套餐不想用了怎么办 华为手机隐私空间密码忘记了怎么办 华为的隐私空间密码忘记了怎么办 格力新机没密码开不了怎么办 百度下载谷歌浏览器网页错误怎么办 华为手机进水开不了机怎么办开 华为7x金属外壳掉漆了怎么办 华为麦芒6连接蓝牙音响卡顿怎么办 华为芒麦6恢复出厂设置怎么办 华为麦芒4下拉通知栏没反应怎么办 怎么看华为麦芒6信号差怎么办 华为手机锁屏密码忘了怎么办 苹果手机进水后手机卡无服务怎么办 摩拜单车绑定的手机号注销了怎么办 摩拜单车注册的手机号注销了怎么办 摩拜单车注册手机号换了怎么办 被手机店骗话费送合约机怎么办 机蜜租赁的手机丢了怎么办 合约机返话费手机掉了怎么办 手机摔坏了开不了机怎么办 华为魅特10屏幕锁住了怎么办 电信送的路由器只有一个端口怎么办 苹果手机5c屏幕死机了怎么办 日版苹果手机显示无服务怎么办 iphone有锁4g变3g怎么办 耳机胶套脱落掉入耳朵怎么办 苹果笔记本电用完了开机了怎么办