Package weka.classifiers.rules
Class ConjunctiveRule
- java.lang.Object
-
- weka.classifiers.Classifier
-
- weka.classifiers.rules.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 propertyjava.lang.String
foldsTipText()
Returns the tip text for this propertyCapabilities
getCapabilities()
Returns default capabilities of the classifier.boolean
getExclusive()
Returns whether exclusive expressions for nominal attributes splits are consideredint
getFolds()
returns the current number of foldsdouble
getMinNo()
Gets the minimum total weight of the instances in a ruleint
getNumAntds()
Gets the number of antecedantsjava.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 datajava.lang.String
globalInfo()
Returns a string describing classifierboolean
hasAntds()
Whether this rule has antecedents, i.e.boolean
isCover(Instance datum)
Whether the instance covered by this rulejava.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 propertyjava.lang.String
numAntdsTipText()
Returns the tip text for this propertyjava.lang.String
seedTipText()
Returns the tip text for this propertyvoid
setExclusive(boolean e)
Sets whether exclusive expressions for nominal attributes splits are consideredvoid
setFolds(int folds)
the number of folds to usevoid
setMinNo(double m)
Sets the minimum total weight of the instances in a rulevoid
setNumAntds(int n)
Sets the number of antecedantsvoid
setOptions(java.lang.String[] options)
Parses a given list of options.void
setSeed(long s)
sets the seed for randomizing the datajava.lang.String
toString()
Prints this rulejava.lang.String
toString(java.lang.String att, java.lang.String cl)
Prints this rule with the specified class label-
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, makeCopies, makeCopy, setDebug
-
-
-
-
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 interfaceOptionHandler
- Overrides:
listOptions
in classClassifier
- 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 interfaceOptionHandler
- Overrides:
setOptions
in classClassifier
- 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 interfaceOptionHandler
- Overrides:
getOptions
in classClassifier
- 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
-
getCapabilities
public Capabilities getCapabilities()
Returns default capabilities of the classifier.- Specified by:
getCapabilities
in interfaceCapabilitiesHandler
- Overrides:
getCapabilities
in classClassifier
- Returns:
- the capabilities of this classifier
- See Also:
Capabilities
-
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 classClassifier
- 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 classClassifier
- 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 rulecl
- 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 classjava.lang.Object
- Returns:
- a textual description of this rule
-
getRevision
public java.lang.String getRevision()
Returns the revision string.- Specified by:
getRevision
in interfaceRevisionHandler
- Overrides:
getRevision
in classClassifier
- Returns:
- the revision
-
main
public static void main(java.lang.String[] args)
Main method.- Parameters:
args
- the options for the classifier
-
-