weka.clusterers

## Class AbstractDensityBasedClusterer

- java.lang.Object
- - weka.clusterers.AbstractClusterer
  - - weka.clusterers.AbstractDensityBasedClusterer

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, Clusterer, DensityBasedClusterer, CapabilitiesHandler, CapabilitiesIgnorer, OptionHandler, RevisionHandler
  Direct Known Subclasses:
    MakeDensityBasedClusterer, RandomizableDensityBasedClusterer

      public abstract class AbstractDensityBasedClusterer
      extends AbstractClusterer
      implements DensityBasedClusterer

  Abstract clustering model that produces (for each test instance) an estimate of the membership in each cluster (ie. a probability distribution).
  Version:
    $Revision: 8034 $
  Author:
    Mark Hall (mhall@cs.waikato.ac.nz), Eibe Frank (eibe@cs.waikato.ac.nz)
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractDensityBasedClusterer()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.AbstractClusterer

      `buildClusterer, clusterInstance, debugTipText, doNotCheckCapabilitiesTipText, forName, getCapabilities, getDebug, getDoNotCheckCapabilities, getOptions, getRevision, listOptions, makeCopies, makeCopy, numberOfClusters, runClusterer, setDebug, setDoNotCheckCapabilities, setOptions`

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

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

    - ### Methods inherited from interface weka.clusterers.Clusterer

      `buildClusterer, clusterInstance, getCapabilities, numberOfClusters`

- - ### Constructor Detail

    - #### AbstractDensityBasedClusterer

          public AbstractDensityBasedClusterer()

  - ### Method Detail

    - #### clusterPriors

          public abstract double[] clusterPriors()
                                          throws java.lang.Exception

      Returns the prior probability of each cluster.
      Specified by:
        `clusterPriors` in interface `DensityBasedClusterer`
      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.
      Specified by:
        `logDensityPerClusterForInstance` in interface `DensityBasedClusterer`
      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.
      Specified by:
        `logDensityForInstance` in interface `DensityBasedClusterer`
      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.
      Specified by:
        `distributionForInstance` in interface `Clusterer`
      Specified by:
        `distributionForInstance` in interface `DensityBasedClusterer`
      Overrides:
        `distributionForInstance` in class `AbstractClusterer`
      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.
      Specified by:
        `logJointDensitiesForInstance` in interface `DensityBasedClusterer`
      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