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 contextojoblib.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
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
conmode='distance'
, y luego usarmetric='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.