weka.classifiers.j48
Class ClassifierTree

java.lang.Object
  |
  +--weka.classifiers.j48.ClassifierTree
All Implemented Interfaces:
Drawable, java.io.Serializable
Direct Known Subclasses:
C45PruneableClassifierTree, PruneableClassifierTree

public class ClassifierTree
extends java.lang.Object
implements Drawable, java.io.Serializable

Class for handling a tree structure used for classification.

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

Field Summary
protected  int m_id
          The id for the node.
protected  boolean m_isEmpty
          True if node is empty.
protected  boolean m_isLeaf
          True if node is leaf.
protected  ClassifierSplitModel m_localModel
          Local model at node.
protected  ClassifierTree[] m_sons
          References to sons.
protected  Distribution m_test
          The pruning instances.
protected  ModelSelection m_toSelectModel
          The model selection method.
protected  Instances m_train
          The training instances.
 
Constructor Summary
ClassifierTree(ModelSelection toSelectLocModel)
          Constructor.
 
Method Summary
 int assignIDs(int lastID)
          Assigns a uniqe id to every node in the tree.
 void buildClassifier(Instances data)
          Method for building a classifier tree.
 void buildTree(Instances data, boolean keepData)
          Builds the tree structure.
 void buildTree(Instances train, Instances test, boolean keepData)
          Builds the tree structure with hold out set
 double classifyInstance(Instance instance)
          Classifies an instance.
 void cleanup(Instances justHeaderInfo)
          Cleanup in order to save memory.
 double[] distributionForInstance(Instance instance, boolean useLaplace)
          Returns class probabilities for a weighted instance.
protected  ClassifierTree getNewTree(Instances data)
          Returns a newly created tree.
protected  ClassifierTree getNewTree(Instances train, Instances test)
          Returns a newly created tree.
 java.lang.String graph()
          Returns graph describing the tree.
protected static long nextID()
          Gets the next unique node ID.
 int numLeaves()
          Returns number of leaves in tree structure.
 int numNodes()
          Returns number of nodes in tree structure.
 java.lang.String prefix()
          Returns tree in prefix order.
protected static void resetID()
          Resets the unique node ID counter (e.g.
 java.lang.StringBuffer[] toSource(java.lang.String className)
          Returns source code for the tree as an if-then statement.
 java.lang.String toString()
          Prints tree structure.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_toSelectModel

protected ModelSelection m_toSelectModel
The model selection method.

m_localModel

protected ClassifierSplitModel m_localModel
Local model at node.

m_sons

protected ClassifierTree[] m_sons
References to sons.

m_isLeaf

protected boolean m_isLeaf
True if node is leaf.

m_isEmpty

protected boolean m_isEmpty
True if node is empty.

m_train

protected Instances m_train
The training instances.

m_test

protected Distribution m_test
The pruning instances.

m_id

protected int m_id
The id for the node.
Constructor Detail

ClassifierTree

public ClassifierTree(ModelSelection toSelectLocModel)
Constructor.
Method Detail

nextID

protected static long nextID()
Gets the next unique node ID.
Returns:
the next unique node ID.

resetID

protected static void resetID()
Resets the unique node ID counter (e.g. between repeated separate print types)

buildClassifier

public void buildClassifier(Instances data)
                     throws java.lang.Exception
Method for building a classifier tree.
Throws:
java.lang.Exception - if something goes wrong

buildTree

public void buildTree(Instances data,
                      boolean keepData)
               throws java.lang.Exception
Builds the tree structure.
Parameters:
data - the data for which the tree structure is to be generated.
keepData - is training data to be kept?
Throws:
java.lang.Exception - if something goes wrong

buildTree

public void buildTree(Instances train,
                      Instances test,
                      boolean keepData)
               throws java.lang.Exception
Builds the tree structure with hold out set
Parameters:
train - the data for which the tree structure is to be generated.
test - the test data for potential pruning
keepData - is training Data to be kept?
Throws:
java.lang.Exception - if something goes wrong

classifyInstance

public double classifyInstance(Instance instance)
                        throws java.lang.Exception
Classifies an instance.
Throws:
java.lang.Exception - if something goes wrong

cleanup

public final void cleanup(Instances justHeaderInfo)
Cleanup in order to save memory.

distributionForInstance

public final double[] distributionForInstance(Instance instance,
                                              boolean useLaplace)
                                       throws java.lang.Exception
Returns class probabilities for a weighted instance.
Throws:
java.lang.Exception - if something goes wrong

assignIDs

public int assignIDs(int lastID)
Assigns a uniqe id to every node in the tree.

graph

public java.lang.String graph()
                       throws java.lang.Exception
Returns graph describing the tree.
Specified by:
graph in interface Drawable
Throws:
java.lang.Exception - if something goes wrong

prefix

public java.lang.String prefix()
                        throws java.lang.Exception
Returns tree in prefix order.
Throws:
java.lang.Exception - if something goes wrong

toSource

public java.lang.StringBuffer[] toSource(java.lang.String className)
                                  throws java.lang.Exception
Returns source code for the tree as an if-then statement. The class is assigned to variable "p", and assumes the tested instance is named "i". The results are returned as two stringbuffers: a section of code for assignment of the class, and a section of code containing support code (eg: other support methods).
Parameters:
className - the classname that this static classifier has
Returns:
an array containing two stringbuffers, the first string containing assignment code, and the second containing source for support code.
Throws:
java.lang.Exception - if something goes wrong

numLeaves

public int numLeaves()
Returns number of leaves in tree structure.

numNodes

public int numNodes()
Returns number of nodes in tree structure.

toString

public java.lang.String toString()
Prints tree structure.
Overrides:
toString in class java.lang.Object

getNewTree

protected ClassifierTree getNewTree(Instances data)
                             throws java.lang.Exception
Returns a newly created tree.
Parameters:
data - the training data
Throws:
java.lang.Exception - if something goes wrong

getNewTree

protected ClassifierTree getNewTree(Instances train,
                                    Instances test)
                             throws java.lang.Exception
Returns a newly created tree.
Parameters:
data - the training data
test - the pruning data.
Throws:
java.lang.Exception - if something goes wrong