Реализация однократного кодирования с использованием r - PullRequest
0 голосов
/ 04 февраля 2019

В наборе данных, над которым я работаю, есть много символьных переменных, которые я хочу быстро их кодировать, чтобы построить некоторые прогнозирующие модели.В моем коде я исключаю две переменные, потому что кодировать их не имеет смысла, это идентификатор товара и год создания магазина.Вот код, который я использую:

one_hot_encoding = dummyVars("~.", data = train[,- 
c("Item_Identifier", "Outlet_Establishment_Year")], fullRank = T)
ohe_df = data.table(predict(one_hot_encoding, train[,- 
c("Item_Identifier", "Outlet_Establishment_Year")]))
train = cbind(train[,"Item_Identifier"], ohe_df)  

При выполнении первой строки выдает эту ошибку:

Ошибка в -c ("Item_Identifier", "Outlet_Establishment_Year"):неверный аргумент для унарного оператора.

Почему?и один вопрос, касающийся функции dummyVars: исключает ли она по умолчанию числовые переменные из входного набора данных?

1 Ответ

0 голосов
/ 04 февраля 2019

Да, по умолчанию исключаются числовые переменные.

Относительно вашей ошибки есть несколько обходных путей:

  1. С пакетом dplyr

    select(train, -Item_Identifier, -Outlet_Establishment_Year)

  2. И с base-R

    train[, -which(names(train) %in% c("Item_Identifier", "Outlet_Establishment_Year")]

    ИЛИ просто используйте номер столбца, например

    train[, -c(1,6)]

...