r - 如何自动排除 Predict.randomForest 中看不见的新因子水平?

标签 r random-forest r-factor

我正在使用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/

相关文章:

r - 获取 R 中预定义函数的解析树

r - 基本 R 指南 : verbatim ? 与 R 中的 knitr

r - 如何导出 R 随机森林模型以在 Excel VBA 中使用而无需 API 调用

python - 属性错误 : 'RandomForestClassifier' object has no attribute 'fit_transform'

r - 子集数据框以仅包含在另一个因子的两个级别中都具有值的一个因子的级别

r - 如何从另一个 Jupyter 笔记本文件获取 R 代码?

RHadoop 作业在单节点 Ubuntu 集群上失败

r - 随机森林混淆矩阵中的错误

r - 对 R 中的因子使用 ifelse

r - 总结数据框中的因素