weka.classifiers.trees.m5
Class RuleNode2

java.lang.Object
  extended by weka.classifiers.AbstractClassifier
      extended by weka.classifiers.trees.m5.RuleNode2
All Implemented Interfaces:
Serializable, Cloneable, weka.classifiers.Classifier, weka.core.CapabilitiesHandler, weka.core.OptionHandler, weka.core.RevisionHandler

public class RuleNode2
extends weka.classifiers.AbstractClassifier

Constructs a node for use in an m5 tree or rule

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

Field Summary
protected  RuleNode2 m_left
          left child node
protected  int m_numInstances
          the number of instances reaching this node
 int m_numParameters
          the number of paramters in the chosen model for this node---either the subtree model or the linear model.
protected  RuleNode2 m_right
          right child node
 
Fields inherited from class weka.classifiers.AbstractClassifier
m_Debug
 
Constructor Summary
RuleNode2(double globalDev, double globalAbsDev, RuleNode2 parent)
          Creates a new RuleNode instance.
 
Method Summary
protected  int assignIDs(int lastID)
          Assigns a unique identifier to each node in the tree
 void buildClassifier(weka.core.Instances data)
          Build this node (find an attribute and split point)
 double classifyInstance(weka.core.Instance inst)
          Classify an instance using this node.
 void findBestLeaf(double[] maxCoverage, RuleNode2[] bestLeaf)
          Find the leaf with greatest coverage
 double getMinNumInstances()
          Get the minimum number of instances to allow at a leaf node
 weka.classifiers.trees.m5.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.
 String getRevision()
          Returns the revision string.
 void graph(StringBuffer text)
          Assign a unique identifier to each node in the tree and then calls graphTree
protected  void graphTree(StringBuffer text)
          Return a dotty style string describing the tree
 void installLinearModels()
          Traverses the tree and installs linear models at each node.
 void installSmoothedModels()
           
 boolean isLeaf()
          Return true if this node is a leaf
 RuleNode2 leftNode()
          Get the left child of this node
 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
 RuleNode2 parentNode()
          Get the parent of this node
 void printAllModels()
          Print all the linear models at the learf (debugging purposes)
 String printLeafModels()
          print all leaf models
 String printNodeLinearModel()
          print the linear model at this node
 void prune()
          Recursively prune the tree
 void returnLeaves(weka.core.FastVector[] v)
          Return a list containing all the leaves in the tree
 RuleNode2 rightNode()
          Get the right child of this node
protected  double rootMeanSquaredError()
          Get the root mean squared error at 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.
protected  void setSaveInstances(boolean save)
          Set whether to save instances for visualization purposes.
protected static double smoothingOriginal(double n, double pred, double supportPred)
          Applies the m5 smoothing procedure to a prediction
 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
 String toString()
          print the linear model at this node
 String treeToString(int level)
          Recursively builds a textual description of the tree
 
Methods inherited from class weka.classifiers.AbstractClassifier
debugTipText, distributionForInstance, forName, getCapabilities, getDebug, getOptions, listOptions, makeCopies, makeCopy, runClassifier, setDebug, setOptions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_numInstances

protected int m_numInstances
the number of instances reaching this node


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


m_left

protected RuleNode2 m_left
left child node


m_right

protected RuleNode2 m_right
right child node

Constructor Detail

RuleNode2

public RuleNode2(double globalDev,
                 double globalAbsDev,
                 RuleNode2 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(weka.core.Instances data)
                     throws Exception
Build this node (find an attribute and split point)

Parameters:
data - the instances on which to build this node
Throws:
Exception - if an error occurs

classifyInstance

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

Specified by:
classifyInstance in interface weka.classifiers.Classifier
Overrides:
classifyInstance in class weka.classifiers.AbstractClassifier
Parameters:
inst - the instance to classify
Returns:
the prediction for this instance
Throws:
Exception - if an error occurs

smoothingOriginal

protected static double smoothingOriginal(double n,
                                          double pred,
                                          double supportPred)
                                   throws Exception
Applies the m5 smoothing procedure to a prediction

Parameters:
n - number of instances in selected child of this node
pred - the prediction so far
supportPred - the prediction of the linear model at this node
Returns:
the current prediction smoothed with the prediction of the linear model at this node
Throws:
Exception - if an error occurs

split

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

Throws:
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 String toString()
print the linear model at this node

Overrides:
toString in class Object
Returns:
the linear model

printNodeLinearModel

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

Returns:
the linear model at this node

printLeafModels

public String printLeafModels()
print all leaf models

Returns:
the leaf models

nodeToString

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

Returns:
a string describing this node

treeToString

public 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 Exception
Traverses the tree and installs linear models at each node. This method must be called if pruning is not to be performed.

Throws:
Exception - if an error occurs

installSmoothedModels

public void installSmoothedModels()
                           throws Exception
Throws:
Exception

prune

public void prune()
           throws Exception
Recursively prune the tree

Throws:
Exception - if an error occurs

findBestLeaf

public void findBestLeaf(double[] maxCoverage,
                         RuleNode2[] 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(weka.core.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 RuleNode2 parentNode()
Get the parent of this node

Returns:
the parent of this node

leftNode

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

Returns:
the left child of this node

rightNode

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

rootMeanSquaredError

protected double rootMeanSquaredError()
Get the root mean squared error at this node

Returns:
the root mean squared error

getModel

public weka.classifiers.trees.m5.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)


assignIDs

protected int assignIDs(int lastID)
Assigns a unique identifier to each node in the tree

Parameters:
lastID - last id number used
Returns:
ID after processing child nodes

graph

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

Parameters:
text - a StringBuffer value

graphTree

protected void graphTree(StringBuffer text)
Return a dotty style string describing the tree

Parameters:
text - a StringBuffer value

setSaveInstances

protected void setSaveInstances(boolean save)
Set whether to save instances for visualization purposes. Default is to save memory.

Parameters:
save - a boolean value

getRevision

public String getRevision()
Returns the revision string.

Specified by:
getRevision in interface weka.core.RevisionHandler
Overrides:
getRevision in class weka.classifiers.AbstractClassifier
Returns:
the revision


Copyright © 2012 University of Waikato, Hamilton, NZ. All Rights Reserved.