|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectweka.classifiers.Classifier
weka.classifiers.rules.ConjunctiveRule
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 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).
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 accuracy rate of the pruning data is used for classification while the weighted average of the mean-squared errors of the pruning data is used for regression.
Nested Class Summary | |
private class |
ConjunctiveRule.Antd
The single antecedent in the rule, which is composed of an attribute and the corresponding value. |
(package private) class |
ConjunctiveRule.NominalAntd
The antecedent with nominal attribute |
private class |
ConjunctiveRule.NumericAntd
The antecedent with numeric attribute |
Field Summary | |
protected FastVector |
m_Antds
The vector of antecedents of this rule |
private Attribute |
m_ClassAttribute
The class attribute of the data |
protected double[] |
m_Cnsqt
The consequent of this rule |
protected double[] |
m_DefDstr
The default rule distribution of the data not covered |
private int |
m_Folds
The number of folds to split data into Grow and Prune for REP |
private boolean |
m_IsExclude
Whether to use exlusive expressions for nominal attributes |
private double |
m_MinNo
The minimal number of instance weights within a split |
private int |
m_NumAntds
The number of antecedents in pre-pruning |
private int |
m_NumClasses
Number of classes in the training data |
private java.util.Random |
m_Random
The Random object used for randomization |
private long |
m_Seed
The seed to perform randomization |
private FastVector |
m_Targets
The predicted classes recorded for each antecedent in the growing data |
Fields inherited from class weka.classifiers.Classifier |
m_Debug |
Constructor Summary | |
ConjunctiveRule()
|
Method Summary | |
void |
buildClassifier(Instances instances)
Builds a single rule learner with REP dealing with nominal classes or numeric classes. |
private double |
computeAccu(Instances data,
int clas)
Private function to compute number of accurate instances based on the specified predicted class |
private Instances[] |
computeInfoGain(Instances instances,
double defInfo,
ConjunctiveRule.Antd antd)
Compute the best information gain for the specified antecedent |
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 |
boolean |
getExclusive()
|
int |
getFolds()
|
double |
getMinNo()
|
int |
getNumAntds()
|
java.lang.String[] |
getOptions()
Gets the current settings of the Classifier. |
long |
getSeed()
|
java.lang.String |
globalInfo()
Returns a string describing classifier |
private void |
grow(Instances data)
Build one rule using the growing data |
boolean |
hasAntds()
Whether this rule has antecedents, i.e. whether it is a default rule |
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: -N number Set number of folds for REP. |
static void |
main(java.lang.String[] args)
Main method. |
private double |
meanSquaredError(Instances data,
double mean)
Private function to compute the squared error of the specified data and the specified mean |
java.lang.String |
minNoTipText()
Returns the tip text for this property |
java.lang.String |
numAntdsTipText()
Returns the tip text for this property |
private void |
prune(Instances pruneData)
Prune the rule using the pruning data. |
java.lang.String |
seedTipText()
Returns the tip text for this property |
void |
setExclusive(boolean e)
|
void |
setFolds(int folds)
|
void |
setMinNo(double m)
|
void |
setNumAntds(int n)
|
void |
setOptions(java.lang.String[] options)
Parses a given list of options. |
void |
setSeed(long s)
|
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 weka.classifiers.Classifier |
classifyInstance, debugTipText, forName, getDebug, makeCopies, setDebug |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
private int m_Folds
private Attribute m_ClassAttribute
protected FastVector m_Antds
protected double[] m_DefDstr
protected double[] m_Cnsqt
private int m_NumClasses
private long m_Seed
private java.util.Random m_Random
private FastVector m_Targets
private boolean m_IsExclude
private double m_MinNo
private int m_NumAntds
Constructor Detail |
public ConjunctiveRule()
Method Detail |
public java.lang.String globalInfo()
public java.util.Enumeration listOptions()
-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)
listOptions
in interface OptionHandler
listOptions
in class Classifier
public void setOptions(java.lang.String[] options) throws java.lang.Exception
setOptions
in interface OptionHandler
setOptions
in class Classifier
options
- the list of options as an array of strings
java.lang.Exception
- if an option is not supportedpublic java.lang.String[] getOptions()
getOptions
in interface OptionHandler
getOptions
in class Classifier
public java.lang.String foldsTipText()
public void setFolds(int folds)
public int getFolds()
public java.lang.String seedTipText()
public void setSeed(long s)
public long getSeed()
public java.lang.String exclusiveTipText()
public boolean getExclusive()
public void setExclusive(boolean e)
public java.lang.String minNoTipText()
public void setMinNo(double m)
public double getMinNo()
public java.lang.String numAntdsTipText()
public void setNumAntds(int n)
public int getNumAntds()
public void buildClassifier(Instances instances) throws java.lang.Exception
buildClassifier
in class Classifier
instances
- the training data
java.lang.Exception
- if classifier can't be built successfullypublic double[] distributionForInstance(Instance instance) throws java.lang.Exception
distributionForInstance
in class Classifier
instance
- the instance for which distribution is to be computed
java.lang.Exception
- if distribution could not be
computed successfullypublic boolean isCover(Instance datum)
public boolean hasAntds()
private void grow(Instances data)
data
- the growing data used to build the ruleprivate Instances[] computeInfoGain(Instances instances, double defInfo, ConjunctiveRule.Antd antd)
defInfo
- the default information of dataantd
- the specific antecedent
private void prune(Instances pruneData)
pruneData
- the pruning data used to prune the ruleprivate double computeAccu(Instances data, int clas)
data
- the data in questionclas
- the predicted class
private double meanSquaredError(Instances data, double mean)
data
- the data in questionmean
- the specified mean
public java.lang.String toString(java.lang.String att, java.lang.String cl)
att
- the string standing for attribute in the consequent of this rulecl
- the string standing for value in the consequent of this rule
public java.lang.String toString()
public static void main(java.lang.String[] args)
args
- the options for the classifier
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |