weka.classifiers.trees
Class UserClassifier

java.lang.Object
  extended byweka.classifiers.Classifier
      extended byweka.classifiers.trees.UserClassifier
All Implemented Interfaces:
java.lang.Cloneable, Drawable, OptionHandler, java.io.Serializable, TreeDisplayListener, VisualizePanelListener

public class UserClassifier
extends Classifier
implements Drawable, TreeDisplayListener, VisualizePanelListener

Class for generating an user defined decision tree. For more info see

Ware M., Frank E., Holmes G., Hall M. and Witten I.H. (2000). interactive machine learning - letting users build classifiers, Working Paper 00/4, Department of Computer Science, University of Waikato; March. Also available online at http://www.cs.waikato.ac.nz/~ml/publications/2000/ 00MW-etal-Interactive-ML.ps.

Version:
$Revision: 1.15 $
Author:
Malcolm Ware (mfw4@cs.waikato.ac.nz)
See Also:
Serialized Form

Nested Class Summary
private  class UserClassifier.TreeClass
          Inner class used to represent the actual decision tree structure and data.
 
Field Summary
private static int HLINE
           
private static int LEAF
          I am not sure if these are strictly adhered to in visualizepanel so I am making them private to avoid confusion, (note that they will be correct in this class, VLINE and HLINE aren't used).
private  boolean m_built
          The status of whether there is a decision tree ready or not.
private  GenericObjectEditor m_classifiers
          A list of other m_classifiers.
private  UserClassifier.TreeClass m_focus
          Two references to the structure of the decision tree.
private  VisualizePanel m_iView
          The instances display.
private  javax.swing.JFrame m_mainWin
          The window.
private  int m_nextId
          The next number that can be used as a unique id for a node.
private  PropertyDialog m_propertyDialog
          A window for selecting other classifiers.
private  javax.swing.JTabbedPane m_reps
          The tabbed window for the tree and instances view.
private  UserClassifier.TreeClass m_top
          Two references to the structure of the decision tree.
private  javax.swing.JFrame m_treeFrame
          These two frames aren't used anymore.
private  TreeVisualizer m_tView
          The tree display panel.
private  javax.swing.JFrame m_visFrame
           
private static int POLYGON
           
private static int POLYLINE
           
private static int RECTANGLE
           
private static int VLINE
           
 
Fields inherited from class weka.classifiers.Classifier
m_Debug
 
Fields inherited from interface weka.core.Drawable
BayesNet, NOT_DRAWABLE, TREE
 
Constructor Summary
UserClassifier()
          Constructor
 
Method Summary
private  void blocker(boolean tf)
          A function used to stop the code that called buildclassifier from continuing on before the user has finished the decision tree.
 void buildClassifier(Instances i)
          Call this function to build a decision tree for the training data provided.
 double[] distributionForInstance(Instance i)
          Call this function to get a double array filled with the probability of how likely each class type is the class of the instance.
 java.lang.String globalInfo()
          This will return a string describing the classifier.
 java.lang.String graph()
          Returns a string that describes a graph representing the object.
 int graphType()
          Returns the type of graph this classifier represents.
static void main(java.lang.String[] argv)
          Main method for testing this class.
 java.lang.String toString()
           
 void userCommand(TreeDisplayEvent e)
          Receives user choices from the tree view, and then deals with these choices.
 void userDataEvent(VisualizePanelEvent e)
          This receives shapes from the data view.
 
Methods inherited from class weka.classifiers.Classifier
classifyInstance, debugTipText, forName, getDebug, getOptions, listOptions, makeCopies, setDebug, setOptions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LEAF

private static final int LEAF
I am not sure if these are strictly adhered to in visualizepanel so I am making them private to avoid confusion, (note that they will be correct in this class, VLINE and HLINE aren't used).

See Also:
Constant Field Values

RECTANGLE

private static final int RECTANGLE
See Also:
Constant Field Values

POLYGON

private static final int POLYGON
See Also:
Constant Field Values

POLYLINE

private static final int POLYLINE
See Also:
Constant Field Values

VLINE

private static final int VLINE
See Also:
Constant Field Values

HLINE

private static final int HLINE
See Also:
Constant Field Values

m_tView

private TreeVisualizer m_tView
The tree display panel.


m_iView

private VisualizePanel m_iView
The instances display.


m_top

private UserClassifier.TreeClass m_top
Two references to the structure of the decision tree.


m_focus

private UserClassifier.TreeClass m_focus
Two references to the structure of the decision tree.


m_nextId

private int m_nextId
The next number that can be used as a unique id for a node.


m_treeFrame

private javax.swing.JFrame m_treeFrame
These two frames aren't used anymore.


m_visFrame

private javax.swing.JFrame m_visFrame

m_reps

private javax.swing.JTabbedPane m_reps
The tabbed window for the tree and instances view.


m_mainWin

private javax.swing.JFrame m_mainWin
The window.


m_built

private boolean m_built
The status of whether there is a decision tree ready or not.


m_classifiers

private GenericObjectEditor m_classifiers
A list of other m_classifiers.


m_propertyDialog

private PropertyDialog m_propertyDialog
A window for selecting other classifiers.

Constructor Detail

UserClassifier

public UserClassifier()
Constructor

Method Detail

main

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

Parameters:
argv - should contain command line options (see setOptions)

toString

public java.lang.String toString()
Returns:
a string that represents this objects tree.

userCommand

public void userCommand(TreeDisplayEvent e)
Receives user choices from the tree view, and then deals with these choices.

Specified by:
userCommand in interface TreeDisplayListener
Parameters:
e - The choice.

userDataEvent

public void userDataEvent(VisualizePanelEvent e)
This receives shapes from the data view. It then enters these shapes into the decision tree structure.

Specified by:
userDataEvent in interface VisualizePanelListener
Parameters:
e - Contains the shapes, and other info.

graphType

public int graphType()
Returns the type of graph this classifier represents.

Specified by:
graphType in interface Drawable
Returns:
Drawable.TREE

graph

public java.lang.String graph()
                       throws java.lang.Exception
Description copied from interface: Drawable
Returns a string that describes a graph representing the object. The string should be in XMLBIF ver. 0.3 format if the graph is a BayesNet, otherwise it should be in dotty format.

Specified by:
graph in interface Drawable
Returns:
A string formatted with a dotty representation of the decision tree.
Throws:
java.lang.Exception - if String can't be built properly.

blocker

private void blocker(boolean tf)
A function used to stop the code that called buildclassifier from continuing on before the user has finished the decision tree.

Parameters:
tf - True to stop the thread, False to release the thread that is waiting there (if one).

globalInfo

public java.lang.String globalInfo()
This will return a string describing the classifier.

Returns:
The string.

buildClassifier

public void buildClassifier(Instances i)
                     throws java.lang.Exception
Call this function to build a decision tree for the training data provided.

Specified by:
buildClassifier in class Classifier
Parameters:
i - The training data.
Throws:
java.lang.Exception - if can't build classification properly.

distributionForInstance

public double[] distributionForInstance(Instance i)
                                 throws java.lang.Exception
Call this function to get a double array filled with the probability of how likely each class type is the class of the instance.

Overrides:
distributionForInstance in class Classifier
Parameters:
i - The instance to classify.
Returns:
A double array filled with the probalities of each class type.
Throws:
java.lang.Exception - if can't classify instance.