Class Silhouette<O>

  • Type Parameters:
    O - Object type
    All Implemented Interfaces:
    elki.evaluation.Evaluator, elki.result.ResultProcessor

    @Reference(authors="P. J. Rousseeuw",
               title="Silhouettes: A graphical aid to the interpretation and validation of cluster analysis",
               booktitle="Journal of Computational and Applied Mathematics, Volume 20",
               url="https://doi.org/10.1016/0377-0427(87)90125-7",
               bibkey="doi:10.1016/0377-04278790125-7")
    public class Silhouette<O>
    extends java.lang.Object
    implements elki.evaluation.Evaluator
    Compute the silhouette of a data set.

    Reference:

    P. J. Rousseeuw
    Silhouettes: A graphical aid to the interpretation and validation of cluster analysis
    In: Journal of Computational and Applied Mathematics Volume 20, November 1987

    TODO: keep all silhouette values, and allow visualization!

    Since:
    0.7.0
    Author:
    Erich Schubert
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  Silhouette.Par<O>
      Parameterization class.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private elki.distance.Distance<? super O> distance
      Distance function to use.
      private static java.lang.String key
      Key for logging statistics.
      private static elki.logging.Logging LOG
      Logger for debug output.
      private NoiseHandling noiseOption
      Option for noise handling.
      private boolean penalize
      Penalize noise, if NoiseHandling.IGNORE_NOISE is set.
      static java.lang.String SILHOUETTE_NAME
      Name of the silhouette result.
    • Constructor Summary

      Constructors 
      Constructor Description
      Silhouette​(elki.distance.Distance<? super O> distance, boolean mergenoise)
      Constructor.
      Silhouette​(elki.distance.Distance<? super O> distance, NoiseHandling noiseOption, boolean penalize)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double evaluateClustering​(elki.database.relation.Relation<O> rel, elki.database.query.distance.DistanceQuery<O> dq, Clustering<?> c)
      Evaluate a single clustering.
      void processNewResult​(java.lang.Object result)  
      • Methods inherited from class java.lang.Object

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

      • LOG

        private static final elki.logging.Logging LOG
        Logger for debug output.
      • SILHOUETTE_NAME

        public static final java.lang.String SILHOUETTE_NAME
        Name of the silhouette result.
        See Also:
        Constant Field Values
      • distance

        private elki.distance.Distance<? super O> distance
        Distance function to use.
      • noiseOption

        private NoiseHandling noiseOption
        Option for noise handling.
      • key

        private static final java.lang.String key
        Key for logging statistics.
    • Constructor Detail

      • Silhouette

        public Silhouette​(elki.distance.Distance<? super O> distance,
                          NoiseHandling noiseOption,
                          boolean penalize)
        Constructor.
        Parameters:
        distance - Distance function
        noiseOption - Handling of "noise" clusters.
        penalize - noise, if NoiseHandling.IGNORE_NOISE is set.
      • Silhouette

        public Silhouette​(elki.distance.Distance<? super O> distance,
                          boolean mergenoise)
        Constructor.
        Parameters:
        distance - Distance function
        mergenoise - Flag to treat noise as clusters, instead of breaking them into singletons.
    • Method Detail

      • evaluateClustering

        public double evaluateClustering​(elki.database.relation.Relation<O> rel,
                                         elki.database.query.distance.DistanceQuery<O> dq,
                                         Clustering<?> c)
        Evaluate a single clustering.
        Parameters:
        rel - Data relation
        dq - Distance query
        c - Clustering
        Returns:
        Average silhouette
      • processNewResult

        public void processNewResult​(java.lang.Object result)
        Specified by:
        processNewResult in interface elki.result.ResultProcessor