一、 二、
LibSVM文件结构说明 ............................................................................................................................................ 2 LibSVM安装及测试 ................................................................................................................................................ 2
1.下载libsvm .................................................................................................................................................................. 2 2.解压至指定目录 ............................................................................................................................................................ 2 3.设置路径 ........................................................................................................................................................................ 3 4.编译libsvm .................................................................................................................................................................. 3 5.执行编译 ........................................................................................................................................................................ 4 6.安装测试 ........................................................................................................................................................................ 6 三、 四、
LibSVM基础使用 .................................................................................................................................................... 7 LibSVM使用规范 .................................................................................................................................................... 9
1. libSVM的数据格式 .................................................................................................................................................... 9 2. svmscale的用法......................................................................................................................................................... 9 3. svmtrain的用法 ....................................................................................................................................................... 10 4. svmpredict 的用法 .................................................................................................................................................. 12 五、
逐步深入LibSVM .................................................................................................................................................. 12
1. svm_group_class ......................................................................................................................................................... 14 2. 多类判别的one-against-one ...................................................................................................................................... 15
1)1-V-R方式 ......................................................................................................................................................... 15 2)1-V-1方式 ......................................................................................................................................................... 15 3)有向无环图(DAG-SVM) ............................................................................................................................... 15 3. hessian矩阵的内存处理 ............................................................................................................................................ 16 4. 数据选择select_working_set(i,j) ................................................................................................................................ 17 5. 停止准则 ..................................................................................................................................................................... 18 6. 因子α的更新 ............................................................................................................................................................. 18 7. 数据缩放do_shrinking() ............................................................................................................................................. 19 8. 截距b的计算 ............................................................................................................................................................. 19 六、 七、
分界线的输出 ......................................................................................................................................................... 20 easy.py和grid.py的使用 ....................................................................................................................................... 22
一、 LibSVM文件结构说明
LibSVM是台湾 林智仁(Chih-Jen Lin) 教授2001年开发的一套支持向量机的库,可以很方便的对数据做分类或回归。这套库可以从http://www.csie.ntu.edu.tw/~cjlin/免费获得。下载.zip格式的版本,解压后可以看到,主要有5个文件夹和一些c++源码文件。
Java—— 主要是应用于java平台;
Python—— 是用来参数优选的工具,稍后介绍;
svm-toy—— 一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;
tools—— 主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(easy), 数据检查(checkdata);
windows——包含libSVM四个exe程序包,我们所用的库就是他们。
里面还有个heart_scale,是一 个样本文件,可以用记事本打开,用来测试用的。
其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.c在svm-toy文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。另外,里面的 README 跟 FAQ 也是很好的文件,对于初学者如果E文过得去,可以看一下。
二、 LibSVM安装及测试
1.下载libsvm
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
2.解压至指定目录
将libsvm解压至D:\\MATLAB\\R2010a\oolbox下,你也可以解压至你喜欢的地方。
3.设置路径
下载下来的借口包里有svm的一些源文件,没有可执行的exe文件,所以,必须先将svmtrain等源文件编译为matlab可以使用的dll等文件。于是先选择编译器,如下:
4.编译libsvm
首先在matlab设置当前目录为 D:\\MATLAB\\R2010a\oolbox\\libsvm-3.12\\matlab
5.执行编译
在matlab命令窗口中输入 mex -setup 显示
输入n
选择编译器:【21】
输入n
输入编译器所在路径
再次确认自己的选择,输入y
编译器选择好了之后,用make.m编译 命令窗口输入make
可以看到新编译出4个文件libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32
6.安装测试
在命令窗口中输入 load heart_scale;
此时需注意,libsvm 3.12中提供的是c++版本的数据集heart_scale,这里需要加载matlab版本的数据集。 这两个数据集有什么不同呢?
C++版本的数据集里面如果某一个样本的某一个特征为0,这个特征可以不写在数据集中,但是在matlab版本中,必须要写出来。否则的话,会报这样一个错误:
此时你可以选择下载matlab型的数据集,给一个链接。 http://download.csdn.net/detail/boruoshui/4881338 然后读取数据集
libsvmread('heart_scale');
完成该步骤后发现Workspace中出现了heart_scale_inst 和 heart_scale_label,说明正确。
model=svmtrain(heart_scale_inst ,heart_scale_label)
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model) 由于libsvm新的版本对于输出结果的重新设定
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model) 命令会报BUG
改为如下命令即可。(老版本不用改变。本文是libsvm-3.12。) model=svmtrain(heart_scale_label,heart_scale_inst)
[predicted_label, accuracy, decision_values]=svmpredict(heart_scale_label,heart_scale_inst,model)
证明libsvm安装成功,可以进行其他的实验了。
三、 LibSVM基础使用
1. 把LibSVM包解压到相应的目录,比如D:/libsvm。
2. 在电脑“开始”的“运行”中输入cmd,进入DOS环境。定位到D:/ libsvm/windows下 3. 进行libsvm训练,输入命令:(这里要注意文件的名字,2.89以前版本都是svmtrain.exe) svm-train heart_scale train.model
heart_scale ——是目录下的已经存在的样本文件,要换成自己的文件,只需改成自己的文件名就可以了
train.model ——是创建的结果文件,保存了训练后的结果 可以看到结果:
#iter——为迭代次数
nu—— 为选择的核函数类型的参数
obj——为SVM文件转换为的二次规划求解得到的最小值