gov.sandia.cognition.learning.algorithm.clustering.initializer
Class AbstractMinDistanceFixedClusterInitializer<ClusterType extends Cluster<DataType>,DataType>

java.lang.Object
  extended by gov.sandia.cognition.util.AbstractCloneableSerializable
      extended by gov.sandia.cognition.learning.function.distance.DefaultDivergenceFunctionContainer<DataType,DataType>
          extended by gov.sandia.cognition.learning.algorithm.clustering.initializer.AbstractMinDistanceFixedClusterInitializer<ClusterType,DataType>
Type Parameters:
ClusterType - Type of Cluster<DataType> used in theaceous learn() method.
DataType - The algorithm operates on a Collection<DataType>, so DataType will be something like Vector or String.
All Implemented Interfaces:
FixedClusterInitializer<ClusterType,DataType>, DivergenceFunctionContainer<DataType,DataType>, CloneableSerializable, Randomized, Serializable, Cloneable
Direct Known Subclasses:
DistanceSamplingClusterInitializer, GreedyClusterInitializer

public abstract class AbstractMinDistanceFixedClusterInitializer<ClusterType extends Cluster<DataType>,DataType>
extends DefaultDivergenceFunctionContainer<DataType,DataType>
implements FixedClusterInitializer<ClusterType,DataType>, Randomized

Implements an abstract FixedClusterInitializer that works by using the minimum distance from a point to the cluster.

Since:
3.1
Author:
Justin Basilico
See Also:
Serialized Form

Field Summary
protected  ClusterCreator<ClusterType,DataType> creator
          The ClusterCreator to create the initial clusters from.
protected  Random random
          The random number generator to use.
 
Fields inherited from class gov.sandia.cognition.learning.function.distance.DefaultDivergenceFunctionContainer
divergenceFunction
 
Constructor Summary
AbstractMinDistanceFixedClusterInitializer()
          Creates a new, empty instance of AbstractMinDistanceFixedClusterInitializer.
AbstractMinDistanceFixedClusterInitializer(DivergenceFunction<? super DataType,? super DataType> divergenceFunction, ClusterCreator<ClusterType,DataType> creator, Random random)
          Creates a new instance of AbstractMinDistanceFixedClusterInitializer.
 
Method Summary
 AbstractMinDistanceFixedClusterInitializer<ClusterType,DataType> clone()
          This makes public the clone method on the Object class and removes the exception that it throws.
 ClusterCreator<ClusterType,DataType> getCreator()
          Gets the cluster creator used to create the initial clusters.
 Random getRandom()
          Gets the random number generator used by this object.
 ArrayList<ClusterType> initializeClusters(int numClusters, Collection<? extends DataType> elements)
          Initializes a given number of clusters from the given elements using the greedy initialization algorithm.
protected abstract  int selectNextClusterIndex(double[] minDistances, boolean[] selected)
          Select the index for the next cluster based on the given minimum distances and array indicating which clusters have already been selected.
 void setCreator(ClusterCreator<ClusterType,DataType> creator)
          Sets the cluster creator used to create the initial clusters.
 void setRandom(Random random)
          Sets the random number generator used by this object.
 
Methods inherited from class gov.sandia.cognition.learning.function.distance.DefaultDivergenceFunctionContainer
getDivergenceFunction, setDivergenceFunction
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

creator

protected ClusterCreator<ClusterType extends Cluster<DataType>,DataType> creator
The ClusterCreator to create the initial clusters from.


random

protected Random random
The random number generator to use.

Constructor Detail

AbstractMinDistanceFixedClusterInitializer

public AbstractMinDistanceFixedClusterInitializer()
Creates a new, empty instance of AbstractMinDistanceFixedClusterInitializer.


AbstractMinDistanceFixedClusterInitializer

public AbstractMinDistanceFixedClusterInitializer(DivergenceFunction<? super DataType,? super DataType> divergenceFunction,
                                                  ClusterCreator<ClusterType,DataType> creator,
                                                  Random random)
Creates a new instance of AbstractMinDistanceFixedClusterInitializer.

Parameters:
divergenceFunction - The divergence function to use.
creator - The cluster creator to use.
random - The random number generator to use.
Method Detail

clone

public AbstractMinDistanceFixedClusterInitializer<ClusterType,DataType> clone()
Description copied from class: AbstractCloneableSerializable
This makes public the clone method on the Object class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call super.clone() to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in ObjectUtil may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use super.clone() as the basis for your implementation.

Specified by:
clone in interface CloneableSerializable
Overrides:
clone in class DefaultDivergenceFunctionContainer<DataType,DataType>
Returns:
A clone of this object.

initializeClusters

public ArrayList<ClusterType> initializeClusters(int numClusters,
                                                 Collection<? extends DataType> elements)
Initializes a given number of clusters from the given elements using the greedy initialization algorithm.

Specified by:
initializeClusters in interface FixedClusterInitializer<ClusterType extends Cluster<DataType>,DataType>
Parameters:
numClusters - The number of clusters to create.
elements - The elements to create the clusters from.
Returns:
The initial clusters to use.
Throws:
IllegalArgumentException - If numClusters is less than 0.
NullPointerException - If elements is null.

selectNextClusterIndex

protected abstract int selectNextClusterIndex(double[] minDistances,
                                              boolean[] selected)
Select the index for the next cluster based on the given minimum distances and array indicating which clusters have already been selected.

Parameters:
minDistances - The array of minimum distances.
selected - The array corresponding to whether or not an item has already been selected.
Returns:
The index of the next cluster to include. -1 means that there is nothing left to include.

getCreator

public ClusterCreator<ClusterType,DataType> getCreator()
Gets the cluster creator used to create the initial clusters.

Returns:
The cluster creator.

setCreator

public void setCreator(ClusterCreator<ClusterType,DataType> creator)
Sets the cluster creator used to create the initial clusters.

Parameters:
creator - The new cluster creator.

getRandom

public Random getRandom()
Description copied from interface: Randomized
Gets the random number generator used by this object.

Specified by:
getRandom in interface Randomized
Returns:
The random number generator used by this object.

setRandom

public void setRandom(Random random)
Description copied from interface: Randomized
Sets the random number generator used by this object.

Specified by:
setRandom in interface Randomized
Parameters:
random - The random number generator for this object to use.