En el dataset Palmer Penguins, variables comoDocumentation 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.
bill_length_mm presentan valores extremos que pueden distorsionar el entrenamiento de modelos sensibles a la escala. Con solo 344 filas, eliminar las filas con outliers reduce significativamente el volumen de datos disponible y puede romper el balance de clases. La estrategia elegida en este módulo es el capping (también llamado winsorizing): los valores que superan los límites estadísticos se sustituyen por el propio límite, en lugar de descartar la observación. Así se mantiene toda la información del dataset mientras se neutraliza la influencia de los valores extremos.
El método IQR
El rango intercuartílico (IQR) es una medida robusta de dispersión que no se ve afectada por los extremos de la distribución. El procedimiento para detectar outliers es el siguiente:- Calcular el primer cuartil Q1 (percentil 25) y el tercer cuartil Q3 (percentil 75).
- Obtener el IQR:
IQR = Q3 - Q1. - Definir los límites de aceptación:
lower_bound = Q1 − 1.5 × IQRupper_bound = Q3 + 1.5 × IQR
- Cualquier valor por debajo de
lower_boundo por encima deupper_boundse considera un outlier.
Función cap_outliers
La función está definida en app/logic/outliers.py y aplica el método IQR sobre una única columna del dataframe:
cap_outliers(df, col) → tuple[pd.DataFrame, float, float]
| Parámetro | Tipo | Descripción |
|---|---|---|
df | pd.DataFrame | El dataframe que contiene la columna a procesar |
col | str | Nombre de la columna numérica sobre la que aplicar el capping |
| Posición | Tipo | Descripción |
|---|---|---|
[0] | pd.DataFrame | El dataframe con la columna col modificada (valores extremos reemplazados) |
[1] | float | Límite inferior calculado (Q1 − 1.5 × IQR) |
[2] | float | Límite superior calculado (Q3 + 1.5 × IQR) |
Uso
bill_length_mm que estén por debajo de 27.35 o por encima de 58.65 quedan sustituidos por esos límites. El número de filas del dataframe no cambia.
Winsorizing vs. eliminación
El métodoclip() de pandas sustituye los valores extremos por el valor del límite correspondiente, en lugar de eliminar la fila. La diferencia práctica es importante:
| Estrategia | ¿Se pierden filas? | Efecto en la distribución |
|---|---|---|
Eliminación (dropna / filtros) | Sí — la fila desaparece | Reduce N, puede sesgar clases |
Winsorizing / capping (clip) | No — la fila se conserva | Los extremos se “comprimen” al límite |
En la aplicación Streamlit, la Sección 2 (Outliers) muestra un gráfico de caja (boxplot) de
bill_length_mm antes y después de aplicar cap_outliers, lo que permite visualizar directamente el efecto del capping sobre la distribución de la variable.