Class ClassifierPanel

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, EventListener, Accessible, Explorer.CapabilitiesFilterChangeListener, Explorer.ExplorerPanel, Explorer.LogHandler, Perspective

@PerspectiveInfo(ID="weka.gui.explorer.classifierpanel", title="Classify", toolTipText="Classify instances", iconPath="weka/gui/weka_icon_new_small.png") public class ClassifierPanel extends AbstractPerspective implements Explorer.CapabilitiesFilterChangeListener, Explorer.ExplorerPanel, Explorer.LogHandler
This panel allows the user to select and configure a classifier, set the attribute of the current dataset to be used as the class, and evaluate the classifier using a number of testing modes (test on the training data, train/test on a percentage split, n-fold cross-validation, test on a separate split). The results of classification runs are stored in a result history so that previous results are accessible.
Version:
$Revision: 15303 $
Author:
Len Trigg (trigg@cs.waikato.ac.nz), Mark Hall (mhall@cs.waikato.ac.nz), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
See Also:
  • Field Details

    • MODEL_FILE_EXTENSION

      public static String MODEL_FILE_EXTENSION
      The filename extension that should be used for model files.
    • PMML_FILE_EXTENSION

      public static String PMML_FILE_EXTENSION
      The filename extension that should be used for PMML xml files.
  • Constructor Details

    • ClassifierPanel

      public ClassifierPanel()
      Creates the classifier panel.
  • Method Details

    • setLog

      public void setLog(Logger newLog)
      Sets the Logger to receive informational messages.
      Specified by:
      setLog in interface Explorer.LogHandler
      Specified by:
      setLog in interface Perspective
      Overrides:
      setLog in class AbstractPerspective
      Parameters:
      newLog - the Logger that will now get info messages
    • setInstances

      public void setInstances(Instances inst)
      Tells the panel to use a new set of instances.
      Specified by:
      setInstances in interface Explorer.ExplorerPanel
      Specified by:
      setInstances in interface Perspective
      Overrides:
      setInstances in class AbstractPerspective
      Parameters:
      inst - a set of Instances
    • getInstances

      public Instances getInstances()
      Get the current set of instances
      Returns:
      the current set of instances
    • setupEval

      public static Evaluation setupEval(Evaluation eval, Classifier classifier, Instances inst, CostMatrix costMatrix, ClassifierErrorsPlotInstances plotInstances, AbstractOutput classificationOutput, boolean onlySetPriors) throws Exception
      Configures an evaluation object with respect to a classifier, cost matrix, output and plotting. Predictions are kept for calculating AUROC, etc.
      Parameters:
      eval - the Evaluation object to configure
      classifier - the Classifier being used
      inst - the Instances involved
      costMatrix - a cost matrix (if any)
      plotInstances - a ClassifierErrorsPlotInstances for visualization of errors (can be null)
      classificationOutput - an output object for printing predictions (can be null)
      onlySetPriors - true to only set priors
      Returns:
      the configured Evaluation object
      Throws:
      Exception - if a problem occurs
    • setupEval

      public static Evaluation setupEval(Evaluation eval, Classifier classifier, Instances inst, CostMatrix costMatrix, ClassifierErrorsPlotInstances plotInstances, AbstractOutput classificationOutput, boolean onlySetPriors, boolean collectPredictions) throws Exception
      Configures an evaluation object with respect to a classifier, cost matrix, output and plotting.
      Parameters:
      eval - the Evaluation object to configure
      classifier - the Classifier being used
      inst - the Instances involved
      costMatrix - a cost matrix (if any)
      plotInstances - a ClassifierErrorsPlotInstances for visualization of errors (can be null)
      classificationOutput - an output object for printing predictions (can be null)
      onlySetPriors - true to only set priors
      collectPredictions - whether to collect predictions for calculating ROC, etc.
      Returns:
      the configured Evaluation object
      Throws:
      Exception - if a problem occurs
    • saveClassifier

      public void saveClassifier(String name, Classifier classifier, Instances trainHeader)
      Saves the currently selected classifier.
      Parameters:
      name - the name of the run
      classifier - the classifier to save
      trainHeader - the header of the training instances
    • capabilitiesFilterChanged

      public void capabilitiesFilterChanged(Explorer.CapabilitiesFilterChangeEvent e)
      method gets called in case of a change event.
      Specified by:
      capabilitiesFilterChanged in interface Explorer.CapabilitiesFilterChangeListener
      Parameters:
      e - the associated change event
    • setExplorer

      public void setExplorer(Explorer parent)
      Sets the Explorer to use as parent frame (used for sending notifications about changes in the data).
      Specified by:
      setExplorer in interface Explorer.ExplorerPanel
      Parameters:
      parent - the parent frame
    • getExplorer

      public Explorer getExplorer()
      returns the parent Explorer frame.
      Specified by:
      getExplorer in interface Explorer.ExplorerPanel
      Returns:
      the parent
    • getTabTitle

      public String getTabTitle()
      Returns the title for the tab in the Explorer.
      Specified by:
      getTabTitle in interface Explorer.ExplorerPanel
      Returns:
      the title of this tab
    • getTabTitleToolTip

      public String getTabTitleToolTip()
      Returns the tooltip for the tab in the Explorer.
      Specified by:
      getTabTitleToolTip in interface Explorer.ExplorerPanel
      Returns:
      the tooltip of this tab
    • requiresLog

      public boolean requiresLog()
      Description copied from class: AbstractPerspective
      Whether this perspective requires a graphical log to write to
      Specified by:
      requiresLog in interface Perspective
      Overrides:
      requiresLog in class AbstractPerspective
      Returns:
      true if a log is needed by this perspective
    • acceptsInstances

      public boolean acceptsInstances()
      Description copied from class: AbstractPerspective
      Returns true if this perspective can do something meaningful with a set of instances
      Specified by:
      acceptsInstances in interface Perspective
      Overrides:
      acceptsInstances in class AbstractPerspective
      Returns:
      true if this perspective accepts instances
    • getDefaultSettings

      public Defaults getDefaultSettings()
      Description copied from class: AbstractPerspective
      Get the default settings for this perspective (or null if there are none)
      Specified by:
      getDefaultSettings in interface Perspective
      Overrides:
      getDefaultSettings in class AbstractPerspective
      Returns:
      the default settings for this perspective, or null if the perspective does not have any settings
    • okToBeActive

      public boolean okToBeActive()
      Description copied from class: AbstractPerspective
      Returns true if the perspective is usable at this time. This is a no-opp implementation that always returns true. Subclasses should override if there are specific conditions that need to be met (e.g. can't operate if there are no instances set).
      Specified by:
      okToBeActive in interface Perspective
      Overrides:
      okToBeActive in class AbstractPerspective
      Returns:
      true if this perspective is usable at this time
    • setActive

      public void setActive(boolean active)
      Description copied from class: AbstractPerspective
      Set active status of this perspective. True indicates that this perspective is the visible active perspective in the application
      Specified by:
      setActive in interface Perspective
      Overrides:
      setActive in class AbstractPerspective
      Parameters:
      active - true if this perspective is the active one
    • settingsChanged

      public void settingsChanged()
      Description copied from class: AbstractPerspective
      Called when the user alters settings. The settings altered by the user are not necessarily ones related to this perspective
      Specified by:
      settingsChanged in interface Perspective
      Overrides:
      settingsChanged in class AbstractPerspective
    • isSelectedCV

      public boolean isSelectedCV()
      Gets whether cross-validation has been selected by the user
      Returns:
      true if cross-validation has been selected
    • isSelectedTestOnTrain

      public boolean isSelectedTestOnTrain()
      Gets whether test on train has been selected by the user
      Returns:
      true if testing is to be done on the training set
    • isSelectedPercentageSplit

      public boolean isSelectedPercentageSplit()
      Gets whether a percentage split has been selected by the user
      Returns:
      true if a percentage split has been selected
    • isSelectedSeparateTestSet

      public boolean isSelectedSeparateTestSet()
      Gets whether a separate test set has been selected by the user
      Returns:
      true if a separate test set has been selected by the user
    • isSelectedEvalWithRespectToCosts

      public boolean isSelectedEvalWithRespectToCosts()
      Gets whether evaluation with respect to costs has been selected by the user
      Returns:
      true if eval with respect to costs
    • isSelectedOutputModel

      public boolean isSelectedOutputModel()
      Gets whether the user has opted to output the model
      Returns:
      true if the model is to be output
    • isSelectedOutputModelsForTrainingSplits

      public boolean isSelectedOutputModelsForTrainingSplits()
      Gets whether the user has opted to output the models for the training splits
      Returns:
      true if the models for the training splits are to be output
    • isSelectedOutputConfusion

      public boolean isSelectedOutputConfusion()
      Gets whether the user has opted to output the confusion matrix
      Returns:
      true if the confusion matrix is to be output
    • isSelectedOutputPerClassStats

      public boolean isSelectedOutputPerClassStats()
      Gets whether the user has opted to output per-class stats
      Returns:
      true if per-class stats are to be output
    • isSelectedOutputEntropy

      public boolean isSelectedOutputEntropy()
      Gets whether the user has opted to output entropy metrics
      Returns:
      true if entropy metrics are to be output
    • isSelectedStoreTestDataAndPredictions

      public boolean isSelectedStoreTestDataAndPredictions()
      Gets whether the user has opted to store the test data and the predictions in the history
      Returns:
      true if test data and predictions are to be stored
    • isSelectedCollectPredictionsForEvaluation

      public boolean isSelectedCollectPredictionsForEvaluation()
      Gets whether the user has opted to collect the predictions for computing evaluation statistics
      Returns:
      true if predictions are to be stored
    • isSelectedOutputSourceCode

      public boolean isSelectedOutputSourceCode()
      Gets whether the user has opted to output source code
      Returns:
      true if source code is to be output
    • isSelectedPreserveOrder

      public boolean isSelectedPreserveOrder()
      Gets whether the user has opted to preserve order of instances in a percentage split
      Returns:
      whether the user has opted to preserve the instance order
    • getSourceCodeClassName

      public String getSourceCodeClassName()
      Gets the name of the source code class to be generated
      Returns:
      the name of the source code class to be generated
    • getSelectedClassIndex

      public int getSelectedClassIndex()
      Get the selected (0-based) class index
      Returns:
      the selected class index
    • getNumCVFolds

      public int getNumCVFolds()
      Get the number of cross-validation folds to use
      Returns:
      the number of cross-validation folds to use
    • getPercentageSplit

      public double getPercentageSplit()
      Get the percentage to use for percentage split evaluation
      Returns:
      the percentage to use in a percent split evaluation
    • getClassifier

      public Classifier getClassifier()
      Get the currently configured classifier from the GenericObjectEditor
      Returns:
      the currently configured classifier
    • getCostMatrix

      public CostMatrix getCostMatrix()
      Get the cost matrix (if any)
      Returns:
      the cost matrix
    • getClassificationOutputFormatter

      public Object getClassificationOutputFormatter()
      Get the formatter for classifcation output
      Returns:
      the formatter for classification output
    • getResultHistory

      public ResultHistoryPanel getResultHistory()
      Get the result history panel
      Returns:
      the result history panel
    • getSeparateTestSetLoader

      public Loader getSeparateTestSetLoader()
      Get the loader object used for loading a separate test set
      Returns:
      the loader used for loading a separate test set
    • getSeparateTestSetClassIndex

      public int getSeparateTestSetClassIndex()
      Get the class index specified for the separate test set
      Returns:
      the class index specified for the separate test set
    • getRandomSeed

      public int getRandomSeed()
      Get the random seed
      Returns:
      the random seed
    • getLog

      public Logger getLog()
      Get the log
      Returns:
      the log object
    • main

      public static void main(String[] args)
      Tests out the classifier panel from the command line.
      Parameters:
      args - may optionally contain the name of a dataset to load.