Step1:下载相关软件工具包和程序。
1、下载livsvm。连接http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,我使用的是libsvm-3.12.zip版本,下载后直接解压缩到C;\libsvm-3.12下。
2、下载python27。安装目录C:\Python27,同时将路径添加到系统环境变量中。添加方法:右键点击我的电脑->属性->高级系统设置->环境变量,在系统变量里找到path,点击编辑,在弹出框最后加上C:\Python27(用分号与之前项目分隔开),重启电脑即可。(摘自http://www.cnblogs.com/yangyangcv/archive/2012/05/04/2483000.html)。
3、下载gnuplot。链接https://sourceforge.net/projects/gnuplot/files/gnuplot/5.0.0/,我的系统是64位,所以下载的是gp500-win64-mingw.zip和gp500-win64-mingw.exe。存储路径C:\gnuplot。
4、下载gridregression.py文件。链接http://download.csdn.net/download/killa11/2225384。下载后直接放在C:\libsvm\tools目录下。
Step2:将原始数据格式转换成libsvm中所要求的数据格式
Label 1:value 2:value ….
Label:是类别的标识,如果是分类,就表示类别标签,如果是回归,就表示目标值。
Value:就是要训练的数据,从分类的角度来说就是特征值,数据之间用空格隔开;
比如: -15 1:0.708 2:1056 3:-0.3333
需要注意的是,如果特征值为0,特征冒号前面的序号可以不连续。这样做可以减少内存的使用,并提高做矩阵内积时的运算速度。
数据格式的转换可以自己编写matlab程序,或者使用相应的格式转换工具。链接http://www.cnblogs.com/yangyangcv/archive/2012/04/16/2452556.html
Step3:用svm-scale.exe对数据集进行归一化处理
svmscale通常将数据缩放至[-1,1]或者[0,1]之间。
【使用方法】
svm-scale.exe [-l lower] [-u upper] [-y y_lower y_upper] [-s save_name] [-r store_name] filename;
将修改好格式的数据文件,即train_set.txt和test_set.txt文件复制到libsvm中的windows文件夹下。
【具体操作】
(1) 打开“命令提示符”,进入dos命令环境下,
(2) 输入命令:cd C:\libsvm\windows,进入libsvm中的windows下
(3) 输入命令:svm-scale.exe -l 0 -u 1 train_set.txt>train_scale.txt。
(4) 输入命令:svm-scale.exe -l 0 -u 1 test_set.txt>test_scale.txt。
在C:\libsvm\windows文件夹下生成归一化后的两个文件train_set.txt和test_set.txt。
Step4:用gridregression.py搜索最优参数,主要是c和g
(1) 先用右键—>Eidt with IDLE打开gridregression.py,修改路径。
修改后的路径如图所示:
(2) 参数优化
【在命令提示符下输入以下命令】
C:\Python27\python gridregression.py -log2c-5,5,1 -log2g -5,5,1 -log2p -5,5,1 -v 10 -svmtrainC:\libsvm\windows\svm-train.exe -gnuplot C:\gnuplot\bin\gnuplot.exe train_scale【命令中的参数意义】
C:\Python27\python gridregression.py [-log2cbegin,end,step] [-log2g begin,end,step] [-log2p begin,end,step] [-v fold][-svmtrain pathname] [-gnuplot pathname] [odditional parameters for svm-train]dataset
在最后一行可以得到参数优化结果,分别为c,g,p,mse
Step5:用svm-train.exe进行训练
svmtrain主要实现对训练数据集的训练,并可以获得SVM回归模型。
【使用方法】svm-train [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'*v+ coef 0)degree
2 -- RBF 核:exp(-γ*||u-v||2)
3 -- sigmoid 核:tanh(γ*u'*v+ coef 0)
-ddegree: 设置多项式核中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:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。
【具体使用】
(1) 打开命令提示符,进入C:\libsvm\windows;
(2) 输入“svm-train.exe -s 3 -t 2 -c 1024.0 -g 4 .0 -p 0.0625 train_scale.txt”,
-s是选择SVM的类型。对于回归来说,只能选3或者4
3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是选择核函数,通常选用RBF核函数。然后c,g,p是Step4中寻出的优化参数,代入即可。
【运行结果运行结果】
#iter 为迭代次数,
nu 为选择的核函数类型参数,
obj为SVM文件转换为的二次规划求解得到的最小值;
rho为判决函数的偏置项b,