Este módulo es una píldora extendida del bloque de Machine Learning del bootcamp, diseñada para estudiantes que ya conocen los fundamentos de Python y quieren dar el salto a pipelines de ML reales y listos para producción. A lo largo del módulo construirás un pipeline completo de extremo a extremo: desde la carga de datos hasta la comparación cuantitativa de dos algoritmos ensemble (Random Forest y XGBoost), pasando por detección y tratamiento de outliers, feature engineering, codificación de variables y preprocesamiento conDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/HelenDiMo/pildora-bootcamp-preprocesamiento/llms.txt
Use this file to discover all available pages before exploring further.
ColumnTransformer. Todo el código se ejecuta de forma interactiva en una app Streamlit que puedes explorar en tu navegador sin instalar nada.
¿Qué cubre este módulo?
Preprocesamiento de Datos
Aprende a detectar y tratar outliers con el método IQR (capping/winsorizing), crear features derivadas (
bill_ratio), codificar variables categóricas con OneHotEncoder e imputar valores nulos con SimpleImputer, todo integrado en un ColumnTransformer.Algoritmos Ensemble
Compara Bagging vs. Boosting en la práctica: entrena un
RandomForestClassifier y un XGBClassifier sobre el mismo pipeline, evalúa su accuracy y entiende cuándo elegir uno u otro en un contexto real.Demo Interactiva
Explora cada paso del pipeline pulsando botones en la app Streamlit desplegada en la nube. Cada sección muestra el código real, lo ejecuta en vivo y persiste los resultados para que puedas seguir avanzando sin recargar.
Reto de Aplicación
Pon en práctica lo aprendido con el notebook de reto (
reto_notebook_bloque3_tips_v2.ipynb). Los bloques marcados con # TODO te guían para implementar cada pieza por ti mismo, con solución de referencia incluida.Dataset: Palmer Penguins
El dataset Palmer Penguins contiene 344 observaciones de pingüinos recopiladas por la Dra. Kristen Gorman en la Estación Palmer de la Antártida. Es el conjunto de datos de referencia de este módulo porque combina variables numéricas continuas y variables categóricas nominales, tiene valores nulos reales y presenta fronteras de decisión suficientemente interesantes para comparar algoritmos.| Atributo | Descripción |
|---|---|
species | Variable objetivo: Adelie, Chinstrap o Gentoo |
island | Isla de procedencia: Biscoe, Dream o Torgersen |
bill_length_mm | Longitud del pico en milímetros |
bill_depth_mm | Profundidad del pico en milímetros |
flipper_length_mm | Longitud de la aleta en milímetros |
body_mass_g | Masa corporal en gramos |
sex | Sexo del individuo: Male o Female |
seaborn con sns.load_dataset('penguins'), por lo que no necesitas descargar ningún archivo CSV por separado (siempre que tengas conexión a internet).
Estructura del proyecto
El repositorio está organizado para separar la lógica del pipeline de la interfaz visual, lo que facilita reutilizar cualquier función fuera de la app Streamlit (por ejemplo, en los notebooks del reto):app/logic/ es autocontenido e importable de forma independiente:
| Módulo | Funciones principales |
|---|---|
load_data.py | load_penguins() |
outliers.py | cap_outliers(df, col) |
feature_engineering.py | add_bill_ratio(df) |
preprocessing.py | encoding(df), split_train_test(X, y), build_preprocessor(num_cols, cat_cols) |
models.py | train_random_forest(preprocessor, X_train, y_train), train_xgboost(preprocessor, X_train, y_train) |
Tecnologías utilizadas
Todas las dependencias están declaradas enrequirements.txt. La tabla siguiente muestra la versión mínima recomendada y el papel de cada librería en el proyecto:
| Librería | Versión mínima | Uso en el proyecto |
|---|---|---|
streamlit | 1.32 | Interfaz interactiva de la demo: navegación, botones, gráficas y persistencia de estado |
pandas | 2.0 | Manipulación del DataFrame, selección de columnas y construcción de tablas de métricas |
numpy | 1.26 | Operaciones numéricas internas de scikit-learn y XGBoost |
scikit-learn | 1.4 | Pipeline, ColumnTransformer, SimpleImputer, OneHotEncoder, RandomForestClassifier, métricas |
xgboost | 2.0 | XGBClassifier con eval_metric='mlogloss' para clasificación multiclase |
matplotlib | 3.8 | Boxplots, gráficas de barras comparativas y ConfusionMatrixDisplay |
seaborn | 0.13 | Carga del dataset (sns.load_dataset), scatterplots y boxplots exploratorios |
Los notebooks de este módulo (
live_coding_demo.ipynb y reto_notebook_bloque3_tips_v2.ipynb) se pueden abrir y ejecutar directamente en Google Colab sin necesidad de instalar nada, ya que pandas, numpy, scikit-learn, matplotlib y seaborn vienen preinstalados en el entorno de Colab. La única excepción es XGBoost, que debes instalar manualmente con: