weka.clusterers
Class Cobweb

java.lang.Object
  extended by weka.clusterers.AbstractClusterer
      extended by weka.clusterers.RandomizableClusterer
          extended by weka.clusterers.Cobweb
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Clusterer, UpdateableClusterer, CapabilitiesHandler, Drawable, OptionHandler, Randomizable, RevisionHandler, TechnicalInformationHandler

public class Cobweb
extends RandomizableClusterer
implements Drawable, TechnicalInformationHandler, UpdateableClusterer

Class implementing the Cobweb and Classit clustering algorithms.

Note: the application of node operators (merging, splitting etc.) in terms of ordering and priority differs (and is somewhat ambiguous) between the original Cobweb and Classit papers. This algorithm always compares the best host, adding a new leaf, merging the two best hosts, and splitting the best host when considering where to place a new instance.

For more information see:

D. Fisher (1987). Knowledge acquisition via incremental conceptual clustering. Machine Learning. 2(2):139-172.

J. H. Gennari, P. Langley, D. Fisher (1990). Models of incremental concept formation. Artificial Intelligence. 40:11-61.

BibTeX:

 @article{Fisher1987,
    author = {D. Fisher},
    journal = {Machine Learning},
    number = {2},
    pages = {139-172},
    title = {Knowledge acquisition via incremental conceptual clustering},
    volume = {2},
    year = {1987}
 }
 
 @article{Gennari1990,
    author = {J. H. Gennari and P. Langley and D. Fisher},
    journal = {Artificial Intelligence},
    pages = {11-61},
    title = {Models of incremental concept formation},
    volume = {40},
    year = {1990}
 }
 

Valid options are:

 -A <acuity>
  Acuity.
  (default=1.0)
 -C <cutoff>
  Cutoff.
  (default=0.002)
 -S <num>
  Random number seed.
  (default 42)

Version:
$Revision: 5538 $
Author:
Mark Hall
See Also:
RandomizableClusterer, Drawable, Serialized Form

Field Summary
 
Fields inherited from interface weka.core.Drawable
BayesNet, NOT_DRAWABLE, TREE
 
Constructor Summary
Cobweb()
          default constructor
 
Method Summary
 java.lang.String acuityTipText()
          Returns the tip text for this property
 void addInstance(Instance newInstance)
          Deprecated. updateClusterer(Instance) should be used instead
 void buildClusterer(Instances data)
          Builds the clusterer.
 int clusterInstance(Instance instance)
          Classifies a given instance.
 java.lang.String cutoffTipText()
          Returns the tip text for this property
 double getAcuity()
          get the acuity value
 Capabilities getCapabilities()
          Returns default capabilities of the clusterer.
 double getCutoff()
          get the cutoff
 java.lang.String[] getOptions()
          Gets the current settings of Cobweb.
 java.lang.String getRevision()
          Returns the revision string.
 boolean getSaveInstanceData()
          Get the value of saveInstances.
 TechnicalInformation getTechnicalInformation()
          Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.
 java.lang.String globalInfo()
          Returns a string describing this clusterer
 java.lang.String graph()
          Generates the graph string of the Cobweb tree
 int graphType()
          Returns the type of graphs this class represents
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options.
static void main(java.lang.String[] argv)
          Main method.
 int numberOfClusters()
          Returns the number of clusters.
 java.lang.String saveInstanceDataTipText()
          Returns the tip text for this property
 void setAcuity(double a)
          set the acuity.
 void setCutoff(double c)
          set the cutoff
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setSaveInstanceData(boolean newsaveInstances)
          Set the value of saveInstances.
 java.lang.String toString()
          Returns a description of the clusterer as a string.
 void updateClusterer(Instance newInstance)
          Adds an instance to the clusterer.
 void updateFinished()
          Singals the end of the updating.
 
Methods inherited from class weka.clusterers.RandomizableClusterer
getSeed, seedTipText, setSeed
 
Methods inherited from class weka.clusterers.AbstractClusterer
distributionForInstance, forName, makeCopies, makeCopy
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Cobweb

public Cobweb()
default constructor

Method Detail

globalInfo

public java.lang.String globalInfo()
Returns a string describing this clusterer

Returns:
a description of the evaluator suitable for displaying in the explorer/experimenter gui

getTechnicalInformation

public TechnicalInformation getTechnicalInformation()
Returns an instance of a TechnicalInformation object, containing detailed information about the technical background of this class, e.g., paper reference or book this class is based on.

