Class FilteredClassifier
- java.lang.Object
-
- weka.classifiers.AbstractClassifier
-
- weka.classifiers.SingleClassifierEnhancer
-
- weka.classifiers.RandomizableSingleClassifierEnhancer
-
- weka.classifiers.meta.FilteredClassifier
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,Classifier,IterativeClassifier,BatchPredictor,CapabilitiesHandler,CapabilitiesIgnorer,CommandlineRunnable,Drawable,OptionHandler,PartitionGenerator,Randomizable,RevisionHandler,WeightedAttributesHandler,WeightedInstancesHandler
- Direct Known Subclasses:
RandomizableFilteredClassifier
public class FilteredClassifier extends RandomizableSingleClassifierEnhancer implements Drawable, PartitionGenerator, IterativeClassifier, BatchPredictor, WeightedInstancesHandler, WeightedAttributesHandler
Class for running an arbitrary classifier on data that has been passed through an arbitrary filter. Like the classifier, the structure of the filter is based exclusively on the training data and test instances will be processed by the filter without changing their structure. If unequal instance weights or attribute weights are present, and the filter or the classifier are unable to deal with them, the instances and/or attributes are resampled with replacement based on the weights before they are passed to the filter or the classifier (as appropriate). Valid options are:-F <filter specification> Full class name of filter to use, followed by filter options. default: "weka.filters.supervised.attribute.Discretize -R first-last -precision 6"
-W <classifier name> Full name of base classifier. (default: weka.classifiers.trees.J48)
-S num The random number seed to be used (default 1).
-doNotCheckForModifiedClassAttribute
If this is set, the classifier will not check whether the filter modifies the class attribute (use with caution).-output-debug-info
If set, classifier is run in debug mode and may output additional info to the console.-do-not-check-capabilities
If set, classifier capabilities are not checked before classifier is built (use with caution).-num-decimal-places
The number of decimal places for the output of numbers in the model.-batch-size
The desired batch size for batch prediction.Options specific to classifier weka.classifiers.trees.J48:
-U Use unpruned tree.
-C <pruning confidence> Set confidence threshold for pruning. (default 0.25)
-M <minimum number of instances> Set minimum number of instances per leaf. (default 2)
-R Use reduced error pruning.
-N <number of folds> Set number of folds for reduced error pruning. One fold is used as pruning set. (default 3)
-B Use binary splits only.
-S Don't perform subtree raising.
-L Do not clean up after the tree has been built.
-A Laplace smoothing for predicted probabilities.
-S <seed> Seed for random data shuffling (default 1).
- Version:
- $Revision: 15022 $
- Author:
- Len Trigg (trigg@cs.waikato.ac.nz)
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class weka.classifiers.AbstractClassifier
BATCH_SIZE_DEFAULT, NUM_DECIMAL_PLACES_DEFAULT
-
Fields inherited from interface weka.core.Drawable
BayesNet, Newick, NOT_DRAWABLE, TREE
-
-
Constructor Summary
Constructors Constructor Description FilteredClassifier()Default constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringbatchSizeTipText()Tool tip text for this propertyvoidbuildClassifier(Instances data)Build the classifier on the filtered data.double[]distributionForInstance(Instance instance)Classifies a given instance after filtering.double[][]distributionsForInstances(Instances insts)Batch scoring method.voiddone()Signal end of iterating, useful for any house-keeping/cleanup (If the base classifier supports this.)java.lang.StringdoNotCheckForModifiedClassAttributeTipText()Returns the tip text for this propertyjava.lang.StringfilterTipText()Returns the tip text for this propertyvoidgeneratePartition(Instances data)Builds the classifier to generate a partition.java.lang.StringgetBatchSize()Gets the preferred batch size from the base learner if it implements BatchPredictor.CapabilitiesgetCapabilities()Returns default capabilities of the classifier.booleangetDoNotCheckForModifiedClassAttribute()Returns true if classifier checks whether class attribute has been modified by filter.FiltergetFilter()Gets the filter used.double[]getMembershipValues(Instance inst)Computes an array that has a value for each element in the partition.java.lang.String[]getOptions()Gets the current settings of the Classifier.booleangetResume()Returns true if the model is to be finalized (or has been finalized) after training.java.lang.StringgetRevision()Returns the revision string.java.lang.StringglobalInfo()Returns a string describing this classifierjava.lang.Stringgraph()Returns graph describing the classifier (if possible).intgraphType()Returns the type of graph this classifier represents.booleanimplementsMoreEfficientBatchPrediction()Returns true if the base classifier implements BatchPredictor and is able to generate batch predictions efficientlyvoidinitializeClassifier(Instances data)Initializes an iterative classifier.java.util.Enumeration<Option>listOptions()Returns an enumeration describing the available options.static voidmain(java.lang.String[] argv)Main method for testing this class.booleannext()Performs one iteration.intnumElements()Returns the number of elements in the partition.java.lang.StringresumeTipText()Tool tip text for finalize propertyvoidsetBatchSize(java.lang.String size)Set the batch size to use.voidsetDoNotCheckForModifiedClassAttribute(boolean flag)Use this method to determine whether classifier checks whether class attribute has been modified by filter.voidsetFilter(Filter filter)Sets the filtervoidsetOptions(java.lang.String[] options)Parses a given list of options.voidsetResume(boolean resume)If called with argument true, then the next time done() is called the model is effectively "frozen" and no further iterations can be performedjava.lang.StringtoString()Output a representation of this classifier-
Methods inherited from class weka.classifiers.RandomizableSingleClassifierEnhancer
getSeed, seedTipText, setSeed
-
Methods inherited from class weka.classifiers.SingleClassifierEnhancer
classifierTipText, getClassifier, postExecution, preExecution, setClassifier
-
Methods inherited from class weka.classifiers.AbstractClassifier
classifyInstance, debugTipText, doNotCheckCapabilitiesTipText, forName, getDebug, getDoNotCheckCapabilities, getNumDecimalPlaces, makeCopies, makeCopy, numDecimalPlacesTipText, run, runClassifier, setDebug, setDoNotCheckCapabilities, setNumDecimalPlaces
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface weka.classifiers.Classifier
classifyInstance
-
-
-
-
Method Detail
-
globalInfo
public java.lang.String globalInfo()
Returns a string describing this classifier- Returns:
- a description of the classifier suitable for displaying in the explorer/experimenter gui
-
graphType
public int graphType()
Returns the type of graph this classifier represents.
-
graph
public java.lang.String graph() throws java.lang.ExceptionReturns graph describing the classifier (if possible).
-
generatePartition
public void generatePartition(Instances data) throws java.lang.Exception
Builds the classifier to generate a partition. (If the base classifier supports this.)- Specified by:
generatePartitionin interfacePartitionGenerator- Throws:
java.lang.Exception
-
getMembershipValues
public double[] getMembershipValues(Instance inst) throws java.lang.Exception
Computes an array that has a value for each element in the partition. (If the base classifier supports this.)- Specified by:
getMembershipValuesin interfacePartitionGenerator- Throws:
java.lang.Exception
-
numElements
public int numElements() throws java.lang.ExceptionReturns the number of elements in the partition. (If the base classifier supports this.)- Specified by:
numElementsin interfacePartitionGenerator- Throws:
java.lang.Exception
-
initializeClassifier
public void initializeClassifier(Instances data) throws java.lang.Exception
Initializes an iterative classifier. (If the base classifier supports this.)- Specified by:
initializeClassifierin interfaceIterativeClassifier- Parameters:
data- the instances to be used in induction- Throws:
java.lang.Exception- if the model cannot be initialized
-
next
public boolean next() throws java.lang.ExceptionPerforms one iteration. (If the base classifier supports this.)- Specified by:
nextin interfaceIterativeClassifier- Returns:
- false if no further iterations could be performed, true otherwise
- Throws:
java.lang.Exception- if this iteration fails for unexpected reasons
-
done
public void done() throws java.lang.ExceptionSignal end of iterating, useful for any house-keeping/cleanup (If the base classifier supports this.)- Specified by:
donein interfaceIterativeClassifier- Throws:
java.lang.Exception- if cleanup fails
-
resumeTipText
public java.lang.String resumeTipText()
Tool tip text for finalize property- Returns:
- the tool tip text for the finalize property
-
setResume
public void setResume(boolean resume) throws java.lang.ExceptionIf called with argument true, then the next time done() is called the model is effectively "frozen" and no further iterations can be performed- Specified by:
setResumein interfaceIterativeClassifier- Parameters:
resume- true if the model is to be finalized after performing iterations- Throws:
java.lang.Exception- if finalization cannot be set
-
getResume
public boolean getResume()
Returns true if the model is to be finalized (or has been finalized) after training.- Specified by:
getResumein interfaceIterativeClassifier- Returns:
- the current value of finalize
-
listOptions
public java.util.Enumeration<Option> listOptions()
Returns an enumeration describing the available options.- Specified by:
listOptionsin interfaceOptionHandler- Overrides:
listOptionsin classRandomizableSingleClassifierEnhancer- Returns:
- an enumeration of all the available options.
-
setOptions
public void setOptions(java.lang.String[] options) throws java.lang.ExceptionParses a given list of options. Valid options are:-F <filter specification> Full class name of filter to use, followed by filter options. default: "weka.filters.supervised.attribute.Discretize -R first-last -precision 6"
-W <classifier name> Full name of base classifier. (default: weka.classifiers.trees.J48)
-S num The random number seed to be used.
-doNotCheckForModifiedClassAttribute
If this is set, the classifier will not check whether the filter modifies the class attribute (use with caution).-output-debug-info
If set, classifier is run in debug mode and may output additional info to the console.-do-not-check-capabilities
If set, classifier capabilities are not checked before classifier is built (use with caution).-num-decimal-laces
The number of decimal places for the output of numbers in the model.-batch-size
The desired batch size for batch prediction.Options specific to classifier weka.classifiers.trees.J48:
-U Use unpruned tree.
-C <pruning confidence> Set confidence threshold for pruning. (default 0.25)
-M <minimum number of instances> Set minimum number of instances per leaf. (default 2)
-R Use reduced error pruning.
-N <number of folds> Set number of folds for reduced error pruning. One fold is used as pruning set. (default 3)
-B Use binary splits only.
-S Don't perform subtree raising.
-L Do not clean up after the tree has been built.
-A Laplace smoothing for predicted probabilities.
-Q <seed> Seed for random data shuffling (default 1).
- Specified by:
setOptionsin interfaceOptionHandler- Overrides:
setOptionsin classRandomizableSingleClassifierEnhancer- Parameters:
options- the list of options as an array of strings- Throws:
java.lang.Exception- if an option is not supported
-
doNotCheckForModifiedClassAttributeTipText
public java.lang.String doNotCheckForModifiedClassAttributeTipText()
Returns the tip text for this property- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getDoNotCheckForModifiedClassAttribute
public boolean getDoNotCheckForModifiedClassAttribute()
Returns true if classifier checks whether class attribute has been modified by filter.
-
setDoNotCheckForModifiedClassAttribute
public void setDoNotCheckForModifiedClassAttribute(boolean flag)
Use this method to determine whether classifier checks whether class attribute has been modified by filter.
-
getOptions
public java.lang.String[] getOptions()
Gets the current settings of the Classifier.- Specified by:
getOptionsin interfaceOptionHandler- Overrides:
getOptionsin classRandomizableSingleClassifierEnhancer- Returns:
- an array of strings suitable for passing to setOptions
-
filterTipText
public java.lang.String filterTipText()
Returns the tip text for this property- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
setFilter
public void setFilter(Filter filter)
Sets the filter- Parameters:
filter- the filter with all options set.
-
getFilter
public Filter getFilter()
Gets the filter used.- Returns:
- the filter
-
getCapabilities
public Capabilities getCapabilities()
Returns default capabilities of the classifier.- Specified by:
getCapabilitiesin interfaceCapabilitiesHandler- Specified by:
getCapabilitiesin interfaceClassifier- Overrides:
getCapabilitiesin classSingleClassifierEnhancer- Returns:
- the capabilities of this classifier
- See Also:
Capabilities
-
buildClassifier
public void buildClassifier(Instances data) throws java.lang.Exception
Build the classifier on the filtered data.- Specified by:
buildClassifierin interfaceClassifier- Parameters:
data- the training data- Throws:
java.lang.Exception- if the classifier could not be built successfully
-
distributionForInstance
public double[] distributionForInstance(Instance instance) throws java.lang.Exception
Classifies a given instance after filtering.- Specified by:
distributionForInstancein interfaceClassifier- Overrides:
distributionForInstancein classAbstractClassifier- Parameters:
instance- the instance to be classified- Returns:
- the class distribution for the given instance
- Throws:
java.lang.Exception- if instance could not be classified successfully
-
batchSizeTipText
public java.lang.String batchSizeTipText()
Tool tip text for this property- Overrides:
batchSizeTipTextin classAbstractClassifier- Returns:
- the tool tip for this property
-
setBatchSize
public void setBatchSize(java.lang.String size)
Set the batch size to use. Gets passed through to the base learner if it implements BatchPredictor. Otherwise it is just ignored.- Specified by:
setBatchSizein interfaceBatchPredictor- Overrides:
setBatchSizein classAbstractClassifier- Parameters:
size- the batch size to use
-
getBatchSize
public java.lang.String getBatchSize()
Gets the preferred batch size from the base learner if it implements BatchPredictor. Returns 1 as the preferred batch size otherwise.- Specified by:
getBatchSizein interfaceBatchPredictor- Overrides:
getBatchSizein classAbstractClassifier- Returns:
- the batch size to use
-
distributionsForInstances
public double[][] distributionsForInstances(Instances insts) throws java.lang.Exception
Batch scoring method. Calls the appropriate method for the base learner if it implements BatchPredictor. Otherwise it simply calls the distributionForInstance() method repeatedly.- Specified by:
distributionsForInstancesin interfaceBatchPredictor- Overrides:
distributionsForInstancesin classAbstractClassifier- Parameters:
insts- the instances to get predictions for- Returns:
- an array of probability distributions, one for each instance
- Throws:
java.lang.Exception- if a problem occurs
-
implementsMoreEfficientBatchPrediction
public boolean implementsMoreEfficientBatchPrediction()
Returns true if the base classifier implements BatchPredictor and is able to generate batch predictions efficiently- Specified by:
implementsMoreEfficientBatchPredictionin interfaceBatchPredictor- Overrides:
implementsMoreEfficientBatchPredictionin classAbstractClassifier- Returns:
- true if the base classifier can generate batch predictions efficiently
-
toString
public java.lang.String toString()
Output a representation of this classifier- Overrides:
toStringin classjava.lang.Object- Returns:
- a representation of this classifier
-
getRevision
public java.lang.String getRevision()
Returns the revision string.- Specified by:
getRevisionin interfaceRevisionHandler- Overrides:
getRevisionin classAbstractClassifier- Returns:
- the revision
-
main
public static void main(java.lang.String[] argv)
Main method for testing this class.- Parameters:
argv- should contain the following arguments: -t training file [-T test file] [-c class index]
-
-