Class J48

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, AdditionalMeasureProducer, Drawable, Matchable, OptionHandler, Sourcable, Summarizable, WeightedInstancesHandler

    public class J48
    extends Classifier
    implements OptionHandler, Drawable, Matchable, Sourcable, WeightedInstancesHandler, Summarizable, AdditionalMeasureProducer
    Class for generating an unpruned or a pruned C4.5 decision tree. For more information, see

    Ross Quinlan (1993). C4.5: Programs for Machine Learning, Morgan Kaufmann Publishers, San Mateo, CA.

    Valid options are:

    -U
    Use unpruned tree.

    -C confidence
    Set confidence threshold for pruning. (Default: 0.25)

    -M number
    Set minimum number of instances per leaf. (Default: 2)

    -R
    Use reduced error pruning. No subtree raising is performed.

    -N number
    Set number of folds for reduced error pruning. One fold is used as the pruning set. (Default: 3)

    -B
    Use binary splits for nominal attributes.

    -S
    Don't perform subtree raising.

    -L
    Do not clean up after the tree has been built.

    -A
    If set, Laplace smoothing is used for predicted probabilites.

    -Q
    The seed for reduced-error pruning.

    Version:
    $Revision: 1.2 $
    Author:
    Eibe Frank (eibe@cs.waikato.ac.nz)
    See Also:
    Serialized Form
    • Constructor Detail

      • J48

        public J48()
    • Method Detail

      • globalInfo

        public java.lang.String globalInfo()
        Returns a string describing classifier
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • buildClassifier

        public void buildClassifier​(Instances instances)
                             throws java.lang.Exception
        Generates the classifier.
        Specified by:
        buildClassifier in class Classifier
        Parameters:
        instances - set of instances serving as training data
        Throws:
        java.lang.Exception - if classifier can't be built successfully
      • classifyInstance

        public double classifyInstance​(Instance instance)
                                throws java.lang.Exception
        Classifies an instance.
        Overrides:
        classifyInstance in class Classifier
        Parameters:
        instance - the instance to be classified
        Returns:
        the predicted most likely class for the instance or Instance.missingValue() if no prediction is made
        Throws:
        java.lang.Exception - if instance can't be classified successfully
      • distributionForInstance

        public final double[] distributionForInstance​(Instance instance)
                                               throws java.lang.Exception
        Returns class probabilities for an instance.
        Overrides:
        distributionForInstance in class Classifier
        Parameters:
        instance - the instance to be classified
        Returns:
        an array containing the estimated membership probabilities of the test instance in each class or the numeric prediction
        Throws:
        java.lang.Exception - if distribution can't be computed successfully
      • 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 graph can't be computed
      • prefix

        public java.lang.String prefix()
                                throws java.lang.Exception
        Returns tree in prefix order.
        Specified by:
        prefix in interface Matchable
        Returns:
        the tree described as a string
        Throws:
        java.lang.Exception - if something goes wrong
      • toSource

        public java.lang.String toSource​(java.lang.String className)
                                  throws java.lang.Exception
        Returns tree as an if-then statement.
        Specified by:
        toSource in interface Sourcable
        Parameters:
        className - the name that should be given to the source class.
        Returns:
        the tree as a Java if-then type statement
        Throws:
        java.lang.Exception - if something goes wrong
      • listOptions

        public java.util.Enumeration listOptions()
        Returns an enumeration describing the available options. Valid options are:

        -U
        Use unpruned tree.

        -C confidence
        Set confidence threshold for pruning. (Default: 0.25)

        -M number
        Set minimum number of instances per leaf. (Default: 2)

        -R
        Use reduced error pruning. No subtree raising is performed.

        -N number
        Set number of folds for reduced error pruning. One fold is used as the pruning set. (Default: 3)

        -B
        Use binary splits for nominal attributes.

        -S
        Don't perform subtree raising.

        -L
        Do not clean up after the tree has been built. -A
        If set, Laplace smoothing is used for predicted probabilites.

        -Q
        The seed for reduced-error pruning.

        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.
        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
      • seedTipText

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

        public int getSeed()
        Get the value of Seed.
        Returns:
        Value of Seed.
      • setSeed

        public void setSeed​(int newSeed)
        Set the value of Seed.
        Parameters:
        newSeed - Value to assign to Seed.
      • useLaplaceTipText

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

        public boolean getUseLaplace()
        Get the value of useLaplace.
        Returns:
        Value of useLaplace.
      • setUseLaplace

        public void setUseLaplace​(boolean newuseLaplace)
        Set the value of useLaplace.
        Parameters:
        newuseLaplace - Value to assign to useLaplace.
      • toString

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

        public java.lang.String toSummaryString()
        Returns a superconcise version of the model
        Specified by:
        toSummaryString in interface Summarizable
        Returns:
        the object summarized as a string
      • measureTreeSize

        public double measureTreeSize()
        Returns the size of the tree
        Returns:
        the size of the tree
      • measureNumLeaves

        public double measureNumLeaves()
        Returns the number of leaves
        Returns:
        the number of leaves
      • measureNumRules

        public double measureNumRules()
        Returns the number of rules (same as number of leaves)
        Returns:
        the number of rules
      • 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:
        measureName - the name of the measure to query for its value
        Returns:
        the value of the named measure
        Throws:
        java.lang.IllegalArgumentException - if the named measure is not supported
      • 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
      • getUnpruned

        public boolean getUnpruned()
        Get the value of unpruned.
        Returns:
        Value of unpruned.
      • setUnpruned

        public void setUnpruned​(boolean v)
        Set the value of unpruned. Turns reduced-error pruning off if set.
        Parameters:
        v - Value to assign to unpruned.
      • confidenceFactorTipText

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

        public float getConfidenceFactor()
        Get the value of CF.
        Returns:
        Value of CF.
      • setConfidenceFactor

        public void setConfidenceFactor​(float v)
        Set the value of CF.
        Parameters:
        v - Value to assign to CF.
      • minNumObjTipText

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

        public int getMinNumObj()
        Get the value of minNumObj.
        Returns:
        Value of minNumObj.
      • setMinNumObj

        public void setMinNumObj​(int v)
        Set the value of minNumObj.
        Parameters:
        v - Value to assign to minNumObj.
      • reducedErrorPruningTipText

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

        public boolean getReducedErrorPruning()
        Get the value of reducedErrorPruning.
        Returns:
        Value of reducedErrorPruning.
      • setReducedErrorPruning

        public void setReducedErrorPruning​(boolean v)
        Set the value of reducedErrorPruning. Turns unpruned trees off if set.
        Parameters:
        v - Value to assign to reducedErrorPruning.
      • numFoldsTipText

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

        public int getNumFolds()
        Get the value of numFolds.
        Returns:
        Value of numFolds.
      • setNumFolds

        public void setNumFolds​(int v)
        Set the value of numFolds.
        Parameters:
        v - Value to assign to numFolds.
      • binarySplitsTipText

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

        public boolean getBinarySplits()
        Get the value of binarySplits.
        Returns:
        Value of binarySplits.
      • setBinarySplits

        public void setBinarySplits​(boolean v)
        Set the value of binarySplits.
        Parameters:
        v - Value to assign to binarySplits.
      • subtreeRaisingTipText

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

        public boolean getSubtreeRaising()
        Get the value of subtreeRaising.
        Returns:
        Value of subtreeRaising.
      • setSubtreeRaising

        public void setSubtreeRaising​(boolean v)
        Set the value of subtreeRaising.
        Parameters:
        v - Value to assign to subtreeRaising.
      • saveInstanceDataTipText

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

        public boolean getSaveInstanceData()
        Check whether instance data is to be saved.
        Returns:
        true if instance data is saved
      • setSaveInstanceData

        public void setSaveInstanceData​(boolean v)
        Set whether instance data is to be saved.
        Parameters:
        v - true if instance data is to be saved
      • main

        public static void main​(java.lang.String[] argv)
        Main method for testing this class
        Parameters:
        String - options