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:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,java.util.EventListener,javax.accessibility.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: 15305 $
- 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 Modifier and Type Class Description static classClassifierPanel.TestMode
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringMODEL_FILE_EXTENSIONThe filename extension that should be used for model files.static java.lang.StringPMML_FILE_EXTENSIONThe 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
-
-
Constructor Summary
Constructors Constructor Description ClassifierPanel()Creates the classifier panel.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanacceptsInstances()Returns true if this perspective can do something meaningful with a set of instancesvoidcapabilitiesFilterChanged(Explorer.CapabilitiesFilterChangeEvent e)method gets called in case of a change event.java.lang.ObjectgetClassificationOutputFormatter()Get the formatter for classifcation outputClassifiergetClassifier()Get the currently configured classifier from the GenericObjectEditorCostMatrixgetCostMatrix()Get the cost matrix (if any)DefaultsgetDefaultSettings()Get the default settings for this perspective (or null if there are none)ExplorergetExplorer()returns the parent Explorer frame.InstancesgetInstances()Get the current set of instancesLoggergetLog()Get the logintgetNumCVFolds()Get the number of cross-validation folds to usedoublegetPercentageSplit()Get the percentage to use for percentage split evaluationintgetRandomSeed()Get the random seedResultHistoryPanelgetResultHistory()Get the result history panelintgetSelectedClassIndex()Get the selected (0-based) class indexintgetSeparateTestSetClassIndex()Get the class index specified for the separate test setLoadergetSeparateTestSetLoader()Get the loader object used for loading a separate test setjava.lang.StringgetSourceCodeClassName()Gets the name of the source code class to be generatedjava.lang.StringgetTabTitle()Returns the title for the tab in the Explorer.java.lang.StringgetTabTitleToolTip()Returns the tooltip for the tab in the Explorer.booleanisSelectedCollectPredictionsForEvaluation()Gets whether the user has opted to collect the predictions for computing evaluation statisticsbooleanisSelectedCV()Gets whether cross-validation has been selected by the userbooleanisSelectedEvalWithRespectToCosts()Gets whether evaluation with respect to costs has been selected by the userbooleanisSelectedOutputConfusion()Gets whether the user has opted to output the confusion matrixbooleanisSelectedOutputEntropy()Gets whether the user has opted to output entropy metricsbooleanisSelectedOutputModel()Gets whether the user has opted to output the modelbooleanisSelectedOutputModelsForTrainingSplits()Gets whether the user has opted to output the models for the training splitsbooleanisSelectedOutputPerClassStats()Gets whether the user has opted to output per-class statsbooleanisSelectedOutputSourceCode()Gets whether the user has opted to output source codebooleanisSelectedPercentageSplit()Gets whether a percentage split has been selected by the userbooleanisSelectedPreserveOrder()Gets whether the user has opted to preserve order of instances in a percentage splitbooleanisSelectedSeparateTestSet()Gets whether a separate test set has been selected by the userbooleanisSelectedStoreTestDataAndPredictions()Gets whether the user has opted to store the test data and the predictions in the historybooleanisSelectedTestOnTrain()Gets whether test on train has been selected by the userstatic voidmain(java.lang.String[] args)Tests out the classifier panel from the command line.booleanokToBeActive()Returns true if the perspective is usable at this time.booleanrequiresLog()Whether this perspective requires a graphical log to write tovoidsaveClassifier(java.lang.String name, Classifier classifier, Instances trainHeader)Saves the currently selected classifier.voidsetActive(boolean active)Set active status of this perspective.voidsetExplorer(Explorer parent)Sets the Explorer to use as parent frame (used for sending notifications about changes in the data).voidsetInstances(Instances inst)Tells the panel to use a new set of instances.voidsetLog(Logger newLog)Sets the Logger to receive informational messages.voidsettingsChanged()Called when the user alters settings.static EvaluationsetupEval(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 EvaluationsetupEval(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
-
-
-
-
Method Detail
-
setLog
public void setLog(Logger newLog)
Sets the Logger to receive informational messages.- Specified by:
setLogin interfaceExplorer.LogHandler- Specified by:
setLogin interfacePerspective- Overrides:
setLogin classAbstractPerspective- Parameters:
newLog- the Logger that will now get info messages
-
setInstances
public void setInstances(Instances inst)
Tells the panel to use a new set of instances.- Specified by:
setInstancesin interfaceExplorer.ExplorerPanel- Specified by:
setInstancesin interfacePerspective- Overrides:
setInstancesin classAbstractPerspective- Parameters:
inst- a set of Instances
-
getInstances
public 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 java.lang.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:
java.lang.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 java.lang.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:
java.lang.Exception- if a problem occurs
-
saveClassifier
public void saveClassifier(java.lang.String name, Classifier classifier, Instances trainHeader)Saves the currently selected classifier.- Parameters:
name- the name of the runclassifier- the classifier to savetrainHeader- the header of the training instances
-
capabilitiesFilterChanged
public void capabilitiesFilterChanged(Explorer.CapabilitiesFilterChangeEvent e)
method gets called in case of a change event.- Specified by:
capabilitiesFilterChangedin interfaceExplorer.CapabilitiesFilterChangeListener- Parameters:
e- the associated change event
-
setExplorer
public void setExplorer(Explorer parent)
Sets the Explorer to use as parent frame (used for sending notifications about changes in the data).- Specified by:
setExplorerin interfaceExplorer.ExplorerPanel- Parameters:
parent- the parent frame
-
getExplorer
public Explorer getExplorer()
returns the parent Explorer frame.- Specified by:
getExplorerin interfaceExplorer.ExplorerPanel- Returns:
- the parent
-
getTabTitle
public java.lang.String getTabTitle()
Returns the title for the tab in the Explorer.- Specified by:
getTabTitlein interfaceExplorer.ExplorerPanel- Returns:
- the title of this tab
-
getTabTitleToolTip
public java.lang.String getTabTitleToolTip()
Returns the tooltip for the tab in the Explorer.- Specified by:
getTabTitleToolTipin interfaceExplorer.ExplorerPanel- Returns:
- the tooltip of this tab
-
requiresLog
public boolean requiresLog()
Description copied from class:AbstractPerspectiveWhether this perspective requires a graphical log to write to- Specified by:
requiresLogin interfacePerspective- Overrides:
requiresLogin classAbstractPerspective- Returns:
- true if a log is needed by this perspective
-
acceptsInstances
public boolean acceptsInstances()
Description copied from class:AbstractPerspectiveReturns true if this perspective can do something meaningful with a set of instances- Specified by:
acceptsInstancesin interfacePerspective- Overrides:
acceptsInstancesin classAbstractPerspective- Returns:
- true if this perspective accepts instances
-
getDefaultSettings
public Defaults getDefaultSettings()
Description copied from class:AbstractPerspectiveGet the default settings for this perspective (or null if there are none)- Specified by:
getDefaultSettingsin interfacePerspective- Overrides:
getDefaultSettingsin 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:AbstractPerspectiveReturns 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:
okToBeActivein interfacePerspective- Overrides:
okToBeActivein classAbstractPerspective- Returns:
- true if this perspective is usable at this time
-
setActive
public void setActive(boolean active)
Description copied from class:AbstractPerspectiveSet active status of this perspective. True indicates that this perspective is the visible active perspective in the application- Specified by:
setActivein interfacePerspective- Overrides:
setActivein classAbstractPerspective- Parameters:
active- true if this perspective is the active one
-
settingsChanged
public void settingsChanged()
Description copied from class:AbstractPerspectiveCalled when the user alters settings. The settings altered by the user are not necessarily ones related to this perspective- Specified by:
settingsChangedin interfacePerspective- Overrides:
settingsChangedin 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
public java.lang.String 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
public Classifier getClassifier()
Get the currently configured classifier from the GenericObjectEditor- Returns:
- the currently configured classifier
-
getCostMatrix
public CostMatrix getCostMatrix()
Get the cost matrix (if any)- Returns:
- the cost matrix
-
getClassificationOutputFormatter
public java.lang.Object getClassificationOutputFormatter()
Get the formatter for classifcation output- Returns:
- the formatter for classification output
-
getResultHistory
public ResultHistoryPanel getResultHistory()
Get the result history panel- Returns:
- the result history panel
-
getSeparateTestSetLoader
public Loader 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
public Logger getLog()
Get the log- Returns:
- the log object
-
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.
-
-