Para encontrar el número óptimo de clusters (K) al usar K-Means, existen varios métodos. Aquí te explico los principales y te doy ejemplos prácticos para que los implementes fácilmente:
✅ 1. Elbow Method (Método del Codo)
¿Qué hace?
Mide la inercia (dentro del grupo de errores cuadrados - SSE) para distintos valores de K y busca el "codo" donde la mejora se estabiliza.
Código:
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
# Datos simulados para el ejemplo
X, _ = make_blobs(n_samples=300, centers=5, random_state=42)
inertia = []
K_range = range(1, 11)
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
inertia.append(kmeans.inertia_)
plt.plot(K_range, inertia, 'bo-')
plt.xlabel('Número de Clusters (k)')
plt.ylabel('Inercia')
plt.title('Método del Codo')
plt.show()
🔍 Busca el punto donde la curva se "dobla", como un codo.
✅ 2. Silhouette Score
¿Qué hace?
Mide qué tan bien separados están los clusters. Cuanto mayor el valor (cerca de 1), mejor separados y definidos están.
Código:
from sklearn.metrics import silhouette_score
silhouette_scores = []
K_range = range(2, 11) # Comienza desde 2 porque Silhouette no está definido para k=1
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
labels = kmeans.fit_predict(X)
score = silhouette_score(X, labels)
silhouette_scores.append(score)
plt.plot(K_range, silhouette_scores, 'go-')
plt.xlabel('Número de Clusters (k)')
plt.ylabel('Silhouette Score')
plt.title('Puntaje de Silhouette')
plt.show()
✅ El valor óptimo de k es donde el Silhouette Score es más alto.
✅ 3. Usando Yellowbrick (si lo logras instalar)
from yellowbrick.cluster import KElbowVisualizer
from sklearn.cluster import KMeans
model = KMeans(random_state=42)
visualizer = KElbowVisualizer(model, k=(1,10), metric='silhouette', timings=False)
visualizer.fit(X)
visualizer.show()
¿Qué método elegir?
MétodoIdeal cuando...ElbowQuieres ver el punto donde el "beneficio" se estabilizaSilhouette ScoreQuieres evaluar la calidad de los clustersYellowbrickQuieres automatizar visualmente el análisis (requiere instalación correcta)