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

时间:2014-12-12 17:44:59

标签: r random-forest large-data

我提前道歉,这是一个如此简单的问题,但我一直很难用谷歌和堆栈交换搜索来搞清楚。

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

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

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

基本上我的问题是,是否有办法在随机林中指定大范围的列而不按名称列出它们。我尝试在随机林命令中运行model.matrix,并尝试使用df [1:34,]等指定一系列列,但这两种方法都没有奏效。

提前谢谢!

e:我想只是删除列并使新的数据帧可以工作,但是有一个很好的替代方案吗?

1 个答案:

答案 0 :(得分:3)

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

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参数仅适用于行。