Curso 2 · Modulo 4 · Aplicaciones de ML en mineria

28. Aplicaciones con aprendizaje no supervisado

Que puedo descubrir cuando no tengo etiquetas confiables?

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

Flotacion CuExcelPythonAplicaciones no supervisadas

Aplicaciones con aprendizaje no supervisado

Usamos clustering, PCA y anomalías para explorar modos de operación y condiciones raras.

Mapa rapido

ComponenteUso en clase
Excelz-score, distancias y percentiles.
PythonKMeans + PCA + IsolationForest
ML / mineria de datosDescubrir estructura sin etiquetas

1. Pregunta de planta

Muchas plantas no tienen etiquetas confiables para cada problema. Aun asi, los datos pueden revelar grupos, cambios de modo operativo y puntos raros. Eso es aprendizaje no supervisado.

2. Matematica simple

El modelo busca estructura en X sin usar y.

Clustering: agrupa condiciones parecidas.
PCA: resume variables.
Anomalias: marca puntos raros.

3. Aplicacion en mineria

Casos: identificar modos de operacion, separar turnos parecidos, detectar condiciones nuevas, resumir muchas variables de planta en dos componentes, comparar clusters contra recuperacion y eventos.

4. Excel

Modo practico en Excel:
1. Estandarizar variables con z-score.
2. Calcular distancia a un patron normal.
3. Usar percentiles para marcar condiciones raras.
4. Hacer tabla dinamica por grupo manual o semaforo.

5. Python

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.ensemble import IsolationForest

df = pd.read_excel("flotacion_cobre.xlsx")
features = ["ley_cabeza_cu", "recuperacion_cu", "densidad_pulpa", "p80", "flujo_aire", "nivel_celda", "ph", "dosificacion_espumante", "score_riesgo"]
X_scaled = StandardScaler().fit_transform(df[features])

# Clustering
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
df["cluster"] = kmeans.fit_predict(X_scaled)

# PCA
pca = PCA(n_components=2)
pcs = pca.fit_transform(X_scaled)
df["PC1"] = pcs[:, 0]
df["PC2"] = pcs[:, 1]

# Anomalias
iso = IsolationForest(contamination=0.08, random_state=42)
df["anomalia"] = (iso.fit_predict(X_scaled) == -1).astype(int)

print(df.groupby("cluster")[["recuperacion_cu", "score_riesgo", "evento_sobre_espumacion"]].mean())

6. Cierre aplicativo

Mensaje final: No supervisado sirve para explorar, ordenar y hacer preguntas mejores. No reemplaza la validacion de planta: la provoca.

← Leccion anteriorDescargar datosSiguiente leccion →