Class KMeansPlusPlusClusterer<T extends Clusterable<T>>

java.lang.Object
org.apache.commons.math.stat.clustering.KMeansPlusPlusClusterer<T>
Type Parameters:
T - type of the points to cluster

public class KMeansPlusPlusClusterer<T extends Clusterable<T>> extends Object
Clustering algorithm based on David Arthur and Sergei Vassilvitski k-means++ algorithm.
Since:
2.0
See Also:
  • Constructor Details

    • KMeansPlusPlusClusterer

      public KMeansPlusPlusClusterer(Random random)
      Build a clusterer.

      The default strategy for handling empty clusters that may appear during algorithm iterations is to split the cluster with largest distance variance.

      Parameters:
      random - random generator to use for choosing initial centers
    • KMeansPlusPlusClusterer

      public KMeansPlusPlusClusterer(Random random, KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy)
      Build a clusterer.
      Parameters:
      random - random generator to use for choosing initial centers
      emptyStrategy - strategy to use for handling empty clusters that may appear during algorithm iterations
      Since:
      2.2
  • Method Details

    • cluster

      public List<Cluster<T>> cluster(Collection<T> points, int k, int maxIterations)
      Runs the K-means++ clustering algorithm.
      Parameters:
      points - the points to cluster
      k - the number of clusters to split the data into
      maxIterations - the maximum number of iterations to run the algorithm for. If negative, no maximum will be used
      Returns:
      a list of clusters containing the points