La ingeniería de características transforma las columnas crudas en representaciones que los modelos pueden aprender. La codificación de categóricas, el escalado de numéricas y la composición de transformaciones con ColumnTransformer son los patrones centrales para el ML tabular.
from sklearn.preprocessing import FunctionTransformerimport numpy as nplog_transform = FunctionTransformer(np.log1p, validate=False)# Encadenar imputación antes del escalado en la rama numérica:from sklearn.impute import SimpleImputerfrom sklearn.pipeline import Pipeline as SkPipelinenumeric_pipe = SkPipeline([ ("impute", SimpleImputer(strategy="median")), ("scale", StandardScaler()),])
Ajustar en datos completos - calcular la media/std o las listas de categorías a partir de filas de prueba filtra información. Solución: ajustar dentro de una canalización en pliegues de entrenamiento solamente.
Categorías no vistas en la inferencia - los nuevos valores de categoría bloquean un OneHotEncoder simple. Solución:handle_unknown="ignore" o handle_unknown="infrequent_if_exist".
Fuga de codificación de destino - codificar categorías con la media de destino usando todos los datos infla las puntuaciones de CV. Solución: usar TargetEncoder dentro de una canalización con CV adecuado.
Escalar modelos de árboles innecesariamente - los bosques aleatorios y el aumento de gradiente son invariantes a la escala. Solución: omitir el escalado para conjuntos de árboles; aún así codificar las categóricas.
One-hot de alta cardinalidad - miles de columnas dummy ralentizan el entrenamiento y sobreajustan. Solución: hashing (FeatureHasher), codificación de frecuencia o embeddings.
Explosión polinómica - PolynomialFeatures(degree=3) en 20 columnas crea miles de características. Solución: limitar el grado, usar selección de características o modo de solo interacción.