21. Reducción de la dimensionalidad
¿Cómo resumir muchas variables sin perder la señal principal?
Reducción de la dimensionalidad
Usamos PCA para condensar variables de planta en pocos componentes y visualizar patrones de operación.
1. Pregunta de planta
Una planta puede registrar muchas variables. Reducción de dimensionalidad busca resumirlas sin perder la señal principal.
2. Matemática simple
PCA busca direcciones donde los datos varían más.
En vez de mirar muchas columnas separadas, miramos un mapa de 2 o 3 ejes.
3. Aplicación en flotación
| Componente | Puede representar | Uso |
|---|---|---|
| PC1 | Modo global de operación: nivel, aire, reactivos, score. | Separar operación normal y riesgo. |
| PC2 | Contraste entre condiciones de pulpa y reactivos. | Detectar transiciones. |
| PC3 | Patrones secundarios. | Revisar detalles si PC1-PC2 no bastan. |
4. Excel: idea sin PCA completo
En Excel se puede explicar la reducción creando indicadores compuestos.
Score operacional simple
Score metalúrgico simple
Esto no reemplaza PCA, pero ayuda a entender la idea: resumir varias variables en pocos ejes.
5. Python: PCA aplicado
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
archivo = "flotacion_cobre.xlsx"
df = pd.read_excel(archivo)
features = [
"ley_cabeza_cu", "densidad_pulpa", "p80", "flujo_aire",
"nivel_celda", "ph", "dosificacion_espumante", "score_riesgo"
]
X = df[features]
X_scaled = StandardScaler().fit_transform(X)
pca = PCA(n_components=3)
componentes = pca.fit_transform(X_scaled)
df["PC1"] = componentes[:, 0]
df["PC2"] = componentes[:, 1]
df["PC3"] = componentes[:, 2]
print("Varianza explicada:", pca.explained_variance_ratio_)
print(df[["PC1", "PC2", "PC3", "evento_sobre_espumacion"]].head())6. Puente hacia visualización y ML
Con PC1 y PC2 podemos graficar los datos y colorear por evento o cluster.
import matplotlib.pyplot as plt
plt.scatter(df["PC1"], df["PC2"], c=df["evento_sobre_espumacion"])
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.title("Mapa PCA de condiciones de flotación")
plt.show()Mensaje final: reducción de dimensionalidad no borra el proceso; lo resume para ver patrones que en muchas columnas son difíciles de leer.
