research / Clustering / kmeans
Clustering⊞ notebook
K-Means Clustering — Agrupamiento no supervisado
Implementación de K-Means clustering con scikit-learn. Selección de K con el método del codo, visualización de clusters y evaluación con silhouette score.
19 de agosto de 20251 min readdataset: Iris
K-MeansClusteringscikit-learnPythonUnsupervised
Objetivo
Aplicar K-Means clustering al dataset Iris para descubrir agrupamientos naturales sin usar las etiquetas de clase.
Implementación
python
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
# Método del codo
inertias = []
K = range(2, 10)
for k in K:
km = KMeans(n_clusters=k, random_state=42, n_init=10)
km.fit(X)
inertias.append(km.inertia_)
Selección de K
El método del codo sugiere K=3, consistente con las 3 especies de Iris.
python
km = KMeans(n_clusters=3, random_state=42, n_init=10)
labels = km.fit_predict(X)
print(f"Silhouette Score: {silhouette_score(X, labels):.3f}")
Resultado
Silhouette score de 0.55 con K=3. Los clusters corresponden razonablemente a las especies reales, con cierto solapamiento entre versicolor y virginica.