weka.classifiers.rules
Class DecisionTable

java.lang.Object
  extended by weka.classifiers.AbstractClassifier
      extended by weka.classifiers.rules.DecisionTable
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Classifier, AdditionalMeasureProducer, CapabilitiesHandler, OptionHandler, RevisionHandler, TechnicalInformationHandler, WeightedInstancesHandler
Direct Known Subclasses:
DTNB

public class DecisionTable
extends AbstractClassifier
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: 5987 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
static int EVAL_ACCURACY
           
static int EVAL_AUC
           
static int EVAL_DEFAULT
          default is accuracy for discrete class and RMSE for numeric class
static int EVAL_MAE
           
static int EVAL_RMSE
           
static Tag[] TAGS_EVALUATION
           
 
Constructor Summary
DecisionTable()
          Constructor for a DecisionTable
 
Method Summary
 void buildClassifier(Instances data)
          Generates the classifier.
 java.lang.String crossValTipText()
          Returns the tip text for this property
 java.lang.String displayRulesTipText()
          Returns the tip text for this property
 double[] distributionForInstance(Instance instance)
          Calculates the class membership probabilities for the given test instance.
 java.util.Enumeration enumerateMeasures()
          Returns an enumeration of the additional measure names
 java.lang.String evaluationMeasureTipText()
          Returns the tip text for this property
 Capabilities getCapabilities()
          Returns default capabilities of the classifier.
 int getCrossVal()
          Gets the number of folds for cross validation
 boolean getDisplayRules()
          Gets whether rules are being printed
 SelectedTag getEvaluationMeasure()
          Gets the currently set performance evaluation measure used for selecting attributes for the decision table
 double getMeasure(java.lang.String additionalMeasureName)
          Returns the value of the named measure
 java.lang.String[] getOptions()
          Gets the current settings of the classifier.
 java.lang.String getRevision()
          Returns the revision string.
 ASSearch getSearch()
          Gets the current search method
 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 getUseIBk()
          Gets whether IBk is being used instead of the majority class
 java.lang.String globalInfo()
          Returns a string describing classifier
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static void main(java.lang.String[] argv)
          Main method for testing this class.
 double measureNumRules()
          Returns the number of rules
 java.lang.String printFeatures()
          Returns a string description of the features selected
 java.lang.String searchTipText()
          Returns the tip text for this property
 void setCrossVal(int folds)
          Sets the number of folds for cross validation (1 = leave one out)
 void setDisplayRules(boolean rules)
          Sets whether rules are to be printed
 void setEvaluationMeasure(SelectedTag newMethod)
          Sets the performance evaluation measure to use for selecting attributes for the decision table
 void setOptions(java.lang.String[] options)
          Parses the options for this object.
 void setSearch(ASSearch search)
          Sets the search method to use
 void setUseIBk(boolean ibk)
          Sets whether IBk should be used instead of the majority class
 java.lang.String toString()
          Returns a description of the classifier.
 java.lang.String useIBkTipText()
          Returns the tip text for this property
 
Methods inherited from class weka.classifiers.AbstractClassifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EVAL_DEFAULT

public static final int EVAL_DEFAULT
default is accuracy for discrete class and RMSE for numeric class

See Also:
Constant Field Values

EVAL_ACCURACY

public static final int EVAL_ACCURACY
See Also:
Constant Field Values

EVAL_RMSE

public static final int EVAL_RMSE
See Also:
Constant Field Values

EVAL_MAE

public static final int EVAL_MAE
See Also:
Constant Field Values

EVAL_AUC

public static final int EVAL_AUC
See Also:
Constant Field Values

TAGS_EVALUATION

public static final Tag[] TAGS_EVALUATION
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 AbstractClassifier
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 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

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 data)
                     throws java.lang.Exception
Generates the classifier.

Specified by:
buildClassifier in interface 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.

Specified by:
distributionForInstance in interface Classifier
Overrides:
distributionForInstance in class AbstractClassifier
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.

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Overrides:
getRevision in class AbstractClassifier
Returns:
the revision

main

public static void main(java.lang.String[] argv)
Main method for testing this class.

Parameters:
argv - the command-line options