windows下LIBSVM使用方法及例子

1. 程序介绍和环境设置

windows下的libsvm是在命令行运行的Console Program。所以其运行都是在windows的命令行提示符窗口运行(运行,输入cmd)。运行主要用到的程序,由如下内容组成:

libsvm-2.9/windows/文件夹中的:
svm-train.exe
svm-predict.exe
svm-scale.exe

libsvm-2.9/windows/文件夹中的:
checkdata.py
subset.py
easy.py
grid.py

另外有:
svm-toy.exe,我暂时知道的是用于演示svm分类。其中的load按钮的功能,是否能直接载入数据并进行分类还不清楚,尝试没有成功;
python文件夹及其中的svmc.pyd,暂时不清楚功能。

因为程序运行要用到python脚本用来寻找参数,使用gnuplot来绘制图形。所以,需要安装python和Gnuplot。
(Python   v3.1 Final可从此下载:http://xiazai.zol.com.cn/detail/33/320958.shtml
(gnuplot可从其官网下载:http://www.gnuplot.info

为了方便,将gnuplot的bin、libsvm-2.9/windows/加入到系统的path中,如下:


gnuplot.JPG




libsvm.JPG



这样,可以方便的从命令行的任何位置调用gnuplot和libsvm的可执行程序,如下调用svm-train.exe:


pathtest.JPG


出现svm-train程序中的帮助提示,说明path配置成功。

至此,libsvm运行的环境配置完成。下面将通过实例讲解如何使用libsvm进行分类。

2. 使用libsvm进行分类预测

我们所使用的数据为UCI的iris数据集,将其类别标识换为1、2、3。然后,取3/5作为训练样本,2/5作为测试样本。使用论坛中“将UCI数据转变为LIBSVM使用数据格式的程序”一文将其转换为libsvm所用格式,如下:

训练文件tra_iris.txt
1 1:5.4 2:3.4 3:1.7 4:0.2
1 1:5.1 2:3.7 3:1.5 4:0.4
1 1:4.6 2:3.6 3:1 4:0.2
1 1:5.1 2:3.3 3:1.7 4:0.5
1 1:4.8 2:3.4 3:1.9 4:0.2
……
2 1:5.9 2:3.2 3:4.8 4:1.8
2 1:6.1 2:2.8 3:4 4:1.3
2 1:6.3 2:2.5 3:4.9 4:1.5
2 1:6.1 2:2.8 3:4.7 4:1.2
2 1:6.4 2:2.9 3:4.3 4:1.3
……
3 1:6.9 2:3.2 3:5.7 4:2.3
3 1:5.6 2:2.8 3:4.9 4:2
3 1:7.7 2:2.8 3:6.7 4:2
3 1:6.3 2:2.7 3:4.9 4:1.8
3 1:6.7 2:3.3 3:5.7 4:2.1
3 1:7.2 2:3.2 3:6 4:1.8
……

测试文件tes_iris.txt
1 1:5.1 2:3.5 3:1.4 4:0.2
1 1:4.9 2:3 3:1.4 4:0.2
1 1:4.7 2:3.2 3:1.3 4:0.2
1 1:4.6 2:3.1 3:1.5 4:0.2
1 1:5 2:3.6 3:1.4 4:0.2
1 1:5.4 2:3.9 3:1.7 4:0.4
……
2 1:7 2:3.2 3:4.7 4:1.4
2 1:6.4 2:3.2 3:4.5 4:1.5
2 1:6.9 2:3.1 3:4.9 4:1.5
2 1:5.5 2:2.3 3:4 4:1.3
2 1:6.5 2:2.8 3:4.6 4:1.5
……
3 1:6.3 2:3.3 3:6 4:2.5
3 1:5.8 2:2.7 3:5.1 4:1.9
3 1:7.1 2:3 3:5.9 4:2.1
3 1:6.3 2:2.9 3:5.6 4:1.8
3 1:6.5 2:3 3:5.8 4:2.2
……

libsvm的参数选择一直是令人头痛的问题。不过,对于初学者,如果数据不是很大,在libsvm的tools文件中为大家提供了easy.py。它可以自动完成从归一化到参数选择的一切所需操作。

使用方法为:easy.py training_file [testing_file]

另外有其他参数选择工具,可以参考tools中的readme说明。下面,我们先使用easy.py进行分类实验。

(1)使用libsvm进行多分类——利用easy.py工具

在使用前,要确保上面环境变量已经配置。然后将tra_iris.txt、tes_iris.txt拷贝到tools文件夹,以防止写长路径名。同时,因为gnuplot的安装路径人人都不相同,所以,需要在easy.py中做相应修改,如下将

CODE:

else:
       # example for windows
svmscale_exe = r"../windows/svm-scale.exe"
svmtrain_exe = r"../windows/svm-train.exe"
svmpredict_exe = r"../windows/svm-predict.exe"
gnuplot_exe = r"D:/greensoft/gnuplot/bin/pgnuplot.exe"
grid_py = r"./grid.py"
中D:/greensoft/gnuplot/bin/pgnuplot.exe,改为你的pgnuplot.exe所在位置。

syr 补充:
在“交叉验证寻找最优参数”之前,需要在grid.py中:

CODE:

else:
   # example for windows
   svmtrain_exe = r"../windows/svm-train.exe"
   gnuplot_exe = r"G:/Program Files/gnuplot/bin/pgnuplot.exe"
其中的"G:/Program Files/gnuplot/bin/pgnuplot.exe"改为你的pgnuplot.exe所在的路径。】

接着,“运行”中输入cmd打开命令行,转到/libsvm-2.9/tools所在目录,然后,输入命令

CODE:

easy.py svmtra_iris.txt svmtes_iris.txt执行,程序会自动调用训练、交叉验证、预测将结果保存到同目录的文件中。运行情况如下:


easy.JPG


程序自动寻参情况图示如下:


svmtra_iris_scale.png


程序执行的结果在svmtes_iris.txt.predict文件中,规范化结果在svmtra_iris.txt.scale.out中。从运行情况可看出,其预测精度为Accuracy = 96.6667% (58/60)。


(2)对应上实验,手动使用libsvm进行多分类的方法

下面方法是通过分析easy.py所得,均在“运行”cmd命令行执行。

规范化训练样本

CODE:

svm-scale -s svmtra_iris.txt.range svmtra_iris.txt > svmtra_iris.txt.scale交叉验证寻找最优参数

CODE:

grid.py -svmtrain svm-train -gnuplot gnuplot svmtra_iris.txt.scale利用寻找的参数训练模型

CODE:

svm-train -c 8.0 -g 0.03125 svmtra_iris.txt.scale svmtra_iris.txt.model规范化测试样本

CODE:

svm-scale -r svmtra_iris.txt.range svmtes_iris.txt > svmtes_iris.txt.scale使用模型进行分类预测

CODE:

svm-predict svmtes_iris.txt.scale svmtra_iris.txt.model svmtes_iris.txt.predictsvm-train、svm-scale、svm-predict等名字为windows文件夹中exe文件的名字。

至此,使用libsvm进行分类的完整过程分析介绍,欢迎讨论。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值