svm: A support vector machine written in Haskell

[ ai, gpl, library ] [ Propose Tags ]

svm is a library which implements least squares support vector regression. It includes several common kernel functions.

[Skip to Readme]




Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 1.0.0,
Dependencies array, base (<5) [details]
License GPL-3.0-only
Author Andrew Dougherty
Maintainer Andrew Dougherty
Category AI
Home page
Bug tracker
Source repo head: git clone git://
Uploaded by AndrewDougherty at 2010-12-17T04:30:48Z
Distributions NixOS:
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1956 total (6 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for svm-

[back to package description]

svm is a library for doing least squares support vector regression.  It is
implemented in the Haskell programming language.  The library is set up as
a Cabal package and can be downloaded from

Currently the library implements:

least squares support vector regression

The following kernel functions are included:

linear kernel function (featureless space)
multilayer perceptron (similar to a neural net)
polynomial kernel function (polynomial fit of the data)
radial basis function (Gaussian basis functions)
reciprocal kernel function (decaying exponential basis functions)
spline kernel function

For least squares support vector regression, the solution for a set of
points is given by:

|y> = K |a> + b |1>

A conjugate gradient algorithm (CGA) is used to find the optimal set of
dual weights |a>.


Given a set of training points {point, value} least squares support vector
regression is done with the command:

dataSet = DataSet <points> <values>
svm = LSSVM (KernelFunction <kernelFunction>) <cost> <kernelParams>
solution = solve svm dataSet <epsilon> <iterNum>

where the variables in the angles brackets are:

points  :: Array Int [Double]  -- The point in the feature space.
values  :: UArray Int Double   -- The value at the corresponding point.
epsilon :: Double              -- A cutoff value for the step size of the CGA.
iterNum :: Int                 -- The max number of iterations for the CGA.