Class FastMSC.Instance2

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

    protected class FastMSC.Instance2
    extends java.lang.Object
    Simplified FastMSC clustering instance for k=2.

    For k=2, we can use a much simpler logic.

    Author:
    Erich Schubert
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected elki.database.datastore.WritableIntegerDataStore assignment
      Output cluster mapping.
      protected elki.database.query.distance.DistanceQuery<?> distQ
      Distance function to use.
      protected elki.database.datastore.WritableDoubleDataStore dm0
      Distances to the first medoid.
      protected elki.database.datastore.WritableDoubleDataStore dm1
      Distances to the second medoid.
      protected elki.database.ids.DBIDs ids
      Ids to process.
    • Constructor Summary

      Constructors 
      Constructor Description
      Instance2​(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 void 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)
      • 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.
      • dm0

        protected elki.database.datastore.WritableDoubleDataStore dm0
        Distances to the first medoid.
      • dm1

        protected elki.database.datastore.WritableDoubleDataStore dm1
        Distances to the second medoid.
      • assignment

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

      • Instance2

        public Instance2​(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 void 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
      • 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
      • silhouetteScores

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