使用R使用随机森林时出错

akh*_*rma 5 r

我正在使用一个包含mvar_1列的数据集,其名称是去年公民投票的5个政党之一.其他变量只是人口统计变量,因为每一方参与的集会数量,其他的东西.

当我使用以下代码时:

data.model.rf = randomForest(mvar_1 ~ mvar_2 + mvar_3 + mvar_4 + mvar_5 + 
                             mvar_6 + mvar_7 + mvar_8 + mvar_9 + mvar_10 + 
                             mvar_11 + mvar_15 + mvar_17 + mvar_18 + mvar_21 + 
                             mvar_22 + mvar_23 + mvar_24 + mvar_25 + mvar_26 +
                             mvar_28, data=data.train, ntree=20000, mtry=15, 
                             importance=TRUE, na.action = na.omit )
Run Code Online (Sandbox Code Playgroud)

出现此错误消息:

Error in randomForest.default(m, y, ...) : 
  Can not handle categorical predictors with more than 53 categories.
Run Code Online (Sandbox Code Playgroud)

asa*_*ica 5

你的一个mvar是一个超过53个级别的因子.

您可能有一个具有多个级别的分类变量,例如人口统计组,您应该将其聚合到较少的级别以使用此包.(请参阅此处了解最佳方法)

更有可能的是,您将非分类变量错误地键入为因子.在这种情况下,您应该通过正确键入变量来修复它.例如,要从一个因子中获取数字,请调用as.numeric(as.character(myfactor)).

如果你不知道一个因素是什么,第二种选择可能是它.你应该做summarydata.train,这将帮助你了解哪些mvar是输入错误.如果mvar键入数字,您将看到最小值,最大值,平均值,中位数等.如果数字变量输入错误,您将看不到,但您将看到每个级别的出现次数.

在任何情况下,呼叫summary都会对您有所帮助,因为它会显示每个因素的级别数.> 53级的变量导致问题.

  • 实际上,函数`str` 给出了更清晰的输出。试试`str(df)`。您可以立即确定具有许多级别的因素。 (2认同)