LIBSVM使用方法

上传人:hs****ma 文档编号:511239799 上传时间:2023-08-30 格式:DOC 页数:8 大小:173KB
返回 下载 相关 举报
LIBSVM使用方法_第1页
第1页 / 共8页
LIBSVM使用方法_第2页
第2页 / 共8页
LIBSVM使用方法_第3页
第3页 / 共8页
LIBSVM使用方法_第4页
第4页 / 共8页
LIBSVM使用方法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《LIBSVM使用方法》由会员分享,可在线阅读,更多相关《LIBSVM使用方法(8页珍藏版)》请在金锄头文库上搜索。

1、LIBSVM1 LIBSVM 简介LIBSVM 是台湾大学林智仁 (Lin Chih-Jen) 副教授等开发设计的一个简单、易于使 用和快速有效的 SVM 模式识别与回归的软件包, 他不但提供了编译好的可在 Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用; 该软件还有一个特点,就是对 SVM 所涉及的参数调节相对比较少,提供了很多的默 认参数, 利用这些默认参数就可以解决很多问题; 并且提供了交互检验 (Cross -SVM 回 归等问题,包括基于一对一算法的多类模式识别问题。 SVM 用于模式识别或回归时, SVM 方法及其参数、 核函数及其参数的

2、选择, 目前国际上还没有形成一个统一的模式, 也就是说最优 SVM 算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者 利用软件包提供的交互检验功能进行寻优。vSVM回归和-SVM分类、V/alidation)的功能。该软件包可以在 http:/www.csie.ntu.edu.tw/cjlin/ 免费获得。该软件可以解决 C-S/M 分类、 -S/M 回归等问题,包括基于一对一算法的多类模式识别问题。S/M 用于模式识别或回归时, S/M 方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模 式,也就是说最优 S/M 算法参数选择还只能是凭借经验、实验对比、大范围的搜寻

3、或者利用软件 包提供的交互检验功能进行寻优。2 LIBS/M 使用方法LibS/M 是以源代码和可执行文件两种方式给出的。如果是Windows 系列操作系统,可以直接使用软件包提供的程序,也可以进行修改编译;如果是Unix 类系统,必须自己编译,软件包中提供了编译格式文件,我们在SGI 工作站 (操作系统 IRIX6.5)上,使用免费编译器 GNU C+3.3 编译通过。2.1 LIBS/M 使用的一般步骤:1) 按照 LIBS/M 软件包所要求的格式准备数据集;2) 对数据进行简单的缩放操作;3) 考虑选用 RBF 核函数;4) 采用交叉验证选择最佳参数C与g ;5) 采用最佳参数 C 与

4、g 对整个训练集进行训练获取支持向量机模型;6) 利用获取的模型进行测试与预测。2.2 LIBS/M 使用的数据格式该软件使用的训练数据和检验数据文件格式如下: : : .其中 是训练数据集的目标值,对于分类,它是标识某类的整数(支持多个类 ) ;对于回归,是任意实数。 是以 1 开始的整数,可以是不连续的; 为实数, 也就是我们常说的自变量。 检验数据文件中的 label 只用于计算准确度或误差, 如果它是未知的,只需用一个数填写这一栏,也可以空着不填。在程序包中,还包括 有一个训练数据实例: heart_scale ,方便参考数据文件格式以及练习使用软件。可以编 写小程序,将自己常用的数据

