Caso aplicado · Curso 2 · Módulo 4 · Unidad 28

Enfoque guía: Aplicaciones con aprendizaje no supervisado

Monitoreo de modos, mapas PCA y alertas sin etiqueta en operación

Mate MathPlay · Flotación Cu · Material complementario

Flotación CuExcelPythonAplicaciones ML
Ver concepto general MathPlay · Ruta IA matemática (MathPlay) →
Curso 2 — Aplicaciones ML en minería · Módulo 4 · Unidad 2 de 3
Caso flotación Cu · Curso 2 · Unidad 28

Aplicaciones con aprendizaje no supervisado

Clustering, PCA e Isolation Forest cuando aún no hay bitácora completa

Puente Módulo 2 → planta

Unidades 20–22 exploran la planta sin etiquetas. En aplicación real: arranque en mina nueva, línea recién comisionada o historiador sin eventos anotados.

1. Tres aplicaciones no supervisadas

AplicaciónMétodoEntregable turnoDemo
Mapa de modosK-means K=2% horas en modo estrés14 h / 12 %
Tablero 2DPCAGráfico PC1 vs PC2~57 % var.
Radar de rarezaIsolation ForestTop 10 horas raras/díacontam 12 %

Cuándo usar NS antes que supervisado

  • Menos de 30 eventos documentados en 6 meses
  • Quieres explorar variables antes de definir KPI
  • Complemento al supervisado: “hora rara que el clasificador no vio”

2. Integración con DSS (U26)

Cluster U20 → widget "modo celda" (estable / estrés) PCA U21 → pantalla ingeniería (no alarma directa) ISO U22 → cola de revisión para metalurgia Transición → cuando hay 50+ eventos → entrenar U17 supervisado

3. Excel — dashboard NS

CSV demo

=' % turno en cluster estrés:
=CONTAR.SI(cluster_col;0)/FILAS(cluster_col)

=' Hora más rara del día (MAX distancia):
=INDICE(fecha_col; COINCIDIR(MAX(dist_col); dist_col; 0))

=' Sparkline PC1 últimas 24 h (si disponible)

4. Python — job semanal NS

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.ensemble import IsolationForest

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])

df["cluster"] = KMeans(2, random_state=42, n_init=10).fit_predict(X)
df["pc1"] = PCA(2).fit_transform(X)[:, 0]
iso = IsolationForest(contamination=0.12, random_state=42)
df["rara"] = iso.fit_predict(X) == -1

resumen = {
    "pct_estres": round((df["cluster"]==0).mean()*100, 1),
    "horas_raras": int(df["rara"].sum()),
}
print(resumen)
df.loc[df["rara"], ["fecha_hora","recuperacion_cu_pct","dosif_espumante_ml_min"]].head()

5. Investigación sugerida

Propón calendario: ¿cada cuánto re-entrenar K-means en planta? ¿Qué pasa si cambia el mineral (ley cabeza)?

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.

← App. supervisado Siguiente: App. minería datos → Descargar CSV