MAT281 - Laboratorio N°13: Flujo de Trabajo con Scikit-Learn¶
Objetivos del laboratorio¶
- Comprender la API de
scikit-learn:fit,predict,score. - Separar los datos en conjuntos de entrenamiento y prueba.
- Construir la matriz de caracteristicas
Xy el vector objetivoy. - Entrenar un primer modelo de clasificacion y otro de regresion.
- Aplicar preprocesamiento: estandarizacion y one-hot encoding.
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 — Matriz de caracteristicas y vector objetivo¶
Usaremos el dataset Iris, incluido en scikit-learn.
Tu tarea:
- Carga Iris con
load_iris(as_frame=True). - Separa la matriz de caracteristicas
X(las 4 medidas) del vector objetivoy(la especie). - Reporta las dimensiones (
shape) deXeyy cuantas clases hay.
In [ ]:
Copied!
from sklearn.datasets import load_iris
iris = load_iris(as_frame=True)
# FIXME
from sklearn.datasets import load_iris
iris = load_iris(as_frame=True)
# FIXME
Problema 02 — Train/test split¶
Tu tarea:
- Divide los datos en 80% entrenamiento y 20% prueba con
train_test_split(usarandom_state=42ystratify=y). - Pregunta: ¿por que es importante evaluar el modelo en datos que no se usaron para entrenar?
In [ ]:
Copied!
# FIXME
# FIXME
Respuesta (Problema 02): (escribe aqui)
Problema 03 — Tu primer clasificador¶
Tu tarea:
- Entrena un modelo
KNeighborsClassifiersobre el conjunto de entrenamiento (fit). - Predice sobre el conjunto de prueba (
predict). - Reporta la exactitud (
accuracy_score) y la matriz de confusion.
In [ ]:
Copied!
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# FIXME
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# FIXME
Problema 04 — Estandarizacion¶
Muchos modelos requieren que las variables esten en la misma escala.
Tu tarea:
- Aplica
StandardScaler: ajusta (fit) solo con el train y transforma train y test. - Reentrena el KNN con los datos escalados y compara la exactitud con la del problema anterior.
- Pregunta: ¿por que el
scalerse ajusta solo con el train?
In [ ]:
Copied!
# FIXME
# FIXME
Respuesta (Problema 04): (escribe aqui)
Problema 05 — One-Hot Encoding¶
Tu tarea: dado el mini DataFrame con una variable categorica:
- Transforma la columna
colora variables dummy conpd.get_dummies(oOneHotEncoder). - Pregunta: ¿por que no podemos pasar texto directamente a un modelo de scikit-learn?
In [ ]:
Copied!
demo = pd.DataFrame({'color': ['rojo','verde','azul','rojo','azul'],
'precio': [10, 12, 9, 11, 8]})
# FIXME
demo = pd.DataFrame({'color': ['rojo','verde','azul','rojo','azul'],
'precio': [10, 12, 9, 11, 8]})
# FIXME
Respuesta (Problema 05): (escribe aqui)