轻松指定要在具有多个虚拟变量的随机森林中使用哪些虚拟变量[R]

Easily specify which dummy variables to be used in a random forest with many dummy variables [R]

我预先向您道歉,这是一个非常简单的问题,但是我一直很难用Google和堆栈交换搜索来解决这个问题。

我有一个要在其上运行随机森林的数据集。一些变量是具有超过32个级别的因子,因此为了运行随机森林,我已将它们转换为虚拟变量。问题是这给我留下了1000个变量,尽管我想使用其中大部分,但并不是我想在随机森林中使用所有变量。

我的随机森林代码看起来像这样,除了waaaay太多的虚拟变量让我无法手动列出。

1
fit <- randomForest(result ~ dummy_1 + dummy_2 + dummy_3..., data=df, importance=TRUE, ntree=2000)

本质上,我的问题是,是否有一种方法可以在随机林中指定大范围的列而不按名称列出。我尝试在随机森林命令中运行model.matrix,并尝试使用df [1:34,]等指定列的范围,但这些方法均无效。

先谢谢您!

e:我想只是删除列并制作一个新的数据框就可以了,但是有没有很好的选择呢?


您可以通过在data参数中更改传递给函数的内容来排除变量。

1
2
3
4
exclude_cols <- c('dummy_48','dummy_50','other_var_to_be_dropped')
fit <- randomForest(result ~ .,
                    data=df[ !names(df) %in% exclude_cols ] ,
                    importance=TRUE, ntree=2000)

此函数的subset参数仅在行基础上起作用。