我的数据集中NAs
慷慨地散布着。
此外,它的列必须为factors()
。
我正在使用rfe()
包中的caret
函数来选择变量。
使用functions=
的{{1}}中的rfe()
参数似乎适用于具有NA的数据但不适用于因子变量,而lmFuncs
适用于因子变量但不适用于NAs 。
有任何处理这个问题的建议吗?
我试过了rfFuncs
但似乎只会造成更多问题。
答案 0 :(得分:4)
由于包之间这些点上的行为不一致,更不用说去caret
等更多“元”包时的额外诡计,我总是发现在事先处理NAs和因子变量之前更容易我做任何机器学习。
model.matrix()
走在正确的轨道上。它将让您为不同级别的因子生成一系列“虚拟”功能。典型的用法是这样的:> dat = data.frame(x=factor(rep(1:3, each=5)))
> dat$x
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> model.matrix(~ x - 1, data=dat)
x1 x2 x3
1 1 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 0 1 0
7 0 1 0
8 0 1 0
9 0 1 0
10 0 1 0
11 0 0 1
12 0 0 1
13 0 0 1
14 0 0 1
15 0 0 1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$x
[1] "contr.treatment"
另外,如果你没有(虽然听起来像你有),CRAN上的caret
小插图非常好,并触及其中一些点。 http://cran.r-project.org/web/packages/caret/index.html