Esta vez sin etiquetas. Solo puntos en un plano.
Encuentra los grupos que ya están ahí — sin que nadie te diga qué es un grupo.
El primer capítulo no supervisado.
Adivina k centros. Luego repite dos movimientos hasta que nada cambie:
Los centros persiguen la densidad y se estacionan en medio de cada grupo.
150 puntos, cuatro blobs de make_blobs, sin etiquetas. En gris a propósito.
Tu ojo encuentra cuatro grupos al instante. Ahora haz que el algoritmo los encuentre.
La inercia — la suma de cuadrados dentro del cluster:
J=i=1∑Nxi−μci2El paso de asignación elige el centroide más cercano. El paso de actualización mueve cada centroide a la media de su cluster. Ambos solo bajan J, así que el bucle tiene que parar — en un mínimo local que depende del seed.
Los rombos son los centroides. Los anillos llegan al punto más lejano de cada cluster. Panel de abajo: la inercia cayendo. Cada cuadro es una iteración real.
La inercia se desploma de ~7,081 a 342 en seis iteraciones. Casi todo en el primer paso.
La inercia siempre baja conforme k crece. No la minimices — busca el doblez.
Acantilado hasta k=4 (342.2), luego plano. El punto naranja es el codo.
Nuestro k-means++ contra sklearn.cluster.KMeans. Ambos llegan a inercia 342.2.
Ambos sacan índice de Rand ajustado 1.0 contra los blobs reales escondidos —
recuperación perfecta.