Skip to main content

Documentation 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.

Esta guía te lleva de cero a un Random Forest y un XGBoost entrenados y comparados en un único script de Python, importando directamente las funciones de app/logic/. No necesitas abrir la app Streamlit ni recorrer los notebooks: en menos de cinco minutos tendrás el pipeline completo ejecutándose en local, con las métricas de accuracy de ambos modelos impresas en consola. Desde ahí puedes experimentar con los hiperparámetros, añadir nuevas features o integrar el pipeline en tus propios proyectos.

Requisitos previos

  • Python 3.8 o superior con pip disponible en el PATH.
  • Conexión a internet para que seaborn pueda descargar el dataset Palmer Penguins desde GitHub al ejecutar sns.load_dataset('penguins').
Si no tienes un entorno local configurado, puedes seguir este quickstart íntegramente desde Google Colab abriendo un notebook nuevo, clonando el repositorio y ejecutando las celdas en orden.

Instalación

1

Clona el repositorio

Descarga el código fuente y entra en el directorio del proyecto:
git clone https://github.com/HelenDiMo/pildora-bootcamp-preprocesamiento.git && cd pildora-bootcamp-preprocesamiento
2

Instala las dependencias

Elige el entorno en el que vayas a trabajar:
pip install pandas seaborn scikit-learn xgboost matplotlib streamlit
En Google Colab, pandas, seaborn, scikit-learn, matplotlib y streamlit ya están disponibles; solo necesitas instalar XGBoost.
3

Verifica la instalación

Comprueba que los paquetes esenciales están accesibles desde tu entorno Python:
python -c "import sklearn, xgboost, seaborn; print('OK')"
Si ves OK en la salida, estás listo para continuar. Si aparece un ModuleNotFoundError, asegúrate de que el comando pip del paso anterior se ejecutó en el mismo entorno virtual que tu intérprete de Python.

Pipeline de ejemplo completo

El siguiente script importa las funciones reales de app/logic/, ejecuta cada etapa del pipeline en orden y muestra la accuracy de ambos modelos. Guárdalo como pipeline_demo.py en la raíz del repositorio y ejecútalo con python pipeline_demo.py.
# pipeline_demo.py
# Ejecutar desde la raíz del repositorio:
#   python pipeline_demo.py

from sklearn.metrics import accuracy_score

from app.logic.load_data import load_penguins
from app.logic.outliers import cap_outliers
from app.logic.feature_engineering import add_bill_ratio
from app.logic.preprocessing import encoding, split_train_test, build_preprocessor
from app.logic.models import train_random_forest, train_xgboost

# 1. Carga del dataset
df = load_penguins()
print("Dataset cargado. Shape:", df.shape)

# 2. Tratamiento de outliers con el método IQR (capping/winsorizing)
df, lower, upper = cap_outliers(df, "bill_length_mm")
print(f"Outliers en bill_length_mm capados → límites: [{lower:.2f}, {upper:.2f}]")

# 3. Feature engineering: creamos bill_ratio = bill_length_mm / bill_depth_mm
df = add_bill_ratio(df)
print("Feature 'bill_ratio' creada. Columnas:", list(df.columns))

# 4. Encoding: separamos features (X) de target (y) y definimos columnas numéricas y categóricas
X, y, num_cols, cat_cols = encoding(df)
print("X shape:", X.shape, "| y shape:", y.shape)

# 5. Split train/test estratificado (80/20, random_state=42)
X_train, X_test, y_train, y_test = split_train_test(X, y)
print("Train:", X_train.shape, "| Test:", X_test.shape)

# 6. Construcción del preprocesador:
#    - Columnas numéricas → SimpleImputer(strategy='median')
#    - Columnas categóricas → SimpleImputer(most_frequent) + OneHotEncoder(handle_unknown='ignore')
preprocessor = build_preprocessor(num_cols, cat_cols)

# 7. Entrenamiento de Random Forest
rf_pipeline = train_random_forest(preprocessor, X_train, y_train)
rf_preds = rf_pipeline.predict(X_test)
rf_acc = accuracy_score(y_test, rf_preds)
print(f"\nRandom Forest — Accuracy: {rf_acc:.4f}")

# 8. Entrenamiento de XGBoost
# train_xgboost acepta las etiquetas de texto directamente; XGBoost gestiona
# la codificación multiclase de forma interna (no se necesita LabelEncoder).
xgb_pipeline = train_xgboost(preprocessor, X_train, y_train)
xgb_preds = xgb_pipeline.predict(X_test)
xgb_acc = accuracy_score(y_test, xgb_preds)
print(f"XGBoost       — Accuracy: {xgb_acc:.4f}")

# 9. Comparativa final
print("\n--- Comparativa ---")
if xgb_acc > rf_acc:
    print(f"Mejor modelo: XGBoost ({xgb_acc:.4f})")
elif rf_acc > xgb_acc:
    print(f"Mejor modelo: Random Forest ({rf_acc:.4f})")
else:
    print("Ambos modelos tienen el mismo accuracy.")
Ejecuta siempre las celdas del notebook (o las líneas del script) en orden de arriba a abajo. Saltar pasos provoca errores como NameError: name 'X_train' is not defined porque las variables del pipeline son acumulativas: cada función recibe la salida de la anterior como entrada.

Ejecutar la app Streamlit

Si prefieres explorar el pipeline de forma visual e interactiva, lanza la app Streamlit desde la raíz del repositorio:
streamlit run app/streamlit_app.py
La app se abrirá automáticamente en http://localhost:8501. Usa la barra lateral para navegar entre las secciones (Cargar Dataset → Outliers → Feature Engineering → Preprocesamiento → Random Forest → XGBoost → Comparativa) y pulsa el botón de cada sección para ejecutar el código en vivo. También puedes acceder a la versión desplegada en la nube sin instalar nada: bootcamp-preprocesamiento.streamlit.app

Build docs developers (and LLMs) love