|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.commons.math.stat.clustering.KMeansPlusPlusClusterer<T>
T - type of the points to clusterpublic class KMeansPlusPlusClusterer<T extends Clusterable<T>>
Clustering algorithm based on David Arthur and Sergei Vassilvitski k-means++ algorithm.
| Nested Class Summary | |
|---|---|
static class |
KMeansPlusPlusClusterer.EmptyClusterStrategy
Strategies to use for replacing an empty cluster. |
| Field Summary | |
|---|---|
private KMeansPlusPlusClusterer.EmptyClusterStrategy |
emptyStrategy
Selected strategy for empty clusters. |
private java.util.Random |
random
Random generator for choosing initial centers. |
| Constructor Summary | |
|---|---|
KMeansPlusPlusClusterer(java.util.Random random)
Build a clusterer. |
|
KMeansPlusPlusClusterer(java.util.Random random,
KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy)
Build a clusterer. |
|
| Method Summary | ||
|---|---|---|
private static
|
assignPointsToClusters(java.util.Collection<Cluster<T>> clusters,
java.util.Collection<T> points)
Adds the given points to the closest Cluster. |
|
private static
|
chooseInitialCenters(java.util.Collection<T> points,
int k,
java.util.Random random)
Use K-means++ to choose the initial centers. |
|
java.util.List<Cluster<T>> |
cluster(java.util.Collection<T> points,
int k,
int maxIterations)
Runs the K-means++ clustering algorithm. |
|
private T |
getFarthestPoint(java.util.Collection<Cluster<T>> clusters)
Get the point farthest to its cluster center |
|
private static
|
getNearestCluster(java.util.Collection<Cluster<T>> clusters,
T point)
Returns the nearest Cluster to the given point |
|
private T |
getPointFromLargestNumberCluster(java.util.Collection<Cluster<T>> clusters)
Get a random point from the Cluster with the largest number of points |
|
private T |
getPointFromLargestVarianceCluster(java.util.Collection<Cluster<T>> clusters)
Get a random point from the Cluster with the largest distance variance. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private final java.util.Random random
private final KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy
| Constructor Detail |
|---|
public KMeansPlusPlusClusterer(java.util.Random random)
The default strategy for handling empty clusters that may appear during algorithm iterations is to split the cluster with largest distance variance.
random - random generator to use for choosing initial centers
public KMeansPlusPlusClusterer(java.util.Random random,
KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy)
random - random generator to use for choosing initial centersemptyStrategy - strategy to use for handling empty clusters that
may appear during algorithm iterations| Method Detail |
|---|
public java.util.List<Cluster<T>> cluster(java.util.Collection<T> points,
int k,
int maxIterations)
points - the points to clusterk - the number of clusters to split the data intomaxIterations - the maximum number of iterations to run the algorithm
for. If negative, no maximum will be used
private static <T extends Clusterable<T>> void assignPointsToClusters(java.util.Collection<Cluster<T>> clusters,
java.util.Collection<T> points)
Cluster.
T - type of the points to clusterclusters - the Clusters to add the points topoints - the points to add to the given Clusters
private static <T extends Clusterable<T>> java.util.List<Cluster<T>> chooseInitialCenters(java.util.Collection<T> points,
int k,
java.util.Random random)
T - type of the points to clusterpoints - the points to choose the initial centers fromk - the number of centers to chooserandom - random generator to use
private T getPointFromLargestVarianceCluster(java.util.Collection<Cluster<T>> clusters)
Cluster with the largest distance variance.
clusters - the Clusters to search
private T getPointFromLargestNumberCluster(java.util.Collection<Cluster<T>> clusters)
Cluster with the largest number of points
clusters - the Clusters to search
private T getFarthestPoint(java.util.Collection<Cluster<T>> clusters)
clusters - the Clusters to search
private static <T extends Clusterable<T>> Cluster<T> getNearestCluster(java.util.Collection<Cluster<T>> clusters,
T point)
Cluster to the given point
T - type of the points to clusterclusters - the Clusters to searchpoint - the point to find the nearest Cluster for
Cluster to the given point
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||