weka.gui.explorer

## Class ClassifierPanel

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JPanel
        - - weka.gui.AbstractPerspective
          - - weka.gui.explorer.ClassifierPanel

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.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: 14519 $
  Author:
    Len Trigg (trigg@cs.waikato.ac.nz), Mark Hall (mhall@cs.waikato.ac.nz), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ClassifierPanel.TestMode`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.BaselineResizeBehavior`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `MODEL_FILE_EXTENSION` The filename extension that should be used for model files.
    `static java.lang.String` | `PMML_FILE_EXTENSION` The filename extension that should be used for PMML xml files.

    - ### Fields inherited from class javax.swing.JComponent

      `TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

    - ### Fields inherited from class java.awt.Component

      `BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClassifierPanel()` Creates the classifier panel.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `acceptsInstances()` Returns true if this perspective can do something meaningful with a set of instances
    `void` | `capabilitiesFilterChanged(Explorer.CapabilitiesFilterChangeEvent e)` method gets called in case of a change event.
    `java.lang.Object` | `getClassificationOutputFormatter()` Get the formatter for classifcation output
    `Classifier` | `getClassifier()` Get the currently configured classifier from the GenericObjectEditor
    `CostMatrix` | `getCostMatrix()` Get the cost matrix (if any)
    `VisualizePanel` | `getCurrentVisualization()` Get the current visualization
    `Defaults` | `getDefaultSettings()` Get the default settings for this perspective (or null if there are none)
    `Explorer` | `getExplorer()` returns the parent Explorer frame.
    `Instances` | `getInstances()` Get the current set of instances
    `Logger` | `getLog()` Get the log
    `int` | `getNumCVFolds()` Get the number of cross-validation folds to use
    `double` | `getPercentageSplit()` Get the percentage to use for percentage split evaluation
    `int` | `getRandomSeed()` Get the random seed
    `ResultHistoryPanel` | `getResultHistory()` Get the result history panel
    `int` | `getSelectedClassIndex()` Get the selected (0-based) class index
    `int` | `getSeparateTestSetClassIndex()` Get the class index specified for the separate test set
    `Loader` | `getSeparateTestSetLoader()` Get the loader object used for loading a separate test set
    `java.lang.String` | `getSourceCodeClassName()` Gets the name of the source code class to be generated
    `java.lang.String` | `getTabTitle()` Returns the title for the tab in the Explorer.
    `java.lang.String` | `getTabTitleToolTip()` Returns the tooltip for the tab in the Explorer.
    `boolean` | `isSelectedCV()` Gets whether cross-validation has been selected by the user
    `boolean` | `isSelectedEvalWithRespectToCosts()` Gets whether evaluation with respect to costs has been selected by the user
    `boolean` | `isSelectedOutputConfusion()` Gets whether the user has opted to output the confusion matrix
    `boolean` | `isSelectedOutputEntropy()` Gets whether the user has opted to output entropy metrics
    `boolean` | `isSelectedOutputModel()` Gets whether the user has opted to output the model
    `boolean` | `isSelectedOutputModelsForTrainingSplits()` Gets whether the user has opted to output the models for the training splits
    `boolean` | `isSelectedOutputPerClassStats()` Gets whether the user has opted to output per-class stats
    `boolean` | `isSelectedOutputSourceCode()` Gets whether the user has opted to output source code
    `boolean` | `isSelectedPercentageSplit()` Gets whether a percentage split has been selected by the user
    `boolean` | `isSelectedPreserveOrder()` Gets whether the user has opted to preserve order of instances in a percentage split
    `boolean` | `isSelectedSeparateTestSet()` Gets whether a separate test set has been selected by the user
    `boolean` | `isSelectedStorePredictions()` Gets whether the user has opted to store the predictions in the history
    `boolean` | `isSelectedTestOnTrain()` Gets whether test on train has been selected by the user
    `static void` | `main(java.lang.String[] args)` Tests out the classifier panel from the command line.
    `boolean` | `okToBeActive()` Returns true if the perspective is usable at this time.
    `boolean` | `requiresLog()` Whether this perspective requires a graphical log to write to
    `void` | `saveClassifier(java.lang.String name, Classifier classifier, Instances trainHeader)` Saves the currently selected classifier.
    `void` | `setActive(boolean active)` Set active status of this perspective.
    `void` | `setCurrentVisualization(VisualizePanel current)` Set the current visualization
    `void` | `setExplorer(Explorer parent)` Sets the Explorer to use as parent frame (used for sending notifications about changes in the data).
    `void` | `setInstances(Instances inst)` Tells the panel to use a new set of instances.
    `void` | `setLog(Logger newLog)` Sets the Logger to receive informational messages.
    `void` | `settingsChanged()` Called when the user alters settings.
    `static Evaluation` | `setupEval(Evaluation eval, Classifier classifier, Instances inst, CostMatrix costMatrix, ClassifierErrorsPlotInstances plotInstances, AbstractOutput classificationOutput, boolean onlySetPriors)` Configures an evaluation object with respect to a classifier, cost matrix, output and plotting.

    - ### Methods inherited from class weka.gui.AbstractPerspective

      `getMainApplication, getMenus, getPerspectiveIcon, getPerspectiveID, getPerspectiveTipText, getPerspectiveTitle, instantiationComplete, setLoaded, setMainApplication, toString`

    - ### Methods inherited from class javax.swing.JPanel

      `getAccessibleContext, getUI, getUIClassID, setUI, updateUI`

    - ### Methods inherited from class javax.swing.JComponent

      `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### MODEL_FILE_EXTENSION

          public static java.lang.String MODEL_FILE_EXTENSION

      The filename extension that should be used for model files.

    - #### PMML_FILE_EXTENSION

          public static java.lang.String PMML_FILE_EXTENSION

      The filename extension that should be used for PMML xml files.

  - ### Constructor Detail

    - #### ClassifierPanel

          public ClassifierPanel()

      Creates the classifier panel.

  - ### Method Detail

    - #### 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 java.lang.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
      Returns:
        the configured Evaluation object
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### saveClassifier

          public void saveClassifier(java.lang.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 java.lang.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 java.lang.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

    - #### isSelectedStorePredictions

          public boolean isSelectedStorePredictions()

      Gets whether the user has opted to store the predictions in the history
      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 java.lang.String getSourceCodeClassName()

      Gets the name of the source code class to be generated
      Returns:
        the name of the source code class to be generated

    - #### getCurrentVisualization

          public VisualizePanel getCurrentVisualization()

      Get the current visualization
      Returns:
        the current visualization

    - #### setCurrentVisualization

          public void setCurrentVisualization(VisualizePanel current)

      Set the current visualization
      Parameters:
        `current` - the visualization to use

    - #### 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 java.lang.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(java.lang.String[] args)

      Tests out the classifier panel from the command line.
      Parameters:
        `args` - may optionally contain the name of a dataset to load.