Class ConjunctiveRule

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, CapabilitiesHandler, OptionHandler, RevisionHandler, WeightedInstancesHandler

    public class ConjunctiveRule
    extends Classifier
    implements OptionHandler, WeightedInstancesHandler
    This class implements a single conjunctive rule learner that can predict for numeric and nominal class labels.

    A rule consists of antecedents "AND"ed together and the consequent (class value) for the classification/regression. In this case, the consequent is the distribution of the available classes (or mean for a numeric value) in the dataset. If the test instance is not covered by this rule, then it's predicted using the default class distributions/value of the data not covered by the rule in the training data.This learner selects an antecedent by computing the Information Gain of each antecendent and prunes the generated rule using Reduced Error Prunning (REP) or simple pre-pruning based on the number of antecedents.

    For classification, the Information of one antecedent is the weighted average of the entropies of both the data covered and not covered by the rule.
    For regression, the Information is the weighted average of the mean-squared errors of both the data covered and not covered by the rule.

    In pruning, weighted average of the accuracy rates on the pruning data is used for classification while the weighted average of the mean-squared errors on the pruning data is used for regression.

    Valid options are:

     -N <number of folds>
      Set number of folds for REP
      One fold is used as pruning set.
      (default 3)
     -R
      Set if NOT uses randomization
      (default:use randomization)
     -E
      Set whether consider the exclusive
      expressions for nominal attributes
      (default false)
     -M <min. weights>
      Set the minimal weights of instances
      within a split.
      (default 2.0)
     -P <number of antecedents>
      Set number of antecedents for pre-pruning
      if -1, then REP is used
      (default -1)
     -S <seed>
      Set the seed of randomization
      (default 1)
    Version:
    $Revision: 9835 $
    Author:
    Xin XU (xx5@cs.waikato.ac.nz)
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      ConjunctiveRule()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void buildClassifier​(Instances instances)
      Builds a single rule learner with REP dealing with nominal classes or numeric classes.
      double[] distributionForInstance​(Instance instance)
      Computes class distribution for the given instance.
      java.lang.String exclusiveTipText()
      Returns the tip text for this property
      java.lang.String foldsTipText()
      Returns the tip text for this property
      Capabilities getCapabilities()
      Returns default capabilities of the classifier.
      boolean getExclusive()
      Returns whether exclusive expressions for nominal attributes splits are considered
      int getFolds()
      returns the current number of folds
      double getMinNo()
      Gets the minimum total weight of the instances in a rule
      int getNumAntds()
      Gets the number of antecedants
      java.lang.String[] getOptions()
      Gets the current settings of the Classifier.
      java.lang.String getRevision()
      Returns the revision string.
      long getSeed()
      returns the current seed value for randomizing the data
      java.lang.String globalInfo()
      Returns a string describing classifier
      boolean hasAntds()
      Whether this rule has antecedents, i.e.
      boolean isCover​(Instance datum)
      Whether the instance covered by this rule
      java.util.Enumeration listOptions()
      Returns an enumeration describing the available options Valid options are:
      static void main​(java.lang.String[] args)
      Main method.
      java.lang.String minNoTipText()
      Returns the tip text for this property
      java.lang.String numAntdsTipText()
      Returns the tip text for this property
      java.lang.String seedTipText()
      Returns the tip text for this property
      void setExclusive​(boolean e)
      Sets whether exclusive expressions for nominal attributes splits are considered
      void setFolds​(int folds)
      the number of folds to use
      void setMinNo​(double m)
      Sets the minimum total weight of the instances in a rule
      void setNumAntds​(int n)
      Sets the number of antecedants
      void setOptions​(java.lang.String[] options)
      Parses a given list of options.
      void setSeed​(long s)
      sets the seed for randomizing the data
      java.lang.String toString()
      Prints this rule
      java.lang.String toString​(java.lang.String att, java.lang.String cl)
      Prints this rule with the specified class label
      • Methods inherited from class java.lang.Object

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

      • ConjunctiveRule

        public ConjunctiveRule()
    • Method Detail

      • globalInfo

        public java.lang.String globalInfo()
        Returns a string describing classifier
        Returns:
        a description suitable for displaying in the explorer/experimenter gui
      • listOptions

        public java.util.Enumeration listOptions()
        Returns an enumeration describing the available options Valid options are:

        -N number
        Set number of folds for REP. One fold is used as the pruning set. (Default: 3)

        -R
        Set if NOT randomize the data before split to growing and pruning data. If NOT set, the seed of randomization is specified by the -S option. (Default: randomize)

        -S
        Seed of randomization. (Default: 1)

        -E
        Set whether consider the exclusive expressions for nominal attribute split. (Default: false)

        -M number
        Set the minimal weights of instances within a split. (Default: 2)

        -P number
        Set the number of antecedents allowed in the rule if pre-pruning is used. If this value is other than -1, then pre-pruning will be used, otherwise the rule uses REP. (Default: -1)

        Specified by:
        listOptions in interface OptionHandler
        Overrides:
        listOptions in class Classifier
        Returns:
        an enumeration of all the available options
      • setOptions

        public void setOptions​(java.lang.String[] options)
                        throws java.lang.Exception
        Parses a given list of options.

        Valid options are:

         -N <number of folds>
          Set number of folds for REP
          One fold is used as pruning set.
          (default 3)
         -R
          Set if NOT uses randomization
          (default:use randomization)
         -E
          Set whether consider the exclusive
          expressions for nominal attributes
          (default false)
         -M <min. weights>
          Set the minimal weights of instances
          within a split.
          (default 2.0)
         -P <number of antecedents>
          Set number of antecedents for pre-pruning
          if -1, then REP is used
          (default -1)
         -S <seed>
          Set the seed of randomization
          (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
      • foldsTipText

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

        public void setFolds​(int folds)
        the number of folds to use
        Parameters:
        folds - the number of folds to use
      • getFolds

        public int getFolds()
        returns the current number of folds
        Returns:
        the number of folds
      • seedTipText

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

        public void setSeed​(long s)
        sets the seed for randomizing the data
        Parameters:
        s - the seed value
      • getSeed

        public long getSeed()
        returns the current seed value for randomizing the data
        Returns:
        the seed value
      • exclusiveTipText

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

        public boolean getExclusive()
        Returns whether exclusive expressions for nominal attributes splits are considered
        Returns:
        true if exclusive expressions for nominal attributes splits are considered
      • setExclusive

        public void setExclusive​(boolean e)
        Sets whether exclusive expressions for nominal attributes splits are considered
        Parameters:
        e - whether to consider exclusive expressions for nominal attribute splits
      • minNoTipText

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

        public void setMinNo​(double m)
        Sets the minimum total weight of the instances in a rule
        Parameters:
        m - the minimum total weight of the instances in a rule
      • getMinNo

        public double getMinNo()
        Gets the minimum total weight of the instances in a rule
        Returns:
        the minimum total weight of the instances in a rule
      • numAntdsTipText

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

        public void setNumAntds​(int n)
        Sets the number of antecedants
        Parameters:
        n - the number of antecedants
      • getNumAntds

        public int getNumAntds()
        Gets the number of antecedants
        Returns:
        the number of antecedants
      • buildClassifier

        public void buildClassifier​(Instances instances)
                             throws java.lang.Exception
        Builds a single rule learner with REP dealing with nominal classes or numeric classes. For nominal classes, this rule learner predicts a distribution on the classes. For numeric classes, this learner predicts a single value.
        Specified by:
        buildClassifier in class Classifier
        Parameters:
        instances - the training data
        Throws:
        java.lang.Exception - if classifier can't be built successfully
      • distributionForInstance

        public double[] distributionForInstance​(Instance instance)
                                         throws java.lang.Exception
        Computes class distribution for the given instance.
        Overrides:
        distributionForInstance in class Classifier
        Parameters:
        instance - the instance for which distribution is to be computed
        Returns:
        the class distribution for the given instance
        Throws:
        java.lang.Exception - if given instance is null
      • isCover

        public boolean isCover​(Instance datum)
        Whether the instance covered by this rule
        Parameters:
        datum - the instance in question
        Returns:
        the boolean value indicating whether the instance is covered by this rule
      • hasAntds

        public boolean hasAntds()
        Whether this rule has antecedents, i.e. whether it is a default rule
        Returns:
        the boolean value indicating whether the rule has antecedents
      • toString

        public java.lang.String toString​(java.lang.String att,
                                         java.lang.String cl)
        Prints this rule with the specified class label
        Parameters:
        att - the string standing for attribute in the consequent of this rule
        cl - the string standing for value in the consequent of this rule
        Returns:
        a textual description of this rule with the specified class label
      • toString

        public java.lang.String toString()
        Prints this rule
        Overrides:
        toString in class java.lang.Object
        Returns:
        a textual description of this rule
      • main

        public static void main​(java.lang.String[] args)
        Main method.
        Parameters:
        args - the options for the classifier