Caso aplicado · Curso 2 · Módulo 3 · Unidad 24

Enfoque guía: Limpieza de datos (supervisado y no supervisado)

Valores faltantes, outliers y etiquetas dudosas — antes de confiar en el modelo

Mate MathPlay · Flotación Cu · Material complementario

Flotación CuExcelPythonMinería de datos
Ver concepto general MathPlay · Ruta IA matemática (MathPlay) →
Curso 2 — Minería de datos · Módulo 3 · Unidad 2 de 4
Caso flotación Cu · Curso 2 · Unidad 24

Limpieza de datos

Métodos supervisados y no supervisados para datos de planta confiables

Idea central

Basura entra, basura sale. Un modelo entrenado con sensores pegados, horas duplicadas o etiquetas mal anotadas va a “aprender” errores del historiador, no la metalurgia.

En el demo el CSV está limpio (120 h completas). En clase simulamos problemas típicos y mostramos cómo detectarlos.

1. Dos familias de limpieza

TipoQué detectaEjemplo flotaciónHerramienta
No supervisadoPatrón raro sin etiquetapH = 0 por falla de sensorZ-score, IQR, Isolation Forest (U22)
SupervisadoError vs variable objetivoRec. 95 % con ley relave altaResidual alto del soft sensor

Checklist demo (n=120)

ProblemaReglaUmbral sugerido
Outlier recuperación|z| > 3~0–2 filas
Espumante imposible> P99 históricorevisar calibración
Duplicado horafecha_hora única0 en demo
Etiqueta espuma dudosarec. alta + obs vacía + esp. altovalidar con turno
En operación: limpiar no es borrar a ciegas. Cada fila eliminada se documenta: “sensor congelado 14:00”.

2. Flujo de limpieza

1. Auditoría → contar NA, duplicados, rangos físicos 2. No supervisado → Z-score / IQR por sensor 3. Supervisado → residual soft sensor > 2σ 4. Metalurgia → confirma etiquetas sobre_espumacion 5. Export → CSV limpio para U16–U22

3. Excel — detectar outliers

CSV demo

=' Z-score recuperación:
=(G2-PROMEDIO($G$2:$G$121))/DESVEST($G$2:$G$121)

=' Flag outlier:
=SI(ABS(z_score)>3; "REVISAR"; "OK")

=' IQR espumante (método caja):
=CUARTIL.EXC(J:J;3)+1.5*(CUARTIL.EXC(J:J;3)-CUARTIL.EXC(J:J;1))

=' Contar NA por columna:
=CONTAR.BLANCO(H2:H121)

4. Python — limpieza mixta

import pandas as pd
import numpy as np
from sklearn.ensemble import IsolationForest
from sklearn.linear_model import LinearRegression

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

# --- No supervisado: sensores imposibles ---
z = (df[features] - df[features].mean()) / df[features].std()
df["outlier_sensor"] = (z.abs() > 3).any(axis=1)

# --- Supervisado: residual alto de recuperación ---
reg = LinearRegression().fit(df[features], df["recuperacion_cu_pct"])
res = df["recuperacion_cu_pct"] - reg.predict(df[features])
df["outlier_residual"] = res.abs() > 2 * res.std()

# --- Unión ---
df["limpiar"] = df["outlier_sensor"] | df["outlier_residual"]
print("Filas a revisar:", df["limpiar"].sum(), "de", len(df))
print(df.loc[df["limpiar"], ["fecha_hora","recuperacion_cu_pct","dosif_espumante_ml_min"]])

5. Investigación sugerida

Inyecta 5 valores erróneos al CSV (pH=2, rec.=50). ¿Los detecta Z-score, residual o ambos? ¿Cuál usarías en planta?

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.

← Features Siguiente: Descubrimiento → Descargar CSV