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 y max_iter), éstas no serán consistentes con labels_.

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 o max_iter), labels_ y cluster_centers_ no serán consistentes, es decir, los cluster_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 que labels_ sea consistente con predict 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

fit

Calcula el conglomerado de k-medias.

fit_predict

Calcule los centros de los conglomerados y predice el índice de conglomerados para cada muestra.

fit_transform

Calcule la agrupación y transforme X en un espacio de distancia de agrupación.

get_params

Obtiene los parámetros para este estimador.

predict

Predice el conglomerado más cercano al que pertenece cada muestra en X.

score

Opuesto al valor de X en el objetivo de K-medias.

set_params

Establece los parámetros de este estimador.

transform

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 por predict 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.

Ejemplos usando sklearn.cluster.KMeans