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

时间:2015-10-13 09:16:55

标签: 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 )

出现此错误消息:

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

4 个答案:

答案 0 :(得分:5)

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

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

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

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

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

答案 1 :(得分:0)

当您使用整个数据集而不是训练数据训练模型时,会发生此错误。尝试使用训练数据实现模型,并与adm一起进行预测。

答案 2 :(得分:0)

我遇到了同样的问题,但是看到我已经导入了带有逗号分隔符的数据框而没有指出它之后,就解决了这个问题。

使用read.table(data,dec =“,”)导入表后,问题已解决!

答案 3 :(得分:-1)

正如antoine-sac指出的,在我的案例中,此错误是由于数值变量作为因素出现的。仅当R导入我的(数字)文件时,转换才发生。

将因子强制转换为数字无效。但是,有效的方法是在导入数据集时使用strip.white = TRUE。 (我找到了此解决方案here。)