#python #scikit-learn #xgboost
#python #scikit-learn #xgboost
Вопрос:
У меня есть предварительно обученная модель XGBoost, прочитанная из файла pickle. Когда я пытался сделать прогнозы для нового набора данных с некоторыми столбцами за пределами набора функций модели, я получил сообщение об ошибке:
в данных обучения отсутствовали следующие поля: column1, column2,…
Я согласен с исключением этих столбцов, не существующих в обучающих данных. Вместо жесткого кодирования имен столбцов (их много) я хотел бы просто найти пересечение между столбцами обучающего и прогнозируемого наборов данных.
Есть ли способ, которым я могу извлечь имена объектов из обученной модели (по-видимому, модель записала имена полей) без необходимости возвращаться к моему набору данных для обучения?
Ответ №1:
Вы можете извлечь имена функций из обработанной модели следующим образом:
fitted_model.get_booster().feature_names
Ответ №2:
Обязательно, чтобы набор данных прогнозирования содержал только те столбцы, которые присутствуют в наборе данных обучения. Даже имеет смысл не включать дополнительные столбцы, потому что веса изучаются на основе вашего обучающего набора данных. Включение любого дополнительного столбца, кроме обучающего набора данных, не дает никакой ценности или не повышает вашу точность, потому что при прогнозировании все, что вы делаете, это умножаете полученные веса модели на новые значения. Убедитесь, что не вводите никаких дополнительных функций для прогнозирования.
Комментарии:
1. Я не пытаюсь включать дополнительные столбцы. Мой вопрос заключался в том, как получить имена столбцов из модели, чтобы я мог включать функции только в обучающий набор.