【问题标题】:Fastest dummy variable conversion package / function最快的虚拟变量转换包/函数
【发布时间】:2017-10-25 15:50:14
【问题描述】:

我有一个包含一堆因子变量的数据框,这些变量需要转换为虚拟变量,以便与xgboost 包一起使用。我目前正在使用caret 中的dummyVars 函数,这非常好,但有点慢。有没有更快的方法来进行这种转换?

【问题讨论】:

    标签: r sparse-matrix xgboost dummy-variable


    【解决方案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         .
    

    即使有数百个包含许多因素的变量也非常快。

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 2020-01-16
      相关资源
      最近更新 更多