原创 LIBSVM做回归预测--终于弄通

2013-12-17 22:50 3729 20 21 分类: 软件与OS

http://blog.sina.com.cn/s/blog_5980835e0100dp52.html

看了网上很多帖子和博客,自己琢磨了很久到现在才弄明白怎么用libsvm来做预测。因为网上的帖子一般都是转来转去的,所以第一个人感觉这样写详细了,之后的人不管懂不懂照搬不误,这就苦了我们笨的人啦。不过我研究了一天,终于有点眉目,写点体会,应该会比较详细吧,至少是过来人碰到的问题。

p.s.这里暂且不讨论分类问题,其实分类比预测简单,下载下来的libsvm-2.88早已有easy.py可以直接拿来做,所以简单,一步到位,之后如果有空就写写!

用libsvm做回归的人有的疑惑大致有这些:

1,怎么把数据整理成规定格式,我以前的帖子写了,只要用一个带有宏的excel就能搞定,话不多说。

2,有人会说svm就打几条命令就能得出结果

svm-train -s 3 -t 2 -c 1024.0 -g 0.0009765625 -p 0.0009765625 data.txt
svm-predict test.txt data.txt.model out.txt

),干嘛还要下载python和gnuplot呢,其实了解svm理论的知道最核心的问题就是参数的选择,你不可能每次都很狗屎的猜到很好的参数,做出很好的预测,所以只能用这两个软件来寻参。

3,怎么寻参?核心的语句就这么一句,把dos框的路径调到C:\Python26,再键入

(python C:\libsvm-2.88\python\gridregression.py -svmtrain C:\libsvm-2.88\windows\svm-train.exe -gnuplot C:\gnuplot\bin\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 C:\libsvm-2.88\python\data.txt > gridregression_data.parameter)能把这句执行下去,就算等老半天也是值得的。(下载的三个软件的路径调整问题下面补充,我是全部放在C盘的,省事。。。)

4,有人会问含有gridregression.py的以上语句不能执行老是出错,这是什么原因呢?我也闷了半天,后来才知道gridregression.py 文件在台湾人的libsvm-2.88包里面是没有的,所以要自己去下载,要来后放在C:\libsvm-2.88\python里面就可以了。

5,回归会像分类那样调用easy.py(连grid.py都不需)一步到位麽?不是的这是有区别的,当你做完步骤四时,到C:\Python26中打开文件 gridregression_data.parameter,里面有你要的参数c,g,p还有一个mse是没有用的,不用管他。

6,最后把dos框的路径调到C:\libsvm-2.88\windows,再执行

svm-train -s 3 -t 2 -c 1024.0 -g 0.0009765625 -p 0.0009765625 data.txt
svm-predict test.txt data.txt.model out.txt

搞定了,结果在C:\libsvm-2.88\windows的out.txt中!

7,忘了,三个软件长什么样和住哪里没有和你们说清楚,操之过急了哈。分别在

C:\libsvm-2.88

C:\Python26

C:\gnuplot

这样应该详细了吧。。。

最后附上步骤3中的补充,其实还是想自己写,因为这样清楚,不过没力气了,转一下吧,网上帖子稍有不同,不过我选了一篇很清楚的:

首先我们需要下载libsvm,最新版是11月17日刚推出的libsvm2.83,可以在libsvm的主页http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下载得到,建议同时下载一个libsvm的初学者guide,写得很不错,浅显易懂,适合初学者使用,基本的使用只需要libsvm这一个软件即可,但如果需要使用它自带的python脚本的话,还需要安装python,最新版是2.5,可以在python的主页http://www.python.org上下载。另外,libsvm自带的两个脚本grid.py和easy.py中均用到了绘图工具gnuplot,因此还需要下载一个gnuplot软件,下载地址:ftp://ftp.gnuplot.info/pub/gnuplot/,注意要下载win32版本的,比如win32的4.0版本对应的文件应为gp400win32.zip。
 
下载完成后,接下来就是安装。其中只有python2.5需要安装(一般默认安装到c:\python25下),将libsvm解压到c:\libsvm下,将gnuplot解压到c:\gnuplot下。将c:\python25,c:\libsvm\windows,c:\gnuplot\bin三个文件夹添加到系统路径里面,方便日后使用。
 
安装完毕后,进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存。
用gridregression.py搜索最优参数的方法如下:
python.exe gridregression.py -svmtrain H:\SVM\libsvm-2.81\windows\svmtrain.exe -gnuplot C:\gp373w32\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:\SVM\libsvm-2.81\windows\feature.scaled > gridregression_feature.parameter
注意:-svmtrain是给出svmtrain.exe所在路径,一定要是完整的全路径
-gnuplot是给出pgnuplot.exe所在路径。这里要用pgnuplot.exe这种命令行形式的,不要用wgnupl32.exe,这个是图形界面的。
-log2c是给出参数c的范围和步长
-log2g是给出参数g的范围和步长
-log2p是给出参数p的范围和步长
上面三个参数可以用默认范围和步长
-s选择SVM类型,也是只能选3或者4
-t是选择核函数
-v 10 将训练数据分成10份做交叉验证。默认为5

文章评论1条评论)

登录后参与讨论

用户403664 2013-12-19 10:26

欢迎回来!
相关推荐阅读
用户51033 2013-12-17 22:53
使用宏命令FormatDataLibsvm.xls将数据转成LIBSVM格式
http://blog.sina.com.cn/s/blog_5980835e0100dioo.html 毕业设计做的是svm,虽然不是很新的东西,但是能把它弄懂也是好的。要加一点技术含量无非...
用户51033 2013-12-17 22:43
LIBSVM回归详细操作步骤
原文地址:LIBSVM回归详细操作步骤(附图)--更新至20090806作者:梦在继续 P.S. 多谢“三月未央”网友的提醒,本文中的一些错误得到改正,原先的第五幅图中路径有错(估计那晚太困了,稀里糊...
用户51033 2012-03-10 21:06
关于RS232/RS422/RS485总线的抗干扰的措施
2011-07-27 21:48 原文:http://hi.baidu.com/%B5%E7%D7%D3%C2%F8%CD%B7/blog/item/2b9d2c8e51bfd72466096e4...
用户51033 2012-02-18 22:06
高边和低边电流检测技术分析
当代电子系统中的电源管理可以通过高效的电源分配优化系统效率。电流检测是电源管理的关键技术之一,它不仅有助于保持理想的电压等级,而且能通过提供伺服调整保持电子系统处于正常状态,同时还能防止发生...
用户51033 2012-02-18 20:20
TVS二极管的选型和应用测试计算实例
    很多工程师在电路设计时都会考虑到EMC,但是在ESD方面却是很少考虑或甚至不考虑。个人认为有些是产品特性或是成本原因不考虑防雷防静电,但据了解, 相当多的工程师特别是比较年轻的工程师...
我要评论
1
20
关闭 站长推荐上一条 /2 下一条