2013-04-02 9 views
6

Ho creato libsvm su Mac OS X con Make.Come impostare LIBSVM per Python

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

Questo costruiti i vari file binari 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 

ho legato anche a questo in /usr/local:

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

e aggiunto i binding Python sul mio cammino:

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

Ma i binding Python non riesce a trovare la libreria "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. 

Qualcuno può dirmi come impostare questa funzione? Nel readme python per libsvm l'unica descrizione è

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. 

Cosa mi manca?

+1

Nota a margine: invece di compilare autonomamente i programmi, potresti voler utilizzare un gestore di pacchetti come l'ottimo gestore MacPorts: i manutentori dei pacchetti hanno risolto i problemi di compilazione per te. :) – EOL

+0

Ho avuto lo stesso problema in un ambiente Unix a 64 bit (installazione Python a 64 bit). Nel mio caso, provare il 64 bit di Liblinear ha risolto il problema. – geompalik

risposta

8

Invece di passare attraverso libsvm al fine di accedere con Python (ho installato libsvm attraverso MacPorts, e import svmutil fallisce), si potrebbe desiderare di installare il pacchetto popolare scikit-learn, che contiene una versione ottimizzata del libsvm with Python bindings.

L'installazione è molto semplice con MacPorts: sudo port install py27-scikit-learn (adattare py27 a qualsiasi versione di Python in uso).

+0

Fatto, fantastico. Grazie EOL. –

+0

Ho avuto difficoltà nell'installare con Macports. Il Superpack di Scipy ha funzionato immediatamente. http://fonnesbeck.github.com/ScipySuperpack/ –

+1

Quali problemi hai avuto con MacPorts? Sto facendo la domanda perché MacPorts è un buon investimento: contiene pacchetti di 15k + che (quasi sempre) compilano automaticamente. Se ricordo bene, la procedura di installazione richiede un download lungo (XCode) che richiede la registrazione con Apple, l'esecuzione del programma di installazione .pkg e possibilmente la configurazione del percorso della shell (a meno che non si usi bash, nel qual caso ciò viene fatto per te). Una volta fatto, le cose funzionano normalmente senza problemi. – EOL

2

Nel caso in cui avete bisogno di una soluzione non MacPorts, consultare questa pagina (in particolare il commento da Thanassis):

Installing libsvm-3.0 for Python on OSX 10.6

Nonostante il titolo del post, la soluzione ha funzionato per me su una macchina CentOS con python 2.7.

0

Si dovrebbe andare in/python e fare per generare file di .so.1

1

find_library in Python è solo guardando i file con estensione .so. Affinché questo funzioni correttamente è necessario creare un libsvm.so:

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

Poi provare questo nuovo, funzionerà correttamente.

2

Sembra una vecchia discussione. Spero che aiuti qualcun altro in futuro.

Ho avuto lo stesso problema. La soluzione è

  1. Run make in libsvm-3,0 directory
  2. Run make in libsvm-3.0/directory python

Se avete fatto solo in libsvm-3.0 cartella che si troveranno ad affrontare questo problema. Fallo su entrambe le cartelle. Quindi funzionerà bene.

0

puoi anche provare a usare homebrew per installare libsvm come brew install libsvm, quindi puoi aprire il file di progetto e copiare i file "svmutil.py" e "svm.py" nel floder di progetto, quindi puoi usare il comando 'da svmutil import *', e forse sarà ok.

1

Non è necessario utilizzare scikit per utilizzare libSVM. Ho avuto lo stesso problema durante il caricamento dei moduli libsvm tramite python. Ho clonato il progetto da github e l'ho eseguito compilandolo dalla riga di comando con make e, dopo aver impostato l'ambiente, ho ricevuto lo stesso errore.

Ho risolto il problema installando libSVM attraverso homebrew:

brew install libsvm

Questo non comprendono i binari specifici pitone, in modo che avrebbe ancora da clonare e fare da github e impostare l'ambiente.