tag 标签: libsvm

相关博文
  • 热度 18
    2013-12-17 22:53
    2592 次阅读|
    0 个评论
    http://blog.sina.com.cn/s/blog_5980835e0100dioo.html 毕业设计做的是svm,虽然不是很新的东西,但是能把它弄懂也是好的。要加一点技术含量无非就是用一些搜素算法(遗传、蚁群。。。)加入svm去寻找最优的参数,对于本科生来说还能做一下前期的数据处理,当然是用一些统计方法咯,什么数据挖掘乱七八糟的网上套,没办法,中国的学术永远是这样,不会进步,看看神经网络在中国学术界盛行的时间之长就知道学术水平了,不想多说,只是想把我这次svm的经历写一下,确实学到了很多东西。 因为也是通过网上的论坛还有其他帖子看懂的,可是觉得他们还写的不够详细,或者我自己太笨,所以想详细点从头到尾说一下,还有不明白的尽管问。。。可以交流。   当然做svm首先就要把数据的格式处理好,这么多在excel里的数据用人工的方法输到txt里是不可能的,所以有两个办法: 1,自己编一个小程序(C足够了)说说简单,编起来还是很麻烦的,虽然我专业和cs密切相关,但是真的不会。。。我们惰性很强,有现成的第二个方法干嘛还吃力不讨好? 2,使用人家已经做好的一个类似于软件一样的FormatDataLibsvm.xls(里面包含一个宏命令),没有他你要苦一阵子。 BTY,这个软件不好找,网上看了很多帖子,都是不能下载的,在别人博客上跪求几天也没人给,最后还是在一个隐晦的小网站下载下来了。哎,中国人就这样,自己有的东西就是不想共享出来,搞个p的学术啊。。。真是无语,要的联系我。   其实这个软件就是一个excel工作薄,没什么奇特,打开它就会跳出来一个对话框,选“启用宏”就行了,其他不用管它,把你要的数据拷上去就好了,但是注意下格式,网上帖子也很多,照他们说的办吧。 1,先运行 FormatDataLibsvm.xls 然后将数据粘贴到sheet1的topleft单元。     2,再"工具"--"宏"--执行下面有一个选项(FormatDatatoLibsvm)--执行,要选中这个然后运行就可以了 ,这时数据转换的问题就解决了,可是现在生成的数据是.xls格式,它还是不能做为libsvm的训练文件啊!还需要怎么转换呢? 3, 可以copy到一个记事本中即可。但是注意在用libsvm的时候要在命令行输入.txt后缀。  注意,宏安全性应当设置为中或者低。输入数据的格式是 条件属性a  条件属性b  ...  决策属性 7    5    ...  2 4    2    ...  1 输出数据格式是 决策属性  条件属性a  条件属性b  ... 2    1:7    2:5    ... 1    1:4    2:2    ...  P.S. 在第2步时,执行下面还有另一个选项(FormatDatafromLibsvm)这个可以把libsvm数据的格式重新转回来,转到你第1步时刚拷贝到excel里的数据形式。  
  • 热度 21
    2013-12-17 22:50
    3729 次阅读|
    1 个评论
    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路径的那项,根据实际路径进行修改,并保存。 http://yaowt.spaces.live.com/blog/cns!7280d7d3cc41a4ab!564.entry 用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
  • 热度 17
    2013-12-17 22:43
    1947 次阅读|
    1 个评论
    原文地址: LIBSVM回归详细操作步骤(附图)--更新至20090806 作者: 梦在继续 P.S. 多谢“三月未央”网友的提醒,本文中的一些错误得到改正,原先的第五幅图中路径有错(估计那晚太困了,稀里糊涂的就写出来了,实为害人啊 )!再次感谢你们的关注,希望在交流中一起进步!修改和增加部分已经用红色字体区分了,还有就是第五章图,估计以前做错的人不少,不要怪我!  先前的一些步骤可以参照我《科研-支持向量机(SVM)预测》中的几篇,包括文件格式等。 晚上一网友发来消息说还是不清楚怎么做,老出错,现在有点闲功夫,截了一些图按部就班的做了,希望能看懂。 其实只要修改一个文件(gridregression.py)的路径就可以了,其他网上说的两个文件(grid.py和easy.py)的路径可以不做修改,因为回归根本没有用到。修改的地方是绿色的两行路径,写成实际路径就可以了。网上下载下来的一般都是r"...svm-..."所以要改。修改后如下图。 改完之后,首先把你的数据集包括data2和test2(这是原始的)放到C:\libsvm-2.88\windows下。 现在要做的就是真正意义上的第一步,归一化处理,这一步要做,希望不要为了简便不做,这样预测出来不准。具体在dos下调完路径后,执行下面两句,分别是归一化数据集和测试集后产生新的两个文件data和test。 至于路径的问题,很多不涉及计算机专业的网友很痛苦,经常会不知所措。不过我再多嘴一次:先输入字母cd,大小写都无所谓了,然后空格,之后就是你想要让dos去运行的地址(路径)。可以老老实实的手打,也可以复制C:\libsvm-2.88\windows,然后粘贴,dos框下Ctrl+V无效,只能鼠标右击选择粘帖。最后按一回车键就把路径调到C:\libsvm-2.88\windows下了。 现在C:\libsvm-2.88\windows中多了两个文件,其实还有一个scale,不用管他,不起作用! 现在是通过gridregression.py函数进行参数寻优,把路径调好,注意调到C:\Python25下了。输入下面的语句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\windows\data.txt gridregression_data.parameter,可能你要等很长时间,我的数据很多搞了一个晚上。 有天早上一个朋友说你昨晚这么晚回来,早上怎么7点就上线了啊qq,汗,电脑一夜跑这玩意儿。。。扯远了。 PS.命令很长可以选择上述方法复制后,在dos框中右击粘贴完成。当然有热心的新浪网友的建议:(这么长的命令在dos下敲很容易出错的,建议大家在相应目录下建立一个bat文件,如“py.bat",把相应命令拷贝过去,直接运行"py",这样就省事多了。希望博主把这方法加到你的博文里。),我还没有试过。 训练完后,在C:\Python25中会有一个gridregression_data.parameter文件,里面就是自动寻优的结果,主要也是为了这个东西,搞了我老半天nnd。 打开它,下面最后一行分别为c,g,p,mse。其中mse没有用,其实这个值越小越好。 P.S. 有网友回复说:data训练时的mse=88.1545,而test测试时mse=401.938(他的数据结果),其实data训练的mse不是越小越好,过小以后,会形成过学习情况。其实严格意义上说是test的mse越小越好,因为它越小,最终的预测精度越高。另外,还可以通过squared correlation coefficient判断,它越接近1,也说明预测的精度越高。这是我做过many数据试验的吐血结果,望与大家分享。 把刚才的3个参数用来进行训练svm模型。把路径重新调回C:\libsvm-2.88\windows,输入语句训练,会在C:\libsvm-2.88\windows里产生一个data.txt.model文件。训练好了紧接着对test文件预测,输入第二条语句,得出结果在out里面。 最后打开out和test文件比较一下结果差多少,自己去计算咯。 到此已经实现了libsvm软件做回归预测的全过程,个人认为已经很详尽,比网上任何帖子都清楚哈哈。哪里不清楚的希望大家一起讨论~~