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))