A continuación te muestro un ejemplo paso a paso de cómo implementar K-means en Python usando scikit-learn.
✅ Paso 1: Importar librerías necesarias
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
✅ Paso 2: Generar datos de ejemplo
# Creamos un conjunto de datos sintético con 3 clusters
X, y = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=0)
# Visualizamos los datos
plt.scatter(X[:, 0], X[:, 1], s=50)
plt.title("Datos sin clasificar")
plt.show()
✅ Paso 3: Aplicar K-means
# Creamos y ajustamos el modelo
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)
# Obtenemos las predicciones (a qué grupo pertenece cada punto)
y_kmeans = kmeans.predict(X)
# Centros de los clusters
centros = kmeans.cluster_centers_
✅ Paso 4: Visualizar los resultados
# Graficamos los datos clasificados por cluster
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
# Mostramos los centros de cada cluster
plt.scatter(centros[:, 0], centros[:, 1], c='red', s=200, alpha=0.75, marker='X')
plt.title("Resultados del clustering con K-means")
plt.show()
✅ Paso 5 (Opcional): Evaluar el número óptimo de clusters (método del codo)
inertia = []
for k in range(1, 10):
kmeans = KMeans(n_clusters=k, random_state=0)
kmeans.fit(X)
inertia.append(kmeans.inertia_)
plt.plot(range(1, 10), inertia, marker='o')
plt.xlabel('Número de clusters')
plt.ylabel('Inercia')
plt.title('Método del Codo')
plt.show()