weka.classifiers.meta
Class MultiClassClassifier

java.lang.Object
  extended byweka.classifiers.Classifier
      extended byweka.classifiers.meta.MultiClassClassifier
All Implemented Interfaces:
java.lang.Cloneable, OptionHandler, java.io.Serializable

public class MultiClassClassifier
extends Classifier
implements OptionHandler

Class for handling multi-class datasets with 2-class distribution classifiers.

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)

-W classname
Specify the full class name of a classifier as the basis for the multi-class classifier (required).

-Q seed
Random number seed (default 1).

Version:
$Revision: 1.35 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz), Len Trigg (len@reeltwo.com), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
See Also:
Serialized Form

Nested Class Summary
private  class MultiClassClassifier.Code
          Interface for the code constructors
private  class MultiClassClassifier.ExhaustiveCode
          Constructs an exhaustive code assignment
private  class MultiClassClassifier.RandomCode
          Constructs a random code assignment
private  class MultiClassClassifier.StandardCode
          Constructs a code with no error correction
 
Field Summary
private  Attribute m_ClassAttribute
          Internal copy of the class attribute for output purposes
private  Filter[] m_ClassFilters
          The filters used to transform the class.
private  Classifier m_Classifier
          The class name of the base classifier.
private  Classifier[] m_Classifiers
          The classifiers.
private  int m_Method
          The multiclass method to use
private  double m_RandomWidthFactor
          The multiplier when generating random codes.
protected  int m_Seed
          Random number seed
private  Instances m_TwoClassDataset
          A transformed dataset header used by the 1-against-1 method
private  ZeroR m_ZeroR
          ZeroR classifier for when all base classifier return zero probability.
static int METHOD_1_AGAINST_1
           
static int METHOD_1_AGAINST_ALL
          The error correction modes
static int METHOD_ERROR_EXHAUSTIVE
           
static int METHOD_ERROR_RANDOM
           
static Tag[] TAGS_METHOD
           
 
Fields inherited from class weka.classifiers.Classifier
m_Debug
 
Constructor Summary
MultiClassClassifier()
           
 
Method Summary
 void buildClassifier(Instances insts)
          Builds the classifiers.
 java.lang.String classifierTipText()
           
 double[] distributionForInstance(Instance inst)
          Returns the distribution for an instance.
 Classifier getClassifier()
          Get the classifier used as the classifier
 SelectedTag getMethod()
          Gets the method used.
 java.lang.String[] getOptions()
          Gets the current settings of the Classifier.
 double getRandomWidthFactor()
          Gets the multiplier when generating random codes.
 int getSeed()
          Gets the random number seed.
 java.lang.String globalInfo()
           
 double[] individualPredictions(Instance inst)
          Returns the individual predictions of the base classifiers for an instance.
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options
static void main(java.lang.String[] argv)
          Main method for testing this class.
 java.lang.String methodTipText()
           
 java.lang.String randomWidthFactorTipText()
           
 void setClassifier(Classifier newClassifier)
          Set the base classifier.
 void setMethod(SelectedTag newMethod)
          Sets the method used.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setRandomWidthFactor(double newRandomWidthFactor)
          Sets the multiplier when generating random codes.
 void setSeed(int seed)
          Sets the seed for random number generation.
 java.lang.String toString()
          Prints the classifiers.
 
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, setDebug
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_Classifiers

private Classifier[] m_Classifiers
The classifiers.


m_ClassFilters

private Filter[] m_ClassFilters
The filters used to transform the class.


m_Classifier

private Classifier m_Classifier
The class name of the base classifier.


m_ZeroR

private ZeroR m_ZeroR
ZeroR classifier for when all base classifier return zero probability.


m_ClassAttribute

private Attribute m_ClassAttribute
Internal copy of the class attribute for output purposes


m_TwoClassDataset

private Instances m_TwoClassDataset
A transformed dataset header used by the 1-against-1 method


m_Seed

protected int m_Seed
Random number seed


m_RandomWidthFactor

private double m_RandomWidthFactor
The multiplier when generating random codes. Will generate numClasses * m_RandomWidthFactor codes


m_Method

private int m_Method
The multiclass method to use


METHOD_1_AGAINST_ALL

public static final int METHOD_1_AGAINST_ALL
The error correction modes

See Also:
Constant Field Values

METHOD_ERROR_RANDOM

public static final int METHOD_ERROR_RANDOM
See Also:
Constant Field Values

METHOD_ERROR_EXHAUSTIVE

public static final int METHOD_ERROR_EXHAUSTIVE
See Also:
Constant Field Values

METHOD_1_AGAINST_1

public static final int METHOD_1_AGAINST_1
See Also:
Constant Field Values

TAGS_METHOD

public static final Tag[] TAGS_METHOD
Constructor Detail

MultiClassClassifier

public MultiClassClassifier()
Method Detail

buildClassifier

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

Specified by:
buildClassifier in class Classifier
Parameters:
insts - the training data.
Throws:
java.lang.Exception - if a classifier can't be built

individualPredictions

public double[] individualPredictions(Instance inst)
                               throws java.lang.Exception
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.

Throws:
java.lang.Exception - if the predictions can't be computed successfully

distributionForInstance

public double[] distributionForInstance(Instance inst)
                                 throws java.lang.Exception
Returns the distribution for an instance.

Overrides:
distributionForInstance in class Classifier
Parameters:
inst - the instance to be classified
Returns:
an array containing the estimated membership probabilities of the test instance in each class or the numeric prediction
Throws:
java.lang.Exception - if the distribution can't be computed successfully

toString

public java.lang.String toString()
Prints the classifiers.


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
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)

-W classname
Specify the full class name of a learner as the basis for the multiclassclassifier (required).

-Q seed
Random number seed (default 1).

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class Classifier
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings of the Classifier.

Specified by:
getOptions in interface OptionHandler
Overrides:
getOptions in class Classifier
Returns:
an array of strings suitable for passing to setOptions

globalInfo

public java.lang.String globalInfo()
Returns:
a description of the classifier suitable for displaying in the explorer/experimenter gui

randomWidthFactorTipText

public java.lang.String 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

public java.lang.String methodTipText()
Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getMethod

public SelectedTag 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

public void setMethod(SelectedTag newMethod)
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.

classifierTipText

public java.lang.String classifierTipText()
Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setClassifier

public void setClassifier(Classifier newClassifier)
Set the base classifier.

Parameters:
newClassifier - the Classifier to use.

getClassifier

public Classifier getClassifier()
Get the classifier used as the classifier

Returns:
the classifier used as the classifier

setSeed

public void setSeed(int seed)
Sets the seed for random number generation.

Parameters:
seed - the random number seed

getSeed

public int getSeed()
Gets the random number seed.

Returns:
the random number seed

main

public static void main(java.lang.String[] argv)
Main method for testing this class.

Parameters:
argv - the options