LIBSVM -- A Library for Support Vector Machines (2024)

LIBSVM -- A Library for Support Vector Machines

Chih-Chung Chang andChih-JenLin


LIBSVM -- A Library for Support Vector Machines (1)Version 3.35 released on September 1, 2024. We fix some minor bugs.
LIBSVM -- A Library for Support Vector Machines (2) Version 3.31 released on February 28, 2023.Probabilistic outputs for one-class SVM are now supported.
LIBSVM -- A Library for Support Vector Machines (3) Version 3.25 released on April 14, 2021.Installing the Python interface through PyPI is supported
> pip install -U libsvm-official
The python directory is re-organized so
>>> from libsvm.svmutil import *
instead of
>>> from svmutil import *
should be used.
LIBSVM -- A Library for Support Vector Machines (4) LIBSVM tools provides many extensions of LIBSVM. Please check it if you need some functions not supported in LIBSVM.
LIBSVM -- A Library for Support Vector Machines (5) We now have a nice page LIBSVM data sets providing problems in LIBSVM format.
LIBSVM -- A Library for Support Vector Machines (6) A practical guide to SVM classificationis available now! (mainly written for beginners)
We now have an easy script (easy.py)for users who know NOTHING about SVM.It makes everything automatic--from data scaling to parameter selection.
The parameter selection tool grid.pygenerates the following contour of cross-validationaccuracy. To use this tool, you also needto install pythonand gnuplot.
LIBSVM -- A Library for Support Vector Machines (7)
To see the importance of parameter selection, pleasesee our guidefor beginners.
LIBSVM -- A Library for Support Vector Machines (8) Using libsvm, our group is the winnerofIJCNN 2001 Challenge (two of the three competitions),EUNITE world wide competitionon electricity load prediction,NIPS 2003 feature selection challenge(third place),WCCI 2008 Causation and Prediction challenge (one of the two winners),and Active Learning Challenge 2010 (2nd place).

Introduction

LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC),regression (epsilon-SVR, nu-SVR) anddistribution estimation (one-class SVM). It supports multi-class classification.

Since version 2.8, it implements an SMO-type algorithm proposedin 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 toeasily use SVM as a tool. LIBSVM provides a simple interfacewhere users can easily link it with their own programs. Main features of LIBSVM include

  • Different SVM formulations
  • Efficient multi-class classification
  • Cross validation for model selection
  • Probability estimates
  • Various kernels (including precomputed kernel matrix)
  • Weighted SVM for unbalanced data
  • Both C++ and Java sources
  • GUI demonstrating SVM classification and regression
  • Python, R, MATLAB, Perl,Ruby, Weka,Common LISP,CLISP,Haskell,OCaml,LabVIEW,andPHPinterfaces. C# .NET code and CUDA extension is available.
    It's also included in some data mining environments:RapidMiner,PCP,andLIONsolver.
  • Some popular package managers (e.g., pip and vcpkg) can install LIBSVM easily.
  • Automatic model selection which can generate contour of cross validation accuracy.

Download LIBSVM

The current release (Version 3.35, September 2024) of LIBSVM can be obtained by downloadingthe zipfileor tar.gzfile. You can also check this github directory.Please e-mail us if you have problems to download the file.

The package includes the source code of the library in C++ and Java,and a simple programfor scaling training data. A README file with detailed explanation isprovided. For MS Windows users, there is a sub-directory in the zipfile containing binary executable files. Precompiled Java class archiveis also included.

Please read the COPYRIGHTnotice before usingLIBSVM.

Graphic Interface

Here is a simple applet demonstrating SVM classification and regression.
Click on the drawing area and use ``Change'' to change class of data. Then use ``Run'' to see the results.

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-SVC1 -- nu-SVC2 -- one-class SVM3 -- epsilon-SVR4 -- nu-SVR-t kernel_type : set type of kernel function (default 2)0 -- linear: u'*v1 -- polynomial: (gamma*u'*v + coef0)^degree2 -- 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. Thereare Windows, X, and Java versions in the package.

Additional Information (how to cite LIBSVM)

Frequently Asked Questions (FAQ) and Change log

