Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Setup LIBSVM for Python

Tags:

python

svm

libsvm

I built libsvm on Mac OS X with Make.

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

This built the various libsvm binaries:

$ 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

I also linked to this in /usr/local:

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

And appended the Python bindings to my path:

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

But the Python bindings cannot find the "LIBSVM" library:

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

Can anyone tell me how to set this up? In the python readme for libsvm the only description is

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.

What am I missing?

like image 488
David Williams Avatar asked Apr 02 '13 02:04

David Williams


1 Answers

Instead of going through libsvm in order to access it with Python (I installed libsvm through MacPorts, and import svmutil fails), you might want to install the popular scikit-learn package, which contains an optimized version of libsvm with Python bindings.

The install is very simple with MacPorts: sudo port install py27-scikit-learn (adapt py27 to whatever version of Python you use).

like image 87
Eric O Lebigot Avatar answered Sep 30 '22 15:09

Eric O Lebigot