k-means agrupa un conjunto de datos en grupos (clusters), juntando los ejemplos que se parecen entre sí. Es el algoritmo de agrupamiento más usado: simple, rápido y sorprendentemente efectivo.
La idea: k centros
Cada grupo se representa por un punto central llamado centroide (el "promedio" del grupo). Un ejemplo pertenece al grupo cuyo centroide tiene más cerca. El algoritmo busca colocar esos centros de modo que cada punto quede lo más pegado posible al suyo.
El algoritmo, paso a paso
k-means alterna dos pasos hasta que nada cambia:
- Inicializar: elige centroides al azar.
- Asignar: cada punto se une al centroide más cercano.
- Actualizar: cada centroide se recalcula como el promedio de los puntos que le tocaron.
- Repetir los pasos 2 y 3 hasta que los grupos se estabilizan.
Es un baile de dos pasos —asignar y promediar— que converge en pocas iteraciones.
Qué minimiza
El algoritmo reduce la inercia: la suma de las distancias al cuadrado de cada punto a su centroide .
Cuanto menor es la inercia, más compactos y bien definidos son los grupos.
Elegir k: el método del codo
lo elige la persona, no el algoritmo. Un truco habitual es el método del codo: se prueba la inercia para varios valores de y se grafica. Al principio baja rápido; llega un punto donde añadir más grupos ya casi no ayuda. Ese "codo" en la curva sugiere un buen .
En código
scikit-learn resuelve todo el baile en dos líneas:
from sklearn.cluster import KMeans
modelo = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
print(modelo.labels_) # a qué grupo (0, 1, 2) fue cada punto
print(modelo.cluster_centers_) # las coordenadas de los 3 centroides
modelo.predict(X_nuevo) # asigna puntos nuevos al grupo más cercano
Conviene escalar las variables antes (con StandardScaler), porque k-means se basa en distancias y una variable de gran magnitud dominaría el agrupamiento.
Límites que conviene recordar
- Hay que fijar de antemano.
- Asume grupos redondos y de tamaño parecido; falla con formas alargadas o entrelazadas.
- El resultado depende de la inicialización, por eso se corre varias veces (
n_init) y se elige la mejor.
Para llevar
k-means agrupa datos en clusters asignando cada punto a su centroide más cercano y recalculando los centros hasta estabilizarse. Es la herramienta base del agrupamiento: rápida e intuitiva, siempre que los grupos sean más o menos redondos y elijamos bien . La otra mitad de esta serie, PCA, ataca el problema complementario: demasiadas variables.
