НачатьНачать бесплатно

Новые уровни

Если какой-либо уровень категориальной переменной встречается редко, он может не попасть в обучающие данные. Когда такой редкий уровень появляется в новых данных, модели могут не знать, как с ним работать. В подобных случаях использование model.matrix или caret::dummyVars для унитарного кодирования (one-hot-encoding) может дать некорректный результат.

vtreat — более надёжная альтернатива model.matrix для унитарного кодирования: этот пакет умеет корректно обрабатывать новые уровни, а также пропущенные значения в данных (как в категориальных, так и в непрерывных переменных).

В этом упражнении вы увидите, как vtreat обрабатывает категориальные значения, которые не встречались в обучающей выборке. План обработки treatplan и набор переменных newvars из предыдущего упражнения по-прежнему доступны. dframe и новый датафрейм testframe уже загружены.

Это упражнение является частью курса

Обучение с учителем в R: регрессия

Посмотреть курс

Инструкции к упражнению

  • Выведите на экран dframe и testframe.
    • Есть ли в testframe цвета, которые не встречались в dframe?
  • Вызовите prepare(), чтобы создать версию testframe с унитарным кодированием (без целевой переменной). Назовите её testframe.treat и выведите на экран.
    • Используйте аргумент varRestriction, чтобы ограничить набор только переменными из newvars.
    • Как закодированы строки с жёлтым цветом?

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# treatplan is available
summary(treatplan)

# newvars is available
newvars

# Print dframe and testframe
___
___

# Use prepare() to one-hot-encode testframe
(testframe.treat <- ___(___, ___, varRestriction = ___))
Редактировать и запускать код