Package weka.classifiers.meta
Class MultiClassClassifier
java.lang.Object
weka.classifiers.AbstractClassifier
weka.classifiers.SingleClassifierEnhancer
weka.classifiers.RandomizableSingleClassifierEnhancer
weka.classifiers.meta.MultiClassClassifier
- All Implemented Interfaces:
Serializable
,Cloneable
,Classifier
,BatchPredictor
,CapabilitiesHandler
,CapabilitiesIgnorer
,CommandlineRunnable
,OptionHandler
,Randomizable
,RevisionHandler
,WeightedInstancesHandler
- Direct Known Subclasses:
MultiClassClassifierUpdateable
public class MultiClassClassifier
extends RandomizableSingleClassifierEnhancer
implements OptionHandler, WeightedInstancesHandler
A metaclassifier for handling multi-class datasets with 2-class classifiers.
This classifier is also capable of applying error correcting output codes for increased accuracy.
If the base classifier cannot handle instance weights, and the instance weights are not uniform,
the data will be resampled with replacement based on the weights before being passed to the base classifier.
Valid options are:
-M <num> Sets the method to use. Valid values are 0 (1-against-all), 1 (random codes), 2 (exhaustive code), and 3 (1-against-1). (default 0)
-R <num> Sets the multiplier when using random codes. (default 2.0)
-P Use pairwise coupling (only has an effect for 1-against1)
-L Use log loss decoding for random and exhaustive codes.
-S <num> Random number seed. (default 1)
-D If set, classifier is run in debug mode and may output additional info to the console
-W Full name of base classifier. (default: weka.classifiers.functions.Logistic)
Options specific to classifier weka.classifiers.functions.Logistic:
-D Turn on debugging output.
-R <ridge> Set the ridge in the log-likelihood.
-M <number> Set the maximum number of iterations (default -1, until convergence).
- Version:
- $Revision: 15519 $
- Author:
- Eibe Frank (eibe@cs.waikato.ac.nz), Len Trigg (len@reeltwo.com), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
1-against-1static final int
1-against-allstatic final int
exhaustive correction codestatic final int
random correction codestatic final Tag[]
The error correction modesFields inherited from class weka.classifiers.AbstractClassifier
BATCH_SIZE_DEFAULT, NUM_DECIMAL_PLACES_DEFAULT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
buildClassifier
(Instances insts) Builds the classifiers.double[]
Returns the distribution for an instance.Returns default capabilities of the classifier.boolean
Whether log loss decoding is used for random or exhaustive codes.Gets the method used.String[]
Gets the current settings of the Classifier.double
Gets the multiplier when generating random codes.Returns the revision string.boolean
Gets whether to use pairwise coupling with 1-vs-1 classification to improve probability estimates.double[]
Returns the individual predictions of the base classifiers for an instance.Returns an enumeration describing the available optionsstatic void
Main method for testing this class.static double[]
pairwiseCoupling
(double[][] n, double[][] r) Implements pairwise coupling.void
setLogLossDecoding
(boolean newlogLossDecoding) Sets whether log loss decoding is used for random or exhaustive codes.void
setMethod
(SelectedTag newMethod) Sets the method used.void
setOptions
(String[] options) Parses a given list of options.void
setRandomWidthFactor
(double newRandomWidthFactor) Sets the multiplier when generating random codes.void
setUsePairwiseCoupling
(boolean p) Set whether to use pairwise coupling with 1-vs-1 classification to improve probability estimates.toString()
Prints the classifiers.Methods inherited from class weka.classifiers.RandomizableSingleClassifierEnhancer
getSeed, seedTipText, setSeed
Methods inherited from class weka.classifiers.SingleClassifierEnhancer
classifierTipText, getClassifier, postExecution, preExecution, setClassifier
Methods inherited from class weka.classifiers.AbstractClassifier
batchSizeTipText, classifyInstance, debugTipText, distributionsForInstances, doNotCheckCapabilitiesTipText, forName, getBatchSize, getDebug, getDoNotCheckCapabilities, getNumDecimalPlaces, implementsMoreEfficientBatchPrediction, makeCopies, makeCopy, numDecimalPlacesTipText, run, runClassifier, setBatchSize, setDebug, setDoNotCheckCapabilities, setNumDecimalPlaces
-
Field Details
-
METHOD_1_AGAINST_ALL
public static final int METHOD_1_AGAINST_ALL1-against-all- See Also:
-
METHOD_ERROR_RANDOM
public static final int METHOD_ERROR_RANDOMrandom correction code- See Also:
-
METHOD_ERROR_EXHAUSTIVE
public static final int METHOD_ERROR_EXHAUSTIVEexhaustive correction code- See Also:
-
METHOD_1_AGAINST_1
public static final int METHOD_1_AGAINST_11-against-1- See Also:
-
TAGS_METHOD
The error correction modes
-
-
Constructor Details
-
MultiClassClassifier
public MultiClassClassifier()Constructor.
-
-
Method Details
-
getCapabilities
Returns default capabilities of the classifier.- Specified by:
getCapabilities
in interfaceCapabilitiesHandler
- Specified by:
getCapabilities
in interfaceClassifier
- Overrides:
getCapabilities
in classSingleClassifierEnhancer
- Returns:
- the capabilities of this classifier
- See Also:
-
buildClassifier
Builds the classifiers.- Specified by:
buildClassifier
in interfaceClassifier
- Parameters:
insts
- the training data.- Throws:
Exception
- if a classifier can't be built
-
individualPredictions
Returns the individual predictions of the base classifiers for an instance. Used by StackedMultiClassClassifier. Returns the probability for the second "class" predicted by each base classifier.- Parameters:
inst
- the instance to get the prediction for- Returns:
- the individual predictions
- Throws:
Exception
- if the predictions can't be computed successfully
-
distributionForInstance
Returns the distribution for an instance.- Specified by:
distributionForInstance
in interfaceClassifier
- Overrides:
distributionForInstance
in classAbstractClassifier
- Parameters:
inst
- the instance to get the distribution for- Returns:
- the distribution
- Throws:
Exception
- if the distribution can't be computed successfully
-
toString
Prints the classifiers. -
listOptions
Returns an enumeration describing the available options- Specified by:
listOptions
in interfaceOptionHandler
- Overrides:
listOptions
in classRandomizableSingleClassifierEnhancer
- Returns:
- an enumeration of all the available options
-
setOptions
Parses a given list of options. Valid options are:-M <num> Sets the method to use. Valid values are 0 (1-against-all), 1 (random codes), 2 (exhaustive code), and 3 (1-against-1). (default 0)
-R <num> Sets the multiplier when using random codes. (default 2.0)
-P Use pairwise coupling (only has an effect for 1-against1)
-L Use log loss decoding for random and exhaustive codes.
-S <num> Random number seed. (default 1)
-D If set, classifier is run in debug mode and may output additional info to the console
-W Full name of base classifier. (default: weka.classifiers.functions.Logistic)
Options specific to classifier weka.classifiers.functions.Logistic:
-D Turn on debugging output.
-R <ridge> Set the ridge in the log-likelihood.
-M <number> Set the maximum number of iterations (default -1, until convergence).
- Specified by:
setOptions
in interfaceOptionHandler
- Overrides:
setOptions
in classRandomizableSingleClassifierEnhancer
- Parameters:
options
- the list of options as an array of strings- Throws:
Exception
- if an option is not supported
-
getOptions
Gets the current settings of the Classifier.- Specified by:
getOptions
in interfaceOptionHandler
- Overrides:
getOptions
in classRandomizableSingleClassifierEnhancer
- Returns:
- an array of strings suitable for passing to setOptions
-
globalInfo
- Returns:
- a description of the classifier suitable for displaying in the explorer/experimenter gui
-
logLossDecodingTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getLogLossDecoding
public boolean getLogLossDecoding()Whether log loss decoding is used for random or exhaustive codes.- Returns:
- true if log loss is used
-
setLogLossDecoding
public void setLogLossDecoding(boolean newlogLossDecoding) Sets whether log loss decoding is used for random or exhaustive codes.- Parameters:
newlogLossDecoding
- true if log loss is to be used
-
randomWidthFactorTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getRandomWidthFactor
public double getRandomWidthFactor()Gets the multiplier when generating random codes. Will generate numClasses * m_RandomWidthFactor codes.- Returns:
- the width multiplier
-
setRandomWidthFactor
public void setRandomWidthFactor(double newRandomWidthFactor) Sets the multiplier when generating random codes. Will generate numClasses * m_RandomWidthFactor codes.- Parameters:
newRandomWidthFactor
- the new width multiplier
-
methodTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getMethod
Gets the method used. Will be one of METHOD_1_AGAINST_ALL, METHOD_ERROR_RANDOM, METHOD_ERROR_EXHAUSTIVE, or METHOD_1_AGAINST_1.- Returns:
- the current method.
-
setMethod
Sets the method used. Will be one of METHOD_1_AGAINST_ALL, METHOD_ERROR_RANDOM, METHOD_ERROR_EXHAUSTIVE, or METHOD_1_AGAINST_1.- Parameters:
newMethod
- the new method.
-
setUsePairwiseCoupling
public void setUsePairwiseCoupling(boolean p) Set whether to use pairwise coupling with 1-vs-1 classification to improve probability estimates.- Parameters:
p
- true if pairwise coupling is to be used
-
getUsePairwiseCoupling
public boolean getUsePairwiseCoupling()Gets whether to use pairwise coupling with 1-vs-1 classification to improve probability estimates.- Returns:
- true if pairwise coupling is to be used
-
usePairwiseCouplingTipText
- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
pairwiseCoupling
public static double[] pairwiseCoupling(double[][] n, double[][] r) Implements pairwise coupling.- Parameters:
n
- the sum of weights used to train each modelr
- the probability estimate from each model- Returns:
- the coupled estimates
-
getRevision
Returns the revision string.- Specified by:
getRevision
in interfaceRevisionHandler
- Overrides:
getRevision
in classAbstractClassifier
- Returns:
- the revision
-
main
Main method for testing this class.- Parameters:
argv
- the options
-