使用 r 实现单热编码
Implementing one-hot encoding using r
对于我正在处理的数据集,有很多字符变量,我想对它们进行一次性编码,以构建一些预测模型。在我的代码中,我排除了两个变量,因为对它们进行编码没有意义,它们是商品标识符和商店的成立年份。这是我正在使用的代码:
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)
执行第一行时出现此错误:
Error in -c("Item_Identifier", "Outlet_Establishment_Year") :
invalid argument to unary operator.
为什么?还有一个关于 dummyVars
函数的问题:它是否默认排除输入数据集的数字变量?
是的,它默认排除数值变量。
关于您的错误,有一些解决方法:
使用 dplyr
-包
select(train, -Item_Identifier, -Outlet_Establishment_Year)
并使用 base-R
train[, -which(names(train) %in% c("Item_Identifier", "Outlet_Establishment_Year")]
或者只使用像
这样的列的编号
train[, -c(1,6)]
对于我正在处理的数据集,有很多字符变量,我想对它们进行一次性编码,以构建一些预测模型。在我的代码中,我排除了两个变量,因为对它们进行编码没有意义,它们是商品标识符和商店的成立年份。这是我正在使用的代码:
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)
执行第一行时出现此错误:
Error in -c("Item_Identifier", "Outlet_Establishment_Year") : invalid argument to unary operator.
为什么?还有一个关于 dummyVars
函数的问题:它是否默认排除输入数据集的数字变量?
是的,它默认排除数值变量。
关于您的错误,有一些解决方法:
使用
dplyr
-包select(train, -Item_Identifier, -Outlet_Establishment_Year)
并使用 base-R
train[, -which(names(train) %in% c("Item_Identifier", "Outlet_Establishment_Year")]
或者只使用像
这样的列的编号train[, -c(1,6)]