Class DBSCAN<O>

  • Type Parameters:
    O - the type of Object the algorithm is applied to
    All Implemented Interfaces:
    elki.Algorithm, ClusteringAlgorithm<Clustering<Model>>

    @Title("DBSCAN: Density-Based Clustering of Applications with Noise")
    @Description("Algorithm to find density-connected sets in a database based on the parameters \'minpts\' and \'epsilon\' (specifying a volume). These two parameters determine a density threshold for clustering.")
    @Reference(authors="Martin Ester, Hans-Peter Kriegel, J\u00f6rg Sander, Xiaowei Xu",title="A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise",booktitle="Proc. 2nd Int. Conf. on Knowledge Discovery and Data Mining (KDD \'96)",url="http://www.aaai.org/Library/KDD/1996/kdd96-037.php",bibkey="DBLP:conf/kdd/EsterKSX96") @Reference(authors="Erich Schubert, J\u00f6rg Sander, Martin Ester, Hans-Peter Kriegel, Xiaowei Xu",title="DBSCAN Revisited, Revisited: Why and How You Should (Still) Use DBSCAN",booktitle="ACM Trans. Database Systems (TODS)",url="https://doi.org/10.1145/3068335",bibkey="DBLP:journals/tods/SchubertSEKX17")
    @Priority(200)
    public class DBSCAN<O>
    extends java.lang.Object
    implements ClusteringAlgorithm<Clustering<Model>>
    Density-Based Clustering of Applications with Noise (DBSCAN), an algorithm to find density-connected sets in a database.

    Reference:

    Martin Ester, Hans-Peter Kriegel, Jörg Sander, Xiaowei Xu
    A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise
    Proc. 2nd Int. Conf. on Knowledge Discovery and Data Mining (KDD '96)

    Further discussion:

    Erich Schubert, Jörg Sander, Martin Ester, Hans-Peter Kriegel, Xiaowei Xu
    DBSCAN Revisited, Revisited: Why and How You Should (Still) Use DBSCAN
    ACM Trans. Database Systems (TODS)

    Since:
    0.1
    Author:
    Arthur Zimek, Erich Schubert
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private class  DBSCAN.Instance
      Instance for a single data set.
      static class  DBSCAN.Par<O>
      Parameterization class.
      • Nested classes/interfaces inherited from interface elki.Algorithm

        elki.Algorithm.Utils
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected elki.distance.Distance<? super O> distance
      Distance function used.
      protected double epsilon
      Holds the epsilon radius threshold.
      private static elki.logging.Logging LOG
      The logger for this class.
      protected int minpts
      Holds the minimum cluster size.
    • Constructor Summary

      Constructors 
      Constructor Description
      DBSCAN​(elki.distance.Distance<? super O> distance, double epsilon, int minpts)
      Constructor with parameters.
    • Field Detail

      • LOG

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

        protected elki.distance.Distance<? super O> distance
        Distance function used.
      • epsilon

        protected double epsilon
        Holds the epsilon radius threshold.
      • minpts

        protected int minpts
        Holds the minimum cluster size.
    • Constructor Detail

      • DBSCAN

        public DBSCAN​(elki.distance.Distance<? super O> distance,
                      double epsilon,
                      int minpts)
        Constructor with parameters.
        Parameters:
        distance - Distance function
        epsilon - Epsilon value
        minpts - Minpts parameter
    • Method Detail

      • getInputTypeRestriction

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

        public Clustering<Model> run​(elki.database.relation.Relation<O> relation)
        Performs the DBSCAN algorithm on the given database.