Enfoque clase: Transformaciones lineales
¿Como combino variables para estimar una salida?
Ver concepto general MathPlay →Transformaciones lineales en flotación de cobre
Cómo combinar variables de planta para estimar recuperación, construir scores y preparar modelos básicos.
Idea Central
Cerramos el bloque de álgebra con una idea clave:
En planta, esa salida puede ser recuperación estimada, score de riesgo o probabilidad de evento.
1. Matemática Simple
Un vector de planta puede ser:
Una transformación lineal toma ese vector y lo convierte en un número:
Recuperación estimada
Muchas filas a la vez
2. Aplicación Al Caso De Sobre-Espumación
Problema: en una planta concentradora de cobre ocurre sobre-espumación en celdas de flotación. Esto desestabiliza nivel de pulpa, espuma, arrastre, ley de concentrado y recuperación.
Pregunta operativa: ¿podemos detectar condiciones que anticipan la sobre-espumación y estimar su impacto sobre la recuperación?
3. Dos Usos Principales
Estimar recuperación
La salida es un número.
Estimar riesgo
El score puede convertirse en probabilidad o semáforo.
4. Indicadores Del PPT En Forma De Modelo
| Salida deseada | Variables de entrada candidatas | Modelo básico |
|---|---|---|
| Recuperación estimada | ley_cabeza_cu, p80, densidad_pulpa, flujo_aire, nivel_celda, ph, reactivos | Regresión lineal |
| Riesgo de sobre-espumación | flujo_aire, nivel_celda, espumante, p80, ph, distancia_operativa | Regresión logística |
| Ley de relave estimada | p80, recuperación, aire, nivel, ley_cabeza | Regresión lineal |
| Score de inestabilidad | aire, nivel, espumante, desviaciones móviles | Score lineal |
5. Excel: Ejercicio Guiado
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
Hoja: Datos
Recuperación estimada
Error
Score de riesgo lineal
Semáforo
6. Python: Mismo Concepto
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
import pandas as pd
df = pd.read_excel(
"flotacion_cobre.xlsx",
sheet_name="Datos"
)
Fórmula manual
df["recuperacion_estimada_manual"] = (
100
- 0.03 * df["p80"]
- 0.01 * df["flujo_aire"]
- 0.05 * df["nivel_celda"]
- 0.08 * df["dosificacion_espumante"]
)
df["error_abs"] = (
df["recuperacion_cu"] - df["recuperacion_estimada_manual"]
).abs()
df["error_abs"].mean()
Regresión lineal entrenada
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score
features = [
"ley_cabeza_cu",
"densidad_pulpa",
"p80",
"flujo_aire",
"nivel_celda",
"ph",
"dosificacion_espumante",
"dosificacion_colector"
]
X = df[features]
y = df["recuperacion_cu"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
modelo = LinearRegression()
modelo.fit(X_train, y_train)
pred = modelo.predict(X_test)
mean_absolute_error(y_test, pred), r2_score(y_test, pred)
Coeficientes
coeficientes = pd.DataFrame({
"variable": features,
"coeficiente": modelo.coef_
}).sort_values("coeficiente")
coeficientes
Ver funcionando código python
7. Puente Hacia Machine Learning
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
Las transformaciones lineales son el puente más directo hacia ML básico.
Regresión logística para riesgo
from sklearn.linear_model import LogisticRegression
X = df[features]
y = df["evento_sobre_espumacion"]
modelo = LogisticRegression(max_iter=1000)
modelo.fit(X, y)
prob_evento = modelo.predict_proba(X)[:, 1]
8. Advertencia Profesional
En flotación, muchas relaciones pueden ser no lineales: poco aire puede ser malo, aire moderado puede ser bueno y exceso de aire también puede ser malo.
9. Cierre Conceptual
Las transformaciones lineales permiten pasar de esta pregunta:
A esta otra:
10. Puente al Módulo 3: Cálculo aplicado
Hasta aquí aprendimos a combinar variables con pesos. El siguiente paso es preguntar cómo cambia la recuperación cuando movemos una variable de 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.
