V - Vector typeM - Cluster model typepublic abstract class AbstractKMeans<V extends NumberVector,M extends Model> extends AbstractNumberVectorDistanceBasedAlgorithm<V,Clustering<M>> implements KMeans<V,M>
| Modifier and Type | Class and Description | 
|---|---|
protected static class  | 
AbstractKMeans.Instance
Inner instance for a run, for better encapsulation, that encapsulates the
 standard flow of most (but not all) k-means variations. 
 | 
static class  | 
AbstractKMeans.Parameterizer<V extends NumberVector>
Parameterization class. 
 | 
| Modifier and Type | Field and Description | 
|---|---|
protected KMeansInitialization | 
initializer
Method to choose initial means. 
 | 
protected int | 
k
Number of cluster centers to initialize. 
 | 
protected int | 
maxiter
Maximum number of iterations 
 | 
distanceFunctionALGORITHM_IDINIT_ID, K_ID, MAXITER_ID, SEED_ID, VARSTAT_IDDISTANCE_FUNCTION_ID| Constructor and Description | 
|---|
AbstractKMeans(NumberVectorDistanceFunction<? super V> distanceFunction,
              int k,
              int maxiter,
              KMeansInitialization initializer)
Constructor. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
private static double[][] | 
denseMeans(java.util.List<? extends DBIDs> clusters,
          double[][] means,
          Relation<? extends NumberVector> relation)
Returns the mean vectors of the given clusters in the given database. 
 | 
TypeInformation[] | 
getInputTypeRestriction()
Get the input type restriction used for negotiating the data query. 
 | 
protected static void | 
incrementalUpdateMean(double[] mean,
                     NumberVector vec,
                     int newsize,
                     double op)
Compute an incremental update for the mean. 
 | 
protected double[][] | 
initialMeans(Database database,
            Relation<V> relation)
Choose the initial means. 
 | 
protected static double[][] | 
means(java.util.List<? extends DBIDs> clusters,
     double[][] means,
     Relation<? extends NumberVector> relation)
Returns the mean vectors of the given clusters in the given database. 
 | 
static void | 
minusEquals(double[] sum,
           NumberVector vec)
Similar to VMath.minusEquals, but accepts a number vector. 
 | 
protected static void | 
nearestMeans(double[][] cdist,
            int[][] cnum)
Recompute the separation of cluster means. 
 | 
static void | 
plusEquals(double[] sum,
          NumberVector vec)
Similar to VMath.plusEquals, but accepts a number vector. 
 | 
static void | 
plusMinusEquals(double[] add,
               double[] sub,
               NumberVector vec)
Add to one, remove from another. 
 | 
void | 
setDistanceFunction(NumberVectorDistanceFunction<? super V> distanceFunction)
Set the distance function to use. 
 | 
void | 
setInitializer(KMeansInitialization init)
Set the initialization method. 
 | 
void | 
setK(int k)
Set the value of k. 
 | 
private static double[][] | 
sparseMeans(java.util.List<? extends DBIDs> clusters,
           double[][] means,
           Relation<? extends SparseNumberVector> relation)
Returns the mean vectors of the given clusters in the given database. 
 | 
getDistanceFunctiongetLogger, runclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitrungetDistanceFunctionprotected int k
protected int maxiter
protected KMeansInitialization initializer
public AbstractKMeans(NumberVectorDistanceFunction<? super V> distanceFunction, int k, int maxiter, KMeansInitialization initializer)
distanceFunction - distance functionk - k parametermaxiter - Maxiter parameterinitializer - Function to generate the initial meanspublic TypeInformation[] getInputTypeRestriction()
AbstractAlgorithmgetInputTypeRestriction in interface AlgorithmgetInputTypeRestriction in class AbstractAlgorithm<Clustering<M extends Model>>protected double[][] initialMeans(Database database, Relation<V> relation)
database - Databaserelation - Relationprotected static double[][] means(java.util.List<? extends DBIDs> clusters, double[][] means, Relation<? extends NumberVector> relation)
clusters - the clusters to compute the meansmeans - the recent meansrelation - the database containing the vectorsprivate static double[][] denseMeans(java.util.List<? extends DBIDs> clusters, double[][] means, Relation<? extends NumberVector> relation)
clusters - the clusters to compute the meansmeans - the recent meansrelation - the database containing the vectorspublic static void plusEquals(double[] sum,
                              NumberVector vec)
sum - Aggregation arrayvec - Vector to addpublic static void minusEquals(double[] sum,
                               NumberVector vec)
sum - Aggregation arrayvec - Vector to subtractpublic static void plusMinusEquals(double[] add,
                                   double[] sub,
                                   NumberVector vec)
add - Array to add tosub - Array to remove fromvec - Vector to subtractprivate static double[][] sparseMeans(java.util.List<? extends DBIDs> clusters, double[][] means, Relation<? extends SparseNumberVector> relation)
clusters - the clusters to compute the meansmeans - the recent meansrelation - the database containing the vectorsprotected static void nearestMeans(double[][] cdist,
                                   int[][] cnum)
Used by sort, and our exponion implementation.
cdist - Center-to-Center distancescnum - Center numbersprotected static void incrementalUpdateMean(double[] mean,
                                            NumberVector vec,
                                            int newsize,
                                            double op)
mean - Mean to updatevec - Object vectornewsize - (New) size of clusterop - Cluster size change / Weight changepublic void setK(int k)
KMeanspublic void setDistanceFunction(NumberVectorDistanceFunction<? super V> distanceFunction)
KMeanssetDistanceFunction in interface KMeans<V extends NumberVector,M extends Model>distanceFunction - Distance function.public void setInitializer(KMeansInitialization init)
KMeanssetInitializer in interface KMeans<V extends NumberVector,M extends Model>init - Initialization methodCopyright © 2019 ELKI Development Team. License information.