机器学习和生物信息学实验室联盟

标题: libSVM [打印本页]

作者: zouquan    时间: 2011-5-14 22:23
标题: libSVM
libsvm使用总结——初级
1.
首先,如果你使用windows的话,要从cmd中进入到该文件夹下,然后依次运行svmscale, svmtrain, svmpredict。(和blast等软件相似)
2.
然后说输入的数据(包括训练集和测试集)的格式。每一行是一个样本,格式如下:
1 1:0.2 2:0.6 3:-0.5 4:13
其中第一位是类别标记,也就是该样本的类别,通常用10-1来标记。此例后面表示有4个属性,依次是0.2,0.6,-0.5,13。前面需要用一个序号+冒号。(参考heart_scale文件)
每一行都是这种格式,我还是喜欢excel表的格式。我已经用java写了一个转化的程序。谁需要可以管我要。
3.(这一步不是必须的,如果你的特征变化范围不大,尽量不要归一化)
首先要进行“归一化”。在cmd中运行svmscale会显示它的格式的。如果你的训练集和测试集分别是train.txttest.txt,那么运行的语句是:
svmscale train.txt >train.scale
svmscale test.txt >test.scale
红色的是生成的归一化后文件,下面的训练和预测都是处理归一化后的文件。
注意:svmscale还可以更改上下界的范围,默认是[-1。带参数的svmscale命令这里就不介绍了。另外,有的版本(新版本)的libSVM需要>,有的(老版本)不需要,自己试试看即可。
4.
归一化之后就可以训练了。和svmscale一样,svmpredict也可以带很多参数,这里只介绍最简单的(默认的)。命令如下:
svmtrain train.scale train.model
这里要再生成一个文件train.model,它用来存放训练出的“规则”,后面要用到该文件。
5.
训练之后就是预测了。预测语句如下:
svmpredict test.scale train.model output.txt
第一个文件是归一化的测试集,第二个文件是从训练集中训练后得到的规则文件,第三个是用来存放结果的文件(如果没有系统会自动生成)。
同时屏幕上会显示预测的准确率,在output.txt中会有预测结果。

//*******************下面的步骤很重要,是为了找到最优的参数g和c*******************

6.
安装python。(有的版本会报错,请到服务器ftp,share/软件 目录下下载我上传的python
7.
修改grid.py. gp373w32/pgnuplot.exe的路径,也要改svmtrain的路径(../windows/svm-train.exe虽然也对,但在有的windows系统中..不好使,最好还是改成绝对路径)。(最上面2行)
8.
python/bin的目录下运行python + grid.py(绝对路径)+train.scale(绝对路径)。如果成功的话,会自动弹出画了一圈一圈的图,dos黑屏会显示最优的g和c,以及最优的准确率


python比较大,请自行下载
[attach]28[/attach]
[attach]29[/attach]


作者: xmubingo    时间: 2011-7-23 20:22
本帖最后由 xmubingo 于 2011-7-23 20:22 编辑

cite:  @zouquan

原始.libsvm归一化之后做的最优参数和没有归一化之后的最优参数是不一样的。

归一化适合那些特征属性值波动非常大的情况。

不做归一化:在python/bin的目录下运行python + grid.py(绝对路径)+train.arff.libsvm
作者: zouquan    时间: 2011-7-23 23:04
是的,菜鸟还经常犯的错误是:

对训练数据进行归一化(svmscale),训练;
对测试数据进行归一化(svmscale),测试;

这是错误的,如果要归一化,那么测试数据和训练数据要放到一起归一化,或者测试数据按照训练数据的上下界进行归一化(有可能超出1,没有关系)

因此,除非是特征波动过大,尽量不要用svmscale;如果用了svmscale,那么就svmtrain -v 5进行交叉验证,不要再svmpredict了
作者: zouquan    时间: 2012-6-12 19:28
关于给样本设权重,参考
http://datamining.xmu.edu.cn/bbs ... wthread&tid=607




欢迎光临 机器学习和生物信息学实验室联盟 (http://123.57.240.48/) Powered by Discuz! X3.2