weka.gui.explorer
Class ClustererPanel

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--weka.gui.explorer.ClustererPanel
All Implemented Interfaces:
Accessible, ImageObserver, MenuContainer, Serializable

public class ClustererPanel
extends JPanel

This panel allows the user to select and configure a clusterer, and evaluate the clusterer using a number of testing modes (test on the training data, train/test on a percentage split, test on a separate split). The results of clustering runs are stored in a result history so that previous results are accessible.

Version:
$Revision: 1.30 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  JComboBox m_ClassCombo
          Lets the user select the class column for classes to clusters based evaluation
protected  JRadioButton m_ClassesToClustersBut
          Click to set test mode to classes to clusters based evaluation
protected  PropertyPanel m_CLPanel
          The panel showing the current clusterer selection
protected  GenericObjectEditor m_ClustererEditor
          Lets the user configure the clusterer
protected  VisualizePanel m_CurrentVis
          The current visualization object
protected  ResultHistoryPanel m_History
          A panel controlling results viewing
protected  JButton m_ignoreBut
          The button used to popup a list for choosing attributes to ignore while clustering
protected  JList m_ignoreKeyList
           
protected  DefaultListModel m_ignoreKeyModel
           
protected  Instances m_Instances
          The main set of instances we're playing with
protected  Logger m_Log
          The destination for log/status messages
protected  JTextArea m_OutText
          The output area for classification results
protected  JRadioButton m_PercentBut
          Click to set test mode to generate a % split
protected  JLabel m_PercentLab
          Label by where the % split is entered
protected  JTextField m_PercentText
          The field where the % split is entered
protected  PreprocessPanel m_Preprocess
          The pre-process object from which to fetch filters for applying to a user specified test set
protected  Thread m_RunThread
          A thread that clustering runs in
protected  JButton m_SetTestBut
          The button used to open a separate test dataset
protected  JFrame m_SetTestFrame
          The frame used to show the test set selection panel
protected  JButton m_StartBut
          Click to start running the clusterer
protected  JButton m_StopBut
          Click to stop a running clusterer
protected  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  Instances m_TestInstancesCopy
          The user supplied test set after preprocess filters have been applied
protected  JRadioButton m_TestSplitBut
          Click to set test mode to a user-specified test set
protected  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
 
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.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
ClustererPanel()
          Creates the clusterer panel
 
Method Summary
protected  void filterUserTestInstances()
          Attempts to filter the user specified test set through the most currently used set of filters (if any) from the pre-process panel.
static void main(String[] args)
          Tests out the clusterer panel from the command line.
protected  void saveBuffer(String name)
          Save the currently selected clusterer output to a file.
 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 setPreprocess(PreprocessPanel p)
          Sets the preprocess panel through which user selected filters can be applied to any supplied test data
protected  void setTestSet()
          Sets the user test set.
 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 startClusterer()
          Starts running the currently configured clusterer with the current settings.
protected  void stopClusterer()
          Stops the currently running clusterer (if any).
protected  void updateRadioLinks()
          Updates the enabled status of the input fields and labels.
protected  void visualizeClusterAssignments(VisualizePanel sp)
          Pops up a visualize panel to display cluster assignments
protected  void visualizeClusterer(String name, int x, int y)
          Handles constructing a popup menu with visualization options
protected  void visualizeTree(String dottyString, String treeName)
          Pops up a TreeVisualizer for the clusterer 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, getWidth, getVisibleRect, 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

m_ClustererEditor

protected GenericObjectEditor m_ClustererEditor
Lets the user configure the clusterer


m_CLPanel

protected PropertyPanel m_CLPanel
The panel showing the current clusterer selection


m_OutText

protected JTextArea m_OutText
The output area for classification results


m_Log

protected Logger m_Log
The destination for log/status messages


m_History

protected ResultHistoryPanel m_History
A panel controlling results viewing


m_PercentBut

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


m_TrainBut

protected JRadioButton m_TrainBut
Click to set test mode to test on training data


m_TestSplitBut

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


m_ClassesToClustersBut

protected JRadioButton m_ClassesToClustersBut
Click to set test mode to classes to clusters based evaluation


m_ClassCombo

protected JComboBox m_ClassCombo
Lets the user select the class column for classes to clusters based evaluation


m_PercentLab

protected JLabel m_PercentLab
Label by where the % split is entered


m_PercentText

protected JTextField m_PercentText
The field where the % split is entered


m_SetTestBut

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


m_SetTestFrame

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


m_ignoreBut

protected JButton m_ignoreBut
The button used to popup a list for choosing attributes to ignore while clustering


m_ignoreKeyModel

protected DefaultListModel m_ignoreKeyModel

m_ignoreKeyList

protected JList m_ignoreKeyList

m_StartBut

protected JButton m_StartBut
Click to start running the clusterer


m_StopBut

protected JButton m_StopBut
Click to stop a running clusterer


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_TestInstancesCopy

protected Instances m_TestInstancesCopy
The user supplied test set after preprocess filters have been applied


m_CurrentVis

protected VisualizePanel m_CurrentVis
The current visualization object


m_visXIndex

protected int m_visXIndex
default x index for visualizing


m_visYIndex

protected int m_visYIndex
default y index for visualizing


m_StorePredictionsBut

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


m_RunThread

protected Thread m_RunThread
A thread that clustering runs in


m_Preprocess

protected PreprocessPanel m_Preprocess
The pre-process object from which to fetch filters for applying to a user specified test set


m_Summary

protected InstancesSummaryPanel m_Summary
The instances summary panel displayed by m_SetTestFrame

Constructor Detail

ClustererPanel

public ClustererPanel()
Creates the clusterer panel

Method Detail

updateRadioLinks

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


setPreprocess

public void setPreprocess(PreprocessPanel p)
Sets the preprocess panel through which user selected filters can be applied to any supplied test data

Parameters:
p - the preprocess panel to use

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

filterUserTestInstances

protected void filterUserTestInstances()
Attempts to filter the user specified test set through the most currently used set of filters (if any) from the pre-process panel.


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.


startClusterer

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


stopClusterer

protected void stopClusterer()
Stops the currently running clusterer (if any).


visualizeTree

protected void visualizeTree(String dottyString,
                             String treeName)
Pops up a TreeVisualizer for the clusterer 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

visualizeClusterAssignments

protected void visualizeClusterAssignments(VisualizePanel sp)
Pops up a visualize panel to display cluster assignments

Parameters:
sp - the visualize panel to display

visualizeClusterer

protected void visualizeClusterer(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

saveBuffer

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

Parameters:
name - the name of the buffer to save

main

public static void main(String[] args)
Tests out the clusterer panel from the command line.

Parameters:
args - may optionally contain the name of a dataset to load.