Curso 2 · Modulo 4 · Aplicaciones de ML en mineria

29. Aplicaciones con mineria de datos

Como integrar limpieza, caracteristicas, modelos y decisiones en un flujo de trabajo?

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

Flotacion CuExcelPythonCierre aplicado

Aplicaciones con mineria de datos

Cerramos el curso conectando datos, calidad, variables, modelos, patrones y soporte de decisiones.

Mapa rapido

ComponenteUso en clase
ExcelKPIs, flags, tablas dinamicas y semaforo.
Pythonpipeline simple de mineria de datos
ML / mineria de datosUnir analisis, modelos y decision

1. Pregunta de planta

La mineria de datos no es solo entrenar modelos. Es construir un flujo de trabajo para convertir datos historicos en conocimiento operativo: limpiar, transformar, modelar, interpretar y decidir.

2. Flujo simple

1. Definir pregunta de planta.
2. Revisar calidad de datos.
3. Crear variables utiles.
4. Entrenar o explorar modelos.
5. Interpretar resultados.
6. Convertir hallazgos en accion revisable.

3. Aplicacion en flotacion

Para la sobre-espumacion: limpiamos sensores, creamos variables de estabilidad, usamos modelos supervisados para probabilidad de evento, usamos no supervisado para modos de operacion, y generamos un semaforo de revision.

4. Excel

Tablero minimo:
- KPIs: recuperacion, score_riesgo, eventos.
- Flags: nivel alto, espumante alto, dato raro.
- Tabla dinamica: turno vs evento.
- Semaforo: normal, atencion, critico.

5. Python

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

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

# 1. Caracteristicas
df["nivel_std_4h"] = df["nivel_celda"].rolling(4).std().fillna(0)
df["rec_delta"] = df["recuperacion_cu"].diff().fillna(0)
df["espumante_alto"] = (df["dosificacion_espumante"] > df["dosificacion_espumante"].quantile(0.75)).astype(int)

features = ["flujo_aire", "nivel_celda", "ph", "p80", "densidad_pulpa", "nivel_std_4h", "rec_delta", "espumante_alto"]

# 2. Modelo supervisado
X = df[features]
y = df["evento_sobre_espumacion"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
clf = LogisticRegression(max_iter=1000).fit(X_train, y_train)
df["prob_evento"] = clf.predict_proba(X)[:, 1]

# 3. Segmentacion no supervisada
X_scaled = StandardScaler().fit_transform(X)
df["modo_operacion"] = KMeans(n_clusters=3, random_state=42, n_init=10).fit_predict(X_scaled)

# 4. Semaforo final
df["semaforo"] = pd.cut(df["prob_evento"], bins=[0, 0.4, 0.7, 1.0], labels=["Verde", "Amarillo", "Rojo"], include_lowest=True)

print(df[["fecha_hora", "modo_operacion", "prob_evento", "semaforo", "recuperacion_cu"]].tail(12))

6. Cierre del curso

Mensaje final: La meta no es tener el modelo mas complejo. La meta es tener un flujo que planta pueda entender, revisar y mejorar con datos reales.

← Leccion anteriorDescargar datos