sklearn.cluster
.KMeans¶
- class sklearn.cluster.KMeans¶
Agrupamiento por K-Medias.
Más información en el Manual de usuario.
- Parameters
- n_clustersentero, default=8
El número de conglomerados a formar así como el número de centroides a generar.
- init{“k-means++”, “random”}, callable o array-like de forma (n_clusters, n_features), default=”k-means++”
Método de inicialización:
“k-means++” : selecciona los centros de conglomerados iniciales para la agrupación k-media de forma inteligente para acelerar la convergencia. Consulta la sección Notas en k_init para más detalles.
“random”: elige observaciones (filas)
n_clusters
al azar de los datos para los centroides iniciales.Si se pasa un arreglo, este debe tener la forma (n_clusters, n_features) y da los centros iniciales.
Si se pasa un invocable, debe tomar los argumentos X, n_clusters y un estado aleatorio y devolver una inicialización.
- n_initentero, 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.
- max_iterentero, default=300
Número máximo de iteraciones del algoritmo k-medias para una sola ejecución.
- tolflotante, default=1e-4
Tolerancia relativa con respecto a la norma de Frobenius de la diferencia de los centros de conglomerado de dos iteraciones consecutivas para declarar la convergencia.
- precompute_distances{“auto”, True, False}, default=”auto”
Precomputa las distancias (más rápido, pero requiere más memoria).
“auto” : no precalcula las distancias si n_samples * n_clusters > 12 millones. Esto corresponde a unos 100 Mb de sobrecarga por trabajo utilizando la doble precisión.
True: precalcular siempre las distancias.
False : nunca precalcula las distancias.
Obsoleto desde la versión 0.23: “precompute_distances” quedó obsoleto en la versión 0.22 y se eliminará en la 1.0 (cambio de nombre de la 0.25). No tiene ningún efecto.
- verboseentero, default=0
Modo de Verbosidad.
- random_stateentero, RandomState instance or None, default=None
Determina la generación de números aleatorios para la inicialización del centroide. Utilice un int para que la aleatoriedad sea determinista. Consulta Glosario.
- copy_xbooleano, default=True
Cuando se precalculan las distancias es más preciso numéricamente centrar los datos primero. Si copy_x es True (predeterminado), los datos originales no se modifican. Si es False, los datos originales se modifican, y se vuelven a poner antes de que la función finalice, pero se pueden introducir pequeñas diferencias numéricas al restar y luego sumar la media de los datos. Hay que tener en cuenta que si los datos originales no son contiguos a C (C-contiguous), se hará una copia incluso si copy_x es False. Si los datos originales son dispersos, pero no en formato CSR, se hará una copia aunque copy_x sea False.
- n_jobsentero, default=None
El número de hilos OpenMP a utilizar para el cálculo. El paralelismo es por muestras en el bucle principal de cython que asigna cada muestra a su centro más cercano.
None
o-1
significa utilizar todos los procesadores.Obsoleto desde la versión 0.23:
n_jobs
fue abandonado en la versión 0.23 y será eliminado en la 1.0 (cambio de nombre de la versión 0.25).- algorithm{«auto», «full», «elkan»}, default=»auto»
Algoritmo K-medias a utilizar. El algoritmo clásico de estilo EM es » full «. La variación «elkan» es más eficiente en datos con conglomerados bien definidos, al utilizar la desigualdad del triángulo. Sin embargo, es más intensivo en memoria debido a la asignación de un arreglo extra de forma (n_samples, n_clusters).
Por ahora «auto» (mantenido para la compatibilidad con versiones anteriores) elige «elkan» pero podría cambiar en el futuro para una mejor heurística.
Distinto en la versión 0.18: Añadido el algoritmo Elkan
- Atributos
- cluster_centers_ndarray de forma (n_clusters, n_features)
Coordenadas de los centros de los conglomerados. Si el algoritmo se detiene antes de converger completamente (ver
tol
ymax_iter
), éstas no serán consistentes conlabels_
.- labels_ndarray de forma (n_samples,)
Etiquetas de cada punto
- inertia_float
Suma de las distancias al cuadrado de las muestras a su centro de conglomerado más cercano.
- n_iter_int
Número de iteraciones realizadas.
Ver también
MiniBatchKMeans
Implementación alternativa en línea que realiza actualizaciones incrementales de las posiciones de los centros utilizando mini lotes. Para el aprendizaje a gran escala (digamos n_samples > 10k) MiniBatchKMeans es probablemente mucho más rápido que la implementación por lotes por defecto.
Notas
El problema de k-medias se resuelve utilizando el algoritmo de Lloyd o el de Elkan.
La complejidad media viene dada por O(k n T), siendo n el número de muestras y T el número de iteraciones.
La complejidad en el peor de los casos viene dada por O(n^(k+2/p)) con n = n_samples, p = n_features. (D. Arthur y S. Vassilvitskii, “How slow is the k-means method?” SoCG2006)
En la práctica, el algoritmo k-medias es muy rápido (uno de los algoritmos de agrupamiento más rápidos que existen), pero cae en mínimos locales. Por eso puede ser útil reiniciarlo varias veces.
Si el algoritmo se detiene antes de converger completamente (debido a
tol
omax_iter
),labels_
ycluster_centers_
no serán consistentes, es decir, loscluster_centers_
no serán las medias de los puntos de cada conglomerado. Además, el estimador reasignarálabels_
después de la última iteración para quelabels_
sea consistente conpredict
en el conjunto de entrenamiento.Ejemplos
>>> from sklearn.cluster import KMeans >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [10, 2], [10, 4], [10, 0]]) >>> kmeans = KMeans(n_clusters=2, random_state=0).fit(X) >>> kmeans.labels_ array([1, 1, 1, 0, 0, 0], dtype=int32) >>> kmeans.predict([[0, 0], [12, 3]]) array([1, 0], dtype=int32) >>> kmeans.cluster_centers_ array([[10., 2.], [ 1., 2.]])
Métodos
Calcula el conglomerado de k-medias.
Calcule los centros de los conglomerados y predice el índice de conglomerados para cada muestra.
Calcule la agrupación y transforme X en un espacio de distancia de agrupación.
Obtiene los parámetros para este estimador.
Predice el conglomerado más cercano al que pertenece cada muestra en X.
Opuesto al valor de X en el objetivo de K-medias.
Establece los parámetros de este estimador.
Transformar X en un espacio de distancia de conglomerado.
- fit()¶
Calcula el conglomerado de k-medias.
- Parameters
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Instancias de entrenamiento para conglomerar. Hay que tener en cuenta que los datos se convertirán a la ordenación C, lo que provocará una copia en memoria si los datos dados no son contiguos a C (C-contiguous). Si se pasa una matriz dispersa, se hará una copia si no está en formato CSR.
- yIgnorado
No se utiliza, se presenta aquí por coherencia de la API por convención.
- sample_weightarray-like de forma (n_samples,), default=None
Los pesos de cada observación en X. Si es None, se asigna a todas las observaciones el mismo peso.
Nuevo en la versión 0.20.
- Devuelve
- self
Estimador ajustado.
- fit_predict()¶
Calcule los centros de los conglomerados y predice el índice de conglomerados para cada muestra.
Método de conveniencia; equivalente a llamar a fit(X) seguido de predict(X).
- Parameters
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos a transformar.
- yIgnorado
No se utiliza, se presenta aquí por coherencia de la API por convención.
- sample_weightarray-like de forma (n_samples,), default=None
Los pesos de cada observación en X. Si es None, se asigna a todas las observaciones el mismo peso.
- Devuelve
- labelsndarray de forma (n_samples,)
Índice del conglomerado al que pertenece cada muestra.
- fit_transform()¶
Calcule la agrupación y transforme X en un espacio de distancia de agrupación.
Equivalente a fit(X).transform(X), pero implementado de forma más eficiente.
- Parameters
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos a transformar.
- yIgnorado
No se utiliza, se presenta aquí por coherencia de la API por convención.
- sample_weightarray-like de forma (n_samples,), default=None
Los pesos de cada observación en X. Si es None, se asigna a todas las observaciones el mismo peso.
- Devuelve
- X_newndarray de forma (n_samples, n_clusters)
X transformado en el nuevo espacio.
- get_params()¶
Obtiene los parámetros para este estimador.
- Parameters
- deepbooleano, 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.
- predict()¶
Predice el conglomerado más cercano al que pertenece cada muestra en X.
En la literatura de cuantificación vectorial,
cluster_centers_
se denomina libro de códigos (code book) y cada valor devuelto porpredict
es el índice del código más cercano en el libro de códigos.- Parameters
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos a predecir.
- sample_weightarray-like de forma (n_samples,), default=None
Los pesos de cada observación en X. Si es None, se asigna a todas las observaciones el mismo peso.
- Devuelve
- labelsndarray de forma (n_samples,)
Índice del conglomerado al que pertenece cada muestra.
- score()¶
Opuesto al valor de X en el objetivo de K-medias.
- Parameters
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos.
- yIgnorado
No se utiliza, se presenta aquí por coherencia de la API por convención.
- sample_weightarray-like de forma (n_samples,), default=None
Los pesos de cada observación en X. Si es None, se asigna a todas las observaciones el mismo peso.
- Devuelve
- scorefloat
Opuesto al valor de X en el objetivo de K-medias.
- 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.- Parameters
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia de estimador
Instancia del estimador.
- transform()¶
Transformar X en un espacio de distancia de conglomerado.
En el nuevo espacio, cada dimensión es la distancia a los centros de conglomerado. Ten en cuenta que incluso si X es disperso, el arreglo devuelto por
transform
normalmente será denso.- Parameters
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos a transformar.
- Devuelve
- X_newndarray de forma (n_samples, n_clusters)
X transformado en el nuevo espacio.