一、LIBSVM介绍
LIBSVM是台湾大学林智仁(Chih-Jen Lin)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross Validation)的功能。
二、准备工作
2.1软件下载安装
使用的平台是Windows XP,从命令列执行。
先把一些需要的东西装好,总共需要三个软件:libsvm, python, gnuplot。
这里我选择的版本是libsvm-2.88,python26。
Libsvm:到.tw/~cjlin/libsvm/下载libsvm,然后解压缩就好了。
Python:到/download/下载完直接安装就好了。
Gnuplot:下载ftp:///pub/gnuplot/gp400win32.zip解压缩。
这里全部解压安装在c盘
c:\libsvm-2.88
c:\python26
c:\gnuplot
2.2参数修改
(1)把c:\libsvm-2.88\tools中的easy.py和grid.py复制到c:\libsvm-2.91\python中
(2)在c:\libsvm-2.88\python中修改easy.py和grid.py的路径:
①点中easy.py在右键中选Edit with IDLE打开,将else下面的路径修改如下:
else:
# example for windows
svmscale_exe = r"c:\libsvm-2.88\windows\svm-scale.exe"
svmtrain_exe = r"c:\libsvm-2.88\windows\svm-train.exe"
svmpredict_exe = r"c:\libsvm-2.88\windows\svm-predict.exe"
gnuplot_exe = r"c:\gnuplot\bin\pgnuplot.exe"
grid_py = r"c:\libsvm-2.88\python\grid.py"
②点中grid.py在右键中选Edit with IDLE打开,将else下面的路径修改如下: else:
# example for windows
svmtrain_exe = r"c:\libsvm-2.91\windows\svm-train.exe"
gnuplot_exe = r"c:\gnuplot\bin\pgnuplot.exe"
三、实验步骤
(1)按照LIBSVM软件包所要求的格式准备数据集;
(2)对数据进行缩放操作;
(3)选用适当的核函数;
(4)采用交叉验证选择惩罚系数C与g的最佳参数;
(5)采用获得的最佳参数对整个训练集进行训练获取支持向量机模型;
(6)利用获取的模型进行测试与预测。
四、实验操作
4.1.数据准备
.tw/~cjlin/libsvmtools/datasets/binary.html#breast-cancer 下载heart.txt作为此次分类的初始数据
heart
Source: Statlog / Heart
# of classes: 2
# of data: 270
# of features: 13
Files:
heart
heart_scale (scaled to [-1,1])
4..2具体操作
(1)据归一化处理
将数据heart.txt保存在c:\libsvm-2.88\windows文件夹下
对原始数据进行归一化,步骤如下:
打开程序--附件—命令提示符,键入
cd c:\libsvm\windows 回车
再键入
svm-scale -l 0 -u 1 heart.txt > heart.scale.txt 回车
在c:\ libsvm-2.88\windows下出现一个heart.scale.txt文件
(2)然后将路径调整到
cd c:\python27
接着输入:python C:\libsvm\python\grid.py -log2c -10,10,1 -log2g 10,-10,-1 c:\libsvm\windows\heart.scale.txt > test.txt 回车
就会产生一个test.txt文件,其中记录了参数寻优的结果
可以看到,参数分别为c 2.0,g 0.03125,正确率mse为84% 在python26文件下有heart.scale.txt.png,得:
(2)然后利用所得到的参数c ,g对heart.scale.txt进行训练,输入
cd c:\libsvm-2.88\windows 回车
svm-train –c 2.0 –g 0.03125 heart.scale.txt
生成训练模型heart.scale.txt.model。