weka.gui.beans
Class Classifier

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byweka.gui.beans.Classifier
All Implemented Interfaces:
javax.accessibility.Accessible, BeanCommon, EventConstraints, java.util.EventListener, java.awt.image.ImageObserver, InstanceListener, java.awt.MenuContainer, java.io.Serializable, TestSetListener, TrainingSetListener, UserRequestAcceptor, Visible, WekaWrapper

public class Classifier
extends javax.swing.JPanel
implements BeanCommon, Visible, WekaWrapper, EventConstraints, java.io.Serializable, UserRequestAcceptor, TrainingSetListener, TestSetListener, InstanceListener

Bean that wraps around weka.classifiers

Since:
1.0
Version:
$Revision: 1.7 $
Author:
Mark Hall
See Also:
JPanel, BeanCommon, Visible, WekaWrapper, Serializable, UserRequestAcceptor, TrainingSetListener, TestSetListener, 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 static int BUILDING_MODEL
           
private static int CLASSIFYING
           
private static int IDLE
           
private  java.util.Vector m_batchClassifierListeners
          Objects listening for batch classifier events
private  java.lang.Thread m_buildThread
           
private  Classifier m_Classifier
           
private  java.lang.Double m_dummy
           
private  java.util.Vector m_graphListeners
          Objects listening for graph events
private  IncrementalClassifierEvent m_ie
           
private  java.util.Vector m_incrementalClassifierListeners
          Objects listening for incremental classifier events
private  InstanceEvent m_incrementalEvent
          Event to handle when processing incremental updates
private  java.util.Hashtable m_listenees
          Objects talking to us
private  Logger m_log
           
private  int m_state
           
private  Instances m_testingSet
           
private  java.util.Vector m_textListeners
          Objects listening for text events
private  Instances m_trainingSet
          Holds training instances for batch training.
private  boolean m_updateIncrementalClassifier
          If the classifier is an incremental classifier, should we update it (ie train it on incoming instances).
protected  BeanVisual m_visual
           
 
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
Classifier()
          Creates a new Classifier instance.
 
Method Summary
 void acceptInstance(InstanceEvent e)
          Accepts an instance for incremental processing.
 void acceptTestSet(TestSetEvent e)
          Accepts a test set for a batch trained classifier
 void acceptTrainingSet(TrainingSetEvent e)
          Accepts a training set and builds batch classifier
 void addBatchClassifierListener(BatchClassifierListener cl)
          Add a batch classifier listener
 void addGraphListener(GraphListener cl)
          Add a graph listener
 void addIncrementalClassifierListener(IncrementalClassifierListener cl)
          Add an incremental classifier listener
 void addTextListener(TextListener cl)
          Add a text listener
private  void block(boolean tf)
          Function used to stop code that calls acceptTrainingSet.
private  void buildClassifier()
           
 boolean connectionAllowed(java.lang.String eventName)
          Returns true if, at this time, the object will accept a connection with respect to the named event
 void connectionNotification(java.lang.String eventName, java.lang.Object source)
          Notify this object that it has been registered as a listener with a source with respect to the named event
 void disconnectionNotification(java.lang.String eventName, java.lang.Object source)
          Notify this object that it has been deregistered as a listener with a source with respect to the supplied event name
 java.util.Enumeration enumerateRequests()
          Return an enumeration of requests that can be made by the user
 boolean eventGeneratable(java.beans.EventSetDescriptor esd)
          Returns true, if at the current time, the event described by the supplied event descriptor could be generated.
 boolean eventGeneratable(java.lang.String eventName)
          Returns true, if at the current time, the named event could be generated.
 Classifier getClassifier()
          Get the classifier currently set for this wrapper
 boolean getUpdateIncrementalClassifier()
           
 BeanVisual getVisual()
          Gets the visual appearance of this wrapper bean
 java.lang.Object getWrappedAlgorithm()
          Returns the wrapped classifier
private  void handleIncrementalEvent()
          Handles initializing and updating an incremental classifier
 boolean hasIncomingBatchInstances()
          Returns true if this classifier has an incoming connection that is a batch set of instances
 boolean hasIncomingStreamInstances()
          Returns true if this classifier has an incoming connection that is an instance stream
private  void notifyBatchClassifierListeners(BatchClassifierEvent ce)
          Notify all batch classifier listeners of a batch classifier event
private  void notifyGraphListeners(GraphEvent ge)
          Notify all graph listeners of a graph event
private  void notifyIncrementalClassifierListeners(IncrementalClassifierEvent ce)
          Notify all incremental classifier listeners of an incremental classifier event
