sklearn.cluster.dbscan

sklearn.cluster.dbscan()

Realiza un análisis de conglomerados DBSCAN a partir de un arreglo vectorial o una matriz de distancia.

Lee más en el Manual de usuario.

Parámetros
X{array-like, sparse (CSR) matrix} de forma (n_samples, n_features) o (n_samples, n_samples)

Un arreglo de características, o un arreglo de distancias entre muestras si metric='precomputed'.

epsfloat, default=0.5

La distancia máxima entre dos muestras para que una se considere en el vecindario (neighborhood) de la otra. No se trata de un límite máximo en las distancias de los puntos dentro de un conglomerado. Este es el parámetro más importante de DBSCAN, así que debes elegirlo cuidadosamente para tu conjunto de datos y función de distancia.

min_samplesint, default=5

El número de muestras (o la ponderación total) en un vecindario para que un punto sea considerado como un punto central. Esto incluye el propio punto.

metricstr o invocable, default=”minkowski”

La métrica a utilizar cuando se calcula la distancia entre instancias en un arreglo de características. Si la métrica es una cadena o un invocable, debe ser una de las opciones permitidas por sklearn.metrics.pairwise_distances para su parámetro de métrica. Si la métrica es «precalculada», se asume que X es una matriz de distancias y debe ser cuadrada durante el ajuste. X puede ser un grafo disperso, en cuyo caso sólo los elementos «distintos de cero» pueden considerarse vecinos.

metric_paramsdiccionario, default=None

Argumentos adicionales de palabras clave para la función métrica.

Nuevo en la versión 0.19.

algorithm{“auto”, “ball_tree”, “kd_tree”, “brute”}, default=”auto”

El algoritmo que utilizará el módulo NearestNeighbors para calcular las distancias puntuales y encontrar los vecinos más cercanos. Consulta la documentación del módulo NearestNeighbors para más detalles.

leaf_sizeint, default=30

Tamaño de la hoja que se pasa a BallTree o cKDTree. Esto puede afectar a la velocidad de construcción y consulta, así como a la memoria necesaria para almacenar el árbol. El valor óptimo depende de la naturaleza del problema.

pfloat, default=2

La potencia de la métrica de Minkowski para calcular la distancia entre puntos.

sample_weightarray-like de forma (n_samples,), default=None

Ponderación de cada muestra, de forma que una muestra con una ponderación de al menos min_samples es por sí misma una muestra central; una muestra con una ponderación negativa puede impedir que su vecina eps (eps-neighbor) sea el centro. Ten en cuenta que las ponderaciones son absolutos, y por defecto son 1.

n_jobsint, default=None

El número de trabajos paralelos a ejecutar para la búsqueda de vecinos. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa usar todos los procesadores. Ver Glosario para más detalles. Si se utiliza la distancia precalculada, la ejecución paralela no está disponible y por lo tanto n_jobs no tendrá ningún efecto.

Devuelve
core_samplesndarray de forma (n_core_samples,)

Indices de muestras centrales (core samples).

labelsndarray de forma (n_samples,)

Etiquetas de los conglomerados para cada punto. Las muestras con ruido reciben la etiqueta -1.

Ver también

DBSCAN

Una interfaz de estimación para este algoritmo de agrupamiento.

OPTICS

Una interfaz de estimación similar que se agrupa en múltiples valores de eps. Nuestra implementación está optimizada para el uso de la memoria.

Notas

Para ver un ejemplo, consulta examples/cluster/plot_dbscan.py.

Esta implementación calcula en bloque todas las consultas del vecindario, lo que aumenta la complejidad de memoria a O(n.d), donde d es el número medio de vecinos, mientras que el DBSCAN original tiene una complejidad de memoria O(n). Puede atraer una mayor complejidad de memoria al consultar estos vecindarios más cercanos, dependiendo del algorithm.

Una forma de evitar la complejidad de la consulta es precalcular los vecindarios dispersos en porciones usando NearestNeighbors.radius_neighbors_graph con mode='distance', y luego usar metric='precomputed' aquí.

Otra forma de reducir la memoria y el tiempo de cálculo es eliminar los puntos (casi) duplicados y utilizar en su lugar sample_weight.

cluster.optics proporciona un conglomerado similar con menor uso de memoria.

Referencias

Ester, M., H. P. Kriegel, J. Sander, and X. Xu, «A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise». En: Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, pp. 226-231. 1996

Schubert, E., Sander, J., Ester, M., Kriegel, H. P., & Xu, X. (2017). DBSCAN revisited, revisited: why and how you should (still) use DBSCAN. ACM Transactions on Database Systems (TODS), 42(3), 19.