Class DecisionTable

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

    public class DecisionTable
    extends Classifier
    implements OptionHandler, WeightedInstancesHandler, AdditionalMeasureProducer, TechnicalInformationHandler
    Class for building and using a simple decision table majority classifier.

    For more information see:

    Ron Kohavi: The Power of Decision Tables. In: 8th European Conference on Machine Learning, 174-189, 1995.

    BibTeX:

     @inproceedings{Kohavi1995,
        author = {Ron Kohavi},
        booktitle = {8th European Conference on Machine Learning},
        pages = {174-189},
        publisher = {Springer},
        title = {The Power of Decision Tables},
        year = {1995}
     }
     

    Valid options are:

     -S <search method specification>
      Full class name of search method, followed
      by its options.
      eg: "weka.attributeSelection.BestFirst -D 1"
      (default weka.attributeSelection.BestFirst)
     -X <number of folds>
      Use cross validation to evaluate features.
      Use number of folds = 1 for leave one out CV.
      (Default = leave one out CV)
     -E <acc | rmse | mae | auc>
      Performance evaluation measure to use for selecting attributes.
      (Default = accuracy for discrete class and rmse for numeric class)
     -I
      Use nearest neighbour instead of global table majority.
     -R
      Display decision table rules.
     
     
     Options specific to search method weka.attributeSelection.BestFirst:
     
     -P <start set>
      Specify a starting set of attributes.
      Eg. 1,3,5-7.
     -D <0 = backward | 1 = forward | 2 = bi-directional>
      Direction of search. (default = 1).
     -N <num>
      Number of non-improving nodes to
      consider before terminating search.
     -S <num>
      Size of lookup cache for evaluated subsets.
      Expressed as a multiple of the number of
      attributes in the data set. (default = 1)
    Version:
    $Revision: 12089 $
    Author:
    Mark Hall (mhall@cs.waikato.ac.nz)
    See Also:
    Serialized Form
    • Constructor Detail

      • DecisionTable

        public DecisionTable()
        Constructor for a DecisionTable
    • 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
      • 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.
      • crossValTipText

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

        public void setCrossVal​(int folds)
        Sets the number of folds for cross validation (1 = leave one out)
        Parameters:
        folds - the number of folds
      • getCrossVal

        public int getCrossVal()
        Gets the number of folds for cross validation
        Returns:
        the number of cross validation folds
      • useIBkTipText

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

        public void setUseIBk​(boolean ibk)
        Sets whether IBk should be used instead of the majority class
        Parameters:
        ibk - true if IBk is to be used
      • getUseIBk

        public boolean getUseIBk()
        Gets whether IBk is being used instead of the majority class
        Returns:
        true if IBk is being used
      • displayRulesTipText

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

        public void setDisplayRules​(boolean rules)
        Sets whether rules are to be printed
        Parameters:
        rules - true if rules are to be printed
      • getDisplayRules

        public boolean getDisplayRules()
        Gets whether rules are being printed
        Returns:
        true if rules are being printed
      • searchTipText

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

        public void setSearch​(ASSearch search)
        Sets the search method to use
        Parameters:
        search -
      • getSearch

        public ASSearch getSearch()
        Gets the current search method
        Returns:
        the search method used
      • evaluationMeasureTipText

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

        public SelectedTag getEvaluationMeasure()
        Gets the currently set performance evaluation measure used for selecting attributes for the decision table
        Returns:
        the performance evaluation measure
      • setEvaluationMeasure

        public void setEvaluationMeasure​(SelectedTag newMethod)
        Sets the performance evaluation measure to use for selecting attributes for the decision table
        Parameters:
        newMethod - the new performance evaluation metric to use
      • setOptions

        public void setOptions​(java.lang.String[] options)
                        throws java.lang.Exception
        Parses the options for this object.

        Valid options are:

         -S <search method specification>
          Full class name of search method, followed
          by its options.
          eg: "weka.attributeSelection.BestFirst -D 1"
          (default weka.attributeSelection.BestFirst)
         -X <number of folds>
          Use cross validation to evaluate features.
          Use number of folds = 1 for leave one out CV.
          (Default = leave one out CV)
         -E <acc | rmse | mae | auc>
          Performance evaluation measure to use for selecting attributes.
          (Default = accuracy for discrete class and rmse for numeric class)
         -I
          Use nearest neighbour instead of global table majority.
         -R
          Display decision table rules.
         
         
         Options specific to search method weka.attributeSelection.BestFirst:
         
         -P <start set>
          Specify a starting set of attributes.
          Eg. 1,3,5-7.
         -D <0 = backward | 1 = forward | 2 = bi-directional>
          Direction of search. (default = 1).
         -N <num>
          Number of non-improving nodes to
          consider before terminating search.
         -S <num>
          Size of lookup cache for evaluated subsets.
          Expressed as a multiple of the number of
          attributes in the data set. (default = 1)
        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
      • 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
      • distributionForInstance

        public double[] distributionForInstance​(Instance instance)
                                         throws java.lang.Exception
        Calculates the class membership probabilities for the given test instance.
        Overrides:
        distributionForInstance in class Classifier
        Parameters:
        instance - the instance to be classified
        Returns:
        predicted class probability distribution
        Throws:
        java.lang.Exception - if distribution can't be computed
      • printFeatures

        public java.lang.String printFeatures()
        Returns a string description of the features selected
        Returns:
        a string of features
      • measureNumRules

        public double measureNumRules()
        Returns the number of rules
        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:
        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
      • 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.
      • main

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