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.