vtreat на невеликому прикладі
У цій вправі ви скористаєтеся vtreat, щоб виконати one-hot-encoding категоріальної змінної на невеликому прикладі.
vtreat створює план обробки для перетворення категоріальних змінних на індикаторні змінні (позначені кодом "lev"), а також для очищення хибних значень у числових змінних (позначені кодом "clean").
Щоб спроєктувати план обробки, використайте функцію designTreatmentsZ() (docs)
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() (docs) — це синонім до $, який можна використовувати в конвеєрах.)
Для цієї вправи нам потрібні varName, де code — "clean" або "lev":
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
Щоб перетворити набір даних на повністю числові змінні з one-hot-encoding, скористайтеся prepare() (docs):
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, який є one-hot-encoded версією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))