1
4

More than 5 years have passed since last update.

caret dummyVars()でダミー変数化

Posted at

xgboostなど、formulaが使用できないときにmatrixの作成が必要。
(formula はここがわかりやすかった 
http://ill-identified.hatenablog.com/entry/2017/04/30/004258)
caretパッケージのdummyVars()を使用したダミー変数化について書きます。

適当なデータフレームを作成しておく

> # データフレームの生成
> df <- data.frame(x=c('a', 'b', 'c'),
+                  y=c(1, 2, 3),
+                  z=c('aa','bb','cc')
+                  )

作成したデータは以下のような構成

> df
  x y  z
1 a 1 aa
2 b 2 bb
3 c 3 cc

> str(df)
'data.frame':   3 obs. of  3 variables:
 $ x: Factor w/ 3 levels "a","b","c": 1 2 3
 $ y: num  1 2 3
 $ z: Factor w/ 3 levels "aa","bb","cc": 1 2 3

caret::dummyVars()を使用したダミー変数化

> library(caret)

> #dummy変数化
> df_dummy <- dummyVars(~.,data=df)
> df_dummy2<- as.data.frame(predict(df_dummy, df))

> df_dummy2
  x.a x.b x.c y z.aa z.bb z.cc
1   1   0   0 1    1    0    0
2   0   1   0 2    0    1    0
3   0   0   1 3    0    0    1

factor型であるx列とz列は展開され、ダミー変数化されている。
numeric型であるy列は展開されずそのまま残っている。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4