El feature engineering consiste en crear nuevas variables a partir de las existentes con el objetivo de capturar relaciones que los modelos no pueden descubrir fácilmente por sí solos. En el caso de los pingüinos Palmer, las medidas brutas deDocumentation 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 y bill_depth_mm contienen información individual útil, pero su cociente — bill_ratio — captura la forma del pico: si es largo y estrecho o corto y profundo. Esta característica morfológica varía de forma marcada entre las tres especies: los pingüinos Chinstrap tienden a tener picos proporcionalmente más largos y delgados que los Adelie, y los Gentoo ocupan un espacio diferente en esa dimensión. Agregar bill_ratio al dataset aporta poder discriminativo sin necesidad de recopilar nuevos datos, simplemente explotando la relación entre variables ya disponibles.
Función add_bill_ratio
La función está definida en app/logic/feature_engineering.py:
add_bill_ratio(df) → pd.DataFrame
| Parámetro | Tipo | Descripción |
|---|---|---|
df | pd.DataFrame | Dataframe con las columnas bill_length_mm y bill_depth_mm presentes |
pd.DataFrame con la nueva columna bill_ratio añadida.
Uso
NaN en bill_ratio. Estos nulos serán gestionados posteriormente por el SimpleImputer del ColumnTransformer.
¿Por qué bill_ratio?
El cociente entre longitud y profundidad del pico es un descriptor de forma: un valor alto indica un pico largo y estrecho; un valor bajo, un pico corto y profundo. Este descriptor resume en un único número la geometría del pico mejor que cualquiera de las dos medidas por separado. Desde el punto de vista biológico, las tres especies se diferencian claramente en esta dimensión:- Adelie: pico corto y relativamente profundo →
bill_ratiomás bajo (~1.9–2.2). - Chinstrap: pico más largo y delgado proporcionalmente →
bill_ratiomás alto (~2.3–2.7). - Gentoo: pico largo pero también profundo →
bill_ratiointermedio-alto (~2.2–2.6).
bill_ratio permite a los modelos de clasificación (Random Forest, XGBoost) explotar esa separación en el espacio de features sin necesidad de interacciones polinómicas complejas.
Columnas del dataset tras feature engineering
Después de aplicaradd_bill_ratio, el dataframe pasa de 7 a 8 columnas:
| # | Columna | Tipo | Origen |
|---|---|---|---|
| 1 | bill_length_mm | float64 | Original |
| 2 | bill_depth_mm | float64 | Original |
| 3 | flipper_length_mm | float64 | Original |
| 4 | body_mass_g | float64 | Original |
| 5 | island | object | Original |
| 6 | sex | object | Original |
| 7 | species | object | Original (target) |
| 8 | bill_ratio | float64 | Derivada |
num_cols definida en preprocessing.py incluye explícitamente bill_ratio:
add_bill_ratio modifica el dataframe en su lugar (asigna directamente a df['bill_ratio']) y devuelve la misma referencia. Si necesitas conservar el dataframe original sin la nueva columna, pasa una copia explícita: df = add_bill_ratio(df.copy()).