Package weka.clusterers

# Class AbstractClusterer

java.lang.Object
weka.clusterers.AbstractClusterer

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Clusterer`, `CapabilitiesHandler`, `RevisionHandler`

Direct Known Subclasses:
  `AbstractDensityBasedClusterer`, `CLOPE`, `DBSCAN`, `HierarchicalClusterer`, `OPTICS`, `RandomizableClusterer`, `RandomizableSingleClustererEnhancer`, `SingleClustererEnhancer`

public abstract class AbstractClusterer extends Object implements Clusterer, Cloneable, Serializable, CapabilitiesHandler, RevisionHandler
Abstract clusterer.

Version:
  $Revision: 5537 $
Author:
  Mark Hall (mhall@cs.waikato.ac.nz)
See Also:
  - Serialized Form

## Constructor Summary

Constructors
Constructor
Description
`AbstractClusterer()`

## Method Summary

Modifier and Type
Method
Description
`abstract void`
`buildClusterer(Instances data)`
Generates a clusterer.
`int`
`clusterInstance(Instance instance)`
Classifies a given instance.
`double[]`
`distributionForInstance(Instance instance)`
Predicts the cluster memberships for a given instance.
`static Clusterer`
`forName(String clustererName, String[] options)`
Creates a new instance of a clusterer given it's class name and (optional) arguments to pass to it's setOptions method.
`Capabilities`
`getCapabilities()`
Returns the Capabilities of this clusterer.
`String`
`getRevision()`
Returns the revision string.
`static Clusterer[]`
`makeCopies(Clusterer model, int num)`
Creates copies of the current clusterer.
`static Clusterer`
`makeCopy(Clusterer model)`
Creates a deep copy of the given clusterer using serialization.
`abstract int`
`numberOfClusters()`
Returns the number of clusters.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AbstractClusterer

public AbstractClusterer()

## Method Details

### buildClusterer

public abstract void buildClusterer(Instances data) throws Exception
Generates a clusterer. Has to initialize all fields of the clusterer that are not being set via options.

Specified by:
  `buildClusterer` in interface `Clusterer`
Parameters:
  `data` - set of instances serving as training data
Throws:
  `Exception` - if the clusterer has not been generated successfully

### clusterInstance

public int clusterInstance(Instance instance) throws Exception
Classifies a given instance. Either this or distributionForInstance() needs to be implemented by subclasses.

Specified by:
  `clusterInstance` in interface `Clusterer`
Parameters:
  `instance` - the instance to be assigned to a cluster
Returns:
  the number of the assigned cluster as an integer
Throws:
  `Exception` - if instance could not be clustered successfully

### distributionForInstance

public double[] distributionForInstance(Instance instance) throws Exception
Predicts the cluster memberships for a given instance. Either this or clusterInstance() needs to be implemented by subclasses.

Specified by:
  `distributionForInstance` in interface `Clusterer`
Parameters:
  `instance` - the instance to be assigned a cluster.
Returns:
  an array containing the estimated membership probabilities of the test instance in each cluster (this should sum to at most 1)
Throws:
  `Exception` - if distribution could not be computed successfully

### numberOfClusters

public abstract int numberOfClusters() throws Exception
Returns the number of clusters.

Specified by:
  `numberOfClusters` in interface `Clusterer`
Returns:
  the number of clusters generated for a training dataset.
Throws:
  `Exception` - if number of clusters could not be returned successfully

### forName

public static Clusterer forName(String clustererName, String[] options) throws Exception
Creates a new instance of a clusterer given it's class name and (optional) arguments to pass to it's setOptions method. If the clusterer implements OptionHandler and the options parameter is non-null, the clusterer will have it's options set.

Parameters:
  `clustererName` - the fully qualified class name of the clusterer
  `options` - an array of options suitable for passing to setOptions. May be null.
Returns:
  the newly created search object, ready for use.
Throws:
  `Exception` - if the clusterer class name is invalid, or the options supplied are not acceptable to the clusterer.

### makeCopy

public static Clusterer makeCopy(Clusterer model) throws Exception
Creates a deep copy of the given clusterer using serialization.

Parameters:
  `model` - the clusterer to copy
Returns:
  a deep copy of the clusterer
Throws:
  `Exception` - if an error occurs

### makeCopies

public static Clusterer[] makeCopies(Clusterer model, int num) throws Exception
Creates copies of the current clusterer. Note that this method now uses Serialization to perform a deep copy, so the Clusterer object must be fully Serializable. Any currently built model will now be copied as well.

Parameters:
  `model` - an example clusterer to copy
  `num` - the number of clusterer copies to create.
Returns:
  an array of clusterers.
Throws:
  `Exception` - if an error occurs

### getCapabilities

public Capabilities getCapabilities()
Returns the Capabilities of this clusterer. Derived classifiers have to override this method to enable capabilities.

Specified by:
  `getCapabilities` in interface `CapabilitiesHandler`
Specified by:
  `getCapabilities` in interface `Clusterer`
Returns:
  the capabilities of this object
See Also:
  - `Capabilities`

### getRevision

public String getRevision()
Returns the revision string.

Specified by:
  `getRevision` in interface `RevisionHandler`
Returns:
  the revision