Я обучил модель с одним горячим кодированием, но тестовые данные имеют на один уровень меньше в одной из ее факторных переменных, что мне делать? - PullRequest
0 голосов
/ 06 мая 2020

Поскольку я сейчас обучаюсь отладке этой ошибки, у меня нет небольшого рабочего примера, но в настоящее время я думаю, что знаю, что делаю неправильно. В настоящее время у меня есть большой набор обучающих данных, на котором я обучил модель. Перед тем, как обучить эту модель, я провел некоторую предварительную обработку. В частности, я удалил несколько столбцов и использовал функцию dummyVars из Caret для быстрого кодирования. Соответствующий код для этой предварительной обработки довольно прост:

dum<-dummyVars(" ~ .", data = dataMyCols)
predict(dum,newdata=dataMyCols)

Однако, когда я прихожу для выполнения своих тестовых данных через тот же процесс, я получаю сообщение «контрасты могут применяться только к факторам с 2 или больше уровней "в последней строке выше. Скимминг этого дал мне обходной путь, а именно отбросил все факторные переменные с менее чем двумя уровнями. Однако это вызывает ошибку, когда я пытаюсь передать тестовые данные в качестве модели («Большой xgb.Booster»), потому что моя модель ожидает большего количества столбцов, чем сейчас имеется в тестовых данных.

Что я могу делать? Я бы предпочел продолжать использовать однократное кодирование, а не полностью отбрасывать столбцы, о которых идет речь, но это, похоже, противоречит целям.

...