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

vtreat на простом примере

В этом упражнении вы будете использовать vtreat для применения унарного кодирования (one-hot encoding) к категориальной переменной на простом примере. vtreat создаёт план обработки для преобразования категориальных переменных в индикаторные (с кодом "lev") и для очистки некорректных значений в числовых переменных (с кодом "clean").

Чтобы создать план обработки, используйте функцию designTreatmentsZ() (документация)

treatplan <- designTreatmentsZ(data, varlist)
  • data: исходный обучающий фрейм данных
  • varlist: вектор входных переменных для обработки (в виде строк).

designTreatmentsZ() возвращает список с элементом scoreFrame — фреймом данных, содержащим имена и типы новых переменных:

scoreFrame <- treatplan %>% 
            magrittr::use_series(scoreFrame) %>% 
            select(varName, origName, code)
  • varName: имя новой обработанной переменной
  • origName: имя исходной переменной, из которой получена обработанная переменная
  • code: тип новой переменной.
    • "clean": числовая переменная без значений NA или NaN
    • "lev": индикаторная переменная для конкретного уровня исходной категориальной переменной.

(magrittr::use_series() (документация) — это псевдоним для $, который можно использовать в конвейерах.)

В данных упражнениях нам нужны значения varName, где code равен "clean" или "lev":

newvarlist <- scoreFrame %>% 
             filter(code %in% c("clean", "lev") %>%
             magrittr::use_series(varName)

Чтобы преобразовать набор данных в формат, содержащий только числовые и унарно закодированные переменные, используйте prepare() (документация):

data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
  • treatplan: план обработки
  • data: фрейм данных, который нужно обработать
  • varRestrictions: переменные, которые должны войти в обработанные данные

Фрейм данных dframe и пакет magrittr уже загружены.

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

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

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

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

  • Выведите dframe. Предположим, что color и size — входные переменные, а popularity — целевая переменная для предсказания.
  • Создайте вектор vars, содержащий имена входных переменных (в виде строк).
  • Загрузите пакет vtreat.
  • Используйте designTreatmentsZ(), чтобы создать план обработки для переменных из vars. Сохраните его в переменную treatplan.
  • Получите и изучите scoreFrame из плана обработки, чтобы увидеть соответствие между старыми и новыми переменными.
    • Вам понадобятся только столбцы varName, origName и code.
    • Как называются новые индикаторные переменные? А непрерывная переменная?
  • Создайте вектор newvars, содержащий значения varName, где code равен clean или lev. Выведите его.
  • Используйте prepare(), чтобы создать новый фрейм данных dframe.treat — версию dframe с унарным кодированием (без столбца с целевой переменной).
    • Выведите его и сравните с dframe.

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

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

# Print dframe
dframe

# Create and print a vector of variable names
(vars <- ___)

# Load the package vtreat
___

# Create the treatment plan
treatplan <- ___(___, ___)

# Examine the scoreFrame
(scoreFrame <- treatplan %>%
    use_series(scoreFrame) %>%
    select(___, ___, ___))

# We only want the rows with codes "clean" or "lev"
(newvars <- scoreFrame %>%
    filter(code %in% ___) %>%
    use_series(varName))

# Create the treated training data
(dframe.treat <- ___(___, ___, varRestriction = newvars))
Редактировать и запускать код