weka.classifiers.trees.m5
Class RuleNode

java.lang.Object
  |
  +--weka.classifiers.Classifier
        |
        +--weka.classifiers.trees.m5.RuleNode
All Implemented Interfaces:
java.lang.Cloneable, OptionHandler, java.io.Serializable

public class RuleNode
extends Classifier

Constructs a node for use in an m5 tree or rule

Version:
$Revision: 1.8 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
 int m_numParameters
          the number of paramters in the chosen model for this node---either the subtree model or the linear model.
 
Constructor Summary
RuleNode(double globalDev, double globalAbsDev, RuleNode parent)
          Creates a new RuleNode instance.
 
Method Summary
 void buildClassifier(Instances data)
          Build this node (find an attribute and split point)
 double classifyInstance(Instance inst)
          Classify an instance using this node.
 void findBestLeaf(double[] maxCoverage, RuleNode[] bestLeaf)
          Find the leaf with greatest coverage
 double getMinNumInstances()
          Get the minimum number of instances to allow at a leaf node
 PreConstructedLinearModel getModel()
          Get the linear model at this node
 int getNumInstances()
          Return the number of instances that reach this node.
 boolean getRegressionTree()
          Get the value of regressionTree.
 void graph(java.lang.StringBuffer text)
          Assign a unique identifier to each node in the tree and then calls graphTree
 void installLinearModels()
          Traverses the tree and installs linear models at each node.
 void installSmoothedModels()
           
 boolean isLeaf()
          Return true if this node is a leaf
 RuleNode leftNode()
          Get the left child of this node
 java.lang.String nodeToString()
          Returns a description of this node (debugging purposes)
 int numberOfLinearModels()
          Get the number of linear models in the tree
 int numLeaves(int leafCounter)
          Sets the leaves' numbers
 RuleNode parentNode()
          Get the parent of this node
 void printAllModels()
          Print all the linear models at the learf (debugging purposes)
 java.lang.String printLeafModels()
          print all leaf models
 java.lang.String printNodeLinearModel()
          print the linear model at this node
 void prune()
          Recursively prune the tree
 void returnLeaves(FastVector[] v)
          Return a list containing all the leaves in the tree
 RuleNode rightNode()
          Get the right child of this node
 void setMinNumInstances(double minNum)
          Set the minumum number of instances to allow at a leaf node
 void setRegressionTree(boolean newregressionTree)
          Set the value of regressionTree.
 void split()
          Finds an attribute and split point for this node
 int splitAtt()
          Get the index of the splitting attribute for this node
 double splitVal()
          Get the split point for this node
 java.lang.String toString()
          print the linear model at this node
 java.lang.String treeToString(int level)
          Recursively builds a textual description of the tree
 
Methods inherited from class weka.classifiers.Classifier
debugTipText, distributionForInstance, forName, getDebug, getOptions, listOptions, makeCopies, setDebug, setOptions
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_numParameters

public int m_numParameters
the number of paramters in the chosen model for this node---either the subtree model or the linear model. The constant term is counted as a paramter---this is for pruning purposes

Constructor Detail

RuleNode

public RuleNode(double globalDev,
                double globalAbsDev,
                RuleNode parent)
Creates a new RuleNode instance.

Parameters:
globalDev - the global standard deviation of the class
globalAbsDev - the global absolute deviation of the class
parent - the parent of this node
Method Detail

buildClassifier

public void buildClassifier(Instances data)
                     throws java.lang.Exception
Build this node (find an attribute and split point)

Specified by:
buildClassifier in class Classifier
Parameters:
data - the instances on which to build this node
Throws:
java.lang.Exception - if an error occurs

classifyInstance

public double classifyInstance(Instance inst)
                        throws java.lang.Exception
Classify an instance using this node. Recursively calls classifyInstance on child nodes.

Overrides:
classifyInstance in class Classifier
Parameters:
inst - the instance to classify
Returns:
the prediction for this instance
Throws:
java.lang.Exception - if an error occurs

split

public void split()
           throws java.lang.Exception
Finds an attribute and split point for this node

Throws:
java.lang.Exception - if an error occurs

numLeaves

public int numLeaves(int leafCounter)
Sets the leaves' numbers

Parameters:
leafCounter - the number of leaves counted
Returns:
the number of the total leaves under the node

toString

public java.lang.String toString()
print the linear model at this node

Overrides:
toString in class java.lang.Object

printNodeLinearModel

public java.lang.String printNodeLinearModel()
print the linear model at this node


printLeafModels

public java.lang.String printLeafModels()
print all leaf models


nodeToString

public java.lang.String nodeToString()
Returns a description of this node (debugging purposes)

Returns:
a string describing this node

treeToString

public java.lang.String treeToString(int level)
Recursively builds a textual description of the tree

Parameters:
level - the level of this node
Returns:
string describing the tree

installLinearModels

public void installLinearModels()
                         throws java.lang.Exception
Traverses the tree and installs linear models at each node. This method must be called if pruning is not to be performed.

Throws:
java.lang.Exception - if an error occurs

installSmoothedModels

public void installSmoothedModels()
                           throws java.lang.Exception
java.lang.Exception

prune

public void prune()
           throws java.lang.Exception
Recursively prune the tree

Throws:
java.lang.Exception - if an error occurs

findBestLeaf

public void findBestLeaf(double[] maxCoverage,
                         RuleNode[] bestLeaf)
Find the leaf with greatest coverage

Parameters:
maxCoverage - the greatest coverage found so far
bestLeaf - the leaf with the greatest coverage

returnLeaves

public void returnLeaves(FastVector[] v)
Return a list containing all the leaves in the tree

Parameters:
v - a single element array containing a vector of leaves

parentNode

public RuleNode parentNode()
Get the parent of this node

Returns:
the parent of this node

leftNode

public RuleNode leftNode()
Get the left child of this node

Returns:
the left child of this node

rightNode

public RuleNode rightNode()
Get the right child of this node

Returns:
the right child of this node

splitAtt

public int splitAtt()
Get the index of the splitting attribute for this node

Returns:
the index of the splitting attribute

splitVal

public double splitVal()
Get the split point for this node

Returns:
the split point for this node

numberOfLinearModels

public int numberOfLinearModels()
Get the number of linear models in the tree

Returns:
the number of linear models

isLeaf

public boolean isLeaf()
Return true if this node is a leaf

Returns:
true if this node is a leaf

getModel

public PreConstructedLinearModel getModel()
Get the linear model at this node

Returns:
the linear model at this node

getNumInstances

public int getNumInstances()
Return the number of instances that reach this node.

Returns:
the number of instances at this node.

getRegressionTree

public boolean getRegressionTree()
Get the value of regressionTree.

Returns:
Value of regressionTree.

setMinNumInstances

public void setMinNumInstances(double minNum)
Set the minumum number of instances to allow at a leaf node

Parameters:
minNum - the minimum number of instances

getMinNumInstances

public double getMinNumInstances()
Get the minimum number of instances to allow at a leaf node

Returns:
a double value

setRegressionTree

public void setRegressionTree(boolean newregressionTree)
Set the value of regressionTree.

Parameters:
newregressionTree - Value to assign to regressionTree.

printAllModels

public void printAllModels()
Print all the linear models at the learf (debugging purposes)


graph

public void graph(java.lang.StringBuffer text)
Assign a unique identifier to each node in the tree and then calls graphTree

Parameters:
text - a StringBuffer value


Copyright (c) 2003 David Lindsay, Computer Learning Research Centre, Dept. Computer Science, Royal Holloway, University of London