weka.classifiers.trees

## Class J48

- java.lang.Object
- - weka.classifiers.AbstractClassifier
  - - weka.classifiers.trees.J48

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

      public class J48
      extends AbstractClassifier
      implements OptionHandler, Drawable, Matchable, Sourcable, WeightedInstancesHandler, Summarizable, AdditionalMeasureProducer, TechnicalInformationHandler, PartitionGenerator

  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: 14534 $
  Author:
    Eibe Frank (eibe@cs.waikato.ac.nz)
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class weka.classifiers.AbstractClassifier

      `BATCH_SIZE_DEFAULT, NUM_DECIMAL_PLACES_DEFAULT`

    - ### Fields inherited from interface weka.core.Drawable

      `BayesNet, Newick, NOT_DRAWABLE, TREE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `J48()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `binarySplitsTipText()` Returns the tip text for this property
    `void` | `buildClassifier(Instances instances)` Generates the classifier.
    `double` | `classifyInstance(Instance instance)` Classifies an instance.
    `java.lang.String` | `collapseTreeTipText()` Returns the tip text for this property
    `java.lang.String` | `confidenceFactorTipText()` Returns the tip text for this property
    `double[]` | `distributionForInstance(Instance instance)` Returns class probabilities for an instance.
    `java.lang.String` | `doNotMakeSplitPointActualValueTipText()` Returns the tip text for this property
    `java.util.Enumeration<java.lang.String>` | `enumerateMeasures()` Returns an enumeration of the additional measure names
    `void` | `generatePartition(Instances data)` Builds the classifier to generate a partition.
    `boolean` | `getBinarySplits()` Get the value of binarySplits.
    `Capabilities` | `getCapabilities()` Returns default capabilities of the classifier.
    `boolean` | `getCollapseTree()` Get the value of collapseTree.
    `float` | `getConfidenceFactor()` Get the value of CF.
    `boolean` | `getDoNotMakeSplitPointActualValue()` Gets the value of doNotMakeSplitPointActualValue.
    `double` | `getMeasure(java.lang.String additionalMeasureName)` Returns the value of the named measure
    `double[]` | `getMembershipValues(Instance inst)` Computes an array that indicates node membership.
    `int` | `getMinNumObj()` Get the value of minNumObj.
    `int` | `getNumFolds()` Get the value of numFolds.
    `java.lang.String[]` | `getOptions()` Gets the current settings of the Classifier.
    `boolean` | `getReducedErrorPruning()` Get the value of reducedErrorPruning.
    `java.lang.String` | `getRevision()` Returns the revision string.
    `boolean` | `getSaveInstanceData()` Check whether instance data is to be saved.
    `int` | `getSeed()` Get the value of Seed.
    `boolean` | `getSubtreeRaising()` Get the value of subtreeRaising.
    `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.
    `boolean` | `getUnpruned()` Get the value of unpruned.
    `boolean` | `getUseLaplace()` Get the value of useLaplace.
    `boolean` | `getUseMDLcorrection()` Get the value of useMDLcorrection.
    `java.lang.String` | `globalInfo()` Returns a string describing classifier
    `java.lang.String` | `graph()` Returns graph describing the tree.
    `int` | `graphType()` Returns the type of graph this classifier represents.
    `java.util.Enumeration<Option>` | `listOptions()` Returns an enumeration describing the available options.
    `static void` | `main(java.lang.String[] argv)` Main method for testing this class
    `double` | `measureNumLeaves()` Returns the number of leaves
    `double` | `measureNumRules()` Returns the number of rules (same as number of leaves)
    `double` | `measureTreeSize()` Returns the size of the tree
    `java.lang.String` | `minNumObjTipText()` Returns the tip text for this property
    `int` | `numElements()` Returns the number of elements in the partition.
    `java.lang.String` | `numFoldsTipText()` Returns the tip text for this property
    `java.lang.String` | `prefix()` Returns tree in prefix order.
    `java.lang.String` | `reducedErrorPruningTipText()` Returns the tip text for this property
    `java.lang.String` | `saveInstanceDataTipText()` Returns the tip text for this property
    `java.lang.String` | `seedTipText()` Returns the tip text for this property
    `void` | `setBinarySplits(boolean v)` Set the value of binarySplits.
    `void` | `setCollapseTree(boolean v)` Set the value of collapseTree.
    `void` | `setConfidenceFactor(float v)` Set the value of CF.
    `void` | `setDoNotMakeSplitPointActualValue(boolean m_doNotMakeSplitPointActualValue)` Sets the value of doNotMakeSplitPointActualValue.
    `void` | `setMinNumObj(int v)` Set the value of minNumObj.
    `void` | `setNumFolds(int v)` Set the value of numFolds.
    `void` | `setOptions(java.lang.String[] options)` Parses a given list of options.
    `void` | `setReducedErrorPruning(boolean v)` Set the value of reducedErrorPruning.
    `void` | `setSaveInstanceData(boolean v)` Set whether instance data is to be saved.
    `void` | `setSeed(int newSeed)` Set the value of Seed.
    `void` | `setSubtreeRaising(boolean v)` Set the value of subtreeRaising.
    `void` | `setUnpruned(boolean v)` Set the value of unpruned.
    `void` | `setUseLaplace(boolean newuseLaplace)` Set the value of useLaplace.
    `void` | `setUseMDLcorrection(boolean newuseMDLcorrection)` Set the value of useMDLcorrection.
    `java.lang.String` | `subtreeRaisingTipText()` Returns the tip text for this property
    `java.lang.String` | `toSource(java.lang.String className)` Returns tree as an if-then statement.
    `java.lang.String` | `toString()` Returns a description of the classifier.
    `java.lang.String` | `toSummaryString()` Returns a superconcise version of the model
    `java.lang.String` | `unprunedTipText()` Returns the tip text for this property
    `java.lang.String` | `useLaplaceTipText()` Returns the tip text for this property
    `java.lang.String` | `useMDLcorrectionTipText()` Returns the tip text for this property

    - ### Methods inherited from class weka.classifiers.AbstractClassifier

      `batchSizeTipText, debugTipText, distributionsForInstances, doNotCheckCapabilitiesTipText, forName, getBatchSize, getDebug, getDoNotCheckCapabilities, getNumDecimalPlaces, implementsMoreEfficientBatchPrediction, makeCopies, makeCopy, numDecimalPlacesTipText, postExecution, preExecution, run, runClassifier, setBatchSize, setDebug, setDoNotCheckCapabilities, setNumDecimalPlaces`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### 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

    - #### 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 `Classifier`
      Specified by:
        `getCapabilities` in interface `CapabilitiesHandler`
      Overrides:
        `getCapabilities` in class `AbstractClassifier`
      Returns:
        the capabilities of this classifier
      See Also:
        `Capabilities`

    - #### buildClassifier

          public void buildClassifier(Instances instances)
                               throws java.lang.Exception

      Generates the classifier.
      Specified by:
        `buildClassifier` in interface `Classifier`
      Parameters:
        `instances` - the data to train the classifier with
      Throws:
        `java.lang.Exception` - if classifier can't be built successfully

    - #### classifyInstance

          public double classifyInstance(Instance instance)
                                  throws java.lang.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:
        `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.
      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:
        `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 describing the tree
      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 in prefix order
      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 of the Java class
      Returns:
        the tree as a Java if-then type statement
      Throws:
        `java.lang.Exception` - if something goes wrong

    - #### listOptions

          public java.util.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(java.lang.String[] options)
                          throws java.lang.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:
        `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 `AbstractClassifier`
      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.

    - #### useMDLcorrectionTipText

          public java.lang.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 java.lang.String toString()

      Returns a description of the classifier.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a description of the classifier

    - #### toSummaryString

          public java.lang.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 java.util.Enumeration<java.lang.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(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.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.

    - #### collapseTreeTipText

          public java.lang.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 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

    - #### doNotMakeSplitPointActualValueTipText

          public java.lang.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 java.lang.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 java.lang.Exception

      Builds the classifier to generate a partition.
      Specified by:
        `generatePartition` in interface `PartitionGenerator`
      Throws:
        `java.lang.Exception`

    - #### getMembershipValues

          public double[] getMembershipValues(Instance inst)
                                       throws java.lang.Exception

      Computes an array that indicates node membership.
      Specified by:
        `getMembershipValues` in interface `PartitionGenerator`
      Throws:
        `java.lang.Exception`

    - #### numElements

          public int numElements()
                          throws java.lang.Exception

      Returns the number of elements in the partition.
      Specified by:
        `numElements` in interface `PartitionGenerator`
      Throws:
        `java.lang.Exception`

    - #### main

          public static void main(java.lang.String[] argv)

      Main method for testing this class
      Parameters:
        `argv` - the commandline options