LIBSVM的使用方法

【原文:http://wenku.baidu.com/view/7e7b6b896529647d27285276.html

目 录

1 Libsvm下载… 3

2 Libsvm3.0环境变量设置… 3

3 训练和测试数据集下载… 3

4 运行python程序的环境配置… 3

5 LIBSVM 使用的一般步骤是:… 3

6 再来说一下,libsvm-3.0的需要的数据及其格式。… 4

7 Libsvm数据格式制作:… 4

8 Windows版本的工具… 4

9 核函数的使用简介… 8

10 grid.py的使用… 10

11 subset.py使用方法… 11

12 checkdata.py的使用方法… 12

13 easy.py使用方法… 12

14 一个具体的应用实例… 13

15 备注:常见问题的解决办法… 15

1 Libsvm下载

在你给我发的邮件地址http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 下载libsvm的最新版本,现在最新版本是3.0的,下载地址为http://www.csie.ntu.edu.tw/~cjlin/libsvm/libsvm-3.0.zip

1、 将libsvm-3.0.zip解压,我的解压到了C:\根目录下了。

2 Libsvm3.0环境变量设置

添加环境变量到path:我的电脑->属性->高级->环境变量->系统变量->变量列表里面双击 Path,在变量值最后添加;C:\libsvm-3.0\windows 然后点击确定即可。

3 训练和测试数据集下载

在以下网址http://www.csie.ntu.edu.tw/%7Ecjlin/papers/guide/data/ 可以下载到用来训练的数据集合用来测试的数据集,这都是一些简单的数据。

4 运行python程序的环境配置

由于有可能使用到C:\libsvm-3.0\tools下的工具,所以的搭建相应的环境,下载两个软件python和gnuplot,下面说一下两个软件的下载地址和配置:

a.对于python,下载地址在http://www.python.org上寻找下载,目前版本是3.2的,但是我用的是2.6的,测试成功。安装就默认安装在C:\就行,记得将C:\Python26 添加到系统环境变量中。另外将C:\Python26 中的python.exe添加到C:\libsvm-3.0\windows下面即可。

b.对于gnuplot ,下载地址在http://www.gnuplot.info/ 。目前最新版本是4.4.3。他不用安装,直接解压放到C:\根目录即可。(这注:部分不需要了)。

c.下载gp440win32.zip,在网址http://u.xunzai.com/fileview_352799.html 下载,这个解压放到C盘根目录,然后拷贝C:\gnuplot\binary中的gnuplot.exe放到C:\libsvm-3.0\windows下面即可。

5 LIBSVM 使用的一般步骤

1)按照LIBSVM软件包所要求的格式准备数据集

2)对数据进行简单的缩放操作;

3)首要考虑选用RBF 核函数;

4)采用交叉验证选择最佳参数C与g ;

5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;

6)利用获取的模型进行测试与预测。

6 libsvm-3.0数据及其格式

该软件使用的训练数据和检验数据文件格式如下:

[label] [index1]:[value1] [index2]:[value2] …

[label] [index1]:[value1] [index2]:[value2] …



Label 就是说class(属于哪一类), 就是你要分类的种类,通常是一些整数。

index 是有順序的索引,通常是连续的整数。就是指特征编号,必须按照升序排列

value 就是特征值,用来 train 的数据,通常是一堆实数组成。

(注:修改训练和测试数据的格式为程序可以识别的程序

目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值…

目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值…

……

目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值…

例如: 2.3 1:5.6 2:3.2

表示训练用的特征有两维,第一维是5.6,第二维是3.2,目标值是2.3

注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为了计算误差用 )

7 Libsvm数据格式制作

该过程可以自己使用excel或者编写程序来完成,也可以使用网络上FormatDataLibsvm.xls来完成。 FormatDataLibsvm.xls使用说明:

a. 先将数据按照下列格式存放(注意label放最后面):

value1 value2 … label

value1 value2 … label

value1 value2 … label

b. 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏->执行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。测试可用,下载地址在(http://ishare.iask.sina.com.cn/f/9299654.html?from=like ),或者自己再google中搜索下载即可。

8 Windows版本的工具

Windows版本的工具svm-scale.exe进行训练和测试数据的归一化,svm-train.exe进行模型训练,svm-predict.exe进行预测,具体步骤和过程在下面介绍。

2、 C:\libsvm-3.0\windows下的工具使用方法

打开C:\libsvm-3.0\windows ,里面有四个windows的exe程序。下面解释一下这四个exe执行程序的意义和用法

①svm-scale.exe: scale输入数据,简单优化数据以提高精度。 扫描数据. 因为原始数据可能范围过大或过小, svmscale可以先将数据重新scale (縮放) 到适当范围使训练与预测速度更快

使用方法:svm-scale.exe [-l lower] [-u upper] [-y y_lower y_upper] [-s save_name] [-r store_name] filename;其中

-l:数据下限标记;

lower:缩放后数据下限 缺省值: lower = -1;

-u:数据上限标记;

upper:缺省值: upper = 1,代表着没有对y进行缩放;

-y:是否对目标值同时进行缩放;

y_lower:为下限值;

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

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

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

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

缩放规则文件可以用文本浏览器打开,看到其格式为:

y

lower upper min max x

lower upper

index1 min1 max1

index2 min2 max2

其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表 示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文 件中的参数可用于最后面对目标值的反归一化。反归一化的公式为:

(Value-lower)*(max-min)/(upper - lower)+lower

其中value为归一化后的值,其他参数与前面介绍的相同。

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

② svm-train.exe:训练数据,生成模型

使用方法:svm-train.exe [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 coef0:设置核函数中的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折交叉验证模式。

training_set_file:是要进行训练的数据集;

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

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

(注2:网上实验中的参数-s取3,-t取2(默认)还需确定的参数是-c,-g,-p

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

该优化过程需要用到Python(测试是2.5),Gnuplot(测试是4.2),gridregression.py(1、该文件需要修改路径2、下载地址在http://ishare.iask.sina.com.cn/f/6784903.html,再试没有使用过)。然后在命令行下面运行:

python.exe gridregression.py -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -s 3 –t 2 -v 5 -svmtrain E:\libsvm\libsvm-2.86\windows\svm-train.exe -gnuplot E:\libsvm\libsvm-2.86\gnuplot\bin\pgnuplot.exe E:\libsvm\libsvm-2.86\windows\train.txt > gridregression_feature.parameter

以上三个路径根据实际安装情况进行修改。

-log2c:是给出参数c的范围和步长

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

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

-s:选择SVM类型,也是只能选3或者4 -t是选择核函数

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

为了方便将gridregression.py可以将其存放在python.exe安装目录下

trian.txt为训练数据,参数存放在gridregression_feature.parameter中,可以自己命名。

搜索结束后可以在gridregression_feature.parameter中最后一行看到最优参数。

其中,最后一行的第一个参数即为-c,第二个为-g,第三个为-p,最后一个参数为均方误差。前三个参数可以直接用于模型的训练。 然后,根据搜索得到的参数,重新训练,得到模型。

例如:svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled ;

再例如:运行svmtrain.exe heart_scale会得出下面结果输出:

其中,

iter为迭代次数,

nu 是你选择的核函数类型的参数,

obj为SVM文件转换为的二次规划求解得到的最小值,

rho为判决函数的偏置项b,

nSV 为标准支持向量个数(0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值