private  void notifyTextListeners(TextEvent ge)
          Notify all text listeners of a text event
 void performRequest(java.lang.String request)
          Perform a particular request
 void removeBatchClassifierListener(BatchClassifierListener cl)
          Remove a batch classifier listener
 void removeGraphListener(GraphListener cl)
          Remove a graph listener
 void removeIncrementalClassifierListener(IncrementalClassifierListener cl)
          Remove an incremental classifier listener
 void removeTextListener(TextListener cl)
          Remove a text listener
 void setClassifier(Classifier c)
          Set the classifier for this wrapper
 void setLog(Logger logger)
          Set a logger
 void setUpdateIncrementalClassifier(boolean update)
           
 void setVisual(BeanVisual newVisual)
          Sets the visual appearance of this wrapper bean
 void setWrappedAlgorithm(java.lang.Object algorithm)
          Sets the algorithm (classifier) for this bean
private  void startIncrementalHandler()
          Unused at present
 void stop()
          Stop any classifier action
 void useDefaultVisual()
          Use the default visual appearance for this bean
 
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_visual

protected BeanVisual m_visual

IDLE

private static int IDLE

BUILDING_MODEL

private static int BUILDING_MODEL

CLASSIFYING

private static int CLASSIFYING

m_state

private int m_state

m_buildThread

private java.lang.Thread m_buildThread

m_listenees

private java.util.Hashtable m_listenees
Objects talking to us


m_batchClassifierListeners

private java.util.Vector m_batchClassifierListeners
Objects listening for batch classifier events


m_incrementalClassifierListeners

private java.util.Vector m_incrementalClassifierListeners
Objects listening for incremental classifier events


m_graphListeners

private java.util.Vector m_graphListeners
Objects listening for graph events


m_textListeners

private java.util.Vector m_textListeners
Objects listening for text events


m_trainingSet

private Instances m_trainingSet
Holds training instances for batch training. Not transient because header is retained for validating any instance events that this classifier might be asked to predict in the future.


m_testingSet

private transient Instances m_testingSet

m_Classifier

private Classifier m_Classifier

m_ie

private IncrementalClassifierEvent m_ie

m_updateIncrementalClassifier

private boolean m_updateIncrementalClassifier
If the classifier is an incremental classifier, should we update it (ie train it on incoming instances). This makes it possible incrementally test on a separate stream of instances without updating the classifier, or mix batch training/testing with incremental training/testing


m_log

private transient Logger m_log

m_incrementalEvent

private InstanceEvent m_incrementalEvent
Event to handle when processing incremental updates


m_dummy

private java.lang.Double m_dummy
Constructor Detail

Classifier

public Classifier()
Creates a new Classifier instance.

Method Detail

setClassifier

public void setClassifier(Classifier c)
Set the classifier for this wrapper

Parameters:
c - a weka.classifiers.Classifier value

hasIncomingStreamInstances

public boolean hasIncomingStreamInstances()
Returns true if this classifier has an incoming connection that is an instance stream

Returns:
true if has an incoming connection that is an instance stream

hasIncomingBatchInstances

public boolean hasIncomingBatchInstances()
Returns true if this classifier has an incoming connection that is a batch set of instances

Returns:
a boolean value

getClassifier

public Classifier getClassifier()
Get the classifier currently set for this wrapper

Returns:
a weka.classifiers.Classifier value

setWrappedAlgorithm

public void setWrappedAlgorithm(java.lang.Object algorithm)
Sets the algorithm (classifier) for this bean

Specified by:
setWrappedAlgorithm in interface WekaWrapper
Parameters:
algorithm - an Object value
Throws:
java.lang.IllegalArgumentException - if an error occurs

getWrappedAlgorithm

public java.lang.Object getWrappedAlgorithm()
Returns the wrapped classifier

Specified by:
getWrappedAlgorithm in interface WekaWrapper
Returns:
an Object value

getUpdateIncrementalClassifier

public boolean getUpdateIncrementalClassifier()

setUpdateIncrementalClassifier

public void setUpdateIncrementalClassifier(boolean update)

acceptInstance

public void acceptInstance(InstanceEvent e)
Accepts an instance for incremental processing.

Specified by:
acceptInstance in interface InstanceListener
Parameters:
e - an InstanceEvent value

handleIncrementalEvent

private void handleIncrementalEvent()
Handles initializing and updating an incremental classifier


startIncrementalHandler

private void startIncrementalHandler()
Unused at present


acceptTrainingSet

public void acceptTrainingSet(TrainingSetEvent e)
Accepts a training set and builds batch classifier

Specified by:
acceptTrainingSet in interface TrainingSetListener
Parameters:
e - a TrainingSetEvent value

acceptTestSet

public void acceptTestSet(TestSetEvent e)
Accepts a test set for a batch trained classifier

Specified by:
acceptTestSet in interface TestSetListener
Parameters:
e - a TestSetEvent value

buildClassifier

private void buildClassifier()
                      throws java.lang.Exception
Throws:
java.lang.Exception

setVisual

public void setVisual(BeanVisual newVisual)
Sets the visual appearance of this wrapper bean

