Class KMeansPlusPlusClusterer<T extends Clusterable<T>>
- java.lang.Object
-
- org.apache.commons.math3.stat.clustering.KMeansPlusPlusClusterer<T>
-
- Type Parameters:
T- type of the points to cluster
@Deprecated public class KMeansPlusPlusClusterer<T extends Clusterable<T>> extends java.lang.ObjectDeprecated.As of 3.2 (to be removed in 4.0), useKMeansPlusPlusClustererinsteadClustering algorithm based on David Arthur and Sergei Vassilvitski k-means++ algorithm.- Since:
- 2.0
- See Also:
- K-means++ (wikipedia)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classKMeansPlusPlusClusterer.EmptyClusterStrategyDeprecated.Strategies to use for replacing an empty cluster.
-
Field Summary
Fields Modifier and Type Field Description private KMeansPlusPlusClusterer.EmptyClusterStrategyemptyStrategyDeprecated.Selected strategy for empty clusters.private java.util.RandomrandomDeprecated.Random generator for choosing initial centers.
-
Constructor Summary
Constructors Constructor Description KMeansPlusPlusClusterer(java.util.Random random)Deprecated.Build a clusterer.KMeansPlusPlusClusterer(java.util.Random random, KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy)Deprecated.Build a clusterer.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private static <T extends Clusterable<T>>
intassignPointsToClusters(java.util.List<Cluster<T>> clusters, java.util.Collection<T> points, int[] assignments)Deprecated.Adds the given points to the closestCluster.private static <T extends Clusterable<T>>
java.util.List<Cluster<T>>chooseInitialCenters(java.util.Collection<T> points, int k, java.util.Random random)Deprecated.Use K-means++ to choose the initial centers.java.util.List<Cluster<T>>cluster(java.util.Collection<T> points, int k, int maxIterations)Deprecated.Runs the K-means++ clustering algorithm.java.util.List<Cluster<T>>cluster(java.util.Collection<T> points, int k, int numTrials, int maxIterationsPerTrial)Deprecated.Runs the K-means++ clustering algorithm.private TgetFarthestPoint(java.util.Collection<Cluster<T>> clusters)Deprecated.Get the point farthest to its cluster centerprivate static <T extends Clusterable<T>>
intgetNearestCluster(java.util.Collection<Cluster<T>> clusters, T point)Deprecated.Returns the nearestClusterto the given pointprivate TgetPointFromLargestNumberCluster(java.util.Collection<Cluster<T>> clusters)Deprecated.Get a random point from theClusterwith the largest number of pointsprivate TgetPointFromLargestVarianceCluster(java.util.Collection<Cluster<T>> clusters)Deprecated.Get a random point from theClusterwith the largest distance variance.
-
-
-
Field Detail
-
random
private final java.util.Random random
Deprecated.Random generator for choosing initial centers.
-
emptyStrategy
private final KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy
Deprecated.Selected strategy for empty clusters.
-
-
Constructor Detail
-
KMeansPlusPlusClusterer
public KMeansPlusPlusClusterer(java.util.Random random)
Deprecated.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(java.util.Random random, KMeansPlusPlusClusterer.EmptyClusterStrategy emptyStrategy)Deprecated.Build a clusterer.- Parameters:
random- random generator to use for choosing initial centersemptyStrategy- strategy to use for handling empty clusters that may appear during algorithm iterations- Since:
- 2.2
-
-
Method Detail
-
cluster
public java.util.List<Cluster<T>> cluster(java.util.Collection<T> points, int k, int numTrials, int maxIterationsPerTrial) throws MathIllegalArgumentException, ConvergenceException
Deprecated.Runs the K-means++ clustering algorithm.- Parameters:
points- the points to clusterk- the number of clusters to split the data intonumTrials- number of trial runsmaxIterationsPerTrial- the maximum number of iterations to run the algorithm for at each trial run. If negative, no maximum will be used- Returns:
- a list of clusters containing the points
- Throws:
MathIllegalArgumentException- if the data points are null or the number of clusters is larger than the number of data pointsConvergenceException- if an empty cluster is encountered and theemptyStrategyis set toERROR
-
cluster
public java.util.List<Cluster<T>> cluster(java.util.Collection<T> points, int k, int maxIterations) throws MathIllegalArgumentException, ConvergenceException
Deprecated.Runs the K-means++ clustering algorithm.- Parameters:
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- Returns:
- a list of clusters containing the points
- Throws:
MathIllegalArgumentException- if the data points are null or the number of clusters is larger than the number of data pointsConvergenceException- if an empty cluster is encountered and theemptyStrategyis set toERROR
-
assignPointsToClusters
private static <T extends Clusterable<T>> int assignPointsToClusters(java.util.List<Cluster<T>> clusters, java.util.Collection<T> points, int[] assignments)
Deprecated.Adds the given points to the closestCluster.
-
chooseInitialCenters
private static <T extends Clusterable<T>> java.util.List<Cluster<T>> chooseInitialCenters(java.util.Collection<T> points, int k, java.util.Random random)
Deprecated.Use K-means++ to choose the initial centers.- Type Parameters:
T- type of the points to cluster- Parameters:
points- the points to choose the initial centers fromk- the number of centers to chooserandom- random generator to use- Returns:
- the initial centers
-
getPointFromLargestVarianceCluster
private T getPointFromLargestVarianceCluster(java.util.Collection<Cluster<T>> clusters) throws ConvergenceException
Deprecated.Get a random point from theClusterwith the largest distance variance.- Parameters:
clusters- theClusters to search- Returns:
- a random point from the selected cluster
- Throws:
ConvergenceException- if clusters are all empty
-
getPointFromLargestNumberCluster
private T getPointFromLargestNumberCluster(java.util.Collection<Cluster<T>> clusters) throws ConvergenceException
Deprecated.Get a random point from theClusterwith the largest number of points- Parameters:
clusters- theClusters to search- Returns:
- a random point from the selected cluster
- Throws:
ConvergenceException- if clusters are all empty
-
getFarthestPoint
private T getFarthestPoint(java.util.Collection<Cluster<T>> clusters) throws ConvergenceException
Deprecated.Get the point farthest to its cluster center- Parameters:
clusters- theClusters to search- Returns:
- point farthest to its cluster center
- Throws:
ConvergenceException- if clusters are all empty
-
getNearestCluster
private static <T extends Clusterable<T>> int getNearestCluster(java.util.Collection<Cluster<T>> clusters, T point)
Deprecated.Returns the nearestClusterto the given point
-
-