Class FastMSC.Instance

  • Direct Known Subclasses:
    FasterMSC.Instance
    Enclosing class:
    FastMSC<O>

    protected class FastMSC.Instance
    extends java.lang.Object
    FastMSC clustering instance for a particular data set.
    Author:
    Erich Schubert
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected elki.database.datastore.WritableDataStore<FastMSC.Record> assignment
      Distances and nearest medoids.
      protected elki.database.query.distance.DistanceQuery<?> distQ
      Distance function to use.
      protected elki.database.ids.DBIDs ids
      Ids to process.
      protected elki.database.datastore.WritableIntegerDataStore output
      Output cluster mapping.
    • Constructor Summary

      Constructors 
      Constructor Description
      Instance​(elki.database.query.distance.DistanceQuery<?> distQ, elki.database.ids.DBIDs ids, elki.database.datastore.WritableIntegerDataStore assignment)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected double assignToNearestCluster​(elki.database.ids.ArrayDBIDs means)
      Assign each object to the nearest cluster.
      protected double doSwap​(elki.database.ids.ArrayDBIDs medoids, int b, elki.database.ids.DBIDRef j)
      Assign each object to the nearest cluster when replacing one medoid.
      protected double findBestSwap​(elki.database.ids.DBIDRef j, double[] ploss)
      Compute the loss change when choosing j as new medoid.
      protected double run​(elki.database.ids.ArrayModifiableDBIDs medoids, int maxiter)
      Run the FastMSC optimization phase.
      elki.database.datastore.DoubleDataStore silhouetteScores()
      Get the silhouette scores per point (must be run() first)
      protected void updateRemovalLoss​(double[] losses)
      Update the share removal loss data
      protected void updateThirdNearest​(elki.database.ids.DBIDRef j, FastMSC.Record rec, int m, double bestd, elki.database.ids.DBIDArrayIter miter)
      Update the third nearest in the record.
      • Methods inherited from class java.lang.Object

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

      • ids

        protected elki.database.ids.DBIDs ids
        Ids to process.
      • distQ

        protected elki.database.query.distance.DistanceQuery<?> distQ
        Distance function to use.
      • assignment

        protected elki.database.datastore.WritableDataStore<FastMSC.Record> assignment
        Distances and nearest medoids.
      • output

        protected elki.database.datastore.WritableIntegerDataStore output
        Output cluster mapping.
    • Constructor Detail

      • Instance

        public Instance​(elki.database.query.distance.DistanceQuery<?> distQ,
                        elki.database.ids.DBIDs ids,
                        elki.database.datastore.WritableIntegerDataStore assignment)
        Constructor.
        Parameters:
        distQ - Distance query
        ids - IDs to process
        assignment - Cluster assignment
    • Method Detail

      • run

        protected double run​(elki.database.ids.ArrayModifiableDBIDs medoids,
                             int maxiter)
        Run the FastMSC optimization phase.
        Parameters:
        medoids - Initial medoids list
        maxiter - Maximum number of iterations
        Returns:
        final medoid Silhouette
      • assignToNearestCluster

        protected double assignToNearestCluster​(elki.database.ids.ArrayDBIDs means)
        Assign each object to the nearest cluster.
        Parameters:
        means - Cluster medoids
        Returns:
        loss
      • findBestSwap

        protected double findBestSwap​(elki.database.ids.DBIDRef j,
                                      double[] ploss)
        Compute the loss change when choosing j as new medoid.
        Parameters:
        j - New medoid
        ploss - Loss array
        Returns:
        Shared loss term
      • doSwap

        protected double doSwap​(elki.database.ids.ArrayDBIDs medoids,
                                int b,
                                elki.database.ids.DBIDRef j)
        Assign each object to the nearest cluster when replacing one medoid.
        Parameters:
        medoids - Cluster medoids
        b - Medoid position index
        j - New medoid
        Returns:
        medoid silhouette
      • updateThirdNearest

        protected void updateThirdNearest​(elki.database.ids.DBIDRef j,
                                          FastMSC.Record rec,
                                          int m,
                                          double bestd,
                                          elki.database.ids.DBIDArrayIter miter)
        Update the third nearest in the record.
        Parameters:
        j - Current object
        rec - Current record
        m - Medoid id replaced
        bestd - distance to medoid
        miter - Medoid iterator
      • updateRemovalLoss

        protected void updateRemovalLoss​(double[] losses)
        Update the share removal loss data
        Parameters:
        losses - Removal loss storage
      • silhouetteScores

        public elki.database.datastore.DoubleDataStore silhouetteScores()
        Get the silhouette scores per point (must be run() first)
        Returns:
        Silhouette scores