Class AnnulusKMeans<V extends elki.data.NumberVector>

  • Type Parameters:
    V - vector datatype
    All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<KMeansModel>>, KMeans<V,​KMeansModel>

    @Reference(authors="J. Drake",title="Faster k-means clustering",booktitle="Faster k-means clustering",url="http://hdl.handle.net/2104/8826",bibkey="mathesis/Drake13") @Reference(authors="G. Hamerly and J. Drake",title="Accelerating Lloyd\u2019s Algorithm for k-Means Clustering",booktitle="Partitional Clustering Algorithms",url="https://doi.org/10.1007/978-3-319-09259-1_2",bibkey="doi:10.1007/978-3-319-09259-1_2")
    public class AnnulusKMeans<V extends elki.data.NumberVector>
    extends HamerlyKMeans<V>
    Annulus k-means algorithm. A variant of Hamerly with an additional bound, based on comparing the norm of the mean and the norm of the points.

    This implementation could be further improved by precomputing and storing the norms of all points (at the cost of O(n) memory additionally).

    Reference:

    J. Drake
    Faster k-means clustering
    Masters Thesis

    G. Hamerly and J. Drake
    Accelerating Lloyd’s Algorithm for k-Means Clustering
    Partitional Clustering Algorithms

    Since:
    0.7.5
    Author:
    Erich Schubert
    • Field Detail

      • LOG

        private static final elki.logging.Logging LOG
        The logger for this class.
    • Constructor Detail

      • AnnulusKMeans

        public AnnulusKMeans​(elki.distance.NumberVectorDistance<? super V> distance,
                             int k,
                             int maxiter,
                             KMeansInitialization initializer,
                             boolean varstat)
        Constructor.
        Parameters:
        distance - distance function
        k - k parameter
        maxiter - Maxiter parameter
        initializer - Initialization method
        varstat - Compute the variance statistic
    • Method Detail

      • run

        public Clustering<KMeansModel> run​(elki.database.relation.Relation<V> relation)
        Description copied from interface: KMeans
        Run the clustering algorithm.
        Specified by:
        run in interface KMeans<V extends elki.data.NumberVector,​KMeansModel>
        Overrides:
        run in class HamerlyKMeans<V extends elki.data.NumberVector>
        Parameters:
        relation - Relation to process.
        Returns:
        Clustering result
      • getLogger

        protected elki.logging.Logging getLogger()
        Description copied from class: AbstractKMeans
        Get the (STATIC) logger for this class.
        Overrides:
        getLogger in class HamerlyKMeans<V extends elki.data.NumberVector>
        Returns:
        the static logger