我提前道歉,这是一个如此简单的问题,但我一直很难用谷歌和堆栈交换搜索来搞清楚。
我有一个数据集,我想在其上运行随机林。一些变量是超过32个级别的因子,所以我将它们转换为虚拟变量以运行随机林。问题是,这给我留下了1000多个变量,而不是我想在随机森林中使用的所有变量,尽管我想使用其中的大多数变量。
我的随机森林代码看起来像这样,除了waaaay太多的虚拟变量让我合理地手工列出。
fit <- randomForest(result ~ dummy_1 + dummy_2 + dummy_3..., data=df, importance=TRUE, ntree=2000)
基本上我的问题是,是否有办法在随机林中指定大范围的列而不按名称列出它们。我尝试在随机林命令中运行model.matrix,并尝试使用df [1:34,]等指定一系列列,但这两种方法都没有奏效。
提前谢谢!
e:我想只是删除列并使新的数据帧可以工作,但是有一个很好的替代方案吗?
答案 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
参数仅适用于行。