3

我有一个数据集,NAs到处都是慷慨的。

此外,它还有需要的列factors()

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

似乎使用的functions=论点适用于具有 NAs 但不适用于因子变量的数据,而适用于因子变量但不适用于 NAs 的数据。 rfe()lmFuncsrfFuncs

有什么建议可以解决这个问题吗?

我试过model.matrix()了,但似乎只会导致更多问题。

4

1 回答 1

4

由于包之间这些点的行为不一致,更不用说在使用更多“元”包时的额外技巧了caret,我总是发现在进行任何机器学习之前预先处理 NA 和因子变量更容易。

  • 对于 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"

此外,以防万一您没有(尽管听起来您有),caretCRAN 上的小插曲非常好,并且触及了其中一些要点。http://cran.r-project.org/web/packages/caret/index.html

于 2012-02-05T06:11:23.267 回答