Создать матрицу модели с теми же столбцами, что и в другой таблице. - PullRequest
0 голосов
/ 18 июня 2019

Я хочу использовать 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, который имеет ту же структуру столбцов, что и мои исходные данные обучения?но используя новые данные прогноза?Я ожидаю, что это заполнит пустые столбцы, которые являются пустышками, с нулями в новой таблице данных прогноза.

...