weka.gui.boundaryvisualizer
Class BoundaryVisualizer

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

public class BoundaryVisualizer
extends javax.swing.JPanel

BoundaryVisualizer. Allows the visualization of classifier decision boundaries in two dimensions. A supplied classifier is first trained on supplied training data, then a data generator (currently using kernels) is used to generate new instances at points fixed in the two visualization dimensions but random in the other dimensions. These instances are classified by the classifier and plotted as points with colour corresponding to the probability distribution predicted by the classifier. At present, 2 * 2^(# non-fixed dimensions) points are generated from each kernel per pixel in the display. In practice, fewer points than this are actually classified because kernels are weighted (on a per-pixel basis) according to the fixexd dimensions and kernels corresponding to the lowest 1% of the weight mass are discarded. Predicted probability distributions are weighted (acording to the fixed visualization dimensions) and averaged to produce an RGB value for the pixel. For more information, see

Eibe Frank and Mark Hall (2003). Visualizing Class Probability Estimators. Working Paper 02/03, Department of Computer Science, University of Waikato.

Since:
1.0
Version:
$Revision: 1.12 $
Author:
Mark Hall
See Also:
JPanel, Serialized Form

Nested Class Summary
private  class BoundaryVisualizer.AxisPanel
          Inner class to handle rendering the axis
 
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
protected  java.awt.Dimension COMBO_SIZE
           
protected  BoundaryPanel m_boundaryPanel
           
protected  javax.swing.JComboBox m_classAttBox
           
private  Classifier m_classifier
           
protected  ClassPanel m_classPanel
           
protected  javax.swing.JPanel m_controlPanel
           
private  KDDataGenerator m_dataGenerator
           
private  int m_generatorSamplesBase
           
private  javax.swing.JTextField m_generatorSamplesText
           
private  int m_kernelBandwidth
           
private  javax.swing.JTextField m_kernelBandwidthText
           
private  double m_maxX
           
private  double m_maxY
           
private  double m_minX
           
private  double m_minY
           
private  int m_numberOfSamplesFromEachRegion
           
protected  int m_plotAreaHeight
           
protected  int m_plotAreaWidth
           
protected  javax.swing.JCheckBox m_plotTrainingData
           
private  javax.swing.JTextField m_regionSamplesText
           
protected  javax.swing.JButton m_startBut
           
private  Instances m_trainingInstances
           
protected  javax.swing.JComboBox m_xAttBox
           
private  BoundaryVisualizer.AxisPanel m_xAxisPanel
           
private  int m_xIndex
           
protected  javax.swing.JComboBox m_yAttBox
           
private  BoundaryVisualizer.AxisPanel m_yAxisPanel
           
private  int m_yIndex
           
 
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
BoundaryVisualizer()
          Creates a new BoundaryVisualizer instance.
 
Method Summary
private  void computeBounds()
           
private  void configureForClassAttribute()
          Set up the class values combo boxes
 Instances getInstances()
          Get the training instances
static void main(java.lang.String[] args)
          Main method for testing this class
 void setClassifier(Classifier newClassifier)
          Set a classifier to use
private  void setControlEnabledStatus(boolean status)
          Set the enabled status of the controls
 void setInstances(Instances inst)
          Set the training instances
 
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

m_trainingInstances

private Instances m_trainingInstances

m_classifier

private Classifier m_classifier

m_plotAreaWidth

protected int m_plotAreaWidth

m_plotAreaHeight

protected int m_plotAreaHeight

m_boundaryPanel

protected BoundaryPanel m_boundaryPanel

m_classAttBox

protected javax.swing.JComboBox m_classAttBox

m_xAttBox

protected javax.swing.JComboBox m_xAttBox

m_yAttBox

protected javax.swing.JComboBox m_yAttBox

COMBO_SIZE

protected java.awt.Dimension COMBO_SIZE

m_startBut

protected javax.swing.JButton m_startBut

m_plotTrainingData

protected javax.swing.JCheckBox m_plotTrainingData

m_controlPanel

protected javax.swing.JPanel m_controlPanel

m_classPanel

protected ClassPanel m_classPanel

m_xAxisPanel

private BoundaryVisualizer.AxisPanel m_xAxisPanel

m_yAxisPanel

private BoundaryVisualizer.AxisPanel m_yAxisPanel

m_maxX

private double m_maxX

m_maxY

private double m_maxY

m_minX

private double m_minX

m_minY

private double m_minY

m_xIndex

private int m_xIndex

m_yIndex

private int m_yIndex

m_dataGenerator

private KDDataGenerator m_dataGenerator

m_numberOfSamplesFromEachRegion

private int m_numberOfSamplesFromEachRegion

m_generatorSamplesBase

private int m_generatorSamplesBase

m_kernelBandwidth

private int m_kernelBandwidth

m_regionSamplesText

private javax.swing.JTextField m_regionSamplesText

m_generatorSamplesText

private javax.swing.JTextField m_generatorSamplesText

m_kernelBandwidthText

private javax.swing.JTextField m_kernelBandwidthText
Constructor Detail

BoundaryVisualizer

public BoundaryVisualizer()
Creates a new BoundaryVisualizer instance.

Method Detail

setControlEnabledStatus

private void setControlEnabledStatus(boolean status)
Set the enabled status of the controls

Parameters:
status - a boolean value

setClassifier

public void setClassifier(Classifier newClassifier)
                   throws java.lang.Exception
Set a classifier to use

Parameters:
newClassifier - the classifier to use
Throws:
java.lang.Exception - if an error occurs

computeBounds

private void computeBounds()

getInstances

public Instances getInstances()
Get the training instances

Returns:
the training instances

setInstances

public void setInstances(Instances inst)
                  throws java.lang.Exception
Set the training instances

Parameters:
inst - the instances to use
Throws:
java.lang.Exception

configureForClassAttribute

private void configureForClassAttribute()
Set up the class values combo boxes


main

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

Parameters:
args - a String[] value