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.

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 de bill_length_mm y bill_depth_mm contienen información individual útil, pero su cocientebill_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:
def add_bill_ratio(df):
    df['bill_ratio'] = df['bill_length_mm'] / df['bill_depth_mm']
    return df
Firma: add_bill_ratio(df) → pd.DataFrame
ParámetroTipoDescripción
dfpd.DataFrameDataframe con las columnas bill_length_mm y bill_depth_mm presentes
Valor de retorno: el mismo pd.DataFrame con la nueva columna bill_ratio añadida.

Uso

from app.logic.feature_engineering import add_bill_ratio

df = add_bill_ratio(df)
print(df[['bill_length_mm', 'bill_depth_mm', 'bill_ratio']].head())
Salida esperada:
   bill_length_mm  bill_depth_mm  bill_ratio
0            39.1           18.7    2.090909
1            39.5           17.4    2.270115
2            40.3           18.0    2.238889
3             NaN            NaN         NaN
4            36.7           19.3    1.901554
Las filas con nulos en las columnas originales producen 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_ratio más bajo (~1.9–2.2).
  • Chinstrap: pico más largo y delgado proporcionalmente → bill_ratio más alto (~2.3–2.7).
  • Gentoo: pico largo pero también profundo → bill_ratio intermedio-alto (~2.2–2.6).
Incorporar 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 aplicar add_bill_ratio, el dataframe pasa de 7 a 8 columnas:
#ColumnaTipoOrigen
1bill_length_mmfloat64Original
2bill_depth_mmfloat64Original
3flipper_length_mmfloat64Original
4body_mass_gfloat64Original
5islandobjectOriginal
6sexobjectOriginal
7speciesobjectOriginal (target)
8bill_ratiofloat64Derivada
En el paso de encoding, la lista num_cols definida en preprocessing.py incluye explícitamente bill_ratio:
num_cols = ['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g', 'bill_ratio']
Esto garantiza que la nueva feature pase por el pipeline de imputación y escalado junto con las demás variables numéricas.
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()).

Build docs developers (and LLMs) love