svm使用详解.docx

上传人:b****1 文档编号:883192 上传时间:2023-04-30 格式:DOCX 页数:10 大小:49.28KB
下载 相关 举报
svm使用详解.docx_第1页
第1页 / 共10页
svm使用详解.docx_第2页
第2页 / 共10页
svm使用详解.docx_第3页
第3页 / 共10页
svm使用详解.docx_第4页
第4页 / 共10页
svm使用详解.docx_第5页
第5页 / 共10页
svm使用详解.docx_第6页
第6页 / 共10页
svm使用详解.docx_第7页
第7页 / 共10页
svm使用详解.docx_第8页
第8页 / 共10页
svm使用详解.docx_第9页
第9页 / 共10页
svm使用详解.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

svm使用详解.docx

《svm使用详解.docx》由会员分享,可在线阅读,更多相关《svm使用详解.docx(10页珍藏版)》请在冰点文库上搜索。

svm使用详解.docx

svm使用详解

1.文件中数据格式

labelindex1:

value1index2:

value2...

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

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

Value表示每个特征的值

例如:

31:

0.1220002:

0.792000

31:

0.1440002:

0.750000

31:

0.1940002:

0.658000

31:

0.2440002:

0.540000

31:

0.3280002:

0.404000

31:

0.4020002:

0.356000

31:

0.4900002:

0.384000

31:

0.5480002:

0.436000

数据文件准备好后,可以用一个python程序检查格式是否正确,这个程序在下载的libsvm文件夹的子文件夹tools下,叫checkdata.py,用法:

在windows命令行中先移动到checkdata.py所在文件夹下,输入:

checkdata.py你要检查的文件完整路径(包含文件名)

回车后会提示是否正确。

 

2.对数据进行归一化。

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

Svm-scale用法:

用法:

svmscale[-llower][-uupper][-yy_lowery_upper][-ssave_filename][-rrestore_filename]filename(缺省值:

lower=-1,upper=1,没有对y进行缩放)

其中,-l:

数据下限标记;lower:

缩放后数据下限;

-u:

数据上限标记;upper:

缩放后数据上限;

-y:

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

-ssave_filename:

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

-rrestore_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(操作参数):

可用的选项即表示的涵义如下所示

-ssvm类型:

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

0--C-SVC1--n-SVC2--one-class-SVM3--e-SVR4--n-SVR

-t核函数类型:

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

0--线性核:

u'*v

1--多项式核:

