Package elki.clustering.silhouette
Class FastMSC.Instance
- java.lang.Object
-
- elki.clustering.silhouette.FastMSC.Instance
-
- Direct Known Subclasses:
FasterMSC.Instance
protected class FastMSC.Instance extends java.lang.ObjectFastMSC 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>assignmentDistances and nearest medoids.protected elki.database.query.distance.DistanceQuery<?>distQDistance function to use.protected elki.database.ids.DBIDsidsIds to process.protected elki.database.datastore.WritableIntegerDataStoreoutputOutput 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 doubleassignToNearestCluster(elki.database.ids.ArrayDBIDs means)Assign each object to the nearest cluster.protected doubledoSwap(elki.database.ids.ArrayDBIDs medoids, int b, elki.database.ids.DBIDRef j)Assign each object to the nearest cluster when replacing one medoid.protected doublefindBestSwap(elki.database.ids.DBIDRef j, double[] ploss)Compute the loss change when choosing j as new medoid.protected doublerun(elki.database.ids.ArrayModifiableDBIDs medoids, int maxiter)Run the FastMSC optimization phase.elki.database.datastore.DoubleDataStoresilhouetteScores()Get the silhouette scores per point (must be run() first)protected voidupdateRemovalLoss(double[] losses)Update the share removal loss dataprotected voidupdateThirdNearest(elki.database.ids.DBIDRef j, FastMSC.Record rec, int m, double bestd, elki.database.ids.DBIDArrayIter miter)Update the third nearest in the record.
-
-
-
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.
-
-
Method Detail
-
run
protected double run(elki.database.ids.ArrayModifiableDBIDs medoids, int maxiter)Run the FastMSC optimization phase.- Parameters:
medoids- Initial medoids listmaxiter- 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 medoidploss- 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 medoidsb- Medoid position indexj- 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 objectrec- Current recordm- Medoid id replacedbestd- distance to medoidmiter- 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
-
-