2017-10-25 6 views
1

私は、xgboostパッケージで使用するためにダミー変数に変換する必要のある因子変数の束を持つデータフレームを持っています。私は現在、の機能をcaretに使用していますが、それはかなり良いですが遅いです。この変換をより速く行う方法はありますか?最速ダミー変数変換パッケージ/関数

答えて

1

Matrixパッケージからは、model.matrixsparse.model.matrixの両方が仕事をしています。例えば

require(Matrix) 
oat_data <- data.frame( num = c(1,2,4,8,16), 
         animal = c("cat","cat","dog","cat","horse"), 
         oats = c("likes","dislikes","dislikes","likes","dislikes")) 

dense_mat <- model.matrix(~.-1,data=oat_data, verbose = F) 
sparse_mat <- sparse.model.matrix(~.-1,data=oat_data, verbose = F) 

dense_mat 
    num animalcat animaldog animalhorse oatslikes 
1 1   1   0   0   1 
2 2   1   0   0   0 
3 4   0   1   0   0 
4 8   1   0   0   1 
5 16   0   0   1   0 

sparse_mat 
    num animalcat animaldog animalhorse oatslikes 
1 1   1   .   .   1 
2 2   1   .   .   . 
3 4   .   1   .   . 
4 8   1   .   .   1 
5 16   .   .   1   . 

多くの要因を持つ数百もの変数でも非常に高速です。