如何利用python使用libsvm

如题所述

 把包解压在C盘之中,如:C:\libsvm-3.182.
  因为要用libsvm自带的脚本grid.py和easy.py,需要去官网下载绘图工具gnuplot,解压到c盘.进入c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存
  python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用)

  1.打开IDLE(pythonGUI),输入>>>importsys>>>sys.version
  2.如果你的python是32位,将出现如下字符:
  (default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]’
  这个时候LIBSVM的python接口设置将非常简单。在libsvm-3.16文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`C:\WINDOWS\system32\’,即可在python中使用libsvm
  wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});
  3.执行一个小例子

  importos
  os.chdir('C:\libsvm-3.18\python')#请根据实际路径修改
  fromsvmutilimport*
  y,x=svm_read_problem('../heart_scale')#读取自带数据
  m=svm_train(y[:200],x[:200],'-c4')
  p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)
  ##出现如下结果,应该是正确安装了optimizationfinished,#iter=257nu=0.351161
  obj=-225.628984,rho=0.636110nSV=91,nBSV=49
  TotalnSV=91

  Accuracy=84.2857%(59/70)(classification)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-18
LIBSVM是台湾大学林智仁(Lin
Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross
Validation)的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。
环境:win32,python3.4

1.下载最新版libsvm-3.21:http://www.csie.ntu.edu.tw/~cjlin/libsvm/

解压,我解压到了C盘根目录下C:\libsvm-3.21

2.在pycharm中测试:

测试代码

如果出现以下运行结果,则配置成功:

结果

【备注】出现问题及解决方法:

问题:WindowsError: [Error 193] %1 不是有效的 Win32

原因:libsvm.dll版本与OS版本不符。

解决方法:在http://www.lfd.uci.edu/~gohlke/pythonlibs/#libsvm上下载符合自己OS版本的libsvm。将下载好的.whl文件后缀改为.zip,解压,然后将解压的文件中含有的libsvm.dll替换C:\libsvm-3.21\windows中的libsvm.dll即可。

3.python接口的说明

在libsvm-3.16的python文件夹下主要包括了两个文件svm.py和svmutil.py。

svmutil.py接口主要包括了high-level的函数,这些函数的使用和LIBSVM的MATLAB接口大体类似

svmutil中主要包含了以下几个函数:

svm_train() : train an SVM model

svm_predict() : predict testing data

svm_read_problem() : read the data from a LIBSVM-format
file.

svm_load_model() : load a LIBSVM model.

svm_save_model() : save model to a file.

evaluations() : evaluate prediction results.

svm.py接口主要包括了一些low-level的应用。在svm.py中采用了python内置的ctypes库,由此python可以直接访问svm.h中定义的C结构和接口函数。svm.py主要运用了四个数据结构svm_node,
svm_problem, svm_parameter和svm_model。本回答被网友采纳
相似回答
大家正在搜