Class AttributeSelectedClassifier

All Implemented Interfaces:
Serializable, Cloneable, Classifier, AdditionalMeasureProducer, BatchPredictor, CapabilitiesHandler, CapabilitiesIgnorer, CommandlineRunnable, Drawable, OptionHandler, RevisionHandler, WeightedInstancesHandler

public class AttributeSelectedClassifier extends SingleClassifierEnhancer implements OptionHandler, Drawable, AdditionalMeasureProducer, WeightedInstancesHandler
Dimensionality of training and test data is reduced by attribute selection before being passed on to a classifier.

Valid options are:

 -E <attribute evaluator specification>
  Full class name of attribute evaluator, followed
  by its options.
  eg: "weka.attributeSelection.CfsSubsetEval -L"
  (default weka.attributeSelection.CfsSubsetEval)
 -S <search method specification>
  Full class name of search method, followed
  by its options.
  eg: "weka.attributeSelection.BestFirst -D 1"
  (default weka.attributeSelection.BestFirst)
 -D
  If set, classifier is run in debug mode and
  may output additional info to the console
 -W
  Full name of base classifier.
  (default: weka.classifiers.trees.J48)
 
 Options specific to classifier weka.classifiers.trees.J48:
 
 -U
  Use unpruned 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.
 -Q <seed>
  Seed for random data shuffling (default 1).
Version:
$Revision: 15519 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
  • Constructor Details

    • AttributeSelectedClassifier

      public AttributeSelectedClassifier()
      Default constructor.
  • Method Details

    • globalInfo

      public String globalInfo()
      Returns a string describing this search method
      Returns:
      a description of the search method suitable for displaying in the explorer/experimenter gui
    • listOptions

      public Enumeration<Option> listOptions()
      Returns an enumeration describing the available options.
      Specified by:
      listOptions in interface OptionHandler
      Overrides:
      listOptions in class SingleClassifierEnhancer
      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:

       -E <attribute evaluator specification>
        Full class name of attribute evaluator, followed
        by its options.
        eg: "weka.attributeSelection.CfsSubsetEval -L"
        (default weka.attributeSelection.CfsSubsetEval)
       -S <search method specification>
        Full class name of search method, followed
        by its options.
        eg: "weka.attributeSelection.BestFirst -D 1"
        (default weka.attributeSelection.BestFirst)
       -D
        If set, classifier is run in debug mode and
        may output additional info to the console
       -W
        Full name of base classifier.
        (default: weka.classifiers.trees.J48)
       
       Options specific to classifier weka.classifiers.trees.J48:
       
       -U
        Use unpruned 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.
       -Q <seed>
        Seed for random data shuffling (default 1).
      Specified by:
      setOptions in interface OptionHandler
      Overrides:
      setOptions in class SingleClassifierEnhancer
      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 SingleClassifierEnhancer
      Returns:
      an array of strings suitable for passing to setOptions
    • evaluatorTipText

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

      public void setEvaluator(ASEvaluation evaluator)
      Sets the attribute evaluator
      Parameters:
      evaluator - the evaluator with all options set.
    • getEvaluator

      public ASEvaluation getEvaluator()
      Gets the attribute evaluator used
      Returns:
      the attribute evaluator
    • searchTipText

      public 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
      Parameters:
      search - the search method with all options set.
    • getSearch

      public ASSearch getSearch()
      Gets the search method used
      Returns:
      the search method
    • 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 SingleClassifierEnhancer
      Returns:
      the capabilities of this classifier
      See Also:
    • buildClassifier

      public void buildClassifier(Instances data) throws Exception
      Build the classifier on the dimensionally reduced data.
      Specified by:
      buildClassifier in interface Classifier
      Parameters:
      data - the training data
      Throws:
      Exception - if the classifier could not be built successfully
    • distributionForInstance

      public double[] distributionForInstance(Instance instance) throws Exception
      Classifies a given instance after attribute selection
      Specified by:
      distributionForInstance in interface Classifier
      Overrides:
      distributionForInstance in class AbstractClassifier
      Parameters:
      instance - the instance to be classified
      Returns:
      the class distribution
      Throws:
      Exception - if instance could not be classified successfully
    • batchSizeTipText

      public String batchSizeTipText()
      Tool tip text for this property
      Overrides:
      batchSizeTipText in class AbstractClassifier
      Returns:
      the tool tip for this property
    • setBatchSize

      public void setBatchSize(String size)
      Set the batch size to use. Gets passed through to the base learner if it implements BatchPredictor. Otherwise it is just ignored.
      Specified by:
      setBatchSize in interface BatchPredictor
      Overrides:
      setBatchSize in class AbstractClassifier
      Parameters:
      size - the batch size to use
    • getBatchSize

      public String getBatchSize()
      Gets the preferred batch size from the base learner if it implements BatchPredictor. Returns 1 as the preferred batch size otherwise.
      Specified by:
      getBatchSize in interface BatchPredictor
      Overrides:
      getBatchSize in class AbstractClassifier
      Returns:
      the batch size to use
    • distributionsForInstances

      public double[][] distributionsForInstances(Instances insts) throws Exception
      Batch scoring method. Calls the appropriate method for the base learner if it implements BatchPredictor. Otherwise it simply calls the distributionForInstance() method repeatedly.
      Specified by:
      distributionsForInstances in interface BatchPredictor
      Overrides:
      distributionsForInstances in class AbstractClassifier
      Parameters:
      insts - the instances to get predictions for
      Returns:
      an array of probability distributions, one for each instance
      Throws:
      Exception - if a problem occurs
    • implementsMoreEfficientBatchPrediction

      public boolean implementsMoreEfficientBatchPrediction()
      Returns true if the base classifier implements BatchPredictor and is able to generate batch predictions efficiently
      Specified by:
      implementsMoreEfficientBatchPrediction in interface BatchPredictor
      Overrides:
      implementsMoreEfficientBatchPrediction in class AbstractClassifier
      Returns:
      true if the base classifier can generate batch predictions efficiently
    • graphType

      public int graphType()
      Returns the type of graph this classifier represents.
      Specified by:
      graphType in interface Drawable
      Returns:
      the type of graph
    • graph

      public String graph() throws Exception
      Returns graph describing the classifier (if possible).
      Specified by:
      graph in interface Drawable
      Returns:
      the graph of the classifier in dotty format
      Throws:
      Exception - if the classifier cannot be graphed
    • toString

      public String toString()
      Output a representation of this classifier
      Overrides:
      toString in class Object
      Returns:
      a representation of this classifier
    • measureNumAttributesSelected

      public double measureNumAttributesSelected()
      Additional measure --- number of attributes selected
      Returns:
      the number of attributes selected
    • measureSelectionTime

      public double measureSelectionTime()
      Additional measure --- time taken (milliseconds) to select the attributes
      Returns:
      the time taken to select attributes
    • measureTime

      public double measureTime()
      Additional measure --- time taken (milliseconds) to select attributes and build the classifier
      Returns:
      the total time (select attributes + build classifier)
    • 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
    • getRevision

      public 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(String[] argv)
      Main method for testing this class.
      Parameters:
      argv - should contain the following arguments: -t training file [-T test file] [-c class index]