【问题标题】:How to Setup LIBSVM for Python如何为 Python 设置 LIBSVM
【发布时间】:2013-03-23 05:12:51
【问题描述】:

我在 Mac OS X 上使用 Make 构建了 libsvm

$ tar xzfv libsvm-3.17.tar.gz
$ cd libsvm-3.17
$ make

这构建了各种 libsvm 二进制文件:

$ ls
COPYRIGHT           heart_scale svm-predict.c   svm-train.c tools
FAQ.html            java        svm-scale   svm.cpp     windows
Makefile            matlab      svm-scale.c svm.def
Makefile.win    python      svm-toy     svm.h
README      svm-predict svm-train   svm.o

我也在/usr/local链接到这个:

$ ls -la /usr/local/
...
svm -> /usr/local/libsvm-3.17/

并将 Python 绑定附加到我的路径:

import sys
sys.path.append('/usr/local/svm/python')

但是 Python 绑定找不到“LIBSVM”库:

$ python test.py 
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      import svmutil
   File "/usr/local/svm/python/svmutil.py", line 5, in <module>
      from svm import *
   File "/usr/local/svm/python/svm.py", line 22, in <module>
      raise Exception('LIBSVM library not found.')
Exception: LIBSVM library not found.

谁能告诉我如何设置?在 libsvm 的 python 自述文件中,唯一的描述是

Installation 
============

On Unix systems, type

> make

The interface needs only LIBSVM shared library, which is generated by
the above command. We assume that the shared library is on the LIBSVM
main directory or in the system path.

我错过了什么?

【问题讨论】:

  • 旁注:与其自己编译程序,不如使用非常好的 MacPorts 管理器之类的包管理器:包维护者已经为您解决了编译问题。 :)
  • 我在 64 位 Unix 环境(64 位 Python 安装)中遇到了同样的问题。就我而言,尝试 Liblinear 的 64 位解决了这个问题。

标签: python svm libsvm


【解决方案1】:

不要通过 libsvm 来使用 Python 访问它(我通过 MacPorts 安装 libsvm,import svmutil 失败),您可能想要安装流行的 scikit-learn 包,其中包含 libsvm with Python bindings 的优化版本.

使用MacPorts: sudo port install py27-scikit-learn 安装非常简单(使py27 适应您使用的任何Python 版本)。

【讨论】:

  • 完成了,太棒了。谢谢停产。
  • 我在安装 Macports 时遇到了困难。 Scipy Superpack 立即起作用。 fonnesbeck.github.com/ScipySuperpack
  • MacPorts 有什么问题?我问这个问题是因为 MacPorts 是一项很好的投资:它包含 15k+ 包(几乎总是)自动编译。如果我没记错的话,安装过程需要长时间下载(XCode),需要向 Apple 注册、运行 .pkg 安装程序,并可能配置 shell 路径(除非您使用 bash,在这种情况下,这是为您完成的)。完成此操作后,事情通常会非常顺利。
  • 如果我没记错的话,我认为我无法安装 scipy,而 scikit-learn 依赖于它。我尝试从 sourceforge 下载 scipy,但收到一条奇怪的消息:“无法在此磁盘上安装 Scipy。scipy 需要安装 System Python 2.7。”但不知道该怎么做。
  • 所以本身可能不是 macports 错误,但大约半小时后我放弃了安装整个堆栈,然后找到了超级包。
【解决方案2】:

似乎是一个旧线程。希望它在未来对其他人有所帮助。

我遇到了同样的问题。解决办法是

  1. 在 libsvm-3.0 目录中运行 make
  2. 在 libsvm-3.0/python 目录下运行make

如果您只在 libsvm-3.0 文件夹中执行此操作,您将面临此问题。在两个文件夹中执行此操作。然后它会正常工作。

【讨论】:

    【解决方案3】:

    如果您需要非 MacPorts 解决方案,请参阅此页面(尤其是来自 Thanassis 的评论):

    Installing libsvm-3.0 for Python on OSX 10.6

    尽管有帖子的标题,但该解决方案在装有 python 2.7 的 CentOS 机器上对我有用。

    【讨论】:

      【解决方案4】:

      python 中的 find_library 只查看扩展名为 .so 的文件。为了使其正常工作,您需要创建一个 libsvm.so:

      % ln -s libsvm.so.2 libsvm.so

      然后再试一次,它会正常工作。

      【讨论】:

        【解决方案5】:

        您无需使用 scikit learn 即可使用 libSVM。通过 python 加载 libsvm 模块时,我遇到了同样的问题。我从 github 克隆了项目并使用make 从命令行运行构建它,设置环境后,我得到了同样的错误。

        我通过homebrew 安装libSVM 解决了这个问题:

        brew install libsvm

        这不包括特定于 python 的二进制文件,因此您仍然需要从 github 克隆和制作并设置环境。

        【讨论】:

          【解决方案6】:

          你应该进入/python并make生成.so.1文件

          【讨论】:

            【解决方案7】:

            您也可以尝试使用 homebrew 安装 libsvm,例如“brew install libsvm”,然后您可以打开您的项目文件并将“svmutil.py”和“svm.py”文件复制到项目目录中,然后您可以使用命令'from svmutil import *',也许就可以了。

            【讨论】:

              猜你喜欢
              • 2013-11-20
              • 2013-11-06
              • 2012-12-06
              • 2014-06-14
              • 2012-10-04
              • 1970-01-01
              • 2016-02-22
              • 2018-07-03
              • 2021-12-20
              相关资源
              最近更新 更多