LibSVM

Overview | Package | Class | Tree | Deprecated | Index | Help | Weka's home

PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## weka.classifiers.functions
Class LibSVM

    java.lang.Object
      weka.classifiers.Classifier
          weka.classifiers.functions.LibSVM

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler

    public class LibSVM

extends Classifier
implements TechnicalInformationHandler

A wrapper class for the libsvm tools (the libsvm classes, typically the jar file, need to be in the classpath to use this classifier).
LibSVM runs faster than SMO since it uses LibSVM to build the SVM classifier.
LibSVM allows users to experiment with One-class SVM, Regressing SVM, and nu-SVM supported by LibSVM tool. LibSVM reports many useful statistics about LibSVM classifier (e.g., confusion matrix,precision, recall, ROC score, etc.).
Yasser EL-Manzalawy (2005). WLSVM. URL http://www.cs.iastate.edu/~yasser/wlsvm/.
Chih-Chung Chang, Chih-Jen Lin (2001). LIBSVM - A Library for Support Vector Machines. URL http://www.csie.ntu.edu.tw/~cjlin/libsvm/.

BibTeX:

     @misc{EL-Manzalawy2005,
        author = {Yasser EL-Manzalawy},
        note = {You don't need to include the WLSVM package in the CLASSPATH},
        title = {WLSVM},
        year = {2005},
        URL = {http://www.cs.iastate.edu/\~yasser/wlsvm/}
     }

     @misc{Chang2001,
        author = {Chih-Chung Chang and Chih-Jen Lin},
        note = {The Weka classifier works with version 2.82 of LIBSVM},
        title = {LIBSVM - A Library for Support Vector Machines},
        year = {2001},
        URL = {http://www.csie.ntu.edu.tw/\~cjlin/libsvm/}
     }

Valid options are:

     -S <int>
      Set type of SVM (default: 0)
        0 = C-SVC
        1 = nu-SVC
        2 = one-class SVM
        3 = epsilon-SVR
        4 = nu-SVR

     -K <int>
      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 <int>
      Set degree in kernel function (default: 3)

     -G <double>
      Set gamma in kernel function (default: 1/k)

     -R <double>
      Set coef0 in kernel function (default: 0)

     -C <double>
      Set the parameter C of C-SVC, epsilon-SVR, and nu-SVR
       (default: 1)

     -N <double>
      Set the parameter nu of nu-SVC, one-class SVM, and nu-SVR
       (default: 0.5)

     -Z
      Turns on normalization of input data (default: off)

     -P <double>
      Set the epsilon in loss function of epsilon-SVR (default: 0.1)

     -M <double>
      Set cache memory size in MB (default: 40)

     -E <double>
      Set tolerance of termination criterion (default: 0.001)

     -H
      Turns the shrinking heuristics off (default: on)

     -W <double>
      Set the parameters C of class i to weight[i]*C, for C-SVC
       (default: 1)

     -B
      Trains a SVC model instead of a SVR one (default: SVR)

     -D
      If set, classifier is run in debug mode and
      may output additional info to the console

Version:
  $Revision: 4852 $
Author:
  Yasser EL-Manzalawy, FracPete (fracpete at waikato dot ac dot nz)
See Also:
  `LibSVMLoader`, `LibSVMSaver`, Serialized Form

Field Summary
`static int` | `KERNELTYPE_LINEAR` kernel type linear: u'*v
`static int` | `KERNELTYPE_POLYNOMIAL` kernel type polynomial: (gamma*u'*v + coef0)^degree
`static int` | `KERNELTYPE_RBF` kernel type radial basis function: exp(-gamma*|u-v|^2)
`static int` | `KERNELTYPE_SIGMOID` kernel type sigmoid: tanh(gamma*u'*v + coef0)
`static int` | `SVMTYPE_C_SVC` SVM type C-SVC (classification)
`static int` | `SVMTYPE_EPSILON_SVR` SVM type epsilon-SVR (regression)
`static int` | `SVMTYPE_NU_SVC` SVM type nu-SVC (classification)
`static int` | `SVMTYPE_NU_SVR` SVM type nu-SVR (regression)
`static int` | `SVMTYPE_ONE_CLASS_SVM` SVM type one-class SVM (classification)
`static Tag[]` | `TAGS_KERNELTYPE` the different kernel types
`static Tag[]` | `TAGS_SVMTYPE` SVM types

Constructor Summary
`LibSVM()`

Method Summary
`void` | `buildClassifier(Instances insts)` builds the classifier
`java.lang.String` | `cacheSizeTipText()` Returns the tip text for this property
`java.lang.String` | `coef0TipText()` Returns the tip text for this property
`java.lang.String` | `costTipText()` Returns the tip text for this property
`java.lang.String` | `degreeTipText()` Returns the tip text for this property
`double[]` | `distributionForInstance(Instance instance)` Computes the distribution for a given instance.
`java.lang.String` | `doNotReplaceMissingValuesTipText()` Returns the tip text for this property
`java.lang.String` | `epsTipText()` Returns the tip text for this property
`java.lang.String` | `gammaTipText()` Returns the tip text for this property
`double` | `getCacheSize()` Gets cache memory size in MB
`Capabilities` | `getCapabilities()` Returns default capabilities of the classifier.
`double` | `getCoef0()` Gets coef
`double` | `getCost()` Sets the parameter C of C-SVC, epsilon-SVR, and nu-SVR
`int` | `getDegree()` Gets the degree of the kernel
`boolean` | `getDoNotReplaceMissingValues()` Gets whether automatic replacement of missing values is disabled.
`double` | `getEps()` Gets tolerance of termination criterion
`double` | `getGamma()` Gets gamma
`SelectedTag` | `getKernelType()` Gets type of kernel function
`double` | `getLoss()` Gets the epsilon in loss function of epsilon-SVR
`boolean` | `getNormalize()` whether to normalize input data
`double` | `getNu()` Gets nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
`java.lang.String[]` | `getOptions()` Returns the current options
`boolean` | `getProbabilityEstimates()` Sets whether to generate probability estimates instead of -1/+1 for classification problems.
`java.lang.String` | `getRevision()` Returns the revision string.
`boolean` | `getShrinking()` whether to use the shrinking heuristics
`SelectedTag` | `getSVMType()` Gets type of SVM
`TechnicalInformation` | `getTechnicalInformation()` Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
`java.lang.String` | `getWeights()` Gets the parameters C of class i to weight[i]*C, for C-SVC (default 1).
`java.lang.String` | `globalInfo()` Returns a string describing classifier
`static boolean` | `isPresent()` returns whether the libsvm classes are present or not, i.e.
`java.lang.String` | `kernelTypeTipText()` Returns the tip text for this property
`java.util.Enumeration` | `listOptions()` Returns an enumeration describing the available options.
`java.lang.String` | `lossTipText()` Returns the tip text for this property
`static void` | `main(java.lang.String[] args)` Main method for testing this class.
`java.lang.String` | `normalizeTipText()` Returns the tip text for this property
`java.lang.String` | `nuTipText()` Returns the tip text for this property
`java.lang.String` | `probabilityEstimatesTipText()` Returns the tip text for this property
`void` | `setCacheSize(double value)` Sets cache memory size in MB (default 40)
`void` | `setCoef0(double value)` Sets coef (default 0)
`void` | `setCost(double value)` Sets the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
`void` | `setDegree(int value)` Sets the degree of the kernel
`void` | `setDoNotReplaceMissingValues(boolean b)` Whether to turn off automatic replacement of missing values.
`void` | `setEps(double value)` Sets tolerance of termination criterion (default 0.001)
`void` | `setGamma(double value)` Sets gamma (default = 1/no of attributes)
`void` | `setKernelType(SelectedTag value)` Sets type of kernel function (default KERNELTYPE_RBF)
`void` | `setLoss(double value)` Sets the epsilon in loss function of epsilon-SVR (default 0.1)
`void` | `setNormalize(boolean value)` whether to normalize input data
`void` | `setNu(double value)` Sets nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
`void` | `setOptions(java.lang.String[] options)` Sets the classifier options Valid options are:
`void` | `setProbabilityEstimates(boolean value)` Returns whether probability estimates are generated instead of -1/+1 for classification problems.
`void` | `setShrinking(boolean value)` whether to use the shrinking heuristics
`void` | `setSVMType(SelectedTag value)` Sets type of SVM (default SVMTYPE_C_SVC)
`void` | `setWeights(java.lang.String weightsStr)` Sets the parameters C of class i to weight[i]*C, for C-SVC (default 1).
`java.lang.String` | `shrinkingTipText()` Returns the tip text for this property
`java.lang.String` | `SVMTypeTipText()` Returns the tip text for this property
`java.lang.String` | `toString()` returns a string representation
`java.lang.String` | `weightsTipText()` Returns the tip text for this property

Methods inherited from class weka.classifiers.Classifier
`classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### SVMTYPE_C_SVC

    public static final int SVMTYPE_C_SVC

  SVM type C-SVC (classification)

  See Also:
    Constant Field Values

### SVMTYPE_NU_SVC

    public static final int SVMTYPE_NU_SVC

  SVM type nu-SVC (classification)

  See Also:
    Constant Field Values

### SVMTYPE_ONE_CLASS_SVM

    public static final int SVMTYPE_ONE_CLASS_SVM

  SVM type one-class SVM (classification)

  See Also:
    Constant Field Values

### SVMTYPE_EPSILON_SVR

    public static final int SVMTYPE_EPSILON_SVR

  SVM type epsilon-SVR (regression)

  See Also:
    Constant Field Values

### SVMTYPE_NU_SVR

    public static final int SVMTYPE_NU_SVR

  SVM type nu-SVR (regression)

  See Also:
    Constant Field Values

### TAGS_SVMTYPE

    public static final Tag[] TAGS_SVMTYPE

  SVM types

### KERNELTYPE_LINEAR

    public static final int KERNELTYPE_LINEAR

  kernel type linear: u'*v

  See Also:
    Constant Field Values

### KERNELTYPE_POLYNOMIAL

    public static final int KERNELTYPE_POLYNOMIAL

  kernel type polynomial: (gamma*u'*v + coef0)^degree

  See Also:
    Constant Field Values

### KERNELTYPE_RBF

    public static final int KERNELTYPE_RBF

  kernel type radial basis function: exp(-gamma*|u-v|^2)

  See Also:
    Constant Field Values

### KERNELTYPE_SIGMOID

    public static final int KERNELTYPE_SIGMOID

  kernel type sigmoid: tanh(gamma*u'*v + coef0)

  See Also:
    Constant Field Values

### TAGS_KERNELTYPE

    public static final Tag[] TAGS_KERNELTYPE

  the different kernel types

Constructor Detail

### LibSVM

    public LibSVM()

Method Detail

### globalInfo

    public java.lang.String globalInfo()

  Returns a string describing classifier

  Returns:
    a description suitable for displaying in the explorer/experimenter gui

### getTechnicalInformation

    public TechnicalInformation getTechnicalInformation()

  Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

  Specified by:
    `getTechnicalInformation` in interface `TechnicalInformationHandler`
  Returns:
    the technical information about this class

### listOptions

    public java.util.Enumeration listOptions()

  Returns an enumeration describing the available options.

  Specified by:
    `listOptions` in interface `OptionHandler`
  Overrides:
    `listOptions` in class `Classifier`
  Returns:
    an enumeration of all the available options.

### setOptions

    public void setOptions(java.lang.String[] options)
                    throws java.lang.Exception

  Sets the classifier options

  Valid options are:

       -S <int>
        Set type of SVM (default: 0)
          0 = C-SVC
          1 = nu-SVC
          2 = one-class SVM
          3 = epsilon-SVR
          4 = nu-SVR

       -K <int>
        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 <int>
        Set degree in kernel function (default: 3)

       -G <double>
        Set gamma in kernel function (default: 1/k)

       -R <double>
        Set coef0 in kernel function (default: 0)

       -C <double>
        Set the parameter C of C-SVC, epsilon-SVR, and nu-SVR
         (default: 1)

       -N <double>
        Set the parameter nu of nu-SVC, one-class SVM, and nu-SVR
         (default: 0.5)

       -Z
        Turns on normalization of input data (default: off)

       -P <double>
        Set the epsilon in loss function of epsilon-SVR (default: 0.1)

       -M <double>
        Set cache memory size in MB (default: 40)

       -E <double>
        Set tolerance of termination criterion (default: 0.001)

       -H
        Turns the shrinking heuristics off (default: on)

       -W <double>
        Set the parameters C of class i to weight[i]*C, for C-SVC
         (default: 1)

       -B
        Trains a SVC model instead of a SVR one (default: SVR)

       -D
        If set, classifier is run in debug mode and
        may output additional info to the console

  Specified by:
    `setOptions` in interface `OptionHandler`
  Overrides:
    `setOptions` in class `Classifier`
  Parameters:
    `options` - the options to parse
  Throws:
    `java.lang.Exception` - if parsing fails

### getOptions

    public java.lang.String[] getOptions()

  Returns the current options

  Specified by:
    `getOptions` in interface `OptionHandler`
  Overrides:
    `getOptions` in class `Classifier`
  Returns:
    the current setup

### isPresent

    public static boolean isPresent()

  returns whether the libsvm classes are present or not, i.e. whether the classes are in the classpath or not

  Returns:
    whether the libsvm classes are available

### setSVMType

    public void setSVMType(SelectedTag value)

  Sets type of SVM (default SVMTYPE_C_SVC)

  Parameters:
    `value` - the type of the SVM

### getSVMType

    public SelectedTag getSVMType()

  Gets type of SVM

  Returns:
    the type of the SVM

### SVMTypeTipText

    public java.lang.String SVMTypeTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setKernelType

    public void setKernelType(SelectedTag value)

  Sets type of kernel function (default KERNELTYPE_RBF)

  Parameters:
    `value` - the kernel type

### getKernelType

    public SelectedTag getKernelType()

  Gets type of kernel function

  Returns:
    the kernel type

### kernelTypeTipText

    public java.lang.String kernelTypeTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setDegree

    public void setDegree(int value)

  Sets the degree of the kernel

  Parameters:
    `value` - the degree of the kernel

### getDegree

    public int getDegree()

  Gets the degree of the kernel

  Returns:
    the degree of the kernel

### degreeTipText

    public java.lang.String degreeTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setGamma

    public void setGamma(double value)

  Sets gamma (default = 1/no of attributes)

  Parameters:
    `value` - the gamma value

### getGamma

    public double getGamma()

  Gets gamma

  Returns:
    the current gamma

### gammaTipText

    public java.lang.String gammaTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setCoef0

    public void setCoef0(double value)

  Sets coef (default 0)

  Parameters:
    `value` - the coef

### getCoef0

    public double getCoef0()

  Gets coef

  Returns:
    the coef

### coef0TipText

    public java.lang.String coef0TipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setNu

    public void setNu(double value)

  Sets nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)

  Parameters:
    `value` - the new nu value

### getNu

    public double getNu()

  Gets nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)

  Returns:
    the current nu value

### nuTipText

    public java.lang.String nuTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setCacheSize

    public void setCacheSize(double value)

  Sets cache memory size in MB (default 40)

  Parameters:
    `value` - the memory size in MB

### getCacheSize

    public double getCacheSize()

  Gets cache memory size in MB

  Returns:
    the memory size in MB

### cacheSizeTipText

    public java.lang.String cacheSizeTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setCost

    public void setCost(double value)

  Sets the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)

  Parameters:
    `value` - the cost value

### getCost

    public double getCost()

  Sets the parameter C of C-SVC, epsilon-SVR, and nu-SVR

  Returns:
    the cost value

### costTipText

    public java.lang.String costTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setEps

    public void setEps(double value)

  Sets tolerance of termination criterion (default 0.001)

  Parameters:
    `value` - the tolerance

### getEps

    public double getEps()

  Gets tolerance of termination criterion

  Returns:
    the current tolerance

### epsTipText

    public java.lang.String epsTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setLoss

    public void setLoss(double value)

  Sets the epsilon in loss function of epsilon-SVR (default 0.1)

  Parameters:
    `value` - the loss epsilon

### getLoss

    public double getLoss()

  Gets the epsilon in loss function of epsilon-SVR

  Returns:
    the loss epsilon

### lossTipText

    public java.lang.String lossTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setShrinking

    public void setShrinking(boolean value)

  whether to use the shrinking heuristics

  Parameters:
    `value` - true uses shrinking

### getShrinking

    public boolean getShrinking()

  whether to use the shrinking heuristics

  Returns:
    true, if shrinking is used

### shrinkingTipText

    public java.lang.String shrinkingTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setNormalize

    public void setNormalize(boolean value)

  whether to normalize input data

  Parameters:
    `value` - whether to normalize the data

### getNormalize

    public boolean getNormalize()

  whether to normalize input data

  Returns:
    true, if the data is normalized

### normalizeTipText

    public java.lang.String normalizeTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### doNotReplaceMissingValuesTipText

    public java.lang.String doNotReplaceMissingValuesTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setDoNotReplaceMissingValues

    public void setDoNotReplaceMissingValues(boolean b)

  Whether to turn off automatic replacement of missing values. Set to true only if the data does not contain missing values.

  Parameters:
    `b` - true if automatic missing values replacement is to be disabled.

### getDoNotReplaceMissingValues

    public boolean getDoNotReplaceMissingValues()

  Gets whether automatic replacement of missing values is disabled.

  Returns:
    true if automatic replacement of missing values is disabled.

### setWeights

    public void setWeights(java.lang.String weightsStr)

  Sets the parameters C of class i to weight[i]*C, for C-SVC (default 1). Blank separated list of doubles.

  Parameters:
    `weightsStr` - the weights (doubles, separated by blanks)

### getWeights

    public java.lang.String getWeights()

  Gets the parameters C of class i to weight[i]*C, for C-SVC (default 1). Blank separated doubles.

  Returns:
    the weights (doubles separated by blanks)

### weightsTipText

    public java.lang.String weightsTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### setProbabilityEstimates

    public void setProbabilityEstimates(boolean value)

  Returns whether probability estimates are generated instead of -1/+1 for classification problems.

  Parameters:
    `value` - whether to predict probabilities

### getProbabilityEstimates

    public boolean getProbabilityEstimates()

  Sets whether to generate probability estimates instead of -1/+1 for classification problems.

  Returns:
    true, if probability estimates should be returned

### probabilityEstimatesTipText

    public java.lang.String probabilityEstimatesTipText()

  Returns the tip text for this property

  Returns:
    tip text for this property suitable for displaying in the explorer/experimenter gui

### distributionForInstance

    public double[] distributionForInstance(Instance instance)
                                     throws java.lang.Exception

  Computes the distribution for a given instance. In case of 1-class classification, 1 is returned at index 0 if libsvm returns 1 and NaN (= missing) if libsvm returns -1.

  Overrides:
    `distributionForInstance` in class `Classifier`
  Parameters:
    `instance` - the instance for which distribution is computed
  Returns:
    the distribution
  Throws:
    `java.lang.Exception` - if the distribution can't be computed successfully

### getCapabilities

    public Capabilities getCapabilities()

  Returns default capabilities of the classifier.

  Specified by:
    `getCapabilities` in interface `CapabilitiesHandler`
  Overrides:
    `getCapabilities` in class `Classifier`
  Returns:
    the capabilities of this classifier
  See Also:
    `Capabilities`

### buildClassifier

    public void buildClassifier(Instances insts)
                         throws java.lang.Exception

  builds the classifier

  Specified by:
    `buildClassifier` in class `Classifier`
  Parameters:
    `insts` - the training instances
  Throws:
    `java.lang.Exception` - if libsvm classes not in classpath or libsvm encountered a problem

### toString

    public java.lang.String toString()

  returns a string representation

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    a string representation

### getRevision

    public java.lang.String getRevision()

  Returns the revision string.

  Specified by:
    `getRevision` in interface `RevisionHandler`
  Returns:
    the revision

### main

    public static void main(java.lang.String[] args)

  Main method for testing this class.

  Parameters:
    `args` - the options

Overview | Package | Class | Tree | Deprecated | Index | Help | Weka's home

PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD