weka.clusterers
Class DensityBasedClusterer

java.lang.Object
  extended by weka.clusterers.Clusterer
      extended by weka.clusterers.DensityBasedClusterer
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, CapabilitiesHandler
Direct Known Subclasses:
MakeDensityBasedClusterer, RandomizableDensityBasedClusterer

public abstract class DensityBasedClusterer
extends Clusterer

Abstract clustering model that produces (for each test instance) an estimate of the membership in each cluster (ie. a probability distribution).

Version:
$Revision: 1.7 $
Author:
Mark Hall (mhall@cs.waikato.ac.nz), Eibe Frank (eibe@cs.waikato.ac.nz)
See Also:
Serialized Form

Constructor Summary
DensityBasedClusterer()
           
 
Method Summary
abstract  double[] clusterPriors()
          Returns the prior probability of each cluster.
 double[] distributionForInstance(Instance instance)
          Returns the cluster probability distribution for an instance.
 double logDensityForInstance(Instance instance)
          Computes the density for a given instance.
abstract  double[] logDensityPerClusterForInstance(Instance instance)
          Computes the log of the conditional density (per cluster) for a given instance.
 double[] logJointDensitiesForInstance(Instance inst)
          Returns the logs of the joint densities for a given instance.
static DensityBasedClusterer[] makeCopies(DensityBasedClusterer model, int num)
          Creates copies of the current clusterer.
 
Methods inherited from class weka.clusterers.Clusterer
buildClusterer, clusterInstance, forName, getCapabilities, makeCopies, makeCopy, numberOfClusters
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DensityBasedClusterer

public DensityBasedClusterer()
Method Detail

clusterPriors

public abstract double[] clusterPriors()
                                throws java.lang.Exception
Returns the prior probability of each cluster.

Returns:
the prior probability for each cluster
Throws:
java.lang.Exception - if priors could not be returned successfully

logDensityPerClusterForInstance

public abstract double[] logDensityPerClusterForInstance(Instance instance)
                                                  throws java.lang.Exception
Computes the log of the conditional density (per cluster) for a given instance.

Parameters:
instance - the instance to compute the density for
Returns:
an array containing the estimated densities
Throws:
java.lang.Exception - if the density could not be computed successfully

logDensityForInstance

public double logDensityForInstance(Instance instance)
                             throws java.lang.Exception
Computes the density for a given instance.

Parameters:
instance - the instance to compute the density for
Returns:
the density.
Throws:
java.lang.Exception - if the density could not be computed successfully

distributionForInstance

public double[] distributionForInstance(Instance instance)
                                 throws java.lang.Exception
Returns the cluster probability distribution for an instance.

Overrides:
distributionForInstance in class Clusterer
Parameters:
instance - the instance to be clustered
Returns:
the probability distribution
Throws:
java.lang.Exception - if computation fails

logJointDensitiesForInstance

public double[] logJointDensitiesForInstance(Instance inst)
                                      throws java.lang.Exception
Returns the logs of the joint densities for a given instance.

Parameters:
inst - the instance
Returns:
the array of values
Throws:
java.lang.Exception - if values could not be computed

makeCopies

public static DensityBasedClusterer[] makeCopies(DensityBasedClusterer model,
                                                 int num)
                                          throws java.lang.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:
java.lang.Exception - if an error occurs