libsvm-3.20初步使用easy.py进行分类

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

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

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

(1)首先使用​subset.py工具将iris数据集(如何将UCI转化为LIBSVM格式的,请参考前面博文)抽样:

python subset.py iris.libsvm.txt 100 iris.train iris.test​

抽取100个作为训练数据iris.train,剩余50个作为测试数据iris.test。

(2)使用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:\Program Files\gnuplot\bin\gnuplot.exe"

grid_py = r"./grid.py"中D:\Program Files\gnuplot\bin\gnuplot.exe,改为你的gnuplot.exe所在位置。

【syr 补充:

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

CODE:

else:

   # example for windows

   svmtrain_exe = r"../windows/svm-train.exe"

   gnuplot_exe = r"D:\Program Files\gnuplot\bin\gnuplot.exe"其中的"D:\Program Files\gnuplot\bin\gnuplot.exe"改为你的pgnuplot.exe所在的路径。】

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

CODE:

python easy.py iris.train iris.test

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

​程序执行的结果在iris.test.predict文件中,规范化结果在iris.train.scale.out中。从运行情况可看出,其预测精度为Accuracy = 98% (49/50)。另有测试数据为60个样本的,其预测精度为Accuracy = 96.6667% (58/60),可见最后的Accuracy和选取的训练样本数和测试样本数也有关系。

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

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

规范化训练样本

CODE:

svm-scale -s iris.train.range iris.train > iris.train.scale

交叉验证寻找最优参数

CODE:

grid.py -svmtrain svm-train -gnuplot gnuplot iris.train.scale

利用寻找的参数训练模型

CODE:

svm-train -c 8.0 -g 0.03125 iris.train.scale iris.train.model

规范化测试样本

CODE:

svm-scale -r iris.train.range iris.train > iris.train.scale

注:根据我的实际经验,对iris数据不进行归一化也是可以正常操作的,但是对于最后分类的Accuracy有多大影响,或者有没有影响,有待实验。

使用模型进行分类预测

CODE:

svm-predict iris.test.scale iris.train.model iris.test.predict 

svm-train、svm-scale、svm-predict等名字为windows文件夹中exe文件的名字。


​至此,使用libsvm进行分类的完整过程分析介绍。

到这里,LIBSVM的使用基本上也就差不多了,选出最优参数​,训练模型,使用训练模型进行分类预测。真的很易用,但要想熟练的选择核函数以及参数调优,还需要对支持向量机的原理进行认真学习,起码支持向量机的类型,每个核函数的参数,惩罚系数是必须要熟知的。

欢迎讨论。

quote from:

​http://blog.csdn.net/ddkxddkx/article/details/6321775

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页