0

我之前使用过包中的dummyVars函数来Caret使用缺失值的字符/因子制作虚拟变量,(NA)并且它成功地工作。

然而,这一次,我得到的输出包括NA值。默认情况下,它NA也将其视为单独的条目并为其创建一个虚拟变量。我错过了什么吗?更担心,因为它上次与NA价值观一起工作。

使用以下代码:

dum = dummyVars("~.",data = char_data_raw_train)
char_data_raw_train_dum = predict(dum, newdata = char_data_raw_train)

输出文件,即char_data_raw_train_dum包含NAs。请帮忙。

4

1 回答 1

2

如果您想将NA一个单独的编码变量作为一个单独的级别dummyVars,您可以使用?addNA将其显式定义为级别。这是一个小例子:

d <- mtcars[,(1:3)]
d$cyl <- factor(d$cyl)
# set some entries to NA
d$cyl[c(1,5,10,15,20)] <- NA 
# explicitly define NA as level
d$cyl <- addNA(d$cyl)
library(caret)
data.frame(predict(dummyVars(data = d, formula = ~.), d))

                     mpg cyl.4 cyl.6 cyl.8 cyl.NA  disp
Mazda RX4           21.0     0     0     0      1 160.0
Mazda RX4 Wag       21.0     0     1     0      0 160.0
Datsun 710          22.8     1     0     0      0 108.0
Hornet 4 Drive      21.4     0     1     0      0 258.0
Hornet Sportabout   18.7     0     0     0      1 360.0
Valiant             18.1     0     1     0      0 225.0
[...]
于 2016-06-16T18:52:51.333 回答