パッケージ間のこれらの点での一貫性のない動作のため、のようなより多くの「メタ」パッケージに行くときの余分なトリッキーは言うまでもなく、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