(g*u'*v+coef0)degree

2--RBF核:

e(uv2)g-

3--sigmoid核:

tanh(g*u'*v+coef0)

-ddegree:

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

-gg:

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

-rcoef0:

设置核函数中的coef0,默认值为0;

-ccost:

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

-nn:

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

-pe:

设置n-SVR的损失函数中的e,默认值为0.1;

-mcachesize:

设置cache内存大小,以MB为单位,默认值为40;

-ee:

设置终止准则中的可容忍偏差,默认值为0.001;

-hshrinking:

是否使用启发式,可选值为0或1,默认值为1;

-b概率估计:

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

-wiweight:

对各类样本的惩罚系数C加权,默认值为1;

-vn:

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-s3-t2-v5-svmtrainE:

\libsvm-2.86\windows\svm-train.exe-gnuplotE:

\gnuplot\bin\pgnuplot.exeE:

\libsvm\libsvm-2.86\windows\train.txt以上三个路径根据实际安装情况进行修改。

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

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

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

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

-t是选择核函数

-v5将训练数据分成5份做交叉验证。

默认为5

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

其中,最后一行的第一个参数即为-c,第二个为-g,第三个为-p,前三个参数可以直接用于模型的训练。

然后,根据搜索得到的参数,重新训练,得到模型。

命令行会出现以下内容:

optimizationfinished,#iter=162

nu=0.431029

obj=-100.877288,rho=0.424462

nSV=132,nBSV=107

TotalnSV=132

  其中,#iter为迭代次数,nu是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b,nSV为标准支持向量个数(0

模型文件内容前几行大致如下:

svm_typeepsilon_svr//svm类型

kernel_typerbf//核函数类型

gamma100//训练时参数g的值

nr_class2 //类别数,此处为两分类问题

total_sv12//支持向量个数

rho-0.35336//判决函数的偏置项b

SV //以下为各个类的权系数及相应的支持向量

文件中下面是支持向量数据

4.测试

用法:

svmpredict[options]test_filemodel_fileoutput_fileoptions(操作参数):

-bprobability_estimates:

是否需要进行概率估计预测,可选值为0或者1,默认值为0。

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

test_file是要进行预测的数据文件;

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

输出结果包括均方误差(Meansquarederror)和相关系数(Squaredcorrelationcoefficient)。

5.实例

<1>下载Libsvm、Python和Gnuplot。

我用的版本分别是:

Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。

<2>修改训练和测试数据的格式:

目标值第一维特征编号:

第一维特征值第二维特征编号:

第二维特征值…

例如:

2.31:

5.62:

3.2

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

注意:

训练和测试数据的格式必须相同,都如上所示。

测试数据中的目标值是为了计算误差用

检查格式正确性:

用checkdata.py,上面已经介绍过

<3>开始处理数据

分别使用Libsvm中的Windows版本的工具svmscale.exe进行训练和测试数据的归一化,svmtrain.exe进行模型训练,svmpredict.exe进行预测

(1)Svm-scale.exe用法:

Svm-scale.exe-y01-l0-u1feature.txtfeature.scaled

讲目标值和特征值都归一到[-1,1],默认的归一化范围是[-1,1],可以用参数-y,-l和-u分别调整上界和下届,feature.txt是输入特征文件名

输出的归一化文件名为feature.scaled

然后将feature.scaled中的某些数据剪切到另一文件feature_test.scaled中,用于最后测试。

(2)svm-train.exe训练模型

Svm-train.exe-s3-p0.0001-t2-g32-c0.53125feature.scaled

训练得到的模型为feature.scaled.model

具体的参数含义可以参考帮助文档。

这里-s是选择SVM的类型。

对于回归来说,只能选3或者4,3表示epsilon-supportvectorregression,4表示nu-supportvectorregression。

-t是选择核函数,通常选用RBF核函数。

-p尽量选个比较小的数字。

需要仔细调整的重要参数是-c和-g。

除非用grid.py来搜索最优参数,否则只能自己慢慢试了。

(3)用svm-predict.exe进行预测

Svm-predict.exefeature_test.scaledfeature.scaled.modelfeature_test.predicted

其中feature_test.scaled是归一化后的测试特征文件名,feature.scaled.model是训练好的模型,SVM预测的值在feature_test.predicted中

6.svm-toy.exe的使用

在libsvm-3.19\windows下有个名为svm-toy.exe的,他是用来展示你的数据样式和查看预测分类结果的。

可以在上面任意点击,他会根据点击的位置生成点,”change”可以改变点的颜色,“save”用来保存这些数据到一个文件,也可以用“load”装载经过归一化后的数据文件,在按钮后面输入想设置的参数后,点击”run”就会出现分类或预测结果。

利用它,可以直观地看到改变某些参数导致的变化和结果,从而便于找到合适参数。

例如:

对于下列数据

0.2391:

0.000

0.3511:

0.033

0.3421:

0.067

0.3381:

0.100

0.3501:

0.133

0.3751:

0.167

0.0321:

0.200

0.1921:

0.233

0.0591:

0.267

0.2421:

0.300

0.1131:

0.333

0.4371:

0.367

0.6501:

0.400

0.7961:

0.433

0.9391:

0.467

0.8921:

0.500

0.8741:

0.533

0.7681:

0.567

0.6721:

0.600

0.4111:

0.633

0.3961:

0.667

0.1841:

0.700

0.0001:

0.733

0.1181:

0.767

0.1651:

0.800

0.2931:

0.833

0.3311:

0.867

0.3561:

0.900

0.3171:

0.933

0.3291:

0.967

0.1831:

1.000

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2