weka.gui.explorer
Class ClassifierPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byweka.gui.explorer.ClassifierPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class ClassifierPanel
extends javax.swing.JPanel

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: 1.72 $
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 inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  java.awt.Dimension COMBO_SIZE
          Stop the class combo from taking up to much space
protected  PropertyPanel m_CEPanel
          The panel showing the current classifier selection
protected  javax.swing.JComboBox m_ClassCombo
          Lets the user select the class column
protected  GenericObjectEditor m_ClassifierEditor
          Lets the user configure the classifier
protected  CostMatrixEditor m_CostMatrixEditor
          The cost matrix editor for evaluation costs
protected  VisualizePanel m_CurrentVis
          The current visualization object
protected  javax.swing.JRadioButton m_CVBut
          Click to set test mode to cross-validation
protected  javax.swing.JLabel m_CVLab
          Label by where the cv folds are entered
protected  javax.swing.JTextField m_CVText
          The field where the cv folds are entered
protected  javax.swing.JCheckBox m_EvalWRTCostsBut
          Check to evaluate w.r.t a cost matrix
protected  javax.swing.JFileChooser m_FileChooser
          The file chooser for selecting model files
protected  ResultHistoryPanel m_History
          A panel controlling results viewing
protected  Instances m_Instances
          The main set of instances we're playing with
protected  Logger m_Log
          The destination for log/status messages
protected  javax.swing.filechooser.FileFilter m_ModelFilter
          Filter to ensure only model files are selected
(package private)  javax.swing.JButton m_MoreOptions
          Button for further output/visualize options
protected  javax.swing.JCheckBox m_OutputConfusionBut
          Check to output a confusion matrix
protected  javax.swing.JCheckBox m_OutputEntropyBut
          Check to output entropy statistics
protected  javax.swing.JCheckBox m_OutputModelBut
          Check to output the model built from the training data
protected  javax.swing.JCheckBox m_OutputPerClassBut
          Check to output true/false positives, precision/recall for each class
protected  javax.swing.JCheckBox m_OutputPredictionsTextBut
          Check to output text predictions
protected  javax.swing.JTextArea m_OutText
          The output area for classification results
protected  javax.swing.JRadioButton m_PercentBut
          Click to set test mode to generate a % split
protected  javax.swing.JLabel m_PercentLab
          Label by where the % split is entered
protected  javax.swing.JTextField m_PercentText
          The field where the % split is entered
(package private)  java.awt.event.ActionListener m_RadioListener
          Alters the enabled/disabled status of elements associated with each radio button
protected  javax.swing.JLabel m_RandomLab
           
protected  javax.swing.JTextField m_RandomSeedText
          User specified random seed for cross validation or % split
protected  java.lang.Thread m_RunThread
          A thread that classification runs in
(package private)  SaveBuffer m_SaveOut
          The buffer saving object for saving output
protected  javax.swing.JButton m_SetCostsBut
           
protected  PropertyDialog m_SetCostsFrame
          The frame used to show the cost matrix editing panel
protected  javax.swing.JButton m_SetTestBut
          The button used to open a separate test dataset
protected  javax.swing.JFrame m_SetTestFrame
          The frame used to show the test set selection panel
protected  javax.swing.JButton m_StartBut
          Click to start running the classifier
protected  javax.swing.JButton m_StopBut
          Click to stop a running classifier
protected  javax.swing.JCheckBox m_StorePredictionsBut
          Check to save the predictions in the results list for visualizing later on
protected  InstancesSummaryPanel m_Summary
          The instances summary panel displayed by m_SetTestFrame
protected  Instances m_TestInstances
          The user-supplied test set (if any)
protected  javax.swing.JRadioButton m_TestSplitBut
          Click to set test mode to a user-specified test set
protected  javax.swing.JRadioButton m_TrainBut
          Click to set test mode to test on training data
protected  int m_visXIndex
          default x index for visualizing
