Я хочу использовать XGBoost в R для прогнозирования нового набора данных.
Чтобы сгенерировать структуру обучающих данных для модели, я использую следующий код для преобразования моего фрейма данных (который содержит целые числа, факторыи числовые типы данных):
dtrain <- xgb.DMatrix(data = model.matrix(frm, data = train), label = label)
, что создает необходимый объект.Моя модель может быть затем обучена и исследована.
ОДНАКО ...
Теперь я хочу использовать эту модель для прогнозирования новых данных.Я импортирую свои новые данные, но когда я создаю структуру DMatrix способом, аналогичным описанному выше, я получаю РАЗНУЮ структуру матрицы.Это связано с тем, что новые данные содержат только подмножество факторов исходных данных, и когда процесс кодирования в одно касание выполняется не во всех необходимых столбцах.Если я пытаюсь предсказать этот новый объект, я получаю сообщение об ошибке:
Ошибка в Foregnet.xgb.Booster (xgbmodel, model.matrix (frm, data = newData))
Имена объектов, хранящиеся в object
и newdata
, различаются!
Мой вопрос: как я могу (эффективно) создать новый объект DMatrix, который имеет ту же структуру столбцов, что и мои исходные данные обучения?но используя новые данные прогноза?Я ожидаю, что это заполнит пустые столбцы, которые являются пустышками, с нулями в новой таблице данных прогноза.