Class AttributeSelection

  • All Implemented Interfaces:
    java.io.Serializable, RevisionHandler

    public class AttributeSelection
    extends java.lang.Object
    implements java.io.Serializable, RevisionHandler
    Attribute selection class. Takes the name of a search class and an evaluation class on the command line.

    Valid options are:

    -h
    Display help.

    -i <name of input file>
    Specify the training data file.

    -c <class index>
    The index of the attribute to use as the class.

    -s <search method>
    The full class name of the search method followed by search method options (if any).
    Eg. -s "weka.attributeSelection.BestFirst -N 10"

    -x <number of folds>
    Perform a cross validation.

    -n <random number seed>
    Specify a random number seed. Use in conjuction with -x. (Default = 1).

    ------------------------------------------------------------------------

    Example usage as the main of an attribute evaluator (called FunkyEvaluator):

     public static void main(String [] args) {
       runEvaluator(new FunkyEvaluator(), args);
     }
     

    ------------------------------------------------------------------------

    Version:
    $Revision: 11851 $
    Author:
    Mark Hall (mhall@cs.waikato.ac.nz)
    See Also:
    Serialized Form
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String CrossValidateAttributes()
      Perform a cross validation for attribute selection.
      java.lang.String CVResultsString()
      returns a string summarizing the results of repeated attribute selection runs on splits of a dataset.
      java.lang.String getRevision()
      Returns the revision string.
      static void main​(java.lang.String[] args)
      Main method for testing this class.
      int numberAttributesSelected()
      Return the number of attributes selected from the most recent run of attribute selection
      double[][] rankedAttributes()
      get the final ranking of the attributes.
      Instance reduceDimensionality​(Instance in)
      reduce the dimensionality of a single instance to include only those attributes chosen by the last run of attribute selection.
      Instances reduceDimensionality​(Instances in)
      reduce the dimensionality of a set of instances to include only those attributes chosen by the last run of attribute selection.
      static java.lang.String SelectAttributes​(ASEvaluation ASEvaluator, java.lang.String[] options)
      Perform attribute selection with a particular evaluator and a set of options specifying search method and input file etc.
      static java.lang.String SelectAttributes​(ASEvaluation ASEvaluator, java.lang.String[] options, Instances train)
      Perform attribute selection with a particular evaluator and a set of options specifying search method and options for the search method and evaluator.
      void SelectAttributes​(Instances data)
      Perform attribute selection on the supplied training instances.
      void selectAttributesCVSplit​(Instances split)
      Select attributes for a split of the data.
      int[] selectedAttributes()
      get the final selected set of attributes.
      void setEvaluator​(ASEvaluation evaluator)
      set the attribute/subset evaluator
      void setFolds​(int folds)
      set the number of folds for cross validation
      void setRanking​(boolean r)
      produce a ranking (if possible with the set search and evaluator)
      void setSearch​(ASSearch search)
      set the search method
      void setSeed​(int s)
      set the seed for use in cross validation
      void setXval​(boolean x)
      do a cross validation
      java.lang.String toResultsString()
      get a description of the attribute selection
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AttributeSelection

        public AttributeSelection()
        constructor. Sets defaults for each member varaible. Default attribute evaluator is CfsSubsetEval; default search method is BestFirst.
    • Method Detail

      • numberAttributesSelected

        public int numberAttributesSelected()
                                     throws java.lang.Exception
        Return the number of attributes selected from the most recent run of attribute selection
        Returns:
        the number of attributes selected
        Throws:
        java.lang.Exception
      • selectedAttributes

        public int[] selectedAttributes()
                                 throws java.lang.Exception
        get the final selected set of attributes.
        Returns:
        an array of attribute indexes
        Throws:
        java.lang.Exception - if attribute selection has not been performed yet
      • rankedAttributes

        public double[][] rankedAttributes()
                                    throws java.lang.Exception
        get the final ranking of the attributes.
        Returns:
        a two dimensional array of ranked attribute indexes and their associated merit scores as doubles.
        Throws:
        java.lang.Exception - if a ranking has not been produced
      • setEvaluator

        public void setEvaluator​(ASEvaluation evaluator)
        set the attribute/subset evaluator
        Parameters:
        evaluator - the evaluator to use
      • setSearch

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

        public void setFolds​(int folds)
        set the number of folds for cross validation
        Parameters:
        folds - the number of folds
      • setRanking

        public void setRanking​(boolean r)
        produce a ranking (if possible with the set search and evaluator)
        Parameters:
        r - true if a ranking is to be produced
      • setXval

        public void setXval​(boolean x)
        do a cross validation
        Parameters:
        x - true if a cross validation is to be performed
      • setSeed

        public void setSeed​(int s)
        set the seed for use in cross validation
        Parameters:
        s - the seed
      • toResultsString

        public java.lang.String toResultsString()
        get a description of the attribute selection
        Returns:
        a String describing the results of attribute selection
      • reduceDimensionality

        public Instances reduceDimensionality​(Instances in)
                                       throws java.lang.Exception
        reduce the dimensionality of a set of instances to include only those attributes chosen by the last run of attribute selection.
        Parameters:
        in - the instances to be reduced
        Returns:
        a dimensionality reduced set of instances
        Throws:
        java.lang.Exception - if the instances can't be reduced
      • reduceDimensionality

        public Instance reduceDimensionality​(Instance in)
                                      throws java.lang.Exception
        reduce the dimensionality of a single instance to include only those attributes chosen by the last run of attribute selection.
        Parameters:
        in - the instance to be reduced
        Returns:
        a dimensionality reduced instance
        Throws:
        java.lang.Exception - if the instance can't be reduced
      • SelectAttributes

        public static java.lang.String SelectAttributes​(ASEvaluation ASEvaluator,
                                                        java.lang.String[] options)
                                                 throws java.lang.Exception
        Perform attribute selection with a particular evaluator and a set of options specifying search method and input file etc.
        Parameters:
        ASEvaluator - an evaluator object
        options - an array of options, not only for the evaluator but also the search method (if any) and an input data file
        Returns:
        the results of attribute selection as a String
        Throws:
        java.lang.Exception - if no training file is set
      • CVResultsString

        public java.lang.String CVResultsString()
                                         throws java.lang.Exception
        returns a string summarizing the results of repeated attribute selection runs on splits of a dataset.
        Returns:
        a summary of attribute selection results
        Throws:
        java.lang.Exception - if no attribute selection has been performed.
      • selectAttributesCVSplit

        public void selectAttributesCVSplit​(Instances split)
                                     throws java.lang.Exception
        Select attributes for a split of the data. Calling this function updates the statistics on attribute selection. CVResultsString() returns a string summarizing the results of repeated calls to this function. Assumes that splits are from the same dataset--- ie. have the same number and types of attributes as previous splits.
        Parameters:
        split - the instances to select attributes from
        Throws:
        java.lang.Exception - if an error occurs
      • CrossValidateAttributes

        public java.lang.String CrossValidateAttributes()
                                                 throws java.lang.Exception
        Perform a cross validation for attribute selection. With subset evaluators the number of times each attribute is selected over the cross validation is reported. For attribute evaluators, the average merit and average ranking + std deviation is reported for each attribute.
        Returns:
        the results of cross validation as a String
        Throws:
        java.lang.Exception - if an error occurs during cross validation
      • SelectAttributes

        public void SelectAttributes​(Instances data)
                              throws java.lang.Exception
        Perform attribute selection on the supplied training instances.
        Parameters:
        data - the instances to select attributes from
        Throws:
        java.lang.Exception - if there is a problem during selection
      • SelectAttributes

        public static java.lang.String SelectAttributes​(ASEvaluation ASEvaluator,
                                                        java.lang.String[] options,
                                                        Instances train)
                                                 throws java.lang.Exception
        Perform attribute selection with a particular evaluator and a set of options specifying search method and options for the search method and evaluator.
        Parameters:
        ASEvaluator - an evaluator object
        options - an array of options, not only for the evaluator but also the search method (if any) and an input data file
        train - the input instances
        Returns:
        the results of attribute selection as a String
        Throws:
        java.lang.Exception - if incorrect options are supplied
      • main

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

        public java.lang.String getRevision()
        Returns the revision string.
        Specified by:
        getRevision in interface RevisionHandler
        Returns:
        the revision