ПочатиПочніть безкоштовно

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, де codeclean або 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))
Редагувати та запускати код