鲁班发明的六大神器:libsvm及其与python的接口

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 13:43:58

libsvm及其与python的接口

.threadtags_tag {margin:0px !important;background:none !important;padding:12px 0 !important;color: #444 !important;}.threadtags_tag span {border:1px solid #C1CFFF; padding:10px 14px 10px 32px; background: url(http://images.5d6d.net/dz7/default/tag.gif) no-repeat 10px 50%;}.threadtags_tag a{color:#4B1CFF !important;}相关搜索: 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的函数了!



sudo apt-get install gnuplot
apt-get install libsvm-tools




转自:http://www.sunjsp.com/archives/68.html