References of LIBSVM:

  • Official implementation document:
    C.-C. Chang andC.-J. Lin.LIBSVM: a library for support vector machines.ACM Transactions on IntelligentSystems and Technology, 2:27:1--27:27, 2011.
    pdf, ps.gz,ACM digital lib.
  • Instructions for using LIBSVM are in the README files in the main directory and some sub-directories.
  • A guide for beginners:
    C.-W. Hsu, C.-C. Chang, C.-J. Lin.A practical guide to support vector classification
  • An introductory videofor windows users.
  • Other implementation documents:
    R.-E. Fan, P.-H. Chen, and C.-J. Lin.Working set selection using the second order information for training SVM.Journal of Machine Learning Research 6, 1889-1918, 2005. You can also find a pseudo code there.
  • Other documents written by users. (including some non-English documents)
For more information about nu-SVM and one-class SVM,please see
  • B. Schölkopf, A. Smola, R. Williamson, and P. L. Bartlett. New supportvector algorithms. Neural Computation, 12, 2000, 1207-1245.
  • B. Schölkopf, J. Platt, J. Shawe-Taylor, A. J. Smola, and R. C. Williamson.Estimating the support of a high-dimensional distribution. Neural Computation, 13, 2001, 1443-1471.

Interfaces and Extensions to LIBSVM

LanguageDescriptionMaintainers and Their AffiliationSupported LIBSVM versionLink
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 interfaceLIBSVM authors at NationalTaiwan University. The latestIncluded 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.88Common LISP wrapper
CLISP An FFI-based interface distributed with CLISP Sam Steingold 2.9CLISP LibSVM module
Haskell A Haskell binding to LIBSVM Paulo Tanimoto 3.1Haskell binding
OCaml A OCaml binding to LIBSVM Oliver Gu 3.16OCaml binding
Nimrod LIBSVM Wrapper for Nimrod Andreas Rumpf 3.12libsvm wrapper
.NET LIBSVM for .NET Nicolas Panel 3.17libsvm-net
.NET .NET conversion of LIBSVM Matthew Johnson 2.89SVM.NET
CUDA LIBSVM Accelerated with GPU using the CUDA Framework A. Athanasopoulos, A. Dimou, V. Mezaris, and I. Kompatsiaris at CERTH-ITI 3.0MKLAB
Cell LIBSVM Accelerated using Cell Processors Moreno Marzolla at University of Bologna, Italy 2.89libsvm_CBE
Labview LabView interface to LIBSVM. Both Windows/Linux are supported. Oystein Sture 3.20 LabView interface
C# C# wrapper of libsvmCan Erhan 3.23 github directory
PHP LIBSVM binding for PHPIan Barber The latest (LIBSVM must be installed first) PHP binding
Julia LIBSVM bindings for JuliaSimon Kornblith, Matti Pastell, etc.3.25 LIBSVM bindings for Julia
Julia SVR in JuliaVelimir V Vesselinov3.22 SVR in Julia
Android LIBSVM on AndroidYu-Chih Tung at Univ of Michigan3.20 LIBSVM on Android
Gretl Gretl wrapper for LIBSVMAllin Cottrell at Wake Forest University3.22 Gretl wrapper for LIBSVM
GO LIBSVM in GOEd Walker3.18 LIBSVM in GO

Installing LIBSVM via Package Managers

Installer (language)Package nameInstallation
pip (Python) libsvm-official
$ pip install -U libsvm-official
vcpkg (C++) libsvm port
$ ./vcpkg install libsvm
Acknowledgments: This work was supported in part by the NationalScience Council of Taiwan via the grant NSC 89-2213-E-002-106. The authors thank their group members and usersfor helpful discussion and comments. Please send comments and suggestions to Chih-JenLin.
LIBSVM -- A Library for Support Vector Machines (2024)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Errol Quitzon

Last Updated:

Views: 5423

Rating: 4.9 / 5 (59 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Errol Quitzon

Birthday: 1993-04-02

Address: 70604 Haley Lane, Port Weldonside, TN 99233-0942

Phone: +9665282866296

Job: Product Retail Agent

Hobby: Computer programming, Horseback riding, Hooping, Dance, Ice skating, Backpacking, Rafting

Introduction: My name is Errol Quitzon, I am a fair, cute, fancy, clean, attractive, sparkling, kind person who loves writing and wants to share my knowledge and understanding with you.