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

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8172|回复: 3
打印 上一主题 下一主题

libSVM

[复制链接]
跳转到指定楼层
楼主
发表于 2011-5-14 22:23:59 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
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比较大,请自行下载

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

地板
 楼主| 发表于 2012-6-12 19:28:26 | 只看该作者
关于给样本设权重,参考
http://datamining.xmu.edu.cn/bbs ... wthread&tid=607
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2011-7-23 23:04:52 | 只看该作者
是的,菜鸟还经常犯的错误是:

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

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

因此,除非是特征波动过大,尽量不要用svmscale;如果用了svmscale,那么就svmtrain -v 5进行交叉验证,不要再svmpredict了
回复 支持 反对

使用道具 举报

沙发
发表于 2011-7-23 20:22:11 | 只看该作者
本帖最后由 xmubingo 于 2011-7-23 20:22 编辑

cite:  @zouquan

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

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

不做归一化:在python/bin的目录下运行python + grid.py(绝对路径)+train.arff.libsvm
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-2 00:32 , Processed in 0.073621 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表