Package weka.classifiers.functions
Class LibSVM
- java.lang.Object
-
- weka.classifiers.Classifier
-
- weka.classifiers.RandomizableClassifier
-
- weka.classifiers.functions.LibSVM
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,CapabilitiesHandler
,OptionHandler
,Randomizable
,RevisionHandler
,TechnicalInformationHandler
public class LibSVM extends RandomizableClassifier 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)
-J Turn off nominal to binary conversion. WARNING: use only if your data is all numeric!
-V Turn off missing value replacement. WARNING: use only if your data has no missing values.
-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 E.g., for a 3-class problem, you could use "1 1 1" for equally weighted classes. (default: 1 for all classes)
-B Generate probability estimates for classification
-seed <num> Random seed (default = 1)
- Version:
- $Revision: 10660 $
- Author:
- Yasser EL-Manzalawy, FracPete (fracpete at waikato dot ac dot nz)
- See Also:
LibSVMLoader
,LibSVMSaver
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static int
KERNELTYPE_LINEAR
kernel type linear: u'*vstatic int
KERNELTYPE_POLYNOMIAL
kernel type polynomial: (gamma*u'*v + coef0)^degreestatic 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 typesstatic Tag[]
TAGS_SVMTYPE
SVM types
-
Constructor Summary
Constructors Constructor Description LibSVM()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
buildClassifier(Instances insts)
builds the classifierjava.lang.String
cacheSizeTipText()
Returns the tip text for this propertyjava.lang.String
coef0TipText()
Returns the tip text for this propertyjava.lang.String
costTipText()
Returns the tip text for this propertyjava.lang.String
degreeTipText()
Returns the tip text for this propertydouble[]
distributionForInstance(Instance instance)
Computes the distribution for a given instance.java.lang.String
doNotReplaceMissingValuesTipText()
Returns the tip text for this propertyjava.lang.String
epsTipText()
Returns the tip text for this propertyjava.lang.String
gammaTipText()
Returns the tip text for this propertydouble
getCacheSize()
Gets cache memory size in MBCapabilities
getCapabilities()
Returns default capabilities of the classifier.double
getCoef0()
Gets coefdouble
getCost()
Sets the parameter C of C-SVC, epsilon-SVR, and nu-SVRint
getDegree()
Gets the degree of the kernelboolean
getDoNotReplaceMissingValues()
Gets whether automatic replacement of missing values is disabled.double
getEps()
Gets tolerance of termination criteriondouble
getGamma()
Gets gammaSelectedTag
getKernelType()
Gets type of kernel functiondouble
getLoss()
Gets the epsilon in loss function of epsilon-SVRboolean
getNormalize()
whether to normalize input datadouble
getNu()
Gets nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)java.lang.String[]
getOptions()
Returns the current optionsboolean
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 heuristicsSelectedTag
getSVMType()
Gets type of SVMTechnicalInformation
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 classifierstatic boolean
isPresent()
returns whether the libsvm classes are present or not, i.e.java.lang.String
kernelTypeTipText()
Returns the tip text for this propertyjava.util.Enumeration
listOptions()
Returns an enumeration describing the available options.java.lang.String
lossTipText()
Returns the tip text for this propertystatic void
main(java.lang.String[] args)
Main method for testing this class.java.lang.String
normalizeTipText()
Returns the tip text for this propertyjava.lang.String
nuTipText()
Returns the tip text for this propertyjava.lang.String
probabilityEstimatesTipText()
Returns the tip text for this propertyvoid
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 kernelvoid
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 datavoid
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 optionsvoid
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 heuristicsvoid
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 propertyjava.lang.String
SVMTypeTipText()
Returns the tip text for this propertyjava.lang.String
toString()
returns a string representationjava.lang.String
weightsTipText()
Returns the tip text for this property-
Methods inherited from class weka.classifiers.RandomizableClassifier
getSeed, seedTipText, setSeed
-
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
-
-
-
-
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
-
-
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 interfaceTechnicalInformationHandler
- Returns:
- the technical information about this class
-
listOptions
public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.- Specified by:
listOptions
in interfaceOptionHandler
- Overrides:
listOptions
in classRandomizableClassifier
- 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)
-J Turn off nominal to binary conversion. WARNING: use only if your data is all numeric!
-V Turn off missing value replacement. WARNING: use only if your data has no missing values.
-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 E.g., for a 3-class problem, you could use "1 1 1" for equally weighted classes. (default: 1 for all classes)
-B Generate probability estimates for classification
-seed <num> Random seed (default = 1)
- Specified by:
setOptions
in interfaceOptionHandler
- Overrides:
setOptions
in classRandomizableClassifier
- 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 interfaceOptionHandler
- Overrides:
getOptions
in classRandomizableClassifier
- 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 classClassifier
- 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 interfaceCapabilitiesHandler
- Overrides:
getCapabilities
in classClassifier
- 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 classClassifier
- 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 classjava.lang.Object
- Returns:
- a string representation
-
getRevision
public java.lang.String getRevision()
Returns the revision string.- Specified by:
getRevision
in interfaceRevisionHandler
- Overrides:
getRevision
in classClassifier
- Returns:
- the revision
-
main
public static void main(java.lang.String[] args)
Main method for testing this class.- Parameters:
args
- the options
-
-