MAT281 - Laboratorio N°15: Modelos de Clasificacion Supervisada¶
Objetivos del laboratorio¶
- Plantear un problema de clasificacion binaria.
- Interpretar la matriz de confusion y metricas (accuracy, precision, recall, F1).
- Entrenar regresion logistica y arboles de decision.
- Construir e interpretar la curva ROC y el AUC.
- Analizar el desbalance de clases y el efecto del umbral de decision.
Instrucciones¶
Lea con atencion cada problema antes de resolverlo. Reemplace cada celda que contiene # FIXME con su propia solucion y, cuando se solicite, responda las preguntas en celdas de texto.
Nota: Puede apoyarse en asistentes virtuales (ChatGPT, Gemini, Claude) o en el autocompletado de Colab, pero asegurese de entender cada linea de codigo que entregue.
In [ ]:
Copied!
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
Problema 01 — El problema de clasificacion¶
Usaremos el dataset Breast Cancer de scikit-learn (clasificar tumores como benignos o malignos).
Tu tarea:
- Carga
load_breast_cancer(as_frame=True). - Separa
Xey, divide en train/test (estratificado) y estandarizaX. - ¿Cuantos casos de cada clase hay? ¿Esta balanceado?
In [ ]:
Copied!
from sklearn.datasets import load_breast_cancer
# FIXME
from sklearn.datasets import load_breast_cancer
# FIXME
Problema 02 — Regresion logistica y metricas¶
Tu tarea:
- Entrena una
LogisticRegression. - Calcula accuracy, precision, recall y F1 (
classification_report). - Muestra la matriz de confusion (
ConfusionMatrixDisplay). - Pregunta: en el contexto de un diagnostico de cancer, ¿que error es mas grave: un falso positivo o un falso negativo? ¿Que metrica priorizarias?
In [ ]:
Copied!
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, ConfusionMatrixDisplay
# FIXME
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, ConfusionMatrixDisplay
# FIXME
Respuesta (Problema 02): (escribe aqui)
Problema 03 — Arbol de decision¶
Tu tarea:
- Entrena un
DecisionTreeClassifier(limitamax_depthpara evitar sobreajuste). - Compara sus metricas con las de la regresion logistica.
- (Opcional) Visualiza el arbol con
plot_tree.
In [ ]:
Copied!
from sklearn.tree import DecisionTreeClassifier, plot_tree
# FIXME
from sklearn.tree import DecisionTreeClassifier, plot_tree
# FIXME
Problema 04 — Curva ROC y AUC¶
Tu tarea:
- Obten las probabilidades predichas (
predict_proba) de la clase positiva. - Grafica la curva ROC (
RocCurveDisplay) y reporta el AUC. - Pregunta: ¿que representa el AUC? ¿Que valor tendria un clasificador aleatorio?
In [ ]:
Copied!
from sklearn.metrics import RocCurveDisplay, roc_auc_score
# FIXME
from sklearn.metrics import RocCurveDisplay, roc_auc_score
# FIXME
Respuesta (Problema 04): (escribe aqui)
Problema 05 — Umbral de decision¶
Por defecto se clasifica como positivo si $P > 0.5$, pero el umbral se puede ajustar.
Tu tarea:
- Prueba umbrales de 0.3, 0.5 y 0.7 sobre las probabilidades.
- Para cada umbral reporta precision y recall.
- Pregunta: ¿como cambia el equilibrio precision/recall al mover el umbral?
In [ ]:
Copied!
# FIXME
# FIXME
Respuesta (Problema 05): (escribe aqui)