class_docstr: !
  @brief Class represents clustering algorithm DBSCAN.
  @details This DBSCAN algorithm is KD-tree optimized.
           
           By default C/C++ pyclustering library is used for processing that significantly increases performance.
  
  Clustering example where DBSCAN algorithm is used to process `Chainlink` data from `FCPS` collection:
  @code
      from pyclustering.cluster.dbscan import dbscan
      from pyclustering.cluster import cluster_visualizer
      from pyclustering.utils import read_sample
      from pyclustering.samples.definitions import FCPS_SAMPLES
  
      # Sample for cluster analysis.
      sample = read_sample(FCPS_SAMPLES.SAMPLE_CHAINLINK)
  
      # Create DBSCAN algorithm.
      dbscan_instance = dbscan(sample, 0.7, 3)
  
      # Start processing by DBSCAN.
      dbscan_instance.process()
  
      # Obtain results of clustering.
      clusters = dbscan_instance.get_clusters()
      noise = dbscan_instance.get_noise()
  
      # Visualize clustering results
      visualizer = cluster_visualizer()
      visualizer.append_clusters(clusters, sample)
      visualizer.append_cluster(noise, sample, marker='x')
      visualizer.show()
  @endcode
class_docstr_tok: ["!","@","brief","Class","represents","clustering","algorithm","DBSCAN",".","@","details","This","DBSCAN","algorithm","is","KD-tree","optimized",".","By","default","C\/C++","pyclustering","library","is","used","for","processing","that","significantly","increases","performance",".","Clustering","example","where","DBSCAN","algorithm","is","used","to","process","`","Chainlink","`","data","from","`","FCPS","`","collection",":","@","code","from","pyclustering.cluster.dbscan","import","dbscan","from","pyclustering.cluster","import","cluster_visualizer","from","pyclustering.utils","import","read_sample","from","pyclustering.samples.definitions","import","FCPS_SAMPLES","#","Sample","for","cluster","analysis",".","sample","=","read_sample","(","FCPS_SAMPLES.SAMPLE_CHAINLINK",")","#","Create","DBSCAN","algorithm",".","dbscan_instance","=","dbscan","(","sample",",","0.7",",","3",")","#","Start","processing","by","DBSCAN",".","dbscan_instance.process","(",")","#","Obtain","results","of","clustering",".","clusters","=","dbscan_instance.get_clusters","(",")","noise","=","dbscan_instance.get_noise","(",")","#","Visualize","clustering","results","visualizer","=","cluster_visualizer","(",")","visualizer.append_clusters","(","clusters",",","sample",")","visualizer.append_cluster","(","noise",",","sample",",","marker=","'","x","'",")","visualizer.show","(",")","@","endcode"]
docstr: !
  @brief Constructor of clustering algorithm DBSCAN.
  
  @param[in] data (list): Input data that is presented as list of points or distance matrix (defined by parameter
             'data_type', by default data is considered as a list of points).
  @param[in] eps (double): Connectivity radius between points, points may be connected if distance between them less then the radius.
  @param[in] neighbors (uint): minimum number of shared neighbors that is required for establish links between points.
  @param[in] ccore (bool): if True than DLL CCORE (C++ solution) will be used for solving the problem.
  @param[in] **kwargs: Arbitrary keyword arguments (available arguments: 'data_type').
  
  <b>Keyword Args:</b><br>
      - data_type (string): Data type of input sample 'data' that is processed by the algorithm ('points', 'distance_matrix').
docstr_tok: ["!","@","brief","Constructor","of","clustering","algorithm","DBSCAN",".","@","param","[","in","]","data","(","list",")",":","Input","data","that","is","presented","as","list","of","points","or","distance","matrix","(","defined","by","parameter","'data_type","'",",","by","default","data","is","considered","as","a","list","of","points",")",".","@","param","[","in","]","eps","(","double",")",":","Connectivity","radius","between","points",",","points","may","be","connected","if","distance","between","them","less","then","the","radius",".","@","param","[","in","]","neighbors","(","uint",")",":","minimum","number","of","shared","neighbors","that","is","required","for","establish","links","between","points",".","@","param","[","in","]","ccore","(","bool",")",":","if","True","than","DLL","CCORE","(","C++","solution",")","will","be","used","for","solving","the","problem",".","@","param","[","in","]","*","*","kwargs",":","Arbitrary","keyword","arguments","(","available","arguments",":","'data_type","'",")",".","<","b",">","Keyword","Args",":","<","\/b",">","<","br",">","-","data_type","(","string",")",":","Data","type","of","input","sample","'data","'","that","is","processed","by","the","algorithm","(","'points","'",",","'distance_matrix","'",")","."]
code: def __init__(self, data, eps, neighbors, ccore=True, **kwargs):
      """!
      @brief Constructor of clustering algorithm DBSCAN.
  
      @param[in] data (list): Input data that is presented as list of points or distance matrix (defined by parameter
                 'data_type', by default data is considered as a list of points).
      @param[in] eps (double): Connectivity radius between points, points may be connected if distance between them less then the radius.
      @param[in] neighbors (uint): minimum number of shared neighbors that is required for establish links between points.
      @param[in] ccore (bool): if True than DLL CCORE (C++ solution) will be used for solving the problem.
      @param[in] **kwargs: Arbitrary keyword arguments (available arguments: 'data_type').
  
      <b>Keyword Args:</b><br>
          - data_type (string): Data type of input sample 'data' that is processed by the algorithm ('points', 'distance_matrix').
  
      """
  
      self.__pointer_data = data
      self.__kdtree = None
      self.__eps = eps
      self.__sqrt_eps = eps * eps
      self.__neighbors = neighbors
  
      self.__visited = None
      self.__belong = None
  
      self.__data_type = kwargs.get("data_type", "points")
  
      self.__clusters = []
      self.__noise = []
  
      self.__neighbor_searcher = None
  
      self.__initialize_ccore_state(ccore)
  
      self.__verify_arguments()
  
file_path: pyclustering/pyclustering/cluster/dbscan.py
imports: from pyclustering.container.kdtree import kdtree_balanced
  from pyclustering.cluster.encoder import type_encoding
  from pyclustering.core.wrapper import ccore_library
  import pyclustering.core.dbscan_wrapper
label_desc: Use image node_id 1 to create a new dbscan object  with example: obj = dbscan(data, eps, neighbors, ccore)