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 euclidiana d(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 cercanos n_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' o affinity='precomputed_nearest_neighbors'. La búsqueda de vecinos se hará en paralelo. None significa 1 a menos que en un contexto joblib.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

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

fit

Realiza la agrupación espectral a partir de las características, o la matriz de afinidad.

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.

get_params

Obtiene los parámetros para este estimador.

set_params

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 a csr_matrix, csc_matrix o coo_matrix, se convertirá en una matriz dispersa csr_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 a csr_matrix, csc_matrix o coo_matrix, se convertirá en una matriz dispersa csr_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.