Class BestOfMultipleKMeans<V extends elki.data.NumberVector,​M extends MeanModel>

  • Type Parameters:
    V - Vector type
    M - Model type
    All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<M>>, KMeans<V,​M>

    public class BestOfMultipleKMeans<V extends elki.data.NumberVector,​M extends MeanModel>
    extends java.lang.Object
    implements KMeans<V,​M>
    Run K-Means multiple times, and keep the best run.
    Since:
    0.6.0
    Author:
    Stephan Baier, Erich Schubert
    • Field Detail

      • LOG

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

        private int trials
        Number of trials to do.
      • innerkMeans

        private KMeans<V extends elki.data.NumberVector,​M extends MeanModel> innerkMeans
        Variant of kMeans for the bisecting step.
      • qualityMeasure

        private KMeansQualityMeasure<? super V extends elki.data.NumberVector> qualityMeasure
        Quality measure which should be used.
    • Constructor Detail

      • BestOfMultipleKMeans

        public BestOfMultipleKMeans​(int trials,
                                    KMeans<V,​M> innerkMeans,
                                    KMeansQualityMeasure<? super V> qualityMeasure)
        Constructor.
        Parameters:
        trials - Number of trials to do.
        innerkMeans - K-Means variant to actually use.
        qualityMeasure - Quality measure
    • Method Detail

      • getInputTypeRestriction

        public elki.data.type.TypeInformation[] getInputTypeRestriction()
        Specified by:
        getInputTypeRestriction in interface elki.Algorithm
      • run

        public Clustering<M> 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,​M extends MeanModel>
        Parameters:
        relation - Relation to process.
        Returns:
        Clustering result
      • getDistance

        public elki.distance.NumberVectorDistance<? super V> getDistance()
        Description copied from interface: KMeans
        Returns the distance.
        Specified by:
        getDistance in interface KMeans<V extends elki.data.NumberVector,​M extends MeanModel>
        Returns:
        the distance
      • setK

        public void setK​(int k)
        Description copied from interface: KMeans
        Set the value of k. Needed for some types of nested k-means.
        Specified by:
        setK in interface KMeans<V extends elki.data.NumberVector,​M extends MeanModel>
        Parameters:
        k - K parameter
      • setDistance

        public void setDistance​(elki.distance.NumberVectorDistance<? super V> distance)
        Description copied from interface: KMeans
        Set the distance function to use.
        Specified by:
        setDistance in interface KMeans<V extends elki.data.NumberVector,​M extends MeanModel>
        Parameters:
        distance - Distance function.
      • setInitializer

        public void setInitializer​(KMeansInitialization init)
        Description copied from interface: KMeans
        Set the initialization method.
        Specified by:
        setInitializer in interface KMeans<V extends elki.data.NumberVector,​M extends MeanModel>
        Parameters:
        init - Initialization method