我正在使用ramdomForest
包来创建随机森林模型。 5 月份的数据集非常庞大,包含 200 多个变量的超过一百万个观测值。在使用样本数据训练随机森林时,我无法捕获所有变量的所有因子水平。
因此,在使用 predict()
对验证集进行预测时,它会抛出错误,因为存在新的因子级别,而这些级别未在训练数据中捕获。
一种解决方案是确保训练数据变量包含所有因子级别。但事实证明这非常乏味,而且我并不真正需要所有因素水平。
在 randomForest 包中运行 predict()
时,是否存在一种方法可以从验证集中自动排除包含先前未识别因子水平的观察结果?可以在 CRAN 文档中找到任何对此的论据。我认为我无法为此制作一个可重现的示例。
最佳答案
一种解决方案是将训练矩阵和测试矩阵结合起来,并在组合矩阵上使用 as.factor 。然后再次分为训练和测试。我在随机森林中遇到了同样的问题,这个解决方案对我有用。
例如:
combine <- rbind(Train,Test)
combine$var1 <- as.factor(combine$var1)
##Then split into Test and Train
Train$var1 <- combine[1:nrow(train)]
similar for Test.
希望这有帮助!
关于r - 如何自动排除 Predict.randomForest 中看不见的新因子水平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32816729/