使用Libsvm自动分类训练数据详细入门流程(二)

上一篇我们讲到了函数的自动参数寻优问题,官方提供的 grid.py 以及 easy.py 两种文件都可以实现对训练数据的参数寻优,不过在使用方法和具体效果上有些不同,下面我将依次介绍这两种文件的相关配置及使用方法

grid.py

文件grid.py是对C-SVC的参数c和γ做优选的,原理是网格遍历。在使用grid.py 之前请确保你安装了gnuplot工具。

1、 首先用python编译器打开grid.py,找到如下几行代码:

		if sys.platform != 'win32':
			self.svmtrain_pathname = os.path.join(dirname, '../svm-train')
			self.gnuplot_pathname = '/usr/bin/gnuplot'
		else:
			# example for windows
			self.svmtrain_pathname = os.path.join(dirname, r'..\windows\svm-train.exe')
			# svmtrain_pathname = r'c:\Program Files\libsvm\windows\svm-train.exe'
			self.gnuplot_pathname = r'C:\gnuplot\bin\gnuplot.exe'

将下面这行代码中的路径修改为你安装gnuplot的可执行程序路径:

self.gnuplot_pathname = r'C:\gnuplot\bin\gnuplot.exe'

2、运行cmd进入dos环境,然后进入到工程文件夹下放置grid.py的目录下,示例:
cmd

3、将libsvm根目录下的 heart_scale 官方示例数据文件拷贝到grid.py文件目录下,在cmd中输入以下命令进行测试:

 python grid.py heart_scale

示例:
test1

运行过程中你会看到gnuplot的输出窗口,像下面这样:
gnuplot

还有cmd窗口中寻找参数c和g的过程以及结果,输出的最后一行的三个数值依次为寻找到的最优的c值(2048.0)、g值(0.0001220703125)以及交叉验证精度(84.0741%):
样例cg

4、将得到的c值和g值加入到训练函数中,比如:

m = svm_train(y, x, '-c 2048.0 -g 0.0001220703125')

然后执行代码就可以得到最优的分类结果

5、将样例数据文件替换为你的训练数据文件并按照以上流程寻找最优参数,然后将得到的参数添加到训练函数进行训练

easy.py

文件easy.py对样本文件做了从参数优选,到文件预测的整套流程。因此,其对grid.py、svm-train、svm-scale和svm-predict都进行了调用,所以要确保这些文件调用路径正确

1、首先用python编译器打开easy.py,找到如下几行代码:

if not is_win32:
	svmscale_exe = "../svm-scale"
	svmtrain_exe = "../svm-train"
	svmpredict_exe = "../svm-predict"
	grid_py = "./grid.py"
	gnuplot_exe = "/usr/bin/gnuplot"
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"C:\gnuplot\bin\gnuplot.exe"
	grid_py = r".\grid.py"

检查else下面代码中的文件路径并将下面这行代码中的路径修改为你安装gnuplot的可执行程序路径:

gnuplot_exe = r"C:\gnuplot\bin\gnuplot.exe"

2、将示例数据文件heart_scale复制并重命名为 heart_scale_test 到easy.py 的文件目录下用做测试数据

3、运行cmd进入dos环境,然后进入到工程文件夹下放置easy.py的目录下,执行以下命令,示例:

python easy.py heart_scale heart_scale_test

运行成功或会看到gnuplot的输出窗口以及如下输出结果:
out
窗口输出了最优的c值g值以及交叉验证精度和最终的分类测试准确率,你还可以在easy.py 和 grid.py 的文件目录下查看自动生成的中间数据文件包括最终的输出结果等。

4、将示例数据文件替换为你的训练数据以及测试数据并按照以上流程得到最终结果

到此,这篇入门流程就算结束了,我将我的工程代码打包放在了下面的链接中(包括了我的训练数据、测试数据以及相关的数据格式转换代码),如果你感兴趣的话可以前往下载,不过代码里相关的路径需要你按情况修改后才能运行。

项目代码:

libsvm数据分类代码

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值