Class J48

All Implemented Interfaces:
Serializable, Cloneable, Classifier, Sourcable, AdditionalMeasureProducer, BatchPredictor, CapabilitiesHandler, CapabilitiesIgnorer, CommandlineRunnable, Drawable, Matchable, OptionHandler, PartitionGenerator, RevisionHandler, Summarizable, TechnicalInformationHandler, WeightedInstancesHandler

Class for generating a pruned or unpruned C4.5 decision tree. For more information, see

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

BibTeX:

 @book{Quinlan1993,
    address = {San Mateo, CA},
    author = {Ross Quinlan},
    publisher = {Morgan Kaufmann Publishers},
    title = {C4.5: Programs for Machine Learning},
    year = {1993}
 }
 

Valid options are:

 -U
  Use unpruned tree.
 
 -O
  Do not collapse tree.
 
 -C <pruning confidence>
  Set confidence threshold for pruning.
  (default 0.25)
 
 -M <minimum number of instances>
  Set minimum number of instances per leaf.
  (default 2)
 
 -R
  Use reduced error pruning.
 
 -N <number of folds>
  Set number of folds for reduced error
  pruning. One fold is used as pruning set.
  (default 3)
 
 -B
  Use binary splits only.
 
 -S
  Don't perform subtree raising.
 
 -L
  Do not clean up after the tree has been built.
 
 -A
  Laplace smoothing for predicted probabilities.
 
 -J
  Do not use MDL correction for info gain on numeric attributes.
 
 -Q <seed>
  Seed for random data shuffling (default 1).
 
 -doNotMakeSplitPointActualValue
  Do not make split point actual value.
 
