libsvm与python的使用

由于课程和课题的原因,这两天试用了一下国立台湾大学Chih-Chung Chang和Chih-Jen Lin编写的libsvm函数库,发现的确是一款写得很不错的软件,而且上手也比较容易,用了一个晚上的时间基本搞定了libsvm的基本用法以及它和python的接口,以下的内容均基于win32系统,尚未在Linux下尝试过。

首先我们需要下载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路径的那项,根据实际路径进行修改,并保存。然后我们可以下载guide文章里提到的那三个数据集作为实验数据集,也将其放在tools目录下,在libsvm\tools下执行以下命令检验效果:

    python easy.py train.1 test.1

如果弹出了gnuplot的窗口并可以看到动态的绘制图形的过程,那么恭喜你,实验成功!最后输出的结果应该和guide文章里提到的结果类似(当然c和g的值有可能并不和文章里的相同,但最后在测试集上的错误率应该相差不大)。执行的过程中可能防病毒软件会弹出提示说rootshell之类的警告,不必理会。

接下来我们研究一下libsvm和python的接口的问题,这个问题我自己也困扰了很久。首先,按照libsvm\python目录下的readme文件所说,在win32环境下,我们要编译得到svmc.dll这个文件(细心的人会发现,libsvm已经在\libsvm\windows\python目录下自带了这个文件,但它可能是为其它的python版本编译的,为保险起见,我们尝试重新编译它),在libsvm目录下键入如下命令(以vs.net2003为例,其它版本的c++编译器可能需要略微修改):

    vcvars32

这个文件在C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\下,请确保这个路径在你的系统路径里面。此命令设置了VC++的环境变量。

键入以下命令:

    nmake -f Makefile.win python

并将生成的libsvm\windows\python\svmc.dll文件复制到libsvm\python目录下,并改名svmc.pyd(非常重要!)。

在libsvm\python目录下键入以下命令以检验效果:

    python svm_test.py

如果能看到程序执行结果,说明libsvm和python之间的接口已经配置完成,以后就可以直接在python程序里调用libsvm的函数了!

转自:http://yaowt.spaces.live.com/blog/cns!7280d7d3cc41a4ab!564.entry

如果你要用easy.py的话

1.下载libsvm

2.下载pathon。因为libsvm下载后的easy.py不能直接操作,需要python语言的支持

可以去http://www.python.org/或去网上搜索一下,默认安装

3.下载pgnuplot,一般大家下载的都是一个gp373w32文档,里面有直接可执行的pgnuplot.exe,不用安装。(以前在网上看到的步骤都是“安装pgnuplot”这样的句子,让我这个菜鸟想了好久怎么把它安装到机子上,笨!)libsvm是用他完成绘图的

4.修改pgnuplot在grid.py中的路径(easy.py在执行的过程中要调用grid.py的)

,默认的gnuplot_exe = r"c:\tmp\gp373w32 \pgnuplot.exe",用ULtraEdit打开grid.py,修改成你自己pgnuplot.exe的路径

5.libsvm是在DOS环境中工作的,所以打开命令提示符,我的方法比较笨,先修改路径名到easy.py和grid.py所在的文件夹下,例如d:\livsvm\python

然后输入:c:\python23\python easy.py heart_scale 就可以了

上面我写的都没有说版本问题,因为libsvm好象有版本 兼容问题,一般如果用python24不行的话就把python24换成python23,如果还不行的话而你又是XP系统的话,换个别的机子换个系统试试,我曾经把各种组合试了一遍,才得出的吐血经验!

另外:如果还是不行的话,建议你在easy.py和grid.py中加入一些简单的输出语句看看是哪里的问题,python语言的输出语句很简单如:在觉得有问题的句子前面加上 print '1',后面加上一句 print '2',看看是否1,2都能输出(不懂python语言,也只知道这些了)

posted @ 2010-04-16 14:06  大CC  阅读(11014)  评论(0编辑  收藏  举报
木书架 大CC的博客