我使用的数据集包含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.
答案 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。)