libsvm使用方法,libsvm使用说明
概述SVM支持向量机SVM(Support Vector Machine)是一种监督学习模型,通常用于模式识别、分类和回归分析。一般来说,SVM就是通过训练得到一个超平面,对样本进行分类,保证分类样本中靠近超平面的一些点与超平面的距离(几何区间)最大。这些靠近超平面的点称为支持向量(之所以称为支持向量而不是支持样本,是因为每个样本都被认为是一个向量,每个特征都是向量的一个元素)。
LibSvm LibSVM是由台湾省的Chih-Jen Lin教授在2001年开发的一组库,用于实现支持向量机。这个库的运行速度相当快,可以很方便的对数据进行分类或回归。LibSVM以其程序小、应用灵活、输入参数少、开源、易扩展等特点,成为国内应用最广泛的SVM库。这个库可以从http://www.csie.ntu.edu.tw/~cjlin/,免费获得,目前已经开发到3.21版本。下载版本。zip格式。解压后可以看到主要有5个文件夹和一些C源文件。为了方便匹配源代码和原理,这里用的是更早的2.6版本。
LibSvm框架下载libsvm-2.6.zip后,解压后的内容如下:
其中包括:
文件夹java:是实现应用于java平台的SVM的源文件,/libsvm/:部分java库,Makefile:编译文件,svm_predict.java:测试文件,svm_toy.java:实现可视化工具的源文件,svm_train.java:训练的源文件;
Python文件夹:是参数优化的程序文件,cross_validation.py:交叉验证,easy.py:通用调用程序,从参数优化到文件训练和预测。Svm.py:调用Svm的主文件,svm_test.py:测试svm模型的文件;
Svm-toy文件夹:实现训练数据和分类界面可视化的工具源代码,其编译程序在windows文件夹:svmtoy.exe;
Windows文件夹:包含libSVM的四个exe包,SVM predict . exe:SVM编译的可执行程序:svm-predict.c,实现对的预测。SVM scale . exe:编译的可执行程序:svm-scale.c,实现数据的归一化和缩放。SVM train . exe:SVM编译的可执行程序:svm-train.c,调用的数据训练接口。
当前文件夹:
heart _ scale:libsvm附带的样本文件,可用于测试和训练。
Makefile:编译几个规则文件。c,Linux环境下目录中的h文件。
Makefile.win:几种编译规则。c,h文件放在Windows环境下的目录中。
Svm.cpp/svm.h: SVM算法的具体实现文件。
SVM-predict.c的测试文件:SVM模型,调用svm.c文件中的测试接口。
Svm-scale.c:实现样本数据的归一化和尺度化。缩放规则如下:
其中:y为缩放后的数据,y为缩放前的数据;Upper和lower是指定数据缩放的上限和下限;Max和min是数据缩放的最大值和最小值。
LibSvm最初使用自己的小例子将heart_scale文件从上图中的当前目录复制到“windows”目录。shift,右键单击“Windows”目录,选择“在此打开命令窗口”。在打开的命令窗口中输入以下命令:
svmtrain heart_scale训练模型
其中“svmtrain”调用svmtrain.exe,heart_scale存储训练样本的文件,train.model存储最终训练好的模型。
输出结果如下:
解释:
#iter:是迭代的次数
nu:nu-SVC、一类SVM和nu-SVR三种支持向量机的核函数参数默认为0.5。
Obj:将SVM文件转化为二次规划解得到的最小值!
:是决策函数的偏差项b
NSV:是标准支持向量的数量(0
Train-model文件svm_type c_svc //选择的svm类型默认为c_svckernel_type rbf //的核函数类型,这里是参数NR _ class 2//RBF核的类别数, 下面是两个分类问题total_sv 132 //支持向量总数rho 0.424462 //决策函数blabel 1 -1的偏差//原始文件中的类别标识符NR _ SV 6468//每一类中支持向量机的数量SV //以下类及其对应支持向量的权重系数为11:0.166672:13:-0.33333…10:-0.903226 11:-1 12:-1 10:-1 11:-1 12:-1 13: 1-1 1: 0.16667 2: 1 3: 1 ….10:-0.87069
描述:
标签1:价值2:价值…
标签:如果是分类,就是类别的标识,像上图的1/-1。可以随意设定,比如15/10。
如果是回归,而且这是目标值,就要实事求是。
值:是要训练的数据。从分类的角度来说,就是特征值。数据由空格分隔。如上图所示,如果0.708333,1,1,-0.320755是第一个样本的A1,A2,A3,A4特征,那么0.58333,-1,0.33333,-0.0。
需要注意的是,如果特征值为0,则不在文件中写入特征值,而是保留序号,这样特征冒号(姑且称之为序号)的前面是不连续的。下图显示了heart_scale文件中的一行。特征11的序列号是保留的,但值为0,因此不会显示在文件中。
svmscale的用法svmscale用于缩放原始样本,范围可自行设置,通常为[0,1]或[-1,1]。
缩放的目的主要是
1)防止某个特征过大或过小,从而在训练中起到不平衡的作用;
2)为了计算速度。因为内核计算中会用到内积运算或exp运算,不平衡的数据可能会造成计算困难。
用法:SVM scale[-l lower][-u upper][-y y _ lower y _ upper][-s保存文件名] [-r恢复文件名]文件名
其中,[]是可选的:
-l:设置数据的下限;下限:设定的数据下限值,默认为-1。
-u:设置数据的上限;上限:设定的数据上限值;默认值为1。
-y:是否同时缩放目标值;Y_lower是下限,y_upper是上限;
-s: save _ filename:表示将缩放后的规则保存为文件save _ filename;
-r: restore_filename:表示将根据现有的规则文件restore_filename执行缩放;
Filename:要缩放的数据文件,文件格式要符合libsvm格式(前一节解释的格式)。
对于上面的heart_scale文件,将其数据缩放到10~20,生成test_range的规则文件。按如下方式执行命令:
svmscale -l 10 -u 20 -s测试_范围心脏_量表新_心脏_量表
效果如下:缩放结果文件后
该文件如下:
在生成这样一个规则文件之后,使用-r test_range生成一个新的样本文件用于缩放。
使用svmtrain svmtrain主要训练训练数据集,可以获得SVM模型。
用法:SVM训练[选项]训练_设置_文件[模型_文件]
Options:是可选的操作参数,每个选项的含义如下:
-s ~ set svm类型:0c-SVC/1v-SVC/2one-class-SVM/3-SVR/4n-SVR-t ~ set核函数类型,默认值为2:0-线性核:u * v/1-多项式核:(g * u * v coef0)度/2-RBF核:exp (3-g~ * u-v 2)/3-Sigmoid核:Tanh ( * u -r ~ coef 0: set coef-C ~ cost:在C-SVC、-SVR、n-SVR中设置从惩罚系数C,默认值为1;-n ~ v:设置参数n -n~v-SVC,一类-SVM,n-SVR,默认值为0.5;-p ~ :在v-SVR的损失函数中设置E,默认值为0.1;-m ~ cache:设置缓存内存大小,单位为MB,默认值为40;-e ~ :设置终止准则中的允许偏差,默认值为0.001;-h ~ shrinking:是否使用启发式,可选值为0或1,默认值为1;-b ~概率估计:是计算SVC还是SVR的概率估计,可选值0或1,默认值0;-wi ~ weight:对各类样本的惩罚系数c进行加权,默认值为1;-v ~ n: n折叠交叉验证模式;Training_set_file:输入训练的样本文件,比如之前的heart_scale。
Model_file:可选,是要保存的结果文件,称为模型文件,以便在预测中使用。默认情况下,您只需要为函数提供一个示例文件名,但是为了保存结果,您仍然需要提供一个结果文件名。
svmpredict的用法svmpredict是根据训练得到的模型来预测数据集。
用法:SVM预测[选项]测试_文件模型_文件输出_文件
Options:操作参数,可选,各选项的含义如下:
-b ~ probability _ estimates 3354是否需要概率估计预测,可选值为0或1,默认值为0。Test_file:是要预测的样本数据文件,格式也要符合libsvm格式。即使不知道label的值,也要填任意一个。svmpredict将在output_file中给出正确的label结果,如果您知道label的值,您将输出正确的速率。
Model_file:是由svmtrain生成的模型文件;
output _ file:SVM predict的输出文件,表示预测的结果值;
谢谢你。
http://blog.csdn.net/zy_zhengyang/article/details/45009431
http://blog.csdn.net/chl033/article/details/4645544
http://6 Xu dong hai . blog . 163 . com/blog/static/33640629200941484035544/
http://ntu.csie.org/~piaip/svm/svm_tutorial.html