Los datos reales vienen con huecos: encuestas sin responder, sensores que fallan, campos opcionales. Esos valores faltantes (los NaN) hacen que muchos modelos ni siquiera arranquen, así que hay que decidir qué hacer con ellos antes de entrenar.
Primero: ¿por qué falta?
No todo hueco es igual. Conviene preguntarse si el dato falta al azar o por una razón:
- Al azar: un sensor que se cae de vez en cuando. Imputar es seguro.
- Con patrón: si los clientes de mayores ingresos tienden a no declararlos, el hueco en sí mismo es información. Borrarlo o rellenarlo a ciegas introduce sesgo.
Opción 1: eliminar
Borrar las filas (o columnas) con huecos. Simple, pero peligroso:
- Si faltan pocos datos, borrar unas filas está bien.
- Si faltan muchos, pierdes información valiosa y puedes sesgar la muestra (te quedas solo con quienes sí respondieron).
Opción 2: imputar (rellenar)
Completar el hueco con un valor razonable. Las estrategias básicas:
- Media / mediana para variables numéricas (la mediana resiste mejor los valores atípicos).
- Moda (el valor más frecuente) para categóricas.
- Métodos más finos, como el KNN imputer, que rellena con el promedio de los ejemplos más parecidos.
Un truco útil: la bandera de "faltaba"
Cuando el hueco puede ser informativo, se añade una columna binaria que marca "este valor estaba ausente". Así el modelo puede aprovechar el hecho de que faltaba, además del valor imputado.
Cuidado con la fuga de datos
El estadístico que uses para imputar (la media, la mediana, la moda) se calcula solo con el entrenamiento. Si sacas la media usando también la prueba, filtras información y las métricas mentirán (fuga de datos).
En código
SimpleImputer aprende el relleno del entrenamiento y lo aplica a todo:
from sklearn.impute import SimpleImputer
imp = SimpleImputer(strategy="median") # o "mean", "most_frequent"
imp.fit(X_train) # aprende la mediana del entrenamiento
X_train_lleno = imp.transform(X_train)
X_test_lleno = imp.transform(X_test) # rellena con la mediana del entrenamiento
Dentro de un Pipeline, la imputación, el escalado y el modelo se ajustan juntos y sin fugas.
Para llevar
Los valores faltantes hay que resolverlos antes de modelar. Eliminar sirve si son pocos; si no, conviene imputar con la media/mediana/moda (o un método más fino) y, cuando el hueco puede ser informativo, añadir una bandera de faltante. Como siempre en el procesamiento: el relleno se aprende con el entrenamiento y se aplica al resto.