Specified by:
setVisual in interface Visible
Parameters:
newVisual - a BeanVisual value

getVisual

public BeanVisual getVisual()
Gets the visual appearance of this wrapper bean

Specified by:
getVisual in interface Visible
Returns:
a BeanVisual value

useDefaultVisual

public void useDefaultVisual()
Use the default visual appearance for this bean

Specified by:
useDefaultVisual in interface Visible

addBatchClassifierListener

public void addBatchClassifierListener(BatchClassifierListener cl)
Add a batch classifier listener

Parameters:
cl - a BatchClassifierListener value

removeBatchClassifierListener

public void removeBatchClassifierListener(BatchClassifierListener cl)
Remove a batch classifier listener

Parameters:
cl - a BatchClassifierListener value

notifyBatchClassifierListeners

private void notifyBatchClassifierListeners(BatchClassifierEvent ce)
Notify all batch classifier listeners of a batch classifier event

Parameters:
ce - a BatchClassifierEvent value

addGraphListener

public void addGraphListener(GraphListener cl)
Add a graph listener

Parameters:
cl - a GraphListener value

removeGraphListener

public void removeGraphListener(GraphListener cl)
Remove a graph listener

Parameters:
cl - a GraphListener value

notifyGraphListeners

private void notifyGraphListeners(GraphEvent ge)
Notify all graph listeners of a graph event

Parameters:
ge - a GraphEvent value

addTextListener

public void addTextListener(TextListener cl)
Add a text listener

Parameters:
cl - a TextListener value

removeTextListener

public void removeTextListener(TextListener cl)
Remove a text listener

Parameters:
cl - a TextListener value

notifyTextListeners

private void notifyTextListeners(TextEvent ge)
Notify all text listeners of a text event

Parameters:
ge - a TextEvent value

addIncrementalClassifierListener

public void addIncrementalClassifierListener(IncrementalClassifierListener cl)
Add an incremental classifier listener

Parameters:
cl - an IncrementalClassifierListener value

removeIncrementalClassifierListener

public void removeIncrementalClassifierListener(IncrementalClassifierListener cl)
Remove an incremental classifier listener

Parameters:
cl - an IncrementalClassifierListener value

notifyIncrementalClassifierListeners

private void notifyIncrementalClassifierListeners(IncrementalClassifierEvent ce)
Notify all incremental classifier listeners of an incremental classifier event

Parameters:
ce - an IncrementalClassifierEvent value

connectionAllowed

public boolean connectionAllowed(java.lang.String eventName)
Returns true if, at this time, the object will accept a connection with respect to the named event

Specified by:
connectionAllowed in interface BeanCommon
Parameters:
eventName - the event
Returns:
true if the object will accept a connection

connectionNotification

public void connectionNotification(java.lang.String eventName,
                                   java.lang.Object source)
Notify this object that it has been registered as a listener with a source with respect to the named event

Specified by:
connectionNotification in interface BeanCommon
Parameters:
eventName - the event
source - the source with which this object has been registered as a listener

disconnectionNotification

public void disconnectionNotification(java.lang.String eventName,
                                      java.lang.Object source)
Notify this object that it has been deregistered as a listener with a source with respect to the supplied event name

Specified by:
disconnectionNotification in interface BeanCommon
Parameters:
eventName - the event
source - the source with which this object has been registered as a listener

block

private void block(boolean tf)
Function used to stop code that calls acceptTrainingSet. This is needed as classifier construction is performed inside a separate thread of execution.

Parameters:
tf - a boolean value

stop

public void stop()
Stop any classifier action

Specified by:
stop in interface BeanCommon

setLog

public void setLog(Logger logger)
Set a logger

Specified by:
setLog in interface BeanCommon
Parameters:
logger - a Logger value

enumerateRequests

public java.util.Enumeration enumerateRequests()
Return an enumeration of requests that can be made by the user

Specified by:
enumerateRequests in interface UserRequestAcceptor
Returns:
an Enumeration value

performRequest

public void performRequest(java.lang.String request)
Perform a particular request

Specified by:
performRequest in interface UserRequestAcceptor
Parameters:
request - the request to perform
Throws:
java.lang.IllegalArgumentException - if an error occurs

eventGeneratable

public boolean eventGeneratable(java.beans.EventSetDescriptor esd)
Returns true, if at the current time, the event described by the supplied event descriptor could be generated.

Parameters:
esd - an EventSetDescriptor value
Returns:
a boolean value

eventGeneratable

public boolean eventGeneratable(java.lang.String eventName)
Returns true, if at the current time, the named event could be generated. Assumes that the supplied event name is an event that could be generated by this bean

Specified by:
eventGeneratable in interface EventConstraints
Parameters:
eventName - the name of the event in question
Returns:
true if the named event could be generated at this point in time