2013-04-02 2 views
6

Я построил libsvm на Mac OS X с Make.Как установить LIBSVM для Python

$ 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. 

Может кто-нибудь сказать мне, как установить это? В python readme для libsvm только для описания

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. 

Что мне не хватает?

+1

Замечание: вместо компиляции программ вы можете использовать диспетчер пакетов, такой как очень хороший менеджер MacPorts: разработчики пакетов решили проблемы с компиляцией. :) – EOL

+0

У меня была такая же проблема в 64-битной среде Unix (установка 64-битного Python). В моем случае попытка 64-битной Liblinear решила проблему. – geompalik

ответ

8

Вместо того, чтобы идти через libsvm для того, чтобы получить к нему доступ с Python (я установил libsvm через MacPorts, и import svmutil терпит неудачу), вы можете установить популярный scikit-learn пакет, который содержит оптимизированную версию libsvm with Python bindings.

Установка очень проста с MacPorts: sudo port install py27-scikit-learn (адаптируйте py27 к любой версии Python, которую вы используете).

+0

Готово, удивительный. Спасибо EOL. –

+0

Мне было трудно установить с помощью Macports. The Scipy Superpack работал немедленно. http://fonnesbeck.github.com/ScipySuperpack/ –

+1

Какие у вас проблемы с MacPorts? Я задаю вопрос, потому что MacPorts - хорошая инвестиция: он содержит пакеты 15k +, которые (почти всегда) компилируются автоматически. Если я правильно помню, для процедуры установки требуется длительная загрузка (XCode), которая требует регистрации в Apple, запуска установки .pkg и, возможно, настройки пути оболочки (если вы не используете bash, и в этом случае это делается для вас). Как только это будет сделано, все будет работать довольно гладко. – EOL

2

В случае, если вам нужно решение, не MacPorts см этой страницы (особенно комментарий от Thanassis):

Installing libsvm-3.0 for Python on OSX 10.6

Несмотря на название должности, решение работает для меня на машине CentOS с python 2.7.

0

Вы должны войти в/питона и сделать для создания .so.1 файлу

1

find_library в питона только смотрит на файлы с расширением .so. Для того, чтобы это работало правильно, вам нужно создать libsvm.so:

% ¯Ln -s libsvm.so.2 libsvm.so

Тогда попробуйте это снова, он будет работать правильно.

2

Похоже на старую нить. Надеюсь, это поможет кому-то еще в будущем.

У меня была та же проблема. Решение

  1. Run make в libsvm-3.0 каталог
  2. Run make в libsvm-3.0/каталог питона

Если вы сделали только на libsvm-3,0 папка будет сталкиваться с этой проблемой. Сделайте это в обеих папках. Тогда все будет хорошо.

0

Вы также можете попробовать использовать доморощенный, чтобы установить libsvm как 'brew install libsvm', затем вы можете открыть файл проекта и скопировать файлы 'svmutil.py' и 'svm.py' в floder проекта, затем вы можете использовать команду 'from svmutil import *', и, возможно, все будет хорошо.

1

Вам не нужно использовать scikit learn для использования libSVM. У меня была такая же проблема при загрузке модулей libsvm через python. Я клонировал проект из github и запускал его из командной строки с make, и после настройки среды я получил ту же ошибку.

Я исправили проблему, установив libSVM через homebrew:

brew install libsvm

Это не включают питона конкретные бинарные файлы, так что вы все равно пришлось бы клонировать и сделать из GitHub и настроить среду.

Смежные вопросы