Caso aplicado · Curso 2 · Módulo 2 · Unidad 20

Enfoque guía: Clustering

Agrupar horas de planta sin etiqueta — ¿operación estable o bajo estrés?

Mate MathPlay · Flotación Cu · Material complementario

Flotación CuExcelPythonML no supervisado
Ver concepto general MathPlay · Ruta IA matemática (MathPlay) →
Curso 2 — Aprendizaje no supervisado · Módulo 2 · Unidad 1 de 3
Caso flotación Cu · Curso 2 · Unidad 20

Clustering

Descubrir modos de operación en la celda — sin usar sobre_espumacion para entrenar

Puente desde Módulo 1

En el Módulo 1 el modelo sabía la respuesta (recuperación, evento sí/no). En no supervisado la computadora solo ve sensores y busca grupos naturales: “estas horas se parecen entre sí”.

Problema en planta: a veces no hay bitácora clara de espuma, pero sí muchas horas de DCS. Clustering responde: ¿cuántos “estilos” de operación hay? ¿uno estable y otro bajo estrés?

Validación educativa: en el demo usamos sobre_espumacion solo después, para ver si los grupos tienen sentido metalúrgico.

1. Matemática — K-means

minC Σk Σx∈Ck ‖x − μk‖²

Idea simple: elige K centros (μk). Cada hora va al centro más cercano. Repite hasta que los grupos no cambien.

Distancia: la misma norma euclídea de la unidad 7 — aquí en 6 sensores estandarizados (pH, P80, aire, espumante, nivel, ley cabeza).

Demo K=2 (n=120, sin usar etiquetas)

ClusterHorasRec. media% con espuma*Lectura en turno
0 — estrés1476,5 %100 %Espumante alto, nivel alto, rec. baja
1 — estable10686,4 %0 %Operación habitual del demo

*Validación post-hoc; el algoritmo no vio esta columna.

Regla operativa: clustering no es alerta automática. Es mapa de modos de planta. Después metalurgia nombra cada grupo: “turno fino”, “sobre-dosificado”, etc.

2. Escalera de métodos

Nivel 1 K-means (K fijo) → rápido · interpretable · baseline Nivel 2 K-means + elegir K (codo) → ¿2, 3 o 4 modos de planta? Nivel 3 Cluster jerárquico → árbol de similitud entre turnos Nivel 4 DBSCAN / GMM → formas no esféricas · densidad

Salida operativa: etiqueta de cluster por hora en el historiador. Panel: “% del turno en cluster estrés”.

3. Excel — agrupación manual (K=2)

CSV demo · estandarizar columnas H:M (restar media, dividir por DESVEST).

=' Distancia al "centro estable" (mediana de filas sin evento en demo):
=RAIZ(SUMAPRODUCTO((H2-H_med)^2 + ... ))

=' Distancia al "centro estrés" (mediana filas con evento):
=RAIZ(...)

=' Cluster asignado (0 o 1):
=SI(dist_estres < dist_estable; 0; 1)

=' Recuperación media por cluster:
=PROMEDIO.SI(cluster_col; G_col; 0)

En clase: comparen su cluster con sobre_espumacion. ¿Coincide la mayoría?

4. Python — K-means

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

features = ["ph","p80_um","flujo_aire","dosif_espumante_ml_min","nivel_celda_pct","ley_cabeza_cu_pct"]
df = pd.read_csv("datos_flotacion_demo.csv")
X = StandardScaler().fit_transform(df[features])

km = KMeans(n_clusters=2, random_state=42, n_init=10)
df["cluster"] = km.fit_predict(X)

for c in sorted(df["cluster"].unique()):
    sub = df[df["cluster"] == c]
    print(f"Cluster {c}: n={len(sub)}",
          f"rec={sub['recuperacion_cu_pct'].mean():.1f}",
          f"espuma%={sub['sobre_espumacion'].mean()*100:.0f}")

# Silhouette (calidad de separación)
from sklearn.metrics import silhouette_score
print("Silhouette:", round(silhouette_score(X, df["cluster"]), 2))

5. Investigación sugerida

Prueba K=3 y K=4. ¿Aparece un tercer grupo (p.ej. ley cabeza alta)? ¿Sigue teniendo sentido para el jefe de turno?

Regístrate al boletín MathPlay

Datos, simulación, visualización, IA y tecnología aplicada a problemas reales de industria y minería.

Sin calendario fijo. Sin spam.

Listo. Te escribo cuando haya algo nuevo.

← Series de tiempo Siguiente: Reducción dimensional → Descargar CSV