如何自动排除 predict.randomForest 中看不见的新因子水平?
How to auto-exclude unseen new factor levels in predict.randomForest?
我正在使用 ramdomForest
包来创建随机森林模型。 May 数据集非常庞大,包含 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.
希望对您有所帮助!
我正在使用 ramdomForest
包来创建随机森林模型。 May 数据集非常庞大,包含 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.
希望对您有所帮助!