使用r实现一个热编码

使用r实现一个热编码,r,one-hot-encoding,R,One Hot Encoding,对于我正在处理的数据集,有很多字符变量,我想对它们进行热编码,以便构建一些预测模型。在我的代码中,我排除了两个变量,因为对它们进行编码没有意义,它们是商品标识符和商店的成立年份。以下是我正在使用的代码: one_hot_encoding = dummyVars("~.", data = train[,- c("Item_Identifier", "Outlet_Establishment_Year")], fullRank = T) ohe_df = data.table(predict(on

对于我正在处理的数据集,有很多字符变量,我想对它们进行热编码,以便构建一些预测模型。在我的代码中,我排除了两个变量,因为对它们进行编码没有意义,它们是商品标识符和商店的成立年份。以下是我正在使用的代码:

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中的错误(“项目标识符”、“门店成立年份”): 一元运算符的参数无效


为什么??还有一个关于
dummyVars
函数的问题:默认情况下是否排除输入数据集的数值变量

是,默认情况下,它排除数值变量

考虑到您的错误,有一些解决方法:

  • 使用
    dplyr
    -包

    选择(列车、项目、标识、门店、成立年份)

  • 用base-R

    train[,-哪个(在%c中命名(train)%(“项目标识符”,“门店建立年份”))

    或者只使用列的编号,如

    序列[,-c(1,6)]

  • 不,dummyVars()函数的其余部分保持不变。