Version:
$Revision: 15519 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz)
See Also:
  • Constructor Details

    • J48

      public J48()
  • Method Details

    • globalInfo

      public String globalInfo()
      Returns a string describing 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
    • getCapabilities

      public Capabilities getCapabilities()
      Returns default capabilities of the classifier.
      Specified by:
      getCapabilities in interface CapabilitiesHandler
      Specified by:
      getCapabilities in interface Classifier
      Overrides:
      getCapabilities in class AbstractClassifier
      Returns:
      the capabilities of this classifier
      See Also:
    • buildClassifier

      public void buildClassifier(Instances instances) throws Exception
      Generates the classifier.
      Specified by:
      buildClassifier in interface Classifier
      Parameters:
      instances - the data to train the classifier with
      Throws:
      Exception - if classifier can't be built successfully
    • classifyInstance

      public double classifyInstance(Instance instance) throws Exception
      Classifies an instance.
      Specified by:
      classifyInstance in interface Classifier
      Overrides:
      classifyInstance in class AbstractClassifier
      Parameters:
      instance - the instance to classify
      Returns:
      the classification for the instance
      Throws:
      Exception - if instance can't be classified successfully
    • distributionForInstance

      public final double[] distributionForInstance(Instance instance) throws Exception
      Returns class probabilities for an instance.
      Specified by:
      distributionForInstance in interface Classifier
      Overrides:
      distributionForInstance in class AbstractClassifier
      Parameters:
      instance - the instance to calculate the class probabilities for
      Returns:
      the class probabilities
      Throws:
      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 String graph() throws Exception
      Returns graph describing the tree.
      Specified by:
      graph in interface Drawable
      Returns:
      the graph describing the tree
      Throws:
      Exception - if graph can't be computed
    • prefix

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

      public String toSource(String className) throws Exception
      Returns tree as an if-then statement.
      Specified by:
      toSource in interface Sourcable
      Parameters:
      className - the name of the Java class
      Returns:
      the tree as a Java if-then type statement
      Throws:
      Exception - if something goes wrong
    • listOptions

      public Enumeration<Option> 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 AbstractClassifier
      Returns:
      an enumeration of all the available options.
    • setOptions

      public void setOptions(String[] options) throws Exception
      Parses a given list of options. Valid options are:

       -U
        Use unpruned tree.
       
       -O
        Do not collapse tree.
       
       -C <pruning confidence>
        Set confidence threshold for pruning.
        (default 0.25)
       
       -M <minimum number of instances>
        Set minimum number of instances per leaf.
        (default 2)
       
       -R
        Use reduced error pruning.
       
       -N <number of folds>
        Set number of folds for reduced error
        pruning. One fold is used as pruning set.
        (default 3)
       
       -B
        Use binary splits only.
       
       -S
        Don't perform subtree raising.
       
       -L
        Do not clean up after the tree has been built.
       
       -A
        Laplace smoothing for predicted probabilities.
       
       -J
        Do not use MDL correction for info gain on numeric attributes.
       
       -Q <seed>
        Seed for random data shuffling (default 1).
       
       -doNotMakeSplitPointActualValue
        Do not make split point actual value.
       
      Specified by:
      setOptions in interface OptionHandler
      Overrides:
      setOptions in class AbstractClassifier
      Parameters:
      options - the list of options as an array of strings
      Throws:
      Exception - if an option is not supported
    • getOptions

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

      public 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 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.
    • useMDLcorrectionTipText

      public String useMDLcorrectionTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • getUseMDLcorrection

      public boolean getUseMDLcorrection()
      Get the value of useMDLcorrection.
      Returns:
      Value of useMDLcorrection.
    • setUseMDLcorrection

      public void setUseMDLcorrection(boolean newuseMDLcorrection)
      Set the value of useMDLcorrection.
      Parameters:
      newuseMDLcorrection - Value to assign to useMDLcorrection.
    • toString

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

      public String toSummaryString()
      Returns a superconcise version of the model
      Specified by:
      toSummaryString in interface Summarizable
      Returns:
      a summary of the model
    • 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 Enumeration<String> 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(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:
      IllegalArgumentException - if the named measure is not supported
    • unprunedTipText

      public 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.
    • collapseTreeTipText

      public String collapseTreeTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • getCollapseTree

      public boolean getCollapseTree()
      Get the value of collapseTree.
      Returns:
      Value of collapseTree.
    • setCollapseTree

      public void setCollapseTree(boolean v)
      Set the value of collapseTree.
      Parameters:
      v - Value to assign to collapseTree.
    • confidenceFactorTipText

      public 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 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 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 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 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 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 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
    • doNotMakeSplitPointActualValueTipText

      public String doNotMakeSplitPointActualValueTipText()
      Returns the tip text for this property
      Returns:
      tip text for this property suitable for displaying in the explorer/experimenter gui
    • getDoNotMakeSplitPointActualValue

      public boolean getDoNotMakeSplitPointActualValue()
      Gets the value of doNotMakeSplitPointActualValue.
      Returns:
      the value
    • setDoNotMakeSplitPointActualValue

      public void setDoNotMakeSplitPointActualValue(boolean m_doNotMakeSplitPointActualValue)
      Sets the value of doNotMakeSplitPointActualValue.
      Parameters:
      m_doNotMakeSplitPointActualValue - the value to set
    • getRevision

      public String getRevision()
      Returns the revision string.
      Specified by:
      getRevision in interface RevisionHandler
      Overrides:
      getRevision in class AbstractClassifier
      Returns:
      the revision
    • generatePartition

      public void generatePartition(Instances data) throws Exception
      Builds the classifier to generate a partition.
      Specified by:
      generatePartition in interface PartitionGenerator
      Throws:
      Exception
    • getMembershipValues

      public double[] getMembershipValues(Instance inst) throws Exception
      Computes an array that indicates node membership.
      Specified by:
      getMembershipValues in interface PartitionGenerator
      Throws:
      Exception
    • numElements

      public int numElements() throws Exception
      Returns the number of elements in the partition.
      Specified by:
      numElements in interface PartitionGenerator
      Throws:
      Exception
    • main

      public static void main(String[] argv)
      Main method for testing this class
      Parameters:
      argv - the commandline options