Package weka.classifiers.meta
Class Stacking
- java.lang.Object
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,Classifier,BatchPredictor,CapabilitiesHandler,CapabilitiesIgnorer,CommandlineRunnable,OptionHandler,Randomizable,RevisionHandler,TechnicalInformationHandler
public class Stacking extends RandomizableParallelMultipleClassifiersCombiner implements TechnicalInformationHandler
Combines several classifiers using the stacking method. Can do classification or regression.
For more information, see
David H. Wolpert (1992). Stacked generalization. Neural Networks. 5:241-259. BibTeX:@article{Wolpert1992, author = {David H. Wolpert}, journal = {Neural Networks}, pages = {241-259}, publisher = {Pergamon Press}, title = {Stacked generalization}, volume = {5}, year = {1992} }Valid options are:-M <scheme specification> Full name of meta classifier, followed by options. (default: "weka.classifiers.rules.Zero")
-X <number of folds> Sets the number of cross-validation folds.
-S <num> Random number seed. (default 1)
-B <classifier specification> Full class name of classifier to include, followed by scheme options. May be specified multiple times. (default: "weka.classifiers.rules.ZeroR")
-D If set, classifier is run in debug mode and may output additional info to the console
- Version:
- $Revision: 15033 $
- Author:
- Eibe Frank (eibe@cs.waikato.ac.nz)
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class weka.classifiers.AbstractClassifier
BATCH_SIZE_DEFAULT, NUM_DECIMAL_PLACES_DEFAULT
-
-
Constructor Summary
Constructors Constructor Description Stacking()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanbaseClassifiersImplementMoreEfficientBatchPrediction()Returns true if any of the base classifiers are able to generate batch predictions efficiently and all of them implement BatchPredictor.voidbuildClassifier(Instances data)Builds a classifier using stacking.double[]distributionForInstance(Instance instance)Returns estimated class probabilities for the given instance if the class is nominal and a one-element array containing the numeric prediction if the class is numeric.double[][]distributionsForInstances(Instances instances)Returns class probabilities for all given instances if the class is nominal or corresponding predicted numeric values if the class is numeric.CapabilitiesgetCapabilities()Returns combined capabilities of the base classifiers, i.e., the capabilities all of them have in common.ClassifiergetMetaClassifier()Gets the meta classifier.intgetNumFolds()Gets the number of folds for the cross-validation.java.lang.String[]getOptions()Gets the current settings of the Classifier.java.lang.StringgetRevision()Returns the revision string.TechnicalInformationgetTechnicalInformation()Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.java.lang.StringglobalInfo()Returns a string describing classifierbooleanimplementsMoreEfficientBatchPrediction()Returns true if the meta classifier or any of the base classifiers are able to generate batch predictions efficiently and all of them implement BatchPredictor.java.util.Enumeration<Option>listOptions()Returns an enumeration describing the available options.static voidmain(java.lang.String[] argv)Main method for testing this class.java.lang.StringmetaClassifierTipText()Returns the tip text for this propertyjava.lang.StringnumFoldsTipText()Returns the tip text for this propertyvoidpostExecution()Perform any teardown stuff that might need to happen after execution.voidpreExecution()Perform any setup stuff that might need to happen before commandline execution.voidsetMetaClassifier(Classifier classifier)Adds meta classifiervoidsetNumFolds(int numFolds)Sets the number of folds for the cross-validation.voidsetOptions(java.lang.String[] options)Parses a given list of options.java.lang.StringtoString()Output a representation of this classifier-
Methods inherited from class weka.classifiers.RandomizableParallelMultipleClassifiersCombiner
getSeed, seedTipText, setSeed
-
Methods inherited from class weka.classifiers.ParallelMultipleClassifiersCombiner
getNumExecutionSlots, numExecutionSlotsTipText, setNumExecutionSlots
-
Methods inherited from class weka.classifiers.MultipleClassifiersCombiner
classifiersTipText, getClassifier, getClassifiers, setClassifiers
-
Methods inherited from class weka.classifiers.AbstractClassifier
batchSizeTipText, classifyInstance, debugTipText, doNotCheckCapabilitiesTipText, forName, getBatchSize, getDebug, getDoNotCheckCapabilities, getNumDecimalPlaces, makeCopies, makeCopy, numDecimalPlacesTipText, run, runClassifier, setBatchSize, setDebug, setDoNotCheckCapabilities, setNumDecimalPlaces
-
-
-
-
Method Detail
-
globalInfo
public java.lang.String globalInfo()
Returns a string describing classifier- Returns:
- a description suitable for displaying in the explorer/experimenter gui
-
getTechnicalInformation
public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.- Specified by:
getTechnicalInformationin interfaceTechnicalInformationHandler- Returns:
- the technical information about this class
-
listOptions
public java.util.Enumeration<Option> listOptions()
Returns an enumeration describing the available options.- Specified by:
listOptionsin interfaceOptionHandler- Overrides:
listOptionsin classRandomizableParallelMultipleClassifiersCombiner- 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:
-M <scheme specification> Full name of meta classifier, followed by options. (default: "weka.classifiers.rules.Zero")
-X <number of folds> Sets the number of cross-validation folds.
-S <num> Random number seed. (default 1)
-B <classifier specification> Full class name of classifier to include, followed by scheme options. May be specified multiple times. (default: "weka.classifiers.rules.ZeroR")
-D If set, classifier is run in debug mode and may output additional info to the console
- Specified by:
setOptionsin interfaceOptionHandler- Overrides:
setOptionsin classRandomizableParallelMultipleClassifiersCombiner- 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:
getOptionsin interfaceOptionHandler- Overrides:
getOptionsin classRandomizableParallelMultipleClassifiersCombiner- Returns:
- an array of strings suitable for passing to setOptions
-
numFoldsTipText
public java.lang.String numFoldsTipText()
Returns the tip text for this property- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
getNumFolds
public int getNumFolds()
Gets the number of folds for the cross-validation.- Returns:
- the number of folds for the cross-validation
-
setNumFolds
public void setNumFolds(int numFolds) throws java.lang.ExceptionSets the number of folds for the cross-validation.- Parameters:
numFolds- the number of folds for the cross-validation- Throws:
java.lang.Exception- if parameter illegal
-
metaClassifierTipText
public java.lang.String metaClassifierTipText()
Returns the tip text for this property- Returns:
- tip text for this property suitable for displaying in the explorer/experimenter gui
-
setMetaClassifier
public void setMetaClassifier(Classifier classifier)
Adds meta classifier- Parameters:
classifier- the classifier with all options set.
-
getMetaClassifier
public Classifier getMetaClassifier()
Gets the meta classifier.- Returns:
- the meta classifier
-
getCapabilities
public Capabilities getCapabilities()
Returns combined capabilities of the base classifiers, i.e., the capabilities all of them have in common.- Specified by:
getCapabilitiesin interfaceCapabilitiesHandler- Specified by:
getCapabilitiesin interfaceClassifier- Overrides:
getCapabilitiesin classMultipleClassifiersCombiner- Returns:
- the capabilities of the base classifiers
- See Also:
Capabilities
-
implementsMoreEfficientBatchPrediction
public boolean implementsMoreEfficientBatchPrediction()
Returns true if the meta classifier or any of the base classifiers are able to generate batch predictions efficiently and all of them implement BatchPredictor.- Specified by:
implementsMoreEfficientBatchPredictionin interfaceBatchPredictor- Overrides:
implementsMoreEfficientBatchPredictionin classAbstractClassifier- Returns:
- true if batch prediction can be done efficiently
-
baseClassifiersImplementMoreEfficientBatchPrediction
public boolean baseClassifiersImplementMoreEfficientBatchPrediction()
Returns true if any of the base classifiers are able to generate batch predictions efficiently and all of them implement BatchPredictor.- Returns:
- true if the base classifiers can do batch prediction efficiently
-
buildClassifier
public void buildClassifier(Instances data) throws java.lang.Exception
Builds a classifier using stacking. The base classifiers' output is fed into the meta classifier to make the final decision. The training data for the meta classifier is generated using (stratified) cross-validation.- Specified by:
buildClassifierin interfaceClassifier- Overrides:
buildClassifierin classParallelMultipleClassifiersCombiner- Parameters:
data- the training data to be used for generating the stacked classifier.- Throws:
java.lang.Exception- if the classifier could not be built successfully
-
distributionForInstance
public double[] distributionForInstance(Instance instance) throws java.lang.Exception
Returns estimated class probabilities for the given instance if the class is nominal and a one-element array containing the numeric prediction if the class is numeric.- Specified by:
distributionForInstancein interfaceClassifier- Overrides:
distributionForInstancein classAbstractClassifier- Parameters:
instance- the instance to be classified- Returns:
- the distribution
- Throws:
java.lang.Exception- if instance could not be classified successfully
-
distributionsForInstances
public double[][] distributionsForInstances(Instances instances) throws java.lang.Exception
Returns class probabilities for all given instances if the class is nominal or corresponding predicted numeric values if the class is numeric. The meta classifier must implement BatchPredictor, otherwise an exception will be thrown.- Specified by:
distributionsForInstancesin interfaceBatchPredictor- Overrides:
distributionsForInstancesin classAbstractClassifier- Parameters:
instances- the instance sto be classified- Returns:
- the distributions
- Throws:
java.lang.Exception- if instances could not be classified successfully
-
toString
public java.lang.String toString()
Output a representation of this classifier- Overrides:
toStringin classjava.lang.Object- Returns:
- a string representation of the classifier
-
preExecution
public void preExecution() throws java.lang.ExceptionDescription copied from class:AbstractClassifierPerform any setup stuff that might need to happen before commandline execution. Subclasses should override if they need to do something here- Specified by:
preExecutionin interfaceCommandlineRunnable- Overrides:
preExecutionin classMultipleClassifiersCombiner- Throws:
java.lang.Exception- if a problem occurs during setup
-
postExecution
public void postExecution() throws java.lang.ExceptionDescription copied from class:AbstractClassifierPerform any teardown stuff that might need to happen after execution. Subclasses should override if they need to do something here- Specified by:
postExecutionin interfaceCommandlineRunnable- Overrides:
postExecutionin classMultipleClassifiersCombiner- Throws:
java.lang.Exception- if a problem occurs during teardown
-
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]
-
-