The DBSCAN algorithm has two important hyperparameters, based on which it determines the number of clusters [1]}, epsilon: The maximum distance between two samples for one to be considered as in the neighborhood
of the other and minpoints: The number of samples in a neighborhood for a point to be considered as a core point.
At each step, a data-point that has not been visited before is taken. If there are more data-points than \(minpoints\)  within its \(epsilon\)  radius, all the data-points are marked as belonging to a cluster, otherwise
the first point is marked as noise. For all points in the newly-formed cluster, points within their ‘epsilon’ neighborhood are
checked and labeled as either belonging to a cluster or noise. The process is continued until all data-points have been labeled. The greatest advantage of DBSCAN is that it can identify outliers as noise, unlike other algorithms which throw all points into a cluster even if one data point is significantly different from the rest. The time complexity of this algorithm is \(O(n)\)  for reasonable \(epsilon\) . This algorithm is not effective for clusters with varying density since \(epsilon\)  and \(minpoints\)  are different for different clusters.
<FIGURE>