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.

Los errores documentados en esta guía fueron recogidos de participantes reales del bootcamp mientras ejecutaban los notebooks y la app Streamlit del módulo. Cada entrada incluye el error exacto tal como aparece en el traceback, la causa más habitual que lo provoca y la solución concreta que debes aplicar. Si tu error no aparece aquí, revisa primero que estás ejecutando las celdas en orden y que tu entorno tiene todas las dependencias instaladas.

Errores frecuentes

Causa: XGBoost no está instalado en el entorno virtual activo.Solución en local:
pip install xgboost
Solución en Google Colab (añade esta celda al principio del notebook):
!pip install xgboost -q
Tras la instalación en Colab, reinicia el runtime si el error persiste (Runtime > Restart runtime).
Causa: Se ha ejecutado una celda que usa X_train sin haber ejecutado antes las celdas que lo definen. Esto ocurre cuando se salta directamente a una sección del notebook o se reinicia el kernel sin volver a ejecutar desde el principio.Solución: Ejecuta todas las celdas en orden, de arriba a abajo. En Jupyter o VSCode usa Run All; en Google Colab usa Runtime > Run all o Kernel > Restart & Run All. Nunca ejecutes una celda de modelado sin haber ejecutado antes las de carga de datos, preprocesamiento y split.
Causa: seaborn.load_dataset() descarga el CSV directamente desde el contenido raw de GitHub en el momento de la llamada. Si no hay conexión a internet, o si un firewall o proxy corporativo bloquea el acceso a raw.githubusercontent.com, la descarga falla o se queda colgada indefinidamente.Solución: Comprueba tu conexión a internet. Si estás en una red con restricciones (universidad, empresa), solicita el archivo CSV local como alternativa al formador para cargarlo directamente con pd.read_csv().
Causa: Se ha intentado entrenar el modelo directamente con RandomForestClassifier().fit(X_train, y_train), saltándose el pipeline completo. El dataset Palmer Penguins contiene valores nulos en varias columnas; el SimpleImputer del preprocesador es quien los gestiona. Sin él, el modelo recibe NaN y lanza el error.Solución: Entrena siempre a través del pipeline completo (rf_pipeline o xgb_pipeline), que incluye el preprocessor con el imputer integrado:
# CORRECTO: entrenar con el pipeline completo
rf_pipeline.fit(X_train, y_train)

# INCORRECTO: entrenar solo el modelo
RandomForestClassifier().fit(X_train, y_train)  # fallará con NaN
El pipeline de este módulo se construye con build_preprocessor(num_cols, cat_cols) y encapsula el SimpleImputer tanto para columnas numéricas (estrategia median) como para columnas categóricas (estrategia most_frequent).
Causa: El OneHotEncoder recibió durante la predicción una categoría en el conjunto de test que no existía en el conjunto de entrenamiento. Esto puede ocurrir si el split produce una partición en la que alguna categoría de island o sex queda exclusivamente en test.Solución: Asegúrate de que el OneHotEncoder tenga el parámetro handle_unknown='ignore' configurado. La función build_preprocessor() del módulo ya lo incluye correctamente:
OneHotEncoder(handle_unknown='ignore')  # correcto
Con este parámetro, las categorías desconocidas en test se codifican como un vector de ceros en lugar de lanzar un error.
Causa: Hay un error tipográfico en el nombre de la columna, o la columna no está incluida en num_cols o cat_cols. Python distingue entre mayúsculas y minúsculas, y los nombres del dataset usan guiones bajos específicos.Solución: Ejecuta df.columns para verificar los nombres exactos. Los nombres correctos de las columnas del pipeline son:
  • Numéricas (num_cols): bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g, bill_ratio
  • Categóricas (cat_cols): island, sex
  • Target: species
Causa: El dataset Palmer Penguins es pequeño (344 filas) y tiene fronteras de clase muy bien definidas: las tres especies de pingüinos son claramente distinguibles por sus medidas morfológicas. Tanto Random Forest como XGBoost pueden clasificar el conjunto de test perfectamente sin que eso implique sobreajuste en el sentido tradicional.Esto no es necesariamente un error, pero sí merece validación. Usa cross-validation para confirmar que el resultado es robusto y no un artefacto del split concreto:
from sklearn.model_selection import cross_val_score

cv_scores = cross_val_score(rf_pipeline, X, y, cv=5)
print(f"CV accuracy: {cv_scores.mean():.4f} ± {cv_scores.std():.4f}")
Si la media es alta y la desviación estándar es baja en todos los folds, el modelo generaliza bien dentro de este dataset. El resultado también confirma el punto ético de la Sección 9: la perfección en Palmer Penguins refleja la simplicidad del dataset, no la potencia del modelo.
Causa: El entorno virtual activo no tiene las librerías instaladas, o se está usando un entorno diferente al que se usó para instalarlas (p. ej., el sistema Python en lugar del entorno del proyecto).Solución: Instala todas las dependencias del módulo en el entorno activo:
pip install pandas seaborn scikit-learn xgboost matplotlib
Si trabajas con entornos virtuales (venv o conda), asegúrate de haberlo activado antes de instalar y antes de lanzar Jupyter o la app Streamlit.

Errores específicos de la app Streamlit

Además de los errores de entorno y código, la app Streamlit tiene comportamientos específicos que pueden confundir si no se conoce su estructura.
La app requiere completar las secciones en orden. Las secciones 2 a 8 dependen de que el dataset esté cargado y almacenado en st.session_state, algo que solo ocurre cuando se pulsa el botón “Cargar Dataset” en la Sección 1.Solución: Vuelve a la Sección 1 en el menú lateral y haz clic en Cargar Dataset. Una vez cargado correctamente, el resto de secciones estarán disponibles.
Este es el comportamiento esperado en apps Streamlit básicas. Cada interacción rerenderiza la app completa. La app de este módulo usa st.session_state para persistir resultados entre secciones (modelos entrenados, métricas, predicciones), pero si la página se recarga en el navegador o la app se reinicia, todo el estado se pierde.Solución: Si los resultados desaparecen, comienza de nuevo desde la Sección 1 y ejecuta cada sección en orden. No es necesario recargar la página salvo que la app deje de responder.
Si ejecutas la app Streamlit en local y encuentras errores de importación, asegúrate de lanzarla desde la raíz del proyecto, no desde dentro del directorio app/:
# CORRECTO: desde la raíz del repositorio
streamlit run app/streamlit_app.py

# INCORRECTO: desde dentro de app/
cd app
streamlit run streamlit_app.py  # los imports relativos fallarán
Los módulos de lógica (logic/preprocessing.py, logic/models.py, etc.) se importan con rutas relativas a la raíz del proyecto. Ejecutar desde otro directorio rompe esas rutas.

Build docs developers (and LLMs) love