Class KMeansProcessor<V extends elki.data.NumberVector>

  • All Implemented Interfaces:
    elki.parallel.processor.Processor

    public class KMeansProcessor<V extends elki.data.NumberVector>
    extends java.lang.Object
    implements elki.parallel.processor.Processor
    Parallel k-means implementation.
    Since:
    0.7.0
    Author:
    Erich Schubert
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  KMeansProcessor.Instance<V extends elki.data.NumberVector>
      Instance to process part of the data set, for a single iteration.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) elki.database.datastore.WritableIntegerDataStore assignment
      Assignment storage.
      (package private) double[][] centroids
      Updated cluster centroids
      (package private) boolean changed
      Whether the assignment changed during the last iteration.
      (package private) elki.distance.NumberVectorDistance<? super V> distance
      Distance function.
      (package private) double[][] means
      Mean vectors.
      (package private) elki.database.relation.Relation<V> relation
      Data relation.
      (package private) int[] sizes
      (Partial) cluster sizes
      (package private) double[] varsum
      Variance sum.
    • Constructor Summary

      Constructors 
      Constructor Description
      KMeansProcessor​(elki.database.relation.Relation<V> relation, elki.distance.NumberVectorDistance<? super V> distance, elki.database.datastore.WritableIntegerDataStore assignment, double[] varsum)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean changed()
      Get the "has changed" value.
      void cleanup​(elki.parallel.processor.Processor.Instance inst)  
      double[][] getMeans()
      Get the new means.
      KMeansProcessor.Instance<V> instantiate​(elki.parallel.Executor exectutor)  
      void nextIteration​(double[][] means)
      Initialize for a new iteration.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • relation

        elki.database.relation.Relation<V extends elki.data.NumberVector> relation
        Data relation.
      • distance

        elki.distance.NumberVectorDistance<? super V extends elki.data.NumberVector> distance
        Distance function.
      • assignment

        elki.database.datastore.WritableIntegerDataStore assignment
        Assignment storage.
      • means

        double[][] means
        Mean vectors.
      • centroids

        double[][] centroids
        Updated cluster centroids
      • sizes

        int[] sizes
        (Partial) cluster sizes
      • varsum

        double[] varsum
        Variance sum.
      • changed

        boolean changed
        Whether the assignment changed during the last iteration.
    • Constructor Detail

      • KMeansProcessor

        public KMeansProcessor​(elki.database.relation.Relation<V> relation,
                               elki.distance.NumberVectorDistance<? super V> distance,
                               elki.database.datastore.WritableIntegerDataStore assignment,
                               double[] varsum)
        Constructor.
        Parameters:
        relation - Data relation
        distance - Distance function
        assignment - Cluster assignment
        varsum - Variance sums
    • Method Detail

      • changed

        public boolean changed()
        Get the "has changed" value.
        Returns:
        Changed flag.
      • nextIteration

        public void nextIteration​(double[][] means)
        Initialize for a new iteration.
        Parameters:
        means - New means.
      • instantiate

        public KMeansProcessor.Instance<V> instantiate​(elki.parallel.Executor exectutor)
        Specified by:
        instantiate in interface elki.parallel.processor.Processor
      • cleanup

        public void cleanup​(elki.parallel.processor.Processor.Instance inst)
        Specified by:
        cleanup in interface elki.parallel.processor.Processor
      • getMeans

        public double[][] getMeans()
        Get the new means.
        Returns:
        New means