Выбор переменной R Caret / RFE для факторов () И NA - PullRequest
3 голосов
/ 05 февраля 2012

У меня есть набор данных с NAs.

Кроме того, в нем есть столбцы, которые должны быть factors().

Я использую функцию rfe() из пакета caret для выбора переменных.

Кажется, аргумент functions= в rfe() с использованием lmFuncs работает для данных с NA, но НЕ для факторных переменных, в то время как rfFuncs работает для факторных переменных, но НЕ NA.

Есть предложения по этому поводу?

Я пытался model.matrix(), но, похоже, это вызывает больше проблем.

1 Ответ

4 голосов
/ 05 февраля 2012

Из-за непоследовательного поведения в этих точках между пакетами, не говоря уже о дополнительной хитрости при переходе к более «мета» пакетам, таким как 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 / веб / пакеты / каретка / index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...