Class M5Base

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, AdditionalMeasureProducer, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler
    Direct Known Subclasses:
    M5P, M5Rules

    public abstract class M5Base
    extends Classifier
    implements AdditionalMeasureProducer, TechnicalInformationHandler
    M5Base. Implements base routines for generating M5 Model trees and rules.

    The original algorithm M5 was invented by Quinlan:
    Quinlan J. R. (1992). Learning with continuous classes. Proceedings of the Australian Joint Conference on Artificial Intelligence. 343--348. World Scientific, Singapore.

    Yong Wang made improvements and created M5':
    Wang, Y and Witten, I. H. (1997). Induction of model trees for predicting continuous classes. Proceedings of the poster papers of the European Conference on Machine Learning. University of Economics, Faculty of Informatics and Statistics, Prague.

    Valid options are:

    -U
    Use unsmoothed predictions.

    -R
    Build regression tree/rule rather than model tree/rule

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

      • M5Base

        public M5Base()
        Constructor
    • Method Detail

      • globalInfo

        public java.lang.String globalInfo()
        returns information about the classifier
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • getTechnicalInformation

        public TechnicalInformation getTechnicalInformation()
        Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
        Specified by:
        getTechnicalInformation in interface TechnicalInformationHandler
        Returns:
        the technical information about this class
      • listOptions

        public java.util.Enumeration listOptions()
        Returns an enumeration describing the available options
        Specified by:
        listOptions in interface OptionHandler
        Overrides:
        listOptions in class Classifier
        Returns:
        an enumeration of all the available options
      • setOptions

        public void setOptions​(java.lang.String[] options)
                        throws java.lang.Exception
        Parses a given list of options.

        Valid options are:

        -U
        Use unsmoothed predictions.

        -R
        Build a regression tree rather than a model tree.

        Specified by:
        setOptions in interface OptionHandler
        Overrides:
        setOptions in class Classifier
        Parameters:
        options - the list of options as an array of strings
        Throws:
        java.lang.Exception - if an option is not supported
      • getOptions

        public java.lang.String[] getOptions()
        Gets the current settings of the classifier.
        Specified by:
        getOptions in interface OptionHandler
        Overrides:
        getOptions in class Classifier
        Returns:
        an array of strings suitable for passing to setOptions
      • unprunedTipText

        public java.lang.String unprunedTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setUnpruned

        public void setUnpruned​(boolean unpruned)
        Use unpruned tree/rules
        Parameters:
        unpruned - true if unpruned tree/rules are to be generated
      • getUnpruned

        public boolean getUnpruned()
        Get whether unpruned tree/rules are being generated
        Returns:
        true if unpruned tree/rules are to be generated
      • generateRulesTipText

        public java.lang.String generateRulesTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • useUnsmoothedTipText

        public java.lang.String useUnsmoothedTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setUseUnsmoothed

        public void setUseUnsmoothed​(boolean s)
        Use unsmoothed predictions
        Parameters:
        s - true if unsmoothed predictions are to be used
      • getUseUnsmoothed

        public boolean getUseUnsmoothed()
        Get whether or not smoothing is being used
        Returns:
        true if unsmoothed predictions are to be used
      • buildRegressionTreeTipText

        public java.lang.String buildRegressionTreeTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getBuildRegressionTree

        public boolean getBuildRegressionTree()
        Get the value of regressionTree.
        Returns:
        Value of regressionTree.
      • setBuildRegressionTree

        public void setBuildRegressionTree​(boolean newregressionTree)
        Set the value of regressionTree.
        Parameters:
        newregressionTree - Value to assign to regressionTree.
      • minNumInstancesTipText

        public java.lang.String minNumInstancesTipText()
        Returns the tip text for this property
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setMinNumInstances

        public void setMinNumInstances​(double minNum)
        Set the minimum 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
      • buildClassifier

        public void buildClassifier​(Instances data)
                             throws java.lang.Exception
        Generates the classifier.
        Specified by:
        buildClassifier in class Classifier
        Parameters:
        data - set of instances serving as training data
        Throws:
        java.lang.Exception - if the classifier has not been generated successfully
      • classifyInstance

        public double classifyInstance​(Instance inst)
                                throws java.lang.Exception
        Calculates a prediction for an instance using a set of rules or an M5 model tree
        Overrides:
        classifyInstance in class Classifier
        Parameters:
        inst - the instance whos class value is to be predicted
        Returns:
        the prediction
        Throws:
        java.lang.Exception - if a prediction can't be made.
      • toString

        public java.lang.String toString()
        Returns a description of the classifier
        Overrides:
        toString in class java.lang.Object
        Returns:
        a description of the classifier as a String
      • enumerateMeasures

        public java.util.Enumeration enumerateMeasures()
        Returns an enumeration of the additional measure names
        Specified by:
        enumerateMeasures in interface AdditionalMeasureProducer
        Returns:
        an enumeration of the measure names
      • getMeasure

        public double getMeasure​(java.lang.String additionalMeasureName)
        Returns the value of the named measure
        Specified by:
        getMeasure in interface AdditionalMeasureProducer
        Parameters:
        additionalMeasureName - the name of the measure to query for its value
        Returns:
        the value of the named measure
        Throws:
        java.lang.Exception - if the named measure is not supported
      • measureNumRules

        public double measureNumRules()
        return the number of rules
        Returns:
        the number of rules (same as # linear models & # leaves in the tree)
      • getM5RootNode

        public RuleNode getM5RootNode()