> pip install -U libsvm-officialThe python directory is re-organized so
>>> from libsvm.svmutil import *instead of
>>> from svmutil import *should be used.
LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). It supports multi-class classification.
Since version 2.8, it implements an SMO-type algorithm proposed
in this paper:
R.-E. Fan, P.-H. Chen, and C.-J. Lin.
Working set selection using second order information for training
SVM.
Journal of Machine Learning Research 6, 1889-1918, 2005. You can also find a pseudo code there.
(how to cite LIBSVM)
Our goal is to help users from other fields to easily use SVM as a tool. LIBSVM provides a simple interface where users can easily link it with their own programs. Main features of LIBSVM include
The package includes the source code of the library in C++ and Java, and a simple program for scaling training data. A README file with detailed explanation is provided. For MS Windows users, there is a sub-directory in the zip file containing binary executable files. Precompiled Java class archive is also included.
Please read the COPYRIGHT notice before using LIBSVM.
Examples of options: -s 0 -c 10 -t 1 -g 1 -r 1 -d 3
Classify a binary data with polynomial kernel (u'v+1)^3 and C = 10
options: -s svm_type : set type of SVM (default 0) 0 -- C-SVC 1 -- nu-SVC 2 -- one-class SVM 3 -- epsilon-SVR 4 -- nu-SVR -t kernel_type : set type of kernel function (default 2) 0 -- linear: u'*v 1 -- polynomial: (gamma*u'*v + coef0)^degree 2 -- radial basis function: exp(-gamma*|u-v|^2) 3 -- sigmoid: tanh(gamma*u'*v + coef0) -d degree : set degree in kernel function (default 3) -g gamma : set gamma in kernel function (default 1/num_features) -r coef0 : set coef0 in kernel function (default 0) -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1) -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5) -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1) -m cachesize : set cache memory size in MB (default 100) -e epsilon : set tolerance of termination criterion (default 0.001) -h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1) -b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0) -wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1) The k in the -g option means the number of attributes in the input data.
To install this tool, please read the README file in the package. There
are Windows, X, and Java versions in the package.
References of LIBSVM:
Language | Description | Maintainers and Their Affiliation | Supported LIBSVM version | Link |
---|---|---|---|---|
Java | Java code close to LIBSVM C code. | LIBSVM authors at National Taiwan University. | The latest | Included in LIBSVM package | Java | Refactored Java code for faster training/testing. | David Soergel at University of California, Berkeley. | 2.88 | jlibsvm |
MATLAB and OCTAVE | A simple MATLAB and OCTAVE interface | LIBSVM authors at National Taiwan University. | The latest | Included in LIBSVM package |
R | Please install by typing install.packages('e1071') at R command line prompt. (document and examples). | David Meyer at the Wirtschaftsuniversität Wien (Vienna University of Economics and Business Administration) | 3.23 | WWW |
Python | A python interface has been included in LIBSVM since version 2.33. | Initiated by Carl Staelin at HP Labs. Updated/maintained by LIBSVM authors. | The latest | Included in LIBSVM package |
Python and C# | Interfaces provided in the framework pcSVM | Uwe Schmitt from Germany | 2.71 | pcSVM |
Perl | Matthew Laird at Simon Fraser University, Canada and Saul Rosa | 3.12 | perl-libsvm | |
Ruby | Ruby language bindings for LIBSVM | C. Florian Ebeling and Rimas Silkaitis | 3.18 | rb-libsvm |
Ruby | A Ruby interface via SWIG | Tom Zeng | 2.9 | libsvm-ruby-swig |
Weka | Yasser EL-Manzalawy and Vasant Honavar at Iowa State University. | 2.8 | WLSVM | |
Node.js | Nicolas Panel | 3.20 | Node.js interface | |
Javascript | Port of LIBSVM for Javascript | Daniel Kostro | The latest | Port for Javascript |
Scilab | Holger Nahrstaedt from the Technical University of Berlin | 3.20 | Scilab interface | |
Common LISP | Common Lisp wrapper of LIBSVM | Gábor Melis | 2.88 | Common LISP wrapper |
CLISP | An FFI-based interface distributed with CLISP | Sam Steingold | 2.9 | CLISP LibSVM module |
Haskell | A Haskell binding to LIBSVM | Paulo Tanimoto | 3.1 | Haskell binding |
OCaml | A OCaml binding to LIBSVM | Oliver Gu | 3.16 | OCaml binding |
Nimrod | LIBSVM Wrapper for Nimrod | Andreas Rumpf | 3.12 | libsvm wrapper |
.NET | LIBSVM for .NET | Nicolas Panel | 3.17 | libsvm-net |
.NET | .NET conversion of LIBSVM | Matthew Johnson | 2.89 | SVM.NET |
CUDA | LIBSVM Accelerated with GPU using the CUDA Framework | A. Athanasopoulos, A. Dimou, V. Mezaris, and I. Kompatsiaris at CERTH-ITI | 3.0 | MKLAB |
Cell | LIBSVM Accelerated using Cell Processors | Moreno Marzolla at University of Bologna, Italy | 2.89 | libsvm_CBE |
Labview | LabView interface to LIBSVM. Both Windows/Linux are supported. | Oystein Sture | 3.20 | LabView interface |
C# | C# wrapper of libsvm | Can Erhan | 3.23 | github directory |
PHP | LIBSVM binding for PHP | Ian Barber | The latest (LIBSVM must be installed first) | PHP binding |
Julia | LIBSVM bindings for Julia | Simon Kornblith, Matti Pastell, etc. | 3.25 | LIBSVM bindings for Julia |
Julia | SVR in Julia | Velimir V Vesselinov | 3.22 | SVR in Julia |
Android | LIBSVM on Android | Yu-Chih Tung at Univ of Michigan | 3.20 | LIBSVM on Android |
Gretl | Gretl wrapper for LIBSVM | Allin Cottrell at Wake Forest University | 3.22 | Gretl wrapper for LIBSVM |
GO | LIBSVM in GO | Ed Walker | 3.18 | LIBSVM in GO |
Installer (language) | Package name | Installation |
---|---|---|
pip (Python) | libsvm-official |
$ pip install -U libsvm-official |
vcpkg (C++) | libsvm port |
$ ./vcpkg install libsvm |