Class RuleNode2

  • All Implemented Interfaces:
    Serializable, Cloneable, weka.classifiers.Classifier, weka.core.BatchPredictor, weka.core.CapabilitiesHandler, weka.core.CapabilitiesIgnorer, weka.core.CommandlineRunnable, 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$
    Author:
    Mark Hall (mhall@cs.waikato.ac.nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      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

        BATCH_SIZE_DEFAULT, m_BatchSize, m_Debug, m_DoNotCheckCapabilities, m_numDecimalPlaces, NUM_DECIMAL_PLACES_DEFAULT
    • Constructor Summary

      Constructors 
      Constructor Description
      RuleNode2​(double globalDev, double globalAbsDev, RuleNode2 parent)
      Creates a new RuleNode instance.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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

        batchSizeTipText, debugTipText, distributionForInstance, distributionsForInstances, doNotCheckCapabilitiesTipText, forName, getBatchSize, getCapabilities, getDebug, getDoNotCheckCapabilities, getNumDecimalPlaces, getOptions, implementsMoreEfficientBatchPrediction, listOptions, makeCopies, makeCopy, numDecimalPlacesTipText, postExecution, preExecution, run, runClassifier, setBatchSize, setDebug, setDoNotCheckCapabilities, setNumDecimalPlaces, setOptions
    • 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