我有一个数据集NAs
慷慨地撒在各处。
此外,它还有需要的列factors()
.
我正在使用rfe()
函数从caret
包来选择变量。
看来functions=
论证中rfe()
using lmFuncs
适用于具有 NA 的数据,但不适用于因子变量,而rfFuncs
适用于因子变量,但不适用于 NA。
对于处理这个问题有什么建议吗?
I tried model.matrix()
但这似乎只会引起更多问题。
由于包之间在这些点上的行为不一致,更不用说使用更多“元”包时的额外技巧了,例如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"
另外,以防万一您还没有(尽管听起来像您有),caret
CRAN 上的小插图非常好,涉及其中一些要点。http://cran.r-project.org/web/packages/caret/index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)