es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo manejar características faltantes en una muestra mientras se hacen predicciones?

Estoy interesado en generar predicciones durante la fase de inferencia (no durante el entrenamiento), donde faltan algunas características.

La declaración del problema y mi implementación son:
* Tengo un conjunto de datos tabulares de 26k muestras con 17 características (algunas categóricas y algunas continuas).
* Muchas de las muestras (alrededor de 3k) tenían valores faltantes en varias características.
* Utilicé una variedad de métodos para realizar la imputación. Por ejemplo, agrupando por la variable objetivo y luego reemplazando los valores NaN con la moda/media del grupo dependiendo de la categoría de la variable.

df["danceability"] = df.groupby("music_genre")["danceability"].transform(lambda x: x.fillna(x.mean()))

* En este caso, music_genre era la variable objetivo, y danceability tenía valores flotantes y algunos de ellos estaban faltando.

  • De esta manera, todos los valores faltantes se eliminaron.
  • Después de eso, entrené un clasificador XGBoost con búsqueda en cuadrícula.
  • Pero ahora, estoy sirviendo este modelo como una aplicación Flask donde necesito responder con predicciones a todas las solicitudes. Las solicitudes pueden ser un lote (conjunto de muestras) o una muestra individual.
  • El problema es que las muestras en la solicitud tienen algunas características faltantes y aún así, tengo que generar las predicciones porque se espera que lo haga.

¿Cómo debo proceder?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Dado que las muestras en las solicitudes pueden tener características faltantes, debemos imputar los valores faltantes antes de generar predicciones. Un enfoque podría ser utilizar las mismas técnicas de imputación que se utilizaron durante el entrenamiento. Por ejemplo, podemos agrupar por la variable objetivo y reemplazar los valores faltantes con la media/moda del grupo dependiendo de la categoría de la variable. Esto aseguraría que los valores imputados sean consistentes con los datos de entrenamiento y se preserve el comportamiento aprendido del modelo.

    Una vez que se imputen los valores faltantes, podemos utilizar el clasificador XGBoost entrenado para generar predicciones para las muestras. Dado que estamos utilizando el modelo como una aplicación de Flask, podemos diseñar la aplicación para manejar tanto solicitudes por lotes como muestras individuales. Para solicitudes por lotes, podemos usar un dataframe de pandas para representar la entrada y pasarlo a la función de predicción del clasificador XGBoost para obtener las predicciones. Para solicitudes individuales, podemos usar un diccionario o una lista de valores para representar la entrada y luego convertirlo en un dataframe de pandas con los nombres de columna adecuados. Luego podemos utilizar la misma función de predicción para generar la predicción para la muestra individual.

    En resumen, el enfoque implicaría la imputación de valores faltantes utilizando las mismas técnicas que durante el entrenamiento y luego utilizar el clasificador XGBoost entrenado para generar predicciones para las muestras. La aplicación puede ser diseñada para manejar tanto solicitudes por lotes como muestras individuales utilizando dataframes de pandas y diccionarios/listas de valores.

Comments are closed.