svm使用详解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.文件中数据格式

label index1:value1 index2:value2 ...

Label在分类中表示类别标识,在预测中表示对应的目标值

Index表示特征的序号,一般从1开始,依次增大

Value表示每个特征的值

例如:

3 1:0.122000 2:0.792000

3 1:0.144000 2:0.750000

3 1:0.194000 2:0.658000

3 1:0.244000 2:0.540000

3 1:0.328000 2:0.404000

3 1:0.402000 2:0.356000

3 1:0.490000 2:0.384000

3 1:0.548000 2:0.436000

数据文件准备好后,可以用一个python程序检查格式是否正确,这个程序在下载的libsvm文件夹的子文件夹tools下,叫checkdata.py,用法:在windows命令行中先移动到checkdata.py所在文件夹下,输入:checkdata.py 你要检查的文件完整路径(包含文件名)

回车后会提示是否正确。

2.对数据进行归一化。

该过程要用到libsvm软件包中的svm-scale.exe

Svm-scale用法:

用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值: lower = -1,upper = 1,没有对y进行缩放)

其中, -l:数据下限标记;lower:缩放后数据下限;

-u:数据上限标记;upper:缩放后数据上限;

-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper 为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )

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

-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;

filename:待缩放的数据文件(要求满足前面所述的格式)。

数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为:

(Value-y_lower)*(max-min)/(y_upper - y_lower)+min

其中value为归一化后的值,max,min分别是归一化之前所有目标值的最大值和最小值,其他参数与前面介绍的相同。

注意:将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。

3.训练数据,生成模型。

用法: svmtrain [options] training_set_file [model_file] 其中, options(操作参数):可用的选项即表示的涵义如下所示

-s svm类型:设置SVM 类型,默认值为0,可选类型有(对于回归只能选3或4):

0 -- C- SVC 1 -- n - SVC 2 -- one-class-SVM 3 -- e - SVR 4 -- n - SVR

-t 核函数类型:设置核函数类型,默认值为2,可选类型有:

0 -- 线性核:u'*v

1 -- 多项式核: (g*u'*v+ coef 0)deg ree

2 -- RBF 核:e( u v 2) g -

3 -- sigmoid 核:tanh(g*u'*v+ coef 0)

-d degree:核函数中的degree设置,默认值为3;

-g g :设置核函数中的g ,默认值为1/ k ;

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

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

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

-p e :设置n - SVR的损失函数中的e ,默认值为0.1; -m cachesize:设置cache内存大小,以MB为单位,默认值为40;

-e e :设置终止准则中的可容忍偏差,默认值为0.001; -h shrinking:是否使用启发式,可选值为0 或1,默认值为1;

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

-wi weight:对各类样本的惩罚系数C加权,默认值为1; -v n:n折交叉验证模式。

其中-g选项中的k是指输入数据中的属性数。操作参数 -v 随机地将数据剖分为n 部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数不在函数或SVM 类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。training_set_file是要进行训练的数据集;model_file是

训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。

另,实验中所需调整的重要参数是-c 和–g,-c和-g的调整除了自己根据经验试之外,还可以使用grid.py对这两个参数进行优化。

注意:经过实测,在用于分类时,grid.py能得到较好参数值,但用于回归时得到的参数值效果很差。

该优化过程需要用到Python(2.5),Gnuplot(4.2),grid.py (该文件需要修改路径)。

然后在命令行下面运行:

grid.py -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -s 3 -t 2 -v 5 -s v m t r a i n E:\l i b s v m-2.86\w i n d o w s\s v m-t r a i n.e x e-g n u p l o t E:\gnuplot\bin\pgnuplot.exe E:\libsvm\libsvm-2.86\windows\train.txt

以上三个路径根据实际安装情况进行修改。 -log2c是给出参数c的范围和步长

-log2g是给出参数g的范围和步长

-log2p是给出参数p的范围和步长上面三个参数可以用默认范围和步长

-s选择SVM类型,也是只能选3或者4

-t是选择核函数

-v 5 将训练数据分成5份做交叉验证。默认为5

相关文档
最新文档