weka.classifiers
Class Classifier

java.lang.Object
  extended byweka.classifiers.Classifier
All Implemented Interfaces:
java.lang.Cloneable, OptionHandler, java.io.Serializable
Direct Known Subclasses:
AdditiveRegression, ADTree, AODE, AttributeSelectedClassifier, BayesNet, ComplementNaiveBayes, ConjunctiveRule, CostSensitiveClassifier, DecisionStump, DecisionTable, Decorate, FilteredClassifier, FLR, HND, HyperPipes, IB1, IBk, Id3, J48, JRip, KStar, LBR, LeastMedSq, LinearRegression, LMT, Logistic, LogisticBase, M5Base, MultiClassClassifier, MultilayerPerceptron, MultipleClassifiersCombiner, NaiveBayes, NaiveBayesMultinomial, NaiveBayesSimple, ND, NNge, OneR, OrdinalClassClassifier, PaceRegression, PART, PreConstructedLinearModel, Prism, RacedIncrementalLogitBoost, RandomForest, RandomizableClassifier, RandomTree, RBFNetwork, REPTree, Ridor, RuleNode, SimpleLinearRegression, SimpleLogistic, SingleClassifierEnhancer, SMO, SMOreg, ThresholdSelector, TreeBasedMultiClassClassifier, UserClassifier, VFI, VotedPerceptron, Winnow, ZeroR

public abstract class Classifier
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable, OptionHandler

Abstract classifier. All schemes for numeric or nominal prediction in Weka extend this class. Note that a classifier MUST either implement distributionForInstance() or classifyInstance().

Version:
$Revision: 1.10 $
Author:
Eibe Frank (eibe@cs.waikato.ac.nz), Len Trigg (trigg@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
protected  boolean m_Debug
          Whether the classifier is run in debug mode.
 
Constructor Summary
Classifier()
           
 
Method Summary
abstract  void buildClassifier(Instances data)
          Generates a classifier.
 double classifyInstance(Instance instance)
          Classifies the given test instance.
 java.lang.String debugTipText()
          Returns the tip text for this property
 double[] distributionForInstance(Instance instance)
          Predicts the class memberships for a given instance.
static Classifier forName(java.lang.String classifierName, java.lang.String[] options)
          Creates a new instance of a classifier given it's class name and (optional) arguments to pass to it's setOptions method.
 boolean getDebug()
          Get whether debugging is turned on.
 java.lang.String[] getOptions()
          Gets the current settings of the Classifier.
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static Classifier[] makeCopies(Classifier model, int num)
          Creates copies of the current classifier, which can then be used for boosting etc.
 void setDebug(boolean debug)
          Set debugging mode.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_Debug

protected boolean m_Debug
Whether the classifier is run in debug mode.

Constructor Detail

Classifier

public Classifier()
Method Detail

buildClassifier

public abstract void buildClassifier(Instances data)
                              throws java.lang.Exception
Generates a classifier. Must initialize all fields of the classifier that are not being set via options (ie. multiple calls of buildClassifier must always lead to the same result). Must not change the dataset in any way.

Parameters:
data - set of instances serving as training data
Throws:
java.lang.Exception - if the classifier has not been generated successfully

classifyInstance

public double classifyInstance(Instance instance)
                        throws java.lang.Exception
Classifies the given test instance. The instance has to belong to a dataset when it's being classified. Note that a classifier MUST implement either this or distributionForInstance().

Parameters:
instance - the instance to be classified
Returns:
the predicted most likely class for the instance or Instance.missingValue() if no prediction is made
Throws:
java.lang.Exception - if an error occurred during the prediction

distributionForInstance

public double[] distributionForInstance(Instance instance)
                                 throws java.lang.Exception
Predicts the class memberships for a given instance. If an instance is unclassified, the returned array elements must be all zero. If the class is numeric, the array must consist of only one element, which contains the predicted value. Note that a classifier MUST implement either this or classifyInstance().

Parameters:
instance - the instance to be classified
Returns:
an array containing the estimated membership probabilities of the test instance in each class or the numeric prediction
Throws:
java.lang.Exception - if distribution could not be computed successfully

forName

public static Classifier forName(java.lang.String classifierName,
                                 java.lang.String[] options)
                          throws java.lang.Exception
Creates a new instance of a classifier given it's class name and (optional) arguments to pass to it's setOptions method. If the classifier implements OptionHandler and the options parameter is non-null, the classifier will have it's options set.

Parameters:
classifierName - the fully qualified class name of the classifier
options - an array of options suitable for passing to setOptions. May be null.
Returns:
the newly created classifier, ready for use.
Throws:
java.lang.Exception - if the classifier name is invalid, or the options supplied are not acceptable to the classifier

makeCopies

public static Classifier[] makeCopies(Classifier model,
                                      int num)
                               throws java.lang.Exception
Creates copies of the current classifier, which can then be used for boosting etc. Note that this method now uses Serialization to perform a deep copy, so the Classifier object must be fully Serializable. Any currently built model will now be copied as well.

Parameters:
model - an example classifier to copy
num - the number of classifiers copies to create.
Returns:
an array of classifiers.
Throws:
java.lang.Exception - if an error occurs

listOptions

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

Specified by:
listOptions in interface OptionHandler
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:

-D
If set, classifier is run in debug mode and may output additional info to the console.

Specified by:
setOptions in interface OptionHandler
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
Returns:
an array of strings suitable for passing to setOptions

setDebug

public void setDebug(boolean debug)
Set debugging mode.

Parameters:
debug - true if debug output should be printed

getDebug

public boolean getDebug()
Get whether debugging is turned on.

Returns:
true if debugging output is on

debugTipText

public java.lang.String debugTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui