weka.estimators
Class CheckEstimator

java.lang.Object
  extended by weka.estimators.CheckEstimator
All Implemented Interfaces:
OptionHandler, RevisionHandler

public class CheckEstimator
extends java.lang.Object
implements OptionHandler, RevisionHandler

Class for examining the capabilities and finding problems with estimators. If you implement a estimator using the WEKA.libraries, you should run the checks on it to ensure robustness and correct operation. Passing all the tests of this object does not mean bugs in the estimator don't exist, but this will help find some common ones.

Typical usage:

java weka.estimators.CheckEstimator -W estimator_name estimator_options

This class uses code from the CheckEstimatorClass ATTENTION! Current estimators can only 1. split on a nominal class attribute 2. build estimators for nominal and numeric attributes 3. build estimators independendly of the class type The functionality to test on other class and attribute types is left in big parts in the code. CheckEstimator reports on the following:

Running CheckEstimator with the debug option set will output the training and test datasets for any failed tests.

The weka.estimators.AbstractEstimatorTest uses this class to test all the estimators. Any changes here, have to be checked in that abstract test class, too.

Valid options are:

 -D
  Turn on debugging output.
 -S
  Silent mode - prints nothing to stdout.
 -N <num>
  The number of instances in the datasets (default 100).
 -W
  Full name of the estimator analysed.
  eg: weka.estimators.NormalEstimator
 
 Options specific to estimator weka.estimators.NormalEstimator:
 
 -D
  If set, estimator is run in debug mode and
  may output additional info to the console
Options after -- are passed to the designated estimator.

Version:
$Revision: 1.5 $
Author:
Len Trigg (trigg@cs.waikato.ac.nz), FracPete (fracpete at waikato dot ac dot nz)
See Also:
TestInstances

Nested Class Summary
static class CheckEstimator.AttrTypes
          class that contains info about the attribute types the estimator can estimate estimator work on one attribute only
static class CheckEstimator.EstTypes
          public class that contains info about the chosen attribute type estimator work on one attribute only
 class CheckEstimator.PostProcessor
          a class for postprocessing the test-data
 
Constructor Summary
CheckEstimator()
           
 
Method Summary
 void doTests()
          Begin the tests, reporting results to System.out
 boolean getDebug()
          Get whether debugging is turned on
 Estimator getEstimator()
          Get the estimator used as the estimator
static int getMinMax(Instances inst, int attrIndex, double[] minMax)
          Find the minimum and the maximum of the attribute and return it in the last parameter..
 int getNumInstances()
          Gets the current number of instances to use for the datasets.
 java.lang.String[] getOptions()
          Gets the current settings of the CheckEstimator.
 CheckEstimator.PostProcessor getPostProcessor()
          returns the current PostProcessor, can be null
 java.lang.String getRevision()
          Returns the revision string.
 boolean getSilent()
          Get whether silent mode is turned on
 boolean hasClasspathProblems()
          returns TRUE if the estimator returned a "not in classpath" Exception
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static void main(java.lang.String[] args)
          Test method for this class
 void setDebug(boolean debug)
          Set debugging mode
 void setEstimator(Estimator newEstimator)
          Set the estimator for boosting.
 void setNumInstances(int value)
          Sets the number of instances to use in the datasets (some estimators might require more instances).
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setPostProcessor(CheckEstimator.PostProcessor value)
          sets the PostProcessor to use
 void setSilent(boolean value)
          Set slient mode, i.e., no output at all to stdout
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CheckEstimator

public CheckEstimator()
Method Detail

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
  Turn on debugging output.
 -S
  Silent mode - prints nothing to stdout.
 -N <num>
  The number of instances in the datasets (default 100).
 -W
  Full name of the estimator analysed.
  eg: weka.estimators.NormalEstimator
 
 Options specific to estimator weka.estimators.NormalEstimator:
 
 -D
  If set, estimator 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 CheckEstimator.

Specified by:
getOptions in interface OptionHandler
Returns:
an array of strings suitable for passing to setOptions

setPostProcessor

public void setPostProcessor(CheckEstimator.PostProcessor value)
sets the PostProcessor to use

Parameters:
value - the new PostProcessor
See Also:
m_PostProcessor

getPostProcessor

public CheckEstimator.PostProcessor getPostProcessor()
returns the current PostProcessor, can be null

Returns:
the current PostProcessor

hasClasspathProblems

public boolean hasClasspathProblems()
returns TRUE if the estimator returned a "not in classpath" Exception

Returns:
true if CLASSPATH problems occurred

doTests

public void doTests()
Begin the tests, reporting results to System.out


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

setSilent

public void setSilent(boolean value)
Set slient mode, i.e., no output at all to stdout

Parameters:
value - whether silent mode is active or not

getSilent

public boolean getSilent()
Get whether silent mode is turned on

Returns:
true if silent mode is on

setNumInstances

public void setNumInstances(int value)
Sets the number of instances to use in the datasets (some estimators might require more instances).

Parameters:
value - the number of instances to use

getNumInstances

public int getNumInstances()
Gets the current number of instances to use for the datasets.

Returns:
the number of instances

setEstimator

public void setEstimator(Estimator newEstimator)
Set the estimator for boosting.

Parameters:
newEstimator - the Estimator to use.

getEstimator

public Estimator getEstimator()
Get the estimator used as the estimator

Returns:
the estimator used as the estimator

getMinMax

public static int getMinMax(Instances inst,
                            int attrIndex,
                            double[] minMax)
                     throws java.lang.Exception
Find the minimum and the maximum of the attribute and return it in the last parameter..

Parameters:
inst - instances used to build the estimator
attrIndex - index of the attribute
minMax - the array to return minimum and maximum in
Returns:
number of not missing values
Throws:
java.lang.Exception - if parameter minMax wasn't initialized properly

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Returns:
the revision

main

public static void main(java.lang.String[] args)
Test method for this class

Parameters:
args - the commandline parameters