weka.classifiers.trees.j48
Class ClassifierTree

java.lang.Object
  extended byweka.classifiers.trees.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.

Version:
$Revision: 1.17 $
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.
private static long PRINTED_NODES
          For getting a unique ID when outputting the tree (hashcode isn't guaranteed unique)
 
Fields inherited from interface weka.core.Drawable
BayesNet, NOT_DRAWABLE, TREE
 
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.
private  void dumpTree(int depth, java.lang.StringBuffer text)
          Help method for printing tree structure.
protected  ClassifierTree getNewTree(Instances data)
          Returns a newly created tree.
protected  ClassifierTree getNewTree(Instances train, Instances test)
          Returns a newly created tree.
private  double getProbs(int classIndex, Instance instance, double weight)
          Help method for computing class probabilities of a given instance.
private  double getProbsLaplace(int classIndex, Instance instance, double weight)
          Help method for computing class probabilities of a given instance.
 java.lang.String graph()
          Returns graph describing the tree.
private  void graphTree(java.lang.StringBuffer text)
          Help method for printing tree structure as a graph.
 int graphType()
          Returns the type of graph this classifier represents.
private  ClassifierSplitModel localModel()
          Method just exists to make program easier to read.
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.
private  void prefixTree(java.lang.StringBuffer text)
          Prints the tree in prefix form
protected static void resetID()
          Resets the unique node ID counter (e.g.
private  ClassifierTree son(int index)
          Method just exists to make program easier to read.
 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.


PRINTED_NODES

private static long PRINTED_NODES
For getting a unique ID when outputting the tree (hashcode isn't guaranteed unique)

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.


graphType

public int graphType()
Returns the type of graph this classifier represents.

Specified by:
graphType in interface Drawable
Returns:
Drawable.TREE

graph

public java.lang.String graph()
                       throws java.lang.Exception
Returns graph describing the tree.

Specified by:
graph in interface Drawable
Returns:
the graph described by a string
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.


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:
test - the pruning data.
Throws:
java.lang.Exception - if something goes wrong

dumpTree

private void dumpTree(int depth,
                      java.lang.StringBuffer text)
               throws java.lang.Exception
Help method for printing tree structure.

Throws:
java.lang.Exception - if something goes wrong

graphTree

private void graphTree(java.lang.StringBuffer text)
                throws java.lang.Exception
Help method for printing tree structure as a graph.

Throws:
java.lang.Exception - if something goes wrong

prefixTree

private void prefixTree(java.lang.StringBuffer text)
                 throws java.lang.Exception
Prints the tree in prefix form

Throws:
java.lang.Exception

getProbsLaplace

private double getProbsLaplace(int classIndex,
                               Instance instance,
                               double weight)
                        throws java.lang.Exception
Help method for computing class probabilities of a given instance.

Throws:
java.lang.Exception - if something goes wrong

getProbs

private double getProbs(int classIndex,
                        Instance instance,
                        double weight)
                 throws java.lang.Exception
Help method for computing class probabilities of a given instance.

Throws:
java.lang.Exception - if something goes wrong

localModel

private ClassifierSplitModel localModel()
Method just exists to make program easier to read.


son

private ClassifierTree son(int index)
Method just exists to make program easier to read.