14. Aplicaciones con bases en álgebra
¿Cómo convierto sensores y laboratorio en matrices listas para modelar?
Aplicaciones con bases en álgebra
Usamos matrices, vectores, normas y transformaciones para estructurar datos de flotación y preparar modelos básicos.
1. Pregunta de planta
El álgebra nos ayuda a ordenar muchas variables de planta en una estructura que pueda procesarse: una matriz.
Idea central: cuando armamos una matriz
X con sensores y una salida y, ya estamos preparando el terreno para regresión, clasificación, PCA y detección de anomalías.2. Aplicación algebraica al caso
| Base algebraica | Aplicación | Lectura operativa |
|---|---|---|
| Matriz de datos | Filas = horas, columnas = variables. | Histórico ordenado de planta. |
| Vectores | Un vector por condición operativa. | Foto del estado de una hora. |
| Normas | Distancia frente al comportamiento normal. | Detector simple de anomalías. |
| PCA | Reducir muchas variables a pocos componentes. | Patrones dominantes de variabilidad. |
| Transformación lineal | Combinar variables con pesos. | Score, recuperación estimada o riesgo. |
3. Excel: matriz operativa
En Excel la matriz X es simplemente un rango de columnas.
X = columnas de variables operativas
flujo_aire, nivel_celda, ph, dosificacion_espumante, p80, densidad_pulpa
y = recuperacion_cu o evento_sobre_espumacion
Score algebraico simple
=0.25*I2 + 0.30*J2 + 0.15*K2 + 0.30*L2
Distancia simple frente a una condición normal
=RAIZ((I2-prom_aire)^2 + (J2-prom_nivel)^2 + (L2-prom_espumante)^2)
4. Python: matriz X, vector y y escalamiento
import pandas as pd
from sklearn.preprocessing import StandardScaler
archivo = "flotacion_cobre.xlsx"
df = pd.read_excel(archivo)
features = [
"ley_cabeza_cu", "densidad_pulpa", "p80", "flujo_aire",
"nivel_celda", "ph", "dosificacion_espumante", "dosificacion_colector"
]
X = df[features]
y_reg = df["recuperacion_cu"]
y_clf = df["evento_sobre_espumacion"]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X.shape, y_reg.shape, y_clf.shape
Distancia algebraica como alerta
import numpy as np
centro = X_scaled.mean(axis=0)
df["distancia_normal"] = np.linalg.norm(X_scaled - centro, axis=1)
umbral = df["distancia_normal"].quantile(0.90)
df["alerta_distancia"] = (df["distancia_normal"] > umbral).astype(int)
df[["distancia_normal", "alerta_distancia", "evento_sobre_espumacion"]].head()
5. Puente hacia Machine Learning
Con la matriz lista, podemos entrenar modelos básicos sin cambiar la estructura conceptual.
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.metrics import classification_report
X_train, X_test, y_train, y_test = train_test_split(
X, y_clf, test_size=0.2, random_state=42, stratify=y_clf
)
modelo = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
modelo.fit(X_train, y_train)
pred = modelo.predict(X_test)
print(classification_report(y_test, pred))
Mensaje final: el álgebra es la forma en que convertimos sensores, laboratorio y operación en una estructura que los modelos pueden leer.