protected  int m_visYIndex
          default y index for visualizing
static java.lang.String MODEL_FILE_EXTENSION
          The filename extension that should be used for model files
 
Fields inherited from class javax.swing.JPanel
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
 
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
ClassifierPanel()
          Creates the classifier panel
 
Method Summary
protected  void loadClassifier()
          Loads a classifier
static void main(java.lang.String[] args)
          Tests out the classifier panel from the command line.
private  void postProcessPlotInfo(FastVector plotSize)
          Post processes numeric class errors into shape sizes for plotting in the visualize panel
protected  java.lang.String predictionText(Classifier classifier, Instance inst, int instNum)
           
private  void processClassifierPrediction(Instance toPredict, Classifier classifier, Evaluation eval, FastVector predictions, Instances plotInstances, FastVector plotShape, FastVector plotSize)
          Process a classifier's prediction for an instance and update a set of plotting instances and additional plotting info. plotInfo for nominal class datasets holds shape types (actual data points have automatic shape type assignment; classifier error data points have box shape type).
protected  void reevaluateModel(java.lang.String name, Classifier classifier, Instances trainHeader)
          Re-evaluates the named classifier with the current test set.
protected  void saveBuffer(java.lang.String name)
          Save the currently selected classifier output to a file.
protected  void saveClassifier(java.lang.String name, Classifier classifier, Instances trainHeader)
          Saves the currently selected classifier
 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
protected  void setTestSet()
          Sets the user test set.
private  Instances setUpVisualizableInstances(Instances trainInstances)
          Sets up the structure for the visualizable instances.
 void setXY_VisualizeIndexes(int x, int y)
          Set the default attributes to use on the x and y axis of a new visualization object.
protected  void startClassifier()
          Starts running the currently configured classifier with the current settings.
protected  void stopClassifier()
          Stops the currently running classifier (if any).
protected  void updateRadioLinks()
          Updates the enabled status of the input fields and labels.
protected  void visualize(java.lang.String name, int x, int y)
          Handles constructing a popup menu with visualization options.
protected  void visualizeBayesNet(java.lang.String XMLBIF, java.lang.String graphName)
          Pops up a GraphVisualizer for the BayesNet classifier from the currently selected item in the results list
protected  void visualizeClassifierErrors(VisualizePanel sp)
          Pops up a VisualizePanel for visualizing the data and errors for the classifier from the currently selected item in the results list
protected  void visualizeTree(java.lang.String dottyString, java.lang.String treeName)
          Pops up a TreeVisualizer for the classifier from the currently selected item in the results list
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, 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


m_ClassifierEditor

protected GenericObjectEditor m_ClassifierEditor
Lets the user configure the classifier


m_CEPanel

protected PropertyPanel m_CEPanel
The panel showing the current classifier selection


m_OutText

protected javax.swing.JTextArea m_OutText
The output area for classification results


m_Log

protected Logger m_Log
The destination for log/status messages


m_SaveOut

SaveBuffer m_SaveOut
The buffer saving object for saving output


m_History

protected ResultHistoryPanel m_History
A panel controlling results viewing


m_ClassCombo

protected javax.swing.JComboBox m_ClassCombo
Lets the user select the class column


m_CVBut

protected javax.swing.JRadioButton m_CVBut
Click to set test mode to cross-validation


m_PercentBut

protected javax.swing.JRadioButton m_PercentBut
Click to set test mode to generate a % split


m_TrainBut

protected javax.swing.JRadioButton m_TrainBut
Click to set test mode to test on training data


m_TestSplitBut

protected javax.swing.JRadioButton m_TestSplitBut
Click to set test mode to a user-specified test set


m_StorePredictionsBut

protected javax.swing.JCheckBox m_StorePredictionsBut
Check to save the predictions in the results list for visualizing later on


m_OutputModelBut

protected javax.swing.JCheckBox m_OutputModelBut
Check to output the model built from the training data


