Curso 2 · Módulo 2 · Aprendizaje no supervisado

21. Reducción de la dimensionalidad

¿Cómo resumir muchas variables sin perder la señal principal?

Mate MathPlay · Flotación Cu · Archivo de trabajo: flotacion_cobre.xlsx

Flotación CuExcelPythonMachine Learning

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.

Idea central: reducir dimensionalidad es pasar de muchas columnas a pocos componentes que expliquen la mayor parte del comportamiento.
8 variables de planta -> PC1, PC2, PC3

2. Matemática simple

PCA busca direcciones donde los datos varían más.

PC1 = combinación de variables que explica más variabilidad PC2 = segunda dirección importante, distinta de PC1

En vez de mirar muchas columnas separadas, miramos un mapa de 2 o 3 ejes.

3. Aplicación en flotación

ComponentePuede representarUso
PC1Modo global de operación: nivel, aire, reactivos, score.Separar operación normal y riesgo.
PC2Contraste entre condiciones de pulpa y reactivos.Detectar transiciones.
PC3Patrones 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

=PROMEDIO(z_aire,z_nivel,z_espumante,z_score)

Score metalúrgico simple

=PROMEDIO(z_recuperacion,z_ley_cabeza,z_p80,z_densidad)

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.

← Lección anteriorDescargar datosSiguiente lección →