Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

611
Vistas
ValueError: no coinciden los nombres de las características: en xgboost en la función de predicción ()

He entrenado un modelo XGBoostRegressor. Cuando tengo que usar este modelo entrenado para predecir una nueva entrada, la función predict() arroja un error de desajuste de nombres de características, aunque el vector de características de entrada tiene la misma estructura que los datos de entrenamiento.

Además, para construir el vector de características en la misma estructura que los datos de entrenamiento, estoy haciendo un procesamiento muy ineficiente, como agregar nuevas columnas vacías (si los datos no existen) y luego reorganizar las columnas de datos para que coincidan con el estructura de entrenamiento. ¿Existe una forma mejor y más limpia de formatear la entrada para que coincida con la estructura de entrenamiento?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Este es el caso en el que el orden de los nombres de las columnas durante la construcción del modelo es diferente del orden de los nombres de las columnas durante la puntuación del modelo.

He utilizado los siguientes pasos para superar este error.

Primero cargue el archivo pickle

 model = pickle.load(open("saved_model_file", "rb"))

extraer todas las columnas con el orden en que se usaron

 cols_when_model_builds = model.get_booster().feature_names

reordenar el marco de datos de pandas

 pd_dataframe = pd_dataframe[cols_when_model_builds]
over 4 years ago · Santiago Trujillo Denunciar

0

Intente convertir los datos en ndarray antes de pasarlos a fit/predict. Por ejemplo: si los datos de su tren son train_df y los datos de prueba son test_df. Use el siguiente código:

 train_x = train_df.values test_x = test_df.values

Ahora ajuste el modelo:

 xgb.fit(train_x,train_y)

Finalmente, predecir:

 pred = xgb.predict(test_x)

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Denunciar

0

También tuve este problema cuando usé pandas DataFrame (representación no dispersa).

Convertí los datos de entrenamiento y prueba en numpy ndarray .

 `X_train = X_train.as_matrix() X_test = X_test.as_matrix()`

¡Así me deshice de ese error!

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda