码迷,mamicode.com
首页 > 其他好文 > 详细

libsvm

时间:2014-11-15 23:02:45      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   color   ar   os   使用   sp   for   

所有关于libsvm2.9的前期工作准备好以后,就必须考虑将自己的数据转换为libsvm对应的格式来做分类验证的问题

训练与测试数据文件的格式如下所示

<label> <index1>:<value1> <index2>:<value2>…

.

.

.

每行包含一个实例,并且以字符’\n’结束。对于分类来讲,<label>是整型数据,表示类别(支持多分类)。对于回归来 讲,<label>是任意实数(浮点数),表示目标值。one-class SVM并不使用这个参数,所以使用什么数值都可以。除非使用预计算好的内核(稍候章节介绍),否 则<index>:<value>是描述属性值的。<index>(索引)是从1开始的整型数据, 而<value>(值)是实数(浮点型)。索引必须升序排列。在测试文件中的标签只是用于计算精确度或错误率。如果它们是未知的,那么只要将 第一列赋任意数值
本包含有一个用于分类的示例数据文件,文件名是“heart_scale”。要验证你的数据格式的正确性,请使用“tools/checkdata.py”工具(详见文件“tools/README”)。

键入“svm-train heart_scale”,程序会读读入训练数据并生成模型文件“heart_scale.model”。假设你有一个名为 “heart_scale.t”的测试集,那么键入“svm-predict heart_scale.t heart_scale.model output”以测试预测精确度。文件“output”中含有预测的分类标签。

本包中还有一些别的实用程序:

1.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载入后按此缩放; f

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

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

y
lower upper min max 
lower upper
index1 min1 max1
index2 min2 max2
„„ 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表 示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。

数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。

例:原始文件AORG,用svm-scale归一化:svm-scale AORG >AORG.scale

该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为:
(Value-lower)*(max-min)/(upper – lower)+lower
其中value为归一化后的值,其他参数与前面介绍的相同。
建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。

2.svmtrain(训练数据,生成模型):

用法: 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 —

所有关于libsvm2.9的前期工作准备好以后,就必须考虑将自己的数据转换为libsvm对应的格式来做分类验证的问题

训练与测试数据文件的格式如下所示

<label> <index1>:<value1> <index2>:<value2>…

.

.

.

每行包含一个实例,并且以字符’\n’结束。对于分类来讲,<label>是整型数据,表示类别(支持多分类)。对于回归来 讲,<label>是任意实数(浮点数),表示目标值。one-class SVM并不使用这个参数,所以使用什么数值都可以。除非使用预计算好的内核(稍候章节介绍),否 则<index>:<value>是描述属性值的。<index>(索引)是从1开始的整型数据, 而<value>(值)是实数(浮点型)。索引必须升序排列。在测试文件中的标签只是用于计算精确度或错误率。如果它们是未知的,那么只要将 第一列赋任意数值
本包含有一个用于分类的示例数据文件,文件名是“heart_scale”。要验证你的数据格式的正确性,请使用“tools/checkdata.py”工具(详见文件“tools/README”)。

键入“svm-train heart_scale”,程序会读读入训练数据并生成模型文件“heart_scale.model”。假设你有一个名为 “heart_scale.t”的测试集,那么键入“svm-predict heart_scale.t heart_scale.model output”以测试预测精确度。文件“output”中含有预测的分类标签。

本包中还有一些别的实用程序:

1.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载入后按此缩放; f

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

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

y
lower upper min max 
lower upper
index1 min1 max1
index2 min2 max2
„„ 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表 示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。

数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。

例:原始文件AORG,用svm-scale归一化:svm-scale AORG >AORG.scale

该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为:
(Value-lower)*(max-min)/(upper – lower)+lower
其中value为归一化后的值,其他参数与前面介绍的相同。
建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。

2.svmtrain(训练数据,生成模型):

用法: 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是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。
本实验中的参数-s取3,-t取2(默认)还需确定的参数是-c,-g,-p

另, 实验中所需调整的重要参数是-c 和 –g,-c和-g的调整除了自己根据经验试之外,还可以使用gridregression.py 对这两个参数进行优化。(需要补充)
该优化过程需要用到Python(2.5),Gnuplot(4.2),gridregression.py(该文件需要修改路径)。
然后在命令行下面运行:
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,最后一个参数为均方误差。前三个参数可以直接用于模型的训练。

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

3.svm-predict(测试):

用法:svmpredict [options] test_file model_file output_file options(操作参数): -b probability_estimates:是否需要进行概率估计预测,可选值为0 或者1,默认值为0。 model_file 是由svmtrain 产生的模型文件;
test_file 是要进行预测的数据文件;
output_file 是svmpredict 的输出文件,表示预测的结果值。
输出结果包括均方误差(Mean squared error)和相关系数(Squared correlation coefficient)。
4.svm-toy:

简单的图形界面工具,它可以展示支持向量机怎样在二维空间(即平面)上将数据分类。你可以在该窗口上面单击以绘制数据点。使用“change”按钮来选择 类别1,2或3(也就是说,最多支持三类),按“load”按钮可以从文件载入数据,按“save”按钮可以将数据保存到文件,按“run”按钮可以获得 一个SVM模型(根据绘制的点集或从文件载入的数据),按“clear”按钮可以清屏。

在该窗口的底部文本框内,你可以输入参数,参数的句法和“svm-train”一样。

注意:“load”和“save”只考虑数据分类而不考虑回归的情况。每个数据点拥有一个标签(颜色,必须是1,2或3)和两个属性(横坐标和纵座标),取值区间[0,1]。


来源http://www.cnphp.info/libsvm2-9-data-format.html

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是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。
本实验中的参数-s取3,-t取2(默认)还需确定的参数是-c,-g,-p

另, 实验中所需调整的重要参数是-c 和 –g,-c和-g的调整除了自己根据经验试之外,还可以使用gridregression.py 对这两个参数进行优化。(需要补充)
该优化过程需要用到Python(2.5),Gnuplot(4.2),gridregression.py(该文件需要修改路径)。
然后在命令行下面运行:
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,最后一个参数为均方误差。前三个参数可以直接用于模型的训练。

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

3.svm-predict(测试):

用法:svmpredict [options] test_file model_file output_file options(操作参数): -b probability_estimates:是否需要进行概率估计预测,可选值为0 或者1,默认值为0。 model_file 是由svmtrain 产生的模型文件;
test_file 是要进行预测的数据文件;
output_file 是svmpredict 的输出文件,表示预测的结果值。
输出结果包括均方误差(Mean squared error)和相关系数(Squared correlation coefficient)。
4.svm-toy:

简单的图形界面工具,它可以展示支持向量机怎样在二维空间(即平面)上将数据分类。你可以在该窗口上面单击以绘制数据点。使用“change”按钮来选择 类别1,2或3(也就是说,最多支持三类),按“load”按钮可以从文件载入数据,按“save”按钮可以将数据保存到文件,按“run”按钮可以获得 一个SVM模型(根据绘制的点集或从文件载入的数据),按“clear”按钮可以清屏。

在该窗口的底部文本框内,你可以输入参数,参数的句法和“svm-train”一样。

注意:“load”和“save”只考虑数据分类而不考虑回归的情况。每个数据点拥有一个标签(颜色,必须是1,2或3)和两个属性(横坐标和纵座标),取值区间[0,1]。


来源http://www.cnphp.info/libsvm2-9-data-format.html

libsvm

标签:style   http   io   color   ar   os   使用   sp   for   

原文地址:http://www.cnblogs.com/lns888/p/4100375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!