Curso 2 · Modulo 3 · Mineria de datos

24. Metodos supervisados y no supervisados de limpieza de datos

Como limpiar datos de planta sin borrar informacion importante?

Mate MathPlay · Flotacion Cu · Archivo de trabajo: flotacion_cobre.xlsx

Flotacion CuExcelPythonCalidad de datos

Metodos supervisados y no supervisados de limpieza de datos

Revisamos faltantes, outliers, duplicados y sensores sospechosos antes de entrenar modelos.

Mapa rapido

ComponenteUso en clase
ExcelValidaciones, reglas de rango, duplicados y saltos bruscos.
Pythonflags + IsolationForest
ML / mineria de datosEvitar entrenar modelos con ruido operativo

1. Pregunta de planta

En planta, los datos rara vez llegan perfectos: sensores congelados, saltos bruscos, datos faltantes, duplicados de turno o registros manuales inconsistentes. Limpiar no significa maquillar el proceso; significa separar ruido de senal.

2. Matematica simple

Limpieza supervisada usa una etiqueta o regla conocida. Limpieza no supervisada busca rarezas sin etiqueta.

Supervisada: si evento conocido = 1, comparar patrones.
No supervisada: si distancia al patron normal es alta, revisar.

3. Aplicacion en flotacion

Ejemplos: pH fuera de rango fisico, nivel exactamente igual durante muchas horas, recuperacion imposible, concentrado sin ley asociada, o datos de aire con salto muy grande de una hora a otra.

4. Excel

Faltantes:
=CONTAR.BLANCO(A:P)

Rango fisico pH:
=SI(O(K2<6,K2>12),"Revisar","OK")

Salto brusco de nivel:
=SI(ABS(J2-J1)>10,"Revisar","OK")

Duplicado por fecha:
=SI(CONTAR.SI($A:$A,A2)>1,"Duplicado","OK")

5. Python

import pandas as pd
from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import StandardScaler

df = pd.read_excel("flotacion_cobre.xlsx")

# Reglas simples de calidad
df["flag_ph_fuera_rango"] = ((df["ph"] < 6) | (df["ph"] > 12)).astype(int)
df["flag_recuperacion_fuera_rango"] = ((df["recuperacion_cu"] < 0) | (df["recuperacion_cu"] > 100)).astype(int)
df["salto_nivel"] = df["nivel_celda"].diff().abs()
df["flag_salto_nivel"] = (df["salto_nivel"] > df["salto_nivel"].quantile(0.95)).astype(int)

# Metodo no supervisado para revisar registros raros
features = ["recuperacion_cu", "flujo_aire", "nivel_celda", "ph", "dosificacion_espumante", "score_riesgo"]
X_scaled = StandardScaler().fit_transform(df[features])
iso = IsolationForest(contamination=0.08, random_state=42)
df["registro_raro"] = (iso.fit_predict(X_scaled) == -1).astype(int)

print(df[["fecha_hora", "flag_ph_fuera_rango", "flag_salto_nivel", "registro_raro"]].head())

6. Puente hacia ML

Mensaje final: Un modelo entrenado con datos sucios aprende errores. Antes de buscar exactitud, conviene construir una tabla de calidad: que se conserva, que se corrige, que se elimina y que se manda a revision de instrumentacion.

← Leccion anteriorDescargar datosSiguiente leccion →