sklearn.cluster.DBSCAN

class sklearn.cluster.DBSCAN

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

DBSCAN - Conglomerado espacial basado en la densidad de las aplicaciones con ruido. Encuentra muestras centrales de alta densidad y expande los conglomerados a partir de ellas. Es adecuado para datos que contienen conglomerados de densidad similar.

Más información en el Manual de usuario.

Parámetros
epsfloat, default=0.5

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 punto central. Esto incluye el propio punto.

metricstring, or callable, default=”euclidean”

Métrica a utilizar cuando se calcula la distancia entre instancias en un arreglo (array) de características. Si la métrica es una cadena o una invocable, debe ser una de las opciones permitidas por sklearn.metrics.pairwise_distances para su parámetro métrica. Si la métrica es «precalculada», se asume que X es una matriz de distancia y debe ser cuadrada. X puede ser un Glossary, en cuyo caso sólo los elementos «no nulos» pueden considerarse vecinos (neighbors) para DBSCAN.

Nuevo en la versión 0.17: métrica precalculada para aceptar la matriz dispersa precalculada.

metric_paramsdict, default=None

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

Nuevo en la versión 0.19.

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

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=None

La potencia de la métrica de Minkowski que se utilizará para calcular la distancia entre puntos. Si es None, entonces p=2 (equivalente a la distancia euclidiana).

n_jobsint, default=None

El número de trabajos paralelos a ejecutar. None significa 1 a menos que esté en un contexto joblib.parallel_backend. -1 significa utilizar todos los procesadores. Ver :Glosario para más detalles.

Atributos
core_sample_indices_ndarray de forma (n_core_samples,)

Indices de muestras centrales (core samples).

components_ndarray de forma (n_core_samples, n_features)

Copia de cada muestra central (core sample) encontrada durante el entrenamiento.

labels_ndarray de forma (n_samples)

Etiquetas de conglomerados para cada punto del conjunto de datos proporcionado a fit(). Las muestras con ruido reciben la etiqueta -1.

Ver también

OPTICS

Un conglomerado similar en múltiples valores de eps. Esta implementación está optimizada para el uso eficiente de la memoria.

Notas

Para ver un ejemplo, consulta examples/cluster/plot_mean_shift.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.

Ejemplos

>>> from sklearn.cluster import DBSCAN
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 2], [2, 3],
...               [8, 7], [8, 8], [25, 80]])
>>> clustering = DBSCAN(eps=3, min_samples=2).fit(X)
>>> clustering.labels_
array([ 0,  0,  0,  1,  1, -1])
>>> clustering
DBSCAN(eps=3, min_samples=2)

Métodos

fit

Realiza un análisis de conglomerado DBSCAN a partir de características o una matriz de distancia.

fit_predict

Realiza el análisis de conglomerado DBSCAN a partir de las características o la matriz de distancia, y devuelve las etiquetas de los conglomerados.

get_params

Obtiene los parámetros para este estimador.

set_params

Establece los parámetros de este estimador.

fit()

Realiza un análisis de conglomerado DBSCAN a partir de características o una matriz de distancia.

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

Instancias de entrenamiento para agrupar (cluster), o distancias entre instancias si metric='precomputed'. Si se proporciona una matriz dispersa, se convertirá en una matriz dispersa csr_matrix.

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

Peso de cada muestra, de forma que una muestra con un peso de al menos min_samples es por sí misma una muestra central (core sample); una muestra con un peso negativo puede impedir que su vecina eps (eps-neighbor) sea el núcleo. Ten en cuenta que los ponderados son absolutos, y por defecto son 1.

yIgnorado

No se utiliza, se presenta aquí por coherencia de la API por convención.

Devuelve
self
fit_predict()

Realiza el análisis de conglomerado DBSCAN a partir de las características o la matriz de distancia, y devuelve las etiquetas de los conglomerados.

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

Instancias de entrenamiento para agrupar (cluster), o distancias entre instancias si metric='precomputed'. Si se proporciona una matriz dispersa, se convertirá en una matriz dispersa csr_matrix.

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

Peso de cada muestra, de forma que una muestra con un peso de al menos min_samples es por sí misma una muestra central (core sample); una muestra con un peso negativo puede impedir que su vecina eps (eps-neighbor) sea el núcleo. Ten en cuenta que los ponderados son absolutos, y por defecto son 1.

yIgnorado

No se utiliza, se presenta aquí por coherencia de la API por convención.

Devuelve
labelsndarray de forma (n_samples,)

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

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros asignados a sus valores.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia de estimador

Instancia del estimador.