Package weka.classifiers.trees

# Class J48

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

All Implemented Interfaces:
  `Serializable`, `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: 15520 $
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
  Description
  `J48()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `binarySplitsTipText()`
  Returns the tip text for this property
  `void`
  `buildClassifier(Instances instances)`
  Generates the classifier.
  `double`
  `classifyInstance(Instance instance)`
  Classifies an instance.
  `String`
  `collapseTreeTipText()`
  Returns the tip text for this property
  `String`
  `confidenceFactorTipText()`
  Returns the tip text for this property
  `final double[]`
  `distributionForInstance(Instance instance)`
  Returns class probabilities for an instance.
  `String`
  `doNotMakeSplitPointActualValueTipText()`
  Returns the tip text for this property
  `Enumeration<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(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.
  `String[]`
  `getOptions()`
  Gets the current settings of the Classifier.
  `boolean`
  `getReducedErrorPruning()`
  Get the value of reducedErrorPruning.
  `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.
  `String`
  `globalInfo()`
  Returns a string describing classifier
  `String`
  `graph()`
  Returns graph describing the tree.
  `int`
  `graphType()`
  Returns the type of graph this classifier represents.
  `Enumeration<Option>`
  `listOptions()`
  Returns an enumeration describing the available options.
  `static void`
  `main(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
  `String`
  `minNumObjTipText()`
  Returns the tip text for this property
  `int`
  `numElements()`
  Returns the number of elements in the partition.
  `String`
  `numFoldsTipText()`
  Returns the tip text for this property
  `String`
  `prefix()`
  Returns tree in prefix order.
  `String`
  `reducedErrorPruningTipText()`
  Returns the tip text for this property
  `String`
  `saveInstanceDataTipText()`
  Returns the tip text for this property
  `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(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.
  `String`
  `subtreeRaisingTipText()`
  Returns the tip text for this property
  `String`
  `toSource(String className)`
  Returns tree as an if-then statement.
  `String`
  `toString()`
  Returns a description of the classifier.
  `String`
  `toSummaryString()`
  Returns a superconcise version of the model
  `String`
  `unprunedTipText()`
  Returns the tip text for this property
  `String`
  `useLaplaceTipText()`
  Returns the tip text for this property
  `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 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:
      - `Capabilities`

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