Al contrario de la estrategia seguida por k-Means, DBSCAN (Density-Based Spatial Clustering of Applications with Noise) no presupone clusters convexos, sino que se basa en la densidad de las muestras para identificar los clusters. Por este motivo, los clusters identificados por DBSCAN pueden ser de cualquier forma.
El concepto en el que se basa DBSCAN es el de core samples, o muestras base, que son muestras situadas en áreas de alta densidad. Junto a éstas encontramos también las non-core samples, o muestras no-base, que se encuentran próximas a un core sample (sin ser una de ellas). Por este motivo, un cluster va a ser una agrupación de core samples y de non-core-samples situadas a una distancia máxima de alguna core-sample (distancia medida según algún criterio).
Dos parámetros importantes: eps, máxima distancia entre dos muestras para poder ser consideradas pertenecientes al mismo "vecindario", y min_samples, número de muestras en un vecindario para que un punto pueda ser considerado core sample.
Scikit-Learn implementa este algoritmo en la clase sklearn.cluster.DBSCAN.