Package 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:
ImageObserver
,MenuContainer
,Serializable
,EventListener
,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: 15303 $
- Author:
- Len Trigg (trigg@cs.waikato.ac.nz), Mark Hall (mhall@cs.waikato.ac.nz), Richard Kirkby (rkirkby@cs.waikato.ac.nz)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Component
Component.BaselineResizeBehavior
-
Field Summary
Modifier and TypeFieldDescriptionstatic String
The filename extension that should be used for model files.static String
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
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Returns true if this perspective can do something meaningful with a set of instancesvoid
method gets called in case of a change event.Get the formatter for classifcation outputGet the currently configured classifier from the GenericObjectEditorGet the cost matrix (if any)Get the default settings for this perspective (or null if there are none)returns the parent Explorer frame.Get the current set of instancesgetLog()
Get the logint
Get the number of cross-validation folds to usedouble
Get the percentage to use for percentage split evaluationint
Get the random seedGet the result history panelint
Get the selected (0-based) class indexint
Get the class index specified for the separate test setGet the loader object used for loading a separate test setGets the name of the source code class to be generatedReturns the title for the tab in the Explorer.Returns the tooltip for the tab in the Explorer.boolean
Gets whether the user has opted to collect the predictions for computing evaluation statisticsboolean
Gets whether cross-validation has been selected by the userboolean
Gets whether evaluation with respect to costs has been selected by the userboolean
Gets whether the user has opted to output the confusion matrixboolean
Gets whether the user has opted to output entropy metricsboolean
Gets whether the user has opted to output the modelboolean
Gets whether the user has opted to output the models for the training splitsboolean
Gets whether the user has opted to output per-class statsboolean
Gets whether the user has opted to output source codeboolean
Gets whether a percentage split has been selected by the userboolean
Gets whether the user has opted to preserve order of instances in a percentage splitboolean
Gets whether a separate test set has been selected by the userboolean
Gets whether the user has opted to store the test data and the predictions in the historyboolean
Gets whether test on train has been selected by the userstatic void
Tests out the classifier panel from the command line.boolean
Returns true if the perspective is usable at this time.boolean
Whether this perspective requires a graphical log to write tovoid
saveClassifier
(String name, Classifier classifier, Instances trainHeader) Saves the currently selected classifier.void
setActive
(boolean active) Set active status of this perspective.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
Sets the Logger to receive informational messages.void
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.static Evaluation
setupEval
(Evaluation eval, Classifier classifier, Instances inst, CostMatrix costMatrix, ClassifierErrorsPlotInstances plotInstances, AbstractOutput classificationOutput, boolean onlySetPriors, boolean collectPredictions) 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, terminate, 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, 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, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
MODEL_FILE_EXTENSION
The filename extension that should be used for model files. -
PMML_FILE_EXTENSION
The filename extension that should be used for PMML xml files.
-
-
Constructor Details
-
ClassifierPanel
public ClassifierPanel()Creates the classifier panel.
-
-
Method Details
-
setLog
Sets the Logger to receive informational messages.- Specified by:
setLog
in interfaceExplorer.LogHandler
- Specified by:
setLog
in interfacePerspective
- Overrides:
setLog
in classAbstractPerspective
- Parameters:
newLog
- the Logger that will now get info messages
-
setInstances
Tells the panel to use a new set of instances.- Specified by:
setInstances
in interfaceExplorer.ExplorerPanel
- Specified by:
setInstances
in interfacePerspective
- Overrides:
setInstances
in classAbstractPerspective
- Parameters:
inst
- a set of 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 Exception Configures an evaluation object with respect to a classifier, cost matrix, output and plotting. Predictions are kept for calculating AUROC, etc.- Parameters:
eval
- the Evaluation object to configureclassifier
- the Classifier being usedinst
- the Instances involvedcostMatrix
- 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:
Exception
- if a problem occurs
-
setupEval
public static Evaluation setupEval(Evaluation eval, Classifier classifier, Instances inst, CostMatrix costMatrix, ClassifierErrorsPlotInstances plotInstances, AbstractOutput classificationOutput, boolean onlySetPriors, boolean collectPredictions) throws Exception Configures an evaluation object with respect to a classifier, cost matrix, output and plotting.- Parameters:
eval
- the Evaluation object to configureclassifier
- the Classifier being usedinst
- the Instances involvedcostMatrix
- 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 priorscollectPredictions
- whether to collect predictions for calculating ROC, etc.- Returns:
- the configured Evaluation object
- Throws:
Exception
- if a problem occurs
-
saveClassifier
Saves the currently selected classifier.- Parameters:
name
- the name of the runclassifier
- the classifier to savetrainHeader
- the header of the training instances
-
capabilitiesFilterChanged
method gets called in case of a change event.- Specified by:
capabilitiesFilterChanged
in interfaceExplorer.CapabilitiesFilterChangeListener
- Parameters:
e
- the associated change event
-
setExplorer
Sets the Explorer to use as parent frame (used for sending notifications about changes in the data).- Specified by:
setExplorer
in interfaceExplorer.ExplorerPanel
- Parameters:
parent
- the parent frame
-
getExplorer
returns the parent Explorer frame.- Specified by:
getExplorer
in interfaceExplorer.ExplorerPanel
- Returns:
- the parent
-
getTabTitle
Returns the title for the tab in the Explorer.- Specified by:
getTabTitle
in interfaceExplorer.ExplorerPanel
- Returns:
- the title of this tab
-
getTabTitleToolTip
Returns the tooltip for the tab in the Explorer.- Specified by:
getTabTitleToolTip
in interfaceExplorer.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 interfacePerspective
- Overrides:
requiresLog
in classAbstractPerspective
- 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 interfacePerspective
- Overrides:
acceptsInstances
in classAbstractPerspective
- Returns:
- true if this perspective accepts instances
-
getDefaultSettings
Description copied from class:AbstractPerspective
Get the default settings for this perspective (or null if there are none)- Specified by:
getDefaultSettings
in interfacePerspective
- Overrides:
getDefaultSettings
in classAbstractPerspective
- 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 interfacePerspective
- Overrides:
okToBeActive
in classAbstractPerspective
- 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 interfacePerspective
- Overrides:
setActive
in classAbstractPerspective
- 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 interfacePerspective
- Overrides:
settingsChanged
in classAbstractPerspective
-
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
-
isSelectedStoreTestDataAndPredictions
public boolean isSelectedStoreTestDataAndPredictions()Gets whether the user has opted to store the test data and the predictions in the history- Returns:
- true if test data and predictions are to be stored
-
isSelectedCollectPredictionsForEvaluation
public boolean isSelectedCollectPredictionsForEvaluation()Gets whether the user has opted to collect the predictions for computing evaluation statistics- 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
Gets the name of the source code class to be generated- Returns:
- the name of the source code class to be generated
-
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
Get the currently configured classifier from the GenericObjectEditor- Returns:
- the currently configured classifier
-
getCostMatrix
Get the cost matrix (if any)- Returns:
- the cost matrix
-
getClassificationOutputFormatter
Get the formatter for classifcation output- Returns:
- the formatter for classification output
-
getResultHistory
Get the result history panel- Returns:
- the result history panel
-
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
Get the log- Returns:
- the log object
-
main
Tests out the classifier panel from the command line.- Parameters:
args
- may optionally contain the name of a dataset to load.
-