R caret / rfe变量选择因子()和NA

时间:2012-02-05 00:24:27

标签: r r-caret

我的数据集中NAs慷慨地散布着。

此外,它的列必须为factors()

我正在使用rfe()包中的caret函数来选择变量。

使用functions=的{​​{1}}中的rfe()参数似乎适用于具有NA的数据但不适用于因子变量,而lmFuncs适用于因子变量但不适用于NAs 。

有任何处理这个问题的建议吗?

我试过了rfFuncs但似乎只会造成更多问题。

1 个答案:

答案 0 :(得分:4)

由于包之间这些点上的行为不一致,更不用说去caret等更多“元”包时的额外诡计,我总是发现在事先处理NAs和因子变量之前更容易我做任何机器学习。

  • 对于NA,省略或估算(中位数,knn等)。
  • 对于要素功能,您使用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