libsvm中tools(easy.py,subset.py,grid.py,checkdata.py)的使用

这几天在用libsvm(2.8.6)中的一些工具,总结一下.

libsvm的一些工具还是非常有用的,1.可以调用subset.py将你的样本集合按你所想要的比例进行抽样出两个子样本集合.2.还可以调用grid.py做关于(C,gamma)的交叉验证参数选择,可以轻松的搜索到最好的参数对(C,gamma).3.还可以调用easy.ph一步到位完成svm的整个挖掘过程,最后得出交叉验证精度,最有参数对和测试集上的测试精度.4.还可以调用checkdata进行检查你的数据格式是否有错误.这些操作可以让大伙省事很多.

libsvm(2.8.6)中主要有四个工具:easy.py,subset.py,grid.py,checkdata.py.

运行环境要求和设置:

需要准备两个工具.

一个工具是:python编译环境,这个到网上下一个来安装就好了(注意要设置环境变量path),下载python.exe 2.5.1; 另一个工具就是gnuplot.exe,到网上下一个,我用的是版本4.2的,下载gnuplot.exe 安装完上面的软件还不能运行,还要修改easy.py,grid.py的设置.将他们对应的代码" gnuplot_exe = r"c:\tmp\gnuplot\bin\pgnuplot.exe""都改为你的pgnuplot.exe所在的路径,

比如我的文件在当前目录的上一级目录,就是和tools文件夹在同一级目录,那么我的设置应该为" gnuplot_exe = r"..\gnuplot\bin\pgnuplot.exe"".

这样设置就完成了,我们只需要到控制台下运行上面相应的四个程序即可.

注意:下面的python命令中,我们默认所有需要处理的样本数据集都是放在在tools目录下,如果数据文件不在tools目录下则我们需要用绝对路径指定数据的位置.

下面分别介绍调用格式:

从其文档可以发现其功能分别为:

(1) easy.py:只要简单输入,就可以完成svm挖掘的所有步骤,即:

1. Conduct simple scaling on the data

2.Consider the RBF kernel K(x; y)

3.Use cross-validation to nd the best parameter C and

4.Use the best parameter C and to train the whole training set

5.Test

对于初学者而言这个文件无非是他们的救命稻草,可以简单看看他的语法:

在控制台下走到easy.py所在的目录下:

$ python easy.py train.3 test.3

Scaling training data...归一化数据

Cross validation...在训练集上做交叉验证

Best c=128.0, g=0.125 CV rate=88.9186 (通过网格搜索法对每个参数对做交叉验证,选择交叉验证精度最高所对应的参数.)

Training...( 将上面得到的参数对在训练集合上做模型训练)

Output model: crttrain.model (保存模型到文件)

Scaling testing data... (归一化数据)

Testing...(用训练得出的模型对测试集进行测试)

Accuracy = 87.8049% (36/41) (classification)(测试的精度)

Output prediction: crttest.predict (输出预测结果)

(在交叉验证过程中,会有一个图形界面显示参数选择的情况,這就是gnuplot.exe的作用了)

(2).grid.py:用于做交叉验证,选择最好的参数对.

用法:

在控制台下走到grid.py所在的目录下:

$python grid.py crttrain

[local] 5 -7 86.9186 (best c=32.0, g=0.0078125, rate=86.9186)

[local] -1 -7 85.1744 (best c=32.0, g=0.0078125, rate=86.9186)

[local] 5 -1 77.0349 (best c=32.0, g=0.0078125, rate=86.9186)

.......

[local] 13 -15 85.1744 (best c=32.0, g=0.0078125, rate=86.9186)

[local] 13 3 55.5233 (best c=32.0, g=0.0078125, rate=86.9186)

[local] 13 -9 83.1395 (best c=32.0, g=0.0078125, rate=86.9186)

[local] 13 -3 79.6512 (best c=32.0, g=0.0078125, rate=86.9186)

32.0 0.0078125 86.9186 (c=32,gamma=0.0078125 交叉验证精度)

(3) subset.py 用于按个数分割样本集成训练集和测试集.

用法:

在控制台下走到subset.py所在的目录下:

$python subset.py crt 100 crttrain crttest

参数说明:

crt:样本集合;

100:训练集样本个数;

crttrain:存储100个训练样本;

crttest:存储剩下的样本集做为测试集;

如果成功没有输出信息,反之则有错误提示.

(4) checkdata.py 用于检测样本集存储格式是否正确

在控制台下走到subset.py所在的目录下:

$python checkdata.py crt

No error. (表示没有错)

posted @ 2010-04-22 15:05  大CC  阅读(4025)  评论(0编辑  收藏  举报
木书架 大CC的博客