Specified by:
getTechnicalInformation in interface TechnicalInformationHandler
Returns:
the technical information about this class

getCapabilities

public Capabilities getCapabilities()
Returns default capabilities of the clusterer.

Specified by:
getCapabilities in interface Clusterer
Specified by:
getCapabilities in interface CapabilitiesHandler
Overrides:
getCapabilities in class AbstractClusterer
Returns:
the capabilities of this clusterer
See Also:
Capabilities

buildClusterer

public void buildClusterer(Instances data)
                    throws java.lang.Exception
Builds the clusterer.

Specified by:
buildClusterer in interface Clusterer
Specified by:
buildClusterer in class AbstractClusterer
Parameters:
data - the training instances.
Throws:
java.lang.Exception - if something goes wrong.

updateFinished

public void updateFinished()
Singals the end of the updating.

Specified by:
updateFinished in interface UpdateableClusterer

clusterInstance

public int clusterInstance(Instance instance)
                    throws java.lang.Exception
Classifies a given instance.

Specified by:
clusterInstance in interface Clusterer
Overrides:
clusterInstance in class AbstractClusterer
Parameters:
instance - the instance to be assigned to a cluster
Returns:
the number of the assigned cluster as an interger if the class is enumerated, otherwise the predicted value
Throws:
java.lang.Exception - if instance could not be classified successfully

numberOfClusters

public int numberOfClusters()
Returns the number of clusters.

Specified by:
numberOfClusters in interface Clusterer
Specified by:
numberOfClusters in class AbstractClusterer
Returns:
the number of clusters

updateClusterer

public void updateClusterer(Instance newInstance)
                     throws java.lang.Exception
Adds an instance to the clusterer.

Specified by:
updateClusterer in interface UpdateableClusterer
Parameters:
newInstance - the instance to be added
Throws:
java.lang.Exception - if something goes wrong

addInstance

public void addInstance(Instance newInstance)
                 throws java.lang.Exception
Deprecated. updateClusterer(Instance) should be used instead

Adds an instance to the Cobweb tree.

Parameters:
newInstance - the instance to be added
Throws:
java.lang.Exception - if something goes wrong
See Also:
updateClusterer(Instance)

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options.

Specified by:
listOptions in interface OptionHandler
Overrides:
listOptions in class RandomizableClusterer
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options.

Valid options are:

 -A <acuity>
  Acuity.
  (default=1.0)
 -C <cutoff>
  Cutoff.
  (default=0.002)
 -S <num>
  Random number seed.
  (default 42)

Specified by:
setOptions in interface OptionHandler
Overrides:
setOptions in class RandomizableClusterer
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

acuityTipText

public java.lang.String acuityTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setAcuity

public void setAcuity(double a)
set the acuity.

Parameters:
a - the acuity value

getAcuity

public double getAcuity()
get the acuity value

Returns:
the acuity

cutoffTipText

public java.lang.String cutoffTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

setCutoff

public void setCutoff(double c)
set the cutoff

Parameters:
c - the cutof

getCutoff

public double getCutoff()
get the cutoff

Returns:
the cutoff

saveInstanceDataTipText

public java.lang.String saveInstanceDataTipText()
Returns the tip text for this property

Returns:
tip text for this property suitable for displaying in the explorer/experimenter gui

getSaveInstanceData

public boolean getSaveInstanceData()
Get the value of saveInstances.

Returns:
Value of saveInstances.

setSaveInstanceData

public void setSaveInstanceData(boolean newsaveInstances)
Set the value of saveInstances.

Parameters:
newsaveInstances - Value to assign to saveInstances.

getOptions

public java.lang.String[] getOptions()
Gets the current settings of Cobweb.

Specified by:
getOptions in interface OptionHandler
Overrides:
getOptions in class RandomizableClusterer
Returns:
an array of strings suitable for passing to setOptions()

toString

public java.lang.String toString()
Returns a description of the clusterer as a string.

Overrides:
toString in class java.lang.Object
Returns:
a string describing the clusterer.

graphType

public int graphType()
Returns the type of graphs this class represents

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

graph

public java.lang.String graph()
                       throws java.lang.Exception
Generates the graph string of the Cobweb tree

Specified by:
graph in interface Drawable
Returns:
a String value
Throws:
java.lang.Exception - if an error occurs

getRevision

public java.lang.String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Overrides:
getRevision in class AbstractClusterer
Returns:
the revision

main

public static void main(java.lang.String[] argv)
Main method.

Parameters:
argv - the commandline options