libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰。
所需工具:libsvm、gnuplot
本机环境:Windows7(64 bit) ,Python3.5
1、相关程序的下载和安装:
1.1、下载libsvm,我用的是libsvm-3.18.zip,下载后直接解压到任意位置,我解压到C:libsvm-3.18下。
1.2、下载python,我下的是python-3.5.msi,双击该文件安装到默认位置,我安装到C:UsersAdministratorAppDataLocalProgramsPythonPython35下。将该路径添加到系统环境变量中。
1.3、下载gunplot,我下的是gp460-win32-setup.exe,双击该文件安装到默认位置,我安装到C:Program Filesgnuplot下。
2、grid.py使用
文件grid.py是对C-SVC的参数c和γ(gamma)做优选的,原理也是网络遍历,假设我们要对目录C:libsvm-3.18 ool下的样本文件heart_scale做优选,其具体用法为:
第一步:打开C:libsvm-3.18下的tools文件夹,找到grid.py文件。用python打开(不能双击,而要右键选择“Edit with IDLE” 或者先打开IDLE,再添加进去),修改self.svmtrain_pathname和self.gnuplot_pathname的路径。
(修改文件时要注意,要修改else下的self.svmtrain_pathname和self.gnuplot_pathname,而不是if not is win32)
第二步:运行cmd,进入dos环境,定位到C:libsvm-3.18 ools文件夹,这里是放置grid.py的地方。
第三步:输入以下命令:
python grid.py heart_scale
你就会看到dos窗口飞速乱串的[local]数据,以及一个gnuplot的动态绘图窗口。大约过10秒钟,就会停止。Dos窗口中的[local]数据是局部最优值,这个不用管,直接看最后一行:
2048.0 0.0001220703125 84.0741
其意义表示:C=2048.0;γ=0.0001220703125;交叉验证精度CV Rate=84.0741%,这就是最优结果。
第四步:打开目录C:libsvm-3.18 ools,我们可以看到新生成了两个文件:heart_scale.out和heart_scale.png,第一个文件就是搜索过程中的[local]和最优数据,第二个文件就是gnuplot图像。
现在,grid.py已经运行完了,你可以把最优参数输入到svm-train中进行训练了。
3、easy.py使用方法
文件easy.py对样本文件做了“一条龙服务”,从参数优选,到文件预测。因此,其对grid.py、svm-train、svm-scale和svm-predict都进行了调用(当然还有必须的python和gnuplot)。因此,运行easy.py需要保证这些文件的路径都要正确。还需要样本文件和预测文件,这里样本文件还是用heart_scale,预测文件我们赋值一份然后改名heart_test,下面说说使用方法:
第一步:打开easy.py,修改#example for windows下的几个路径:
第二步:运行cmd,进行dos环境,定位到防止easy.py的目录C:libsvm-3.18 ools
第三步:输入命令:
python easy.py heart_scale heart_test
就会看到一个gnuplot的动态绘图窗口。大约20s以后停止,dos窗口显示为:
Scaling training data… Cross validation… Best c=2048.0, g=0.0001220703125 CVrate=84.0741 Training… Output model: heart_scale.model Scaling testing data… Testing… Accuracy = 85.1852% (230/270) (classification) Output prediction: heart_test.predict
这就是最终预测结果,可以看到第三行就是调用grid.py的结果。在C:libsvm-3.18 ools下你会看到又多了7个文件,都是以前我们碰到的过程文件,都可以用记事本打开。