weka.classifiers.trees
Class DecisionStump

java.lang.Object
  extended byweka.classifiers.Classifier
      extended byweka.classifiers.trees.DecisionStump
All Implemented Interfaces:
java.lang.Cloneable, OptionHandler, java.io.Serializable, Sourcable, WeightedInstancesHandler

public class DecisionStump
extends Classifier
implements WeightedInstancesHandler, Sourcable

Class for building and using a decision stump. Usually used in conjunction with a boosting algorithm. Typical usage:

java weka.classifiers.trees.LogitBoost -I 100 -W weka.classifiers.trees.DecisionStump -t training_data

Version:
$Revision: 1.18 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
private  int m_AttIndex
          The attribute used for classification.
private  double[][] m_Distribution
          The distribution of class values or the means in each subset.
private  Instances m_Instances
          The instances used for training.
private  double m_SplitPoint
          The split point (index respectively).
 
Fields inherited from class weka.classifiers.Classifier
m_Debug
 
Constructor Summary
DecisionStump()
           
 
Method Summary
 void buildClassifier(Instances instances)
          Generates the classifier.
 double[] distributionForInstance(Instance instance)
          Calculates the class membership probabilities for the given test instance.
private  double findSplitNominal(int index)
          Finds best split for nominal attribute and returns value.
private  double findSplitNominalNominal(int index)
          Finds best split for nominal attribute and nominal class and returns value.
private  double findSplitNominalNumeric(int index)
          Finds best split for nominal attribute and numeric class and returns value.
private  double findSplitNumeric(int index)
          Finds best split for numeric attribute and returns value.
private  double findSplitNumericNominal(int index)
          Finds best split for numeric attribute and nominal class and returns value.
private  double findSplitNumericNumeric(int index)
          Finds best split for numeric attribute and numeric class and returns value.
 java.lang.String globalInfo()
          Returns a string describing classifier
static void main(java.lang.String[] argv)
          Main method for testing this class.
private  java.lang.String printClass(double[] dist)
          Prints a classification.
private  java.lang.String printDist(double[] dist)
          Prints a class distribution.
private  java.lang.String sourceClass(Attribute c, double[] dist)
           
 java.lang.String toSource(java.lang.String className)
          Returns the decision tree as Java source code.
 java.lang.String toString()
          Returns a description of the classifier.
private  double variance(double[][] s, double[] sS, double[] sumOfWeights)
          Computes variance for subsets.
private  int whichSubset(Instance instance)
          Returns the subset an instance falls into.
 
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, getOptions, listOptions, makeCopies, setDebug, setOptions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_AttIndex

private int m_AttIndex
The attribute used for classification.


m_SplitPoint

private double m_SplitPoint
The split point (index respectively).


m_Distribution

private double[][] m_Distribution
The distribution of class values or the means in each subset.


m_Instances

private Instances m_Instances
The instances used for training.

Constructor Detail

DecisionStump

public DecisionStump()
Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing classifier

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

buildClassifier

public void buildClassifier(Instances instances)
                     throws java.lang.Exception
Generates the classifier.

Specified by:
buildClassifier in class Classifier
Parameters:
instances - set of instances serving as training data
Throws:
java.lang.Exception - if the classifier has not been generated successfully

distributionForInstance

public double[] distributionForInstance(Instance instance)
                                 throws java.lang.Exception
Calculates the class membership probabilities for the given test instance.

Overrides:
distributionForInstance in class Classifier
Parameters:
instance - the instance to be classified
Returns:
predicted class probability distribution
Throws:
java.lang.Exception - if distribution can't be computed

toSource

public java.lang.String toSource(java.lang.String className)
                          throws java.lang.Exception
Returns the decision tree as Java source code.

Specified by:
toSource in interface Sourcable
Parameters:
className - the name that should be given to the source class.
Returns:
the tree as Java source code
Throws:
java.lang.Exception - if something goes wrong

sourceClass

private java.lang.String sourceClass(Attribute c,
                                     double[] dist)

toString

public java.lang.String toString()
Returns a description of the classifier.

Returns:
a description of the classifier as a string.

printDist

private java.lang.String printDist(double[] dist)
                            throws java.lang.Exception
Prints a class distribution.

Parameters:
dist - the class distribution to print
Returns:
the distribution as a string
Throws:
java.lang.Exception - if distribution can't be printed

printClass

private java.lang.String printClass(double[] dist)
                             throws java.lang.Exception
Prints a classification.

Parameters:
dist - the class distribution
Returns:
the classificationn as a string
Throws:
java.lang.Exception - if the classification can't be printed

findSplitNominal

private double findSplitNominal(int index)
                         throws java.lang.Exception
Finds best split for nominal attribute and returns value.

Parameters:
index - attribute index
Returns:
value of criterion for the best split
Throws:
java.lang.Exception - if something goes wrong

findSplitNominalNominal

private double findSplitNominalNominal(int index)
                                throws java.lang.Exception
Finds best split for nominal attribute and nominal class and returns value.

Parameters:
index - attribute index
Returns:
value of criterion for the best split
Throws:
java.lang.Exception - if something goes wrong

findSplitNominalNumeric

private double findSplitNominalNumeric(int index)
                                throws java.lang.Exception
Finds best split for nominal attribute and numeric class and returns value.

Parameters:
index - attribute index
Returns:
value of criterion for the best split
Throws:
java.lang.Exception - if something goes wrong

findSplitNumeric

private double findSplitNumeric(int index)
                         throws java.lang.Exception
Finds best split for numeric attribute and returns value.

Parameters:
index - attribute index
Returns:
value of criterion for the best split
Throws:
java.lang.Exception - if something goes wrong

findSplitNumericNominal

private double findSplitNumericNominal(int index)
                                throws java.lang.Exception
Finds best split for numeric attribute and nominal class and returns value.

Parameters:
index - attribute index
Returns:
value of criterion for the best split
Throws:
java.lang.Exception - if something goes wrong

findSplitNumericNumeric

private double findSplitNumericNumeric(int index)
                                throws java.lang.Exception
Finds best split for numeric attribute and numeric class and returns value.

Parameters:
index - attribute index
Returns:
value of criterion for the best split
Throws:
java.lang.Exception - if something goes wrong

variance

private double variance(double[][] s,
                        double[] sS,
                        double[] sumOfWeights)
Computes variance for subsets.


whichSubset

private int whichSubset(Instance instance)
                 throws java.lang.Exception
Returns the subset an instance falls into.

Throws:
java.lang.Exception

main

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

Parameters:
argv - the options