sklearn.cluster
.SpectralClustering¶
- class sklearn.cluster.SpectralClustering¶
Aplicar el agrupamiento a una proyección del Laplaciano normalizado.
En la práctica, Spectral Clustering es muy útil cuando la estructura de los conglomerados individuales es altamente no convexa o, más generalmente, cuando una medida del centro y la dispersión del conglomerado no es una descripción adecuada del conglomerado completo. Por ejemplo, cuando los conglomerados son círculos anidados en el plano 2D.
Si la afinidad es la matriz de adyacencia de un grafo, este método puede utilizarse para encontrar cortes de grafos normalizados.
Cuando se llama a
fit
, se construye una matriz de afinidad utilizando cualquier función núcleo como el núcleo gaussiano (aka RBF) de la distancia euclidianad(X, X)
:np.exp(-gamma * d(X,X) ** 2)
o una matriz de conectividad vecina k-más cercana.
Alternativamente, utilizando
precomputed
, se puede utilizar una matriz de afinidad proporcionada por el usuario.Más información en el Manual de usuario.
- Parámetros
- n_clustersentero, default=8
La dimensión del subespacio de proyección.
- eigen_solver{“arpack”, “lobpcg”, “amg”}, default=None
La estrategia de descomposición de autovalores a utilizar. AMG requiere la instalación de pyamg. Puede ser más rápido en problemas muy grandes y dispersos, pero también puede conducir a inestabilidades. Si es None, entonces se utiliza
'arpack'
.- n_componentsentero, default=n_clusters
Número de vectores eigen que se utilizarán para spectral embedding
- random_stateint, RandomState instance, default=None
Un generador de números pseudo aleatorios utilizado para la inicialización de la descomposición de los vectores lobpcg eigen cuando ``eigen_solver=”amg”` y por la inicialización de K-Medias. Utiliza un int para que la aleatoriedad sea determinista. Consulta Glosario.
- n_initint, default=10
Número de veces que se ejecutará el algoritmo k-medias con diferentes semillas de centroides. El resultado final será el mejor resultado de n_init ejecuciones consecutivas en términos de inercia.
- gammafloat, default=1.0
Coeficiente de núcleo para los núcleos rbf, poly, sigmoid, laplacian y chi2. Ignorado para
affinity='nearest_neighbors'
.- affinitycadena de caracteres o invocable, default=”rbf”
- Cómo construir la matriz affinity.
“nearest_neighbors” : construye la matriz affinity calculando una gráfica de vecinos más cercanos.
“rbf” : construye la matriz de afinidad utilizando un núcleo de función de base radial (RBF).
“precomputed” : interpreta
X
como una matriz de afinidad precomputada.“precomputed_nearest_neighbors” : interprete
X
como un gráfico disperso de vecinos cercanos precalculados, y construye la matriz de afinidad seleccionando los vecinos más cercanosn_neighbors
.uno de los núcleos soportados por
pairwise_kernels
.
Sólo se deben utilizar los kernels o núcleos que producen puntuaciones de similitud (valores no negativos que aumentan con la similitud). Esta propiedad no es comprobada por el algoritmo de agrupamiento.
- n_neighborsint, default=10
Número de vecinos a usar cuando se construye la matriz de afinidad usando el método de vecinos más cercanos. Se ignora para
affinity='rbf'
.- eigen_tolfloat, default=0.0
Criterio de parada para la eigendecomposición de la matriz Laplaciana cuando
eigen_solver='arpack'
.- assign_labels{“kmeans”, “discretize”}, default=”kmeans”
La estrategia a utilizar para asignar etiquetas en el espacio de embedding. Hay dos maneras de asignar etiquetas después del embedding laplaciano. Se puede aplicar k-medias y es una opción popular. Pero también puede ser sensible a la inicialización. La discretización es otro enfoque que es menos sensible a la inicialización aleatoria.
- degreefloat, default=3
Grado del núcleo polinómico. Ignorado por otros núcleos.
- coef0float, default=1
Coeficiente cero para los kernels o núcleos polinomiales y sigmoides. Ignorado por otros kernels.
- kernel_paramsdict of str to any, default=None
Parámetros (argumentos de palabra clave) y valores para el kernel o núcleo pasados como objeto de llamada. Ignorado por otros kernels.
- n_jobsint, default=None
El número de trabajos paralelos a ejecutar cuando
affinity='nearest_neighbors'
oaffinity='precomputed_nearest_neighbors'
. La búsqueda de vecinos se hará en paralelo.None
significa 1 a menos que en un contextojoblib.parallel_backend
.-1
significa usar todos los procesadores. Ver Glosario para más detalles.- verbosebool, default=False
Modo de Verbosidad.
Nuevo en la versión 0.24.
- Atributos
- affinity_matrix_array-like de forma (n_samples, n_samples)
Matriz de afinidad utilizada para el agrupamiento. Disponible sólo si después de llamar a
fit
.- labels_ndarray de forma (n_samples,)
Etiquetas de cada punto
Notas
Si se tiene una matriz de afinidad, como una matriz de distancia, para la cual 0 significa elementos idénticos, y valores altos significa elementos muy disímiles, se puede transformar en una matriz de similitud que se adapte bien al algoritmo aplicando el kernel Gaussiano (RBF, heat):
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
Donde
delta
es un parámetro libre que representa el ancho del núcleo Gaussiano.Otra alternativa es tomar una versión simétrica de la matriz de conectividad de los k vecinos más cercanos de los puntos.
Si el paquete pyamg está instalado, se utiliza: esto acelera enormemente el cálculo.
Referencias
Normalized cuts and image segmentation, 2000 Jianbo Shi, Jitendra Malik http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.2324
A Tutorial on Spectral Clustering, 2007 Ulrike von Luxburg http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.165.9323
Multiclass spectral clustering, 2003 Stella X. Yu, Jianbo Shi https://www1.icsi.berkeley.edu/~stellayu/publication/doc/2003kwayICCV.pdf
Ejemplos
>>> from sklearn.cluster import SpectralClustering >>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> clustering = SpectralClustering(n_clusters=2, ... assign_labels="discretize", ... random_state=0).fit(X) >>> clustering.labels_ array([1, 1, 1, 0, 0, 0]) >>> clustering SpectralClustering(assign_labels='discretize', n_clusters=2, random_state=0)
Métodos
Realiza la agrupación espectral a partir de las características, o la matriz de afinidad.
Realiza la agrupación espectral a partir de las características, o la matriz de afinidad, y devuelve las etiquetas de los conglomerados.
Obtiene los parámetros para este estimador.
Ajusta los parámetros de este estimador.
- fit()¶
Realiza la agrupación espectral a partir de las características, o la matriz de afinidad.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features), o array-like of shape (n_samples, n_samples)
Instancias de entrenamiento a agrupar, o similitudes / afinidades entre instancias si
affinity='precomputed'
. Si se proporciona una matriz dispersa en un formato distinto acsr_matrix
,csc_matrix
ocoo_matrix
, se convertirá en una matriz dispersacsr_matrix
.- yIgnorado
No se utiliza, se presenta aquí para la coherencia de la API por convención.
- Devuelve
- self
- fit_predict()¶
Realiza la agrupación espectral a partir de las características, o la matriz de afinidad, y devuelve las etiquetas de los conglomerados.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features), o array-like of shape (n_samples, n_samples)
Instancias de entrenamiento a agrupar, o similitudes / afinidades entre instancias si
affinity='precomputed'
. Si se proporciona una matriz dispersa en un formato distinto acsr_matrix
,csc_matrix
ocoo_matrix
, se convertirá en una matriz dispersacsr_matrix
.- yIgnorado
No se utiliza, se presenta aquí para la coherencia de la API por convención.
- Devuelve
- labelsndarray de forma (n_samples,)
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()¶
Ajusta 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.