这个目录包括一些有用的代码:
1.子集选择工具
2.参数选择工具
3.LIBSVM格式检查工具
第一部分:子集选择工具
介绍
============
训练大规模数据是很耗时的。有时应该先用一个小一点的子集来操作。subset.py这个python脚本随机选择一定数量的样本。对于分类数据,我们提供一个分类的筛选来确保每类都有一样的分布。
0 -- 分类选择(只对分类有效)
1 -- 随机选择
1.子集选择工具
2.参数选择工具
3.LIBSVM格式检查工具
第一部分:子集选择工具
介绍
============
训练大规模数据是很耗时的。有时应该先用一个小一点的子集来操作。subset.py这个python脚本随机选择一定数量的样本。对于分类数据,我们提供一个分类的筛选来确保每类都有一样的分布。
用法:subset.py [options] dataset number [output1] [output2]
这个脚本选择一个给定数据集的子集。
options:
-s method : 选择方法(默认为0)
output1 : 子集
(可选)
output2 : 数据集的剩余部分(可选)
如果 output1 省略,子集将会被打印在屏幕上。
[-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname]
[additional parameters for svm-train] dataset
> python grid.py heart_scale
例子
============
> python subset.py heart_scale 100 file1 file2
从 heart_scale 文件随机筛选 100 个样本并存储在
file1 中。所有剩下的实例存储在 file2 中。
第二部分:参数选择工具
介绍
============
grid.py 是一个为使用RBF(径向基函数)为核函数的 C-SVM 的分类问题参数选择工具。它使用交叉验证(CV)技术来评估每一个参数组合的精度并帮助你为你的程序决定最佳的参数,参数的范围是确定的。
grid.py 为交叉验证直接执行 libsvm 二进制文件(所以不需 python 的结合)并用 gnuplot 画出 CV 精度的等高线图。你在使用它之前必须安装好 libsvm 和 gnuplot 。
gnuplot 程序包可在 http://www.gnuplot.info/ 获得。
grid.py 为交叉验证直接执行 libsvm 二进制文件(所以不需 python 的结合)并用 gnuplot 画出 CV 精度的等高线图。你在使用它之前必须安装好
gnuplot 程序包可在 http://www.gnuplot.info/ 获得。
在 Mac 操作系统上,预编译的 gnuplot 文件需要 Aquarterm 库,它也必须安装好。
另外,此
gnuplot 的版本不支持 png ,所以你需要改变为 "set term png
transparent small"
并用其他图片格式。例如,你可能
"set term pbm small color"。
另外,此
并用其他图片格式。例如,你可能
用法: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]
这个程序用参数 C (和 gamma)
= 2^begin, 2^(begin+step), ..., 2^end 执行 v-fold 交叉验证。
你可以用
-svmtrain 和 -gnuplot 参数来指定指定 libsvm 的执行和 gnuplot 的使用。
对于 windows 用户,请使用 pgnuplot.exe。如果你正在使用 gnuplot
3.7.1,请升级至 3.7.3 版本或更高。3.7.1 版本有一个
bug 。如果你使用 windows的 cygwin ,请使用 gunplot-x11 。
例子
============
> python grid.py -log2c -5,5,1 -log2g -4,0,1 -v 5 -m 300 heart_scale
用户(尤其是 MS Windows 用户)可能需要指定可执行文件的路径。你可以改变在
grid.py 运行开始时的路径也可以在命令行下指定它们。例如,
> grid.py -log2c -5,5,1 -svmtrain "c:\Program Files\libsvm\windows\svm-train.exe" -gnuplot c:\tmp\gnuplot\binary\pgnuplot.exe -v 10 heart_scale
Output: 两个文件
dataset.png: gnuplot 绘出的 CV 精度等高线图。
dataset.out: 每个
(log2(C),log2(gamma)) 下的 CV 精度。
平行的 grid 研究
===================
你可以用给一系列共享相同的文件系统的电脑调度 jobs
来做一个平行的 grid 研究。
首先,你在
grid.py 添加机器名称:
首先,你在
ssh_workers = ["linux1", "linux5", "linux5"]
然后建立你的 ssh 以便确认不用命令来完成工作。
同样的机器(例如,这里的
linux5)可以被列出一次以上,如果他有多核
CPUs 或者更多的 RAM。
如果本地的机器最好,你也可以增大 nr_local_worker 。例如:
如果本地的机器最好,你也可以增大
nr_local_worker = 2
例子
============
============
> python grid.py heart_scale
[local] -1 -1 78.8889
(best c=0.5, g=0.5, rate=78.8889)
[linux5] -1 -7 83.3333
(best c=0.5, g=0.0078125, rate=83.3333)
[linux5] 5 -1 77.037
(best c=0.5, g=0.0078125, rate=83.3333)
[linux1] 5 -7 83.3333
(best c=0.5, g=0.0078125, rate=83.3333)
.
.
.
如果未指定 -log2c, -log2g, -v ,则用默认值。
如果你的系统用 telnet 而不是 ssh ,你可以列出
telnet_workers 内的机器名称。
第三部分:LIBSVM 格式检查工具
介绍
============
‘svm-train’只对输入数据进行一个简单的检查。
为了做一个细节检查,我们提供‘checkdata.py’这样一个python脚本。
为了做一个细节检查,我们提供‘checkdata.py’这样一个python脚本。
用法: checkdata.py dataset
结束状态(返回值): 如果有错误返回 1 ,否则返回 0 。
这个工具由 Rong-En Fan at National Taiwan University 编写。
例子
============
> cat bad_data
1 3:1 2:4
> python checkdata.py bad_data
line 1: 特征 indices 必须是一个单调增的顺序,previous/current features 3:1 2:4
Found 1 lines with error.