【发布时间】:2018-08-17 20:32:01
【问题描述】:
几天来我一直在努力解决这个问题,但没有成功。我已经查看了类似的线程 (Error in predict.randomForest),但似乎没有任何帮助。我正在尝试开发一个模型来检查播种率 (Rx) 如何影响产量。
我想我需要弄清楚如何使我的因子水平 测试数据与我的训练数据匹配,因为我收到此错误:
Error in predict.randomForest(randFor.mod, newdata = pred.27k) :
New factor levels not present in the training data
我从完整数据 (pred.all) 中对我的训练数据 (pred.sub) 进行子集化,这样我只考虑具有值的收益率,测试数据的收益率为 NA。
pred.sub<-subset(pred.all, !(is.na(pred.all$Yield)))
模型在训练数据上运行良好。
但是,我需要为每个播种率创建单独的数据框:
pred.27k<-pred.all
pred.27k$Rx<-27000
pred.27k$Rx<-factor(pred.27k$Rx, c(27000, 32000, 37000, 42000))
pred.32k<-pred.all
pred.32k$Rx<-32000
pred.32k$Rx<-factor(pred.32k$Rx, c(27000, 32000, 37000, 42000))
pred.37k<-pred.all
pred.37k$Rx<-37000
pred.37k$Rx<-factor(pred.37k$Rx, c(27000, 32000, 37000, 42000))
pred.42k<-pred.all
pred.42k$Rx<-42000
pred.42k$Rx<-factor(pred.42k$Rx, c(27000, 32000, 37000, 42000))
我检查了 pred.all、pred.sub 和 pred.27k - pred.42k 和 Rx 是每个数据集中的一个因素,有 4 个级别 (27000 - 42000)。
我已经为任何预测变量估算了任何缺失数据。
具有讽刺意味的是,我过去使用过这段代码没有问题。
鉴于 Rx 是整个数据集 (pred.all)、训练数据 (pred.sub) 和测试数据 (pred.27k - pred.42k) 的 4 个级别的因子,我不确定还有什么做。在设置 pred.27k - pred.42k 的级别时,我尝试过对代码进行调整,但没有任何效果。
一个线索可能是 pred.sub$Rx 和 pred.all$Rx 有 4 个小数级别 (27000.0005),但 pred.27k$Rx 有 4 个级别是分配的整数 (27000)。
【问题讨论】:
-
能否提供随机的 20 行训练和测试数据,
dput?
标签: r random-forest levels