sklearn.cluster
.OPTICS¶
- class sklearn.cluster.OPTICS¶
Estimar la estructura de agrupamiento de un arreglo vectorial.
OPTICS (Ordering Points To Identify the Clustering Structure), estrechamente relacionado con DBSCAN, encuentra el núcleo de la muestra de alta densidad y expande los conglomerados a partir de ellos [1]. A diferencia de DBSCAN, mantiene la jerarquía de conglomerados para un radio de vecindario variable. Es más adecuado para su uso en grandes conjuntos de datos que la actual implementación de DBSCAN en sklearn.
A continuación, se extraen los clusters utilizando un método similar a DBSCAN (cluster_method = “dbscan”) o una técnica automática propuesta en [1] (cluster_method = “xi”).
Esta implementación se desvía de la OPTICS original realizando primero búsquedas de k-nearest-neighborhood en todos los puntos para identificar los tamaños de los núcleos, y luego calculando sólo las distancias a los puntos no procesados cuando se construye el orden de los conglomerados. Nótese que no empleamos un montón para gestionar los candidatos a la expansión, por lo que la complejidad temporal será O(n^2).
Más información en el Manual de usuario.
- Parámetros
- min_samplesint > 1 o float entre 0 y 1, default=5
El número de muestras en un vecindario para que un punto sea considerado como un punto central. Además, las regiones empinadas ascendentes y descendentes no pueden tener más de
min_samples
puntos consecutivos no empinados. Expresado como un número absoluto o una fracción del número de muestras (redondeado para ser al menos 2).- max_epsfloat, default=np.inf
La distancia máxima entre dos muestras para que una se considere en el vecindario de la otra. El valor predeterminado de
np.inf
identificará los conglomerados a través de todas las escalas; reducirmax_eps
dará lugar a tiempos de ejecución más cortos.- metriccadena o invocable, default=”minkowski”
Métrica a utilizar para el cálculo de la distancia. Se puede utilizar cualquier métrica de scikit-learn o scipy.spatial.distance.
Si la métrica es una función invocable, se llama a cada par de instancias (filas) y se registra el valor resultante. La llamada debe tomar dos arreglos como entrada y devolver un valor que indique la distancia entre ellas. Esto funciona para las métricas de Scipy, pero es menos eficiente que pasar el nombre de la métrica como una cadena. Si la métrica es «precalculada», se asume que X es una matriz de distancia y debe ser cuadrada.
Valores válidos para la métrica son:
de scikit-learn: [“cityblock”, “cosine”, “euclidean”, “l1”, “l2”, “manhattan”]
de scipy.spatial.distance: [“braycurtis”, “canberra”, “chebyshev”, “correlation”, “dice”, “hamming”, “jaccard”, “kulsinski”, “mahalanobis”, “minkowski”, “rogerstanimoto”, “russellrao”, “seuclidean”, “sokalmichener”, “sokalsneath”, “sqeuclidean”, “yule”]
Consulta la documentación de scipy.spatial.distance para obtener detalles sobre estas métricas.
- pint, default=2
Parámetro para la métrica de Minkowski de
pairwise_distances
. Cuando p = 1, esto es equivalente a usar manhattan_distance (l1), y euclidean_distance (l2) para p = 2. Para p arbitrario, se utiliza minkowski_distance (l_p).- metric_paramsdict, default=None
Argumentos adicionales de palabras clave para la función métrica.
- cluster_methodstr, default=”xi”
El método de extracción utilizado para extraer los conglomerados utilizando la accesibilidad y el ordenamiento calculados. Los valores posibles son «xi» y «dbscan».
- epsfloat, default=None
La distancia máxima entre dos muestras para que una se considere en el vecindario de la otra. Por defecto asume el mismo valor que
max_eps
. Se utiliza sólo cuandocluster_method='dbscan'
.- xiflotante entre 0 y 1, default=0.05
Determina la inclinación mínima en el gráfico de accesibilidad que constituye un límite de conglomerado. Por ejemplo, un punto ascendente en el gráfico de accesibilidad se define por la relación entre un punto y su sucesor siendo como máximo 1-xi. Sólo se utiliza cuando
cluster_method='xi'
.- predecessor_correctionbool, default=True
Corregir los conglomerados según los predecesores calculados por OPTICS [2]. Este parámetro tiene un efecto mínimo en la mayoría de los conjuntos de datos. Sólo se utiliza cuando
cluster_method='xi'
.- min_cluster_sizeint > 1 o float entre 0 y 1, default=None
Número mínimo de muestras en un agrupamiento OPTICS, expresado como un número absoluto o una fracción del número de muestras (redondeado para que sea al menos 2). Si
None
, se utiliza el valor demin_samples
en su lugar. Sólo se utiliza cuandocluster_method='xi'
.- algorithm{“auto”, “ball_tree”, “kd_tree”, “brute”}, default=”auto”
Algoritmo usado para calcular los vecinos más cercanos:
“ball_tree” will usa
BallTree
“kd_tree” will usa
KDTree
“brute” usará una búsqueda de fuerza bruta.
“auto” intentará decidir el algoritmo más apropiado basado en los valores pasados al método
fit
. (predeterminado)
Nota: el ajuste en la entrada dispersa anulará el ajuste de este parámetro, utilizando la fuerza bruta.
- leaf_sizeint, default=30
Tamaño de la hoja que se pasa a
BallTree
oKDTree
. 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.- 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. Consulta Glosario para más detalles.
- Atributos
- labels_ndarray de forma (n_samples,)
Etiquetas de conglomerados para cada punto del conjunto de datos dado a fit(). Las muestras ruidosas y los puntos que no están incluidos en una agrupacion de hoja de
cluster_hierarchy_
se etiquetan como -1.- reachability_ndarray de forma (n_samples,)
Distancias de accesibilidad por muestra, indexadas por orden de objeto. Utilice
clust.reachability_[clust.ordering_]
para acceder en orden de agrupamiento.- ordering_ndarray de forma (n_samples,)
La lista ordenada de las agrupaciones de la muestra.
- core_distances_ndarray de forma (n_samples,)
Distancia a la que cada muestra se convierte en un punto central, indexado por orden de objeto. Los puntos que nunca serán núcleo tienen una distancia inf. Utilice
clust.core_distances_[clust.ordering_]
para acceder en orden de cluster.- predecessor_ndarray de forma (n_samples,)
Punto desde el que se alcanzó una muestra, indexado por orden de objeto. Los puntos semilla tienen un predecesor de -1.
- cluster_hierarchy_ndarray de forma (n_clusters, 2)
La lista de conglomerados en forma de
[start, end]
en cada fila, con todos los índices incluidos. Los conglomerados se ordenan según(end, -start)
(de forma ascendente), de modo que los grupos más grandes que engloban a los más pequeños vienen después de los más pequeños. Comolabels_
no refleja la jerarquía, normalmentelen(cluster_hierarchy_) > np.unique(optics.labels_)
. Ten en cuenta también que estos índices son de laordering_
, es decir,X[ordering_][start:end + 1]
forman una agrupación. Sólo está disponible cuandocluster_method='xi'
.
Ver también
DBSCAN
Una agrupación similar para un radio de vecindario especificado (eps). Nuestra implementación está optimizada para el tiempo de ejecución.
Referencias
- 1(1,2)
Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel, and Jörg Sander. «OPTICS: ordering points to identify the clustering structure.» ACM SIGMOD Record 28, no. 2 (1999): 49-60.
- 2
Schubert, Erich, Michael Gertz. «Improving the Cluster Structure Extracted from OPTICS Plots.» Proc. of the Conference «Lernen, Wissen, Daten, Analysen» (LWDA) (2018): 318-329.
Ejemplos
>>> from sklearn.cluster import OPTICS >>> import numpy as np >>> X = np.array([[1, 2], [2, 5], [3, 6], ... [8, 7], [8, 8], [7, 3]]) >>> clustering = OPTICS(min_samples=2).fit(X) >>> clustering.labels_ array([0, 0, 0, 1, 1, 1])
Métodos
Realizar OPTICS clustering.
Realiza la agrupación en
X
y devuelve las etiquetas de las agrupaciones.Obtiene los parámetros para este estimador.
Establece los parámetros de este estimador.
- fit()¶
Realizar OPTICS clustering.
Extrae una lista ordenada de puntos y distancias de accesibilidad, y realiza una agrupación inicial utilizando la distancia
max_eps
especificada en la instanciación del objeto OPTICS.- Parámetros
- Xndarray de forma (n_samples, n_features), o (n_samples, n_samples) si metric=’precomputed’
Un arreglo de características, o una matriz de distancias entre muestras si metric=”precomputed”.
- yignorado
Ignorado
- Devuelve
- selfinstancia de OPTICS
La instancia.
- fit_predict()¶
Realiza la agrupación en
X
y devuelve las etiquetas de las agrupaciones.- Parámetros
- Xarray-like de forma (n_samples, n_features)
Datos de input.
- yIgnorado
No se utiliza, está presente para la coherencia de la API por convención.
- Devuelve
- labelsndarray de forma (n_samples,), dtype=np.int64
Etiquetas de conglomerado.
- 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 del estimador
Instancia del estimador.