工具grid.py主要通过交叉验证的方法求最优的核函数参数C和gamma。
参考来源:http://blog.csdn.net/flydreamgg/article/details/4470477
一、grid.py简介
grid.py作用:
grid.py is a parameter selection tool for C-SVM classification usingthe RBF (radial basis function) kernel. It uses cross validation (CV)
technique to estimate the accuracy of each parameter combination inthe specified range and helps you to decide the best parameters foryour problem.
命令格式:
Usage: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold] [-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname] [additional parameters for svm-train] dataset例子:The value of some options can be "null." For example, `-log2c -1,0,1 -log2 "null"' means that C=2^-1,2^0,2^1 and g=LIBSVM's default gamma
二、具体使用方法
友情提示,耗费了一晚上时间才搞定,吐血啊。。。千万不要漏步骤,严格跟着来保证没问题。
当然,你也可以发挥,比如dos的输入那里, 总起来说,命令为python 目标文件 样本文件,其原则是要让系统找得到文件,具体见参考博客。假如系统提示你“不是内部或外部命令”,说明你python的路径错误,而如果是‘not found file’的提示,很可能是其他两个文件路径错误。
1、安装所需软件,注意安装路径要简单,文件夹的名字不要有中文等。
安装python3.6版本,安装在D:\python36中。
安装gnuplot。安装位置为D:\Program Files (x86)\gnuplot。
(libsvm3.22中的提示:For windows users, please use pgnuplot.exe. If you are using gnuplot3.7.1, please upgrade to version 3.7.3 or higher.
The version 3.7.1 has a bug. If you use cygwin on windows, please use gunplot-x11.)
2、更改grid.py中的路径。
(本人libsvm安装在D:\Project_matlab\libsvm322)
用python打开libsvm322下的tools中的grid.py即右键选择Edit withIDLE打开。
然后修改svmtain.exe(libsvm/windows)和gnuplot.exe的路径。
注意:windows系统中,只需要更改else的部分。切记,虽然更改的是gnuplot路径,但最后的.exe文件是pgnuplot.exe。
3、运行cmd,进入dos环境。
首先,定位到grid.py所在的文件夹的位置即D:\Project_matlab\libsvm322\tools,并将训练数据(按官方libsvm的格式存储的数据)放在tools文件夹中。
定位方法:
输入d:,回车,进入D盘;
输入cd/ Project_matlab/libsvm322/tools,回车,完成定位。
再输入 d:/python36/python grid.py heart_scale,回车。
此时,你会看到一堆[local]数据,以及gnuplot的动态绘图窗口。
注意:
4、最终结果。
最后一行即为最终结果。
其意义表示:C = 2048.0;γ=0.0001220703125(γ是哪个参数?参看LibSVM学习(三)中svmtrain的参数说明);交叉验证精度CV Rate = 84.0741%,这就是最优结果。
打开Project_matlab/libsvm322/tools文件夹,可以看到新生成了两个文件:heart_scale.out和heart_scale.png,第一个文件就是搜索过程中的[local]和最优数据,第二文件就是gnuplot图像。
到这里,关于grid.py的使用就结束了,但是我们可以发现,grid.py需要使用的数据是libsvm格式的,如何将.xls格式的数据转换为libsvm格式,将在下一篇介绍。