5、格式转换成这种格式。2.3 Svmtrain 和 Svmpredict 的用法Svmtrain( 训练建模 )的用法:svmtrain options training_set_file model_fileOptions :可用的选项即表示的涵义如下-s svm 类型: SVM 设置类型 (默认 0)0 - C-SVC1 -v-SVC2类SVM3 - e -SVR4 - v-SVR-t 核函数类型:核函数设置类型 (默认 2)0 -线性:uv1 -多项式:(r*uv + coefOdegree2 - RBF函数:exp(-r|u-v$2)3 sigmoid: tanh(r*uv + coef

6、O)-d degree :核函数中的degree设置(默认3)-g r(gama) :核函数中的 ?函数设置 (默认 1/ k)-r coef0 :核函数中的 coef0 设置 (默认 0)-c cost :设置 C-SVC , ? -SVR 和?-SVR 的参数(默认 1)-n nu :设置?-SVC,类 SVM和?- SVR的参数(默认0.5)-p e :设置? -SVR中损失函数?的值(默认0.1)-m cachesize :设置 cache 内存大小,以 MB 为单位 (默认 40)-e s:设置允许的终止判据(默认0.001)-h shrinking :是否使用启发式, 0 或 1(

7、默认 1)-wi weight :设置第几类的参数C为weight?C(C-SVC 中的C)(默认1)-v n: n-fold 交互检验模式其中 -g 选项中的 k 是指输入数据中的属性数。 option -v 随机地将数据剖分为 n 部 分并计算交互检验准确度和均方根误差。以上这些参数设置可以按照SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM 类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。training_set_file 是要进行训练的数据集; model_file 是训练结束后产生的模型文 件,文件中包括支持向量样

8、本数、支持向量样本以及Lagrange 系数等必须的参数;该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。2.4 Svmpredict 的用法Svmpredict( 使用已有的模型进行预测 )的用法:svmpredict test_file model_file output_filemodel_file 是由 svmtrain 产生的模型文件; test_file 是要进行预测的数据文件;Output_file 是 svmpredict 的输出文件。 svm-predict 没有其它的选项。svmtrain -s 0 -c 1000 -t 1 -g 1 -r 1 -d 3

9、data_file训练一个由多项式核(uv+1)A3和C=1000组成的分类器。svmtrain -s 1 -n 0.1 -t 2 -g 0.5 -e 0.00001 data_file在 RBF 核函数 exp(-0.5|u-v|A2) 和终止允许限 0.00001 的条件下,训练一个 ?-SVM (? = 0.1) 分类器。svmtrain -s 3 -p 0.1 -t 0 -c 10 data_file以线性核函数 uv 和 C=10 及损失函数 ?= 0.1 求解 SVM 回归。LIBSVM 使用笔记1 程序准备:C:Python25 / 需要安装 python2.5E:svmlibs

10、vm-2.83 / 解压缩 libsvm-2.83 E:svmlibsvm-2.83gp373w32 / 画图工具 gnuplot E:svmlibsvm-2.83python /SVM, cross validation E:svmlibsvm-2.83tools /easy.py, grid.py, subset.py E:svmlibsvm-2.83tools1 / 生成所需格式的数据,两种方式: matlab 或 excel E:svmlibsvm-2.83windows /windows 下面的 4 个可执行程序2 修改 E:svmlibsvm-2.83toolseasy.py :程

11、序开始加入以下两句:svmpath = E:svmlibsvm-2.83windows / easy 需要调用 svm 可执行程序 pythonpath = E:svmlibsvm-2.83tools / easy 需要调用 grid.py gnuplot_exe = rc:tmpgnuplotbinpgnuplot.exe 改为: gnuplot_exe = r.gp373w32pgnuplot.exe grid_py = r.grid.py 改为: grid_py = r.toolsgrid.py 3 修改 E:svmlibsvm-2.83toolsgrid.py : 程序开始加入以下两句

12、:svmpath = E:svmlibsvm-2.83windows / grid 需要调用 svm 可执行程序 gnuplotpath = E:svmlibsvm-2.83gp373w32 / grid 需要调用画图工具 gnuplot_exe = rc:tmpgnuplotbinpgnuplot.exe 改为: gnuplot_exe = r.gp373w32pgnuplot.exe4 数据准备:1、 使用 excel 宏手工转换数据格式,可以通过 excel 文件 FormatDataLibsvm.xls 打开包含数据的文本文 件,然后用宏将数据转换为 libsvm 格式。也可以用宏将

13、libsvm 格式的数据转换回来。 2、使用 matlabFormatSplitBat.m 是一个批量将以 Tab 或者空格分隔的数据转换为 libsvm 格式,并且分 成占全部数据比例为 p 的训练集和 1-p 的测试集,然后调用 easy.py 的例子。 /摘自 Libsvm- 2_6.mht修改程序中的三处路径与本机实际存储情况一致,并确保easy.py的第28行能够正确调用 grid.py ,之后将 fileList.txt 文件中写入要转换格式的文件列表。 这些文件名都在当前路径 (E:svmlibsvm-2.83data) 之下。运行 E:svmlibsvm-2.83Tools1F

14、ormatSplitBat.m ,程序自动将 fileList.txt 中提到的文件 名的数据内容按照概率p进行随机划分,本程序p为0.5,则有一半划分到train,一半划分到test。另外,本程序划分是循环10次,可以按照自己的要求进行调整。每次循环将每个原数据文档在文件夹 E:svmlibsvm-2.83data 中生成 4 个文件,分别是: file_i.train, file_i.te st, file_iL.train, file_iL.test. 其中, L 表示标示变量在左边,为 libsvm 能够使用的文件。运行过程中,每一次循环程序都要调用 easy.py, grid.py

15、默认采用 5 倍交叉验证,对 c 采用的搜索范围和步长分别为-10, 15和1,g的为10,-15和-1,可根据需要自行修改grid.py。运行完grid.py,在中每两个有L的文件(train, test)生成了 7个文件,分别是train5 个,test2 个。其中 train 中生成 3 个 scale (-, out, png),个 range, 个 model。Test 中一个 scale, 个 predict o利用Libsvm进行SVM分类SVM分类器通常具有较高的分类精度。我这里不想过多的去说SVM是怎么回事,只是提供一种使用 SVM进行判别的方法。我使用的是开源的 LibSVM实现SVM分类。Google 上输入LIBSVM 可以很容易的找到代码下载。我使用的是C#版(不过是2.6版),也可以使用C+的2.81版。下面我说说如何使用2.81版中带的编译好的程序完成聚类工作。该版本支

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号