由于课程和课题的原因,这两天试用了一下国立台湾大学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的函数了!

如果你要用easy.py的话

1.下载libsvm

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

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语言,也只知道这些了)

libsvm python_libsvm与python的使用相关推荐

  1. libsvm python_LibSVM for Python 使用

    经历手写SVM的惨烈教训(还是太年轻)之后,我决定使用工具箱/第三方库 Python LibSVM是开源的SVM实现,支持C, C++, Java,Python , R 和 Matlab 等, 这里选 ...

  2. (转)python 搭建libsvm方法。python版本和libsvm版本匹配很重要!

    <集体智慧编程>关于婚介数据集的SVM分类 转自:http://muilpin.blog.163.com/blog/static/165382936201131875249123/ 作者写 ...

  3. libsvm多分类python,SVM实现多分类的三种方案

    转载自:http://www.cnblogs.com/CheeseZH/p/5265959.html SVM本身是一个二值分类器 SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适 ...

  4. LibSVM for Python 使用

    经历手写SVM的惨烈教训(还是太年轻)之后,我决定使用工具箱/第三方库 Python libsvm的GitHub仓库 LibSVM是开源的SVM实现,支持C, C++, Java,Python , R ...

  5. Python中使用libsvm

    1.下载libsvm包   点击这里下载,文件结构如下图所示: 2.添加动态链接文件(.dll文件)   在下载的libsvm文件夹中,有一个文件夹叫做windows,里面有一个动态链接文件libsv ...

  6. Python安装libsvm

    Python安装libsvm 最近在学习机器学习,听的是浙大胡浩基老师的课.胡老师用的是MatLab,我平时用Python比较多,在网上找Python安装libsvm的教程发现比较少,花了几个小时终于 ...

  7. Python实现SVM的实例(包括网格调参和测试)总结综述

    介绍SVM算法 SVM理解与参数选择(kernel和C) SVM参数调节 Python机器学习包的sklearn中的Gridsearch简单使用 [算法_调参]sklearn_GridSearchCV ...

  8. 如何使用matlab参数寻优,LIBSVM在matlab中使用小结

    安装环节: 以下我说一下,我安装过程中所遇到的困难 1.matlab未安装完整导致编译后libsvm仍无法使用 对于32位的系统,libsvm没有现成的命令执行文件供matlab调用,因此需要我们自己 ...

  9. libsvm python_python 使用libsvm分析数据

    一. 将数据格式转换为libsvm 用libsvm分析数据,首先要把csv格式的数据转换成libsvm格式,网上搜到的方法如下: 1. 网上有一个xls文FormatDataLibsvm.xls具有宏 ...

最新文章

  1. R语言使用ggplot2包使用geom_density()函数绘制分组密度图(自定义调色板、brewer、灰度比例)实战(density plot)
  2. 10.7 netstat:查看网络状态
  3. (四)学习CSS之position、bottom、left、right和top属性
  4. C#静态变量和非静态变量的区别
  5. Activemq-In-action(三)
  6. 非科班Java尝试全国高校计算机能力挑战赛第三届计挑赛
  7. 如何在多web服务器共享SESSION数据
  8. echarts map 点击地图区域变色_绘制炫酷的地图,不只是pyecharts.map!
  9. 小说小程序源码 带采集
  10. 李开复写给中国大学生的信
  11. 模块一 day09 文件操作相关
  12. c8t6高电平电压_什么是高电平和低电平?
  13. 创业6年,估值$750亿!张一鸣:人才不是核心竞争力,机制才是!
  14. BIM(biologically inspired model)小结
  15. 串行传输,并行传输,异步同步传输
  16. DOSBOX的简单使用
  17. Vue中怎么加载pdf文件
  18. 代理模式-Proxy Pattern
  19. 修改Linux网络设置
  20. 第一代到第四代计算机特点应用,第一代至第四代计算机依次是什么

热门文章

  1. sqlyong快捷键
  2. 揭开Javascript闭包的真实面目
  3. Linux 初学者:移动文件
  4. 泛微 消息服务器,第三方系统向泛微OA系统推送消息
  5. 价值32k!阿里顶级架构师深度解析SpringBoot进阶原理实战手册
  6. linux安装FSL
  7. ECM技术学习:基于模板的帧内模式推导(Template based intra mode derivation )
  8. 机器人自主行走难题如何解决?
  9. LeetCode笔记:Biweekly Contest 83
  10. 终于有博客了!! I am a Bloger Now!