m_OutputPerClassBut

protected javax.swing.JCheckBox m_OutputPerClassBut
Check to output true/false positives, precision/recall for each class


m_OutputConfusionBut

protected javax.swing.JCheckBox m_OutputConfusionBut
Check to output a confusion matrix


m_OutputEntropyBut

protected javax.swing.JCheckBox m_OutputEntropyBut
Check to output entropy statistics


m_OutputPredictionsTextBut

protected javax.swing.JCheckBox m_OutputPredictionsTextBut
Check to output text predictions


m_EvalWRTCostsBut

protected javax.swing.JCheckBox m_EvalWRTCostsBut
Check to evaluate w.r.t a cost matrix


m_SetCostsBut

protected javax.swing.JButton m_SetCostsBut

m_CVLab

protected javax.swing.JLabel m_CVLab
Label by where the cv folds are entered


m_CVText

protected javax.swing.JTextField m_CVText
The field where the cv folds are entered


m_PercentLab

protected javax.swing.JLabel m_PercentLab
Label by where the % split is entered


m_PercentText

protected javax.swing.JTextField m_PercentText
The field where the % split is entered


m_SetTestBut

protected javax.swing.JButton m_SetTestBut
The button used to open a separate test dataset


m_SetTestFrame

protected javax.swing.JFrame m_SetTestFrame
The frame used to show the test set selection panel


m_SetCostsFrame

protected PropertyDialog m_SetCostsFrame
The frame used to show the cost matrix editing panel


m_RadioListener

java.awt.event.ActionListener m_RadioListener
Alters the enabled/disabled status of elements associated with each radio button


m_MoreOptions

javax.swing.JButton m_MoreOptions
Button for further output/visualize options


m_RandomSeedText

protected javax.swing.JTextField m_RandomSeedText
User specified random seed for cross validation or % split


m_RandomLab

protected javax.swing.JLabel m_RandomLab

m_StartBut

protected javax.swing.JButton m_StartBut
Click to start running the classifier


m_StopBut

protected javax.swing.JButton m_StopBut
Click to stop a running classifier


COMBO_SIZE

private java.awt.Dimension COMBO_SIZE
Stop the class combo from taking up to much space


m_CostMatrixEditor

protected CostMatrixEditor m_CostMatrixEditor
The cost matrix editor for evaluation costs


m_Instances

protected Instances m_Instances
The main set of instances we're playing with


m_TestInstances

protected Instances m_TestInstances
The user-supplied test set (if any)


m_RunThread

protected java.lang.Thread m_RunThread
A thread that classification runs in


m_visXIndex

protected int m_visXIndex
default x index for visualizing


m_visYIndex

protected int m_visYIndex
default y index for visualizing


m_CurrentVis

protected VisualizePanel m_CurrentVis
The current visualization object


m_Summary

protected InstancesSummaryPanel m_Summary
The instances summary panel displayed by m_SetTestFrame


m_ModelFilter

protected javax.swing.filechooser.FileFilter m_ModelFilter
Filter to ensure only model files are selected


m_FileChooser

protected javax.swing.JFileChooser m_FileChooser
The file chooser for selecting model files

Constructor Detail

ClassifierPanel

public ClassifierPanel()
Creates the classifier panel

Method Detail

updateRadioLinks

protected void updateRadioLinks()
Updates the enabled status of the input fields and labels.


setLog

public void setLog(Logger newLog)
Sets the Logger to receive informational messages

Parameters:
newLog - the Logger that will now get info messages

setXY_VisualizeIndexes

public void setXY_VisualizeIndexes(int x,
                                   int y)
Set the default attributes to use on the x and y axis of a new visualization object.

Parameters:
x - the index of the attribute to use on the x axis
y - the index of the attribute to use on the y axis

setInstances

public void setInstances(Instances inst)
Tells the panel to use a new set of instances.

