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; reducir max_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 cuando cluster_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 de min_samples en su lugar. Sólo se utiliza cuando cluster_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 o KDTree. 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 contexto joblib.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. Como labels_ no refleja la jerarquía, normalmente len(cluster_hierarchy_) > np.unique(optics.labels_). Ten en cuenta también que estos índices son de la ordering_, es decir, X[ordering_][start:end + 1] forman una agrupación. Sólo está disponible cuando cluster_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

fit

Realizar OPTICS clustering.

fit_predict

Realiza la agrupación en X y devuelve las etiquetas de las agrupaciones.

get_params

Obtiene los parámetros para este estimador.

set_params

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.