Parameters:
inst - a set of Instances

setTestSet

protected void setTestSet()
Sets the user test set. Information about the current test set is displayed in an InstanceSummaryPanel and the user is given the ability to load another set from a file or url.


processClassifierPrediction

private void processClassifierPrediction(Instance toPredict,
                                         Classifier classifier,
                                         Evaluation eval,
                                         FastVector predictions,
                                         Instances plotInstances,
                                         FastVector plotShape,
                                         FastVector plotSize)
Process a classifier's prediction for an instance and update a set of plotting instances and additional plotting info. plotInfo for nominal class datasets holds shape types (actual data points have automatic shape type assignment; classifier error data points have box shape type). For numeric class datasets, the actual data points are stored in plotInstances and plotInfo stores the error (which is later converted to shape size values)

Parameters:
toPredict - the actual data point
classifier - the classifier
eval - the evaluation object to use for evaluating the classifier on the instance to predict
predictions - a fastvector to add the prediction to
plotInstances - a set of plottable instances
plotShape - additional plotting information (shape)
plotSize - additional plotting information (size)

postProcessPlotInfo

private void postProcessPlotInfo(FastVector plotSize)
Post processes numeric class errors into shape sizes for plotting in the visualize panel

Parameters:
plotSize - a FastVector of numeric class errors

setUpVisualizableInstances

private Instances setUpVisualizableInstances(Instances trainInstances)
Sets up the structure for the visualizable instances. This dataset contains the original attributes plus the classifier's predictions for the class as an attribute called "predicted+WhateverTheClassIsCalled".

Returns:
a new set of instances containing one more attribute (predicted class) than the trainInstances

startClassifier

protected void startClassifier()
Starts running the currently configured classifier with the current settings. This is run in a separate thread, and will only start if there is no classifier already running. The classifier output is sent to the results history panel.


predictionText

protected java.lang.String predictionText(Classifier classifier,
                                          Instance inst,
                                          int instNum)
                                   throws java.lang.Exception
Throws:
java.lang.Exception

visualize

protected void visualize(java.lang.String name,
                         int x,
                         int y)
Handles constructing a popup menu with visualization options.

Parameters:
name - the name of the result history list entry clicked on by the user
x - the x coordinate for popping up the menu
y - the y coordinate for popping up the menu

visualizeTree

protected void visualizeTree(java.lang.String dottyString,
                             java.lang.String treeName)
Pops up a TreeVisualizer for the classifier from the currently selected item in the results list

Parameters:
dottyString - the description of the tree in dotty format
treeName - the title to assign to the display

visualizeBayesNet

protected void visualizeBayesNet(java.lang.String XMLBIF,
                                 java.lang.String graphName)
Pops up a GraphVisualizer for the BayesNet classifier from the currently selected item in the results list

Parameters:
XMLBIF - the description of the graph in XMLBIF ver. 0.3

visualizeClassifierErrors

protected void visualizeClassifierErrors(VisualizePanel sp)
Pops up a VisualizePanel for visualizing the data and errors for the classifier from the currently selected item in the results list

Parameters:
sp - the VisualizePanel to pop up.

saveBuffer

protected void saveBuffer(java.lang.String name)
Save the currently selected classifier output to a file.

Parameters:
name - the name of the buffer to save

stopClassifier

protected void stopClassifier()
Stops the currently running classifier (if any).


saveClassifier

protected void saveClassifier(java.lang.String name,
                              Classifier classifier,
                              Instances trainHeader)
Saves the currently selected classifier


loadClassifier

protected void loadClassifier()
Loads a classifier


reevaluateModel

protected void reevaluateModel(java.lang.String name,
                               Classifier classifier,
                               Instances trainHeader)
Re-evaluates the named classifier with the current test set. Unpredictable things will happen if the data set is not compatible with the classifier.

Parameters:
name - the name of the classifier entry
classifier - the classifier to evaluate

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.