警告:predict.randomForest中的错误:新数据中的预测变量类型与训练数据的类型不匹配

时间:2017-07-11 17:15:42

标签: r shiny random-forest prediction

在尝试预测Shiny中的单个新实例时,我收到上述错误消息,因此具有不同级别数的测试数据不会出现问题。

RF<-randomForest(incurred_loss2~turnover+Limite.PI+NUTS1,data=sec,importance=TRUE,ntree=2000)

modelPred<-reactive({
  turnoverInput<-as.numeric(input$sliderTurnover)
  LOIInput<-as.numeric(input$sliderLOI)
  LegalInput<-as.factor(input$selectLegal)
  NUTS1Input<-as.factor(input$selectNUTS1)
  predict(RF,newdata=data.frame(legal_form=LegalInput,turnover=turnoverInput,Limite.PI=LOIInput,NUTS1=NUTS1Input))
})

当我从模型中删除两个因子变量时,我只剩下两个数值变量,我没有得到错误信息。

1 个答案:

答案 0 :(得分:0)

错误意味着用于训练&#34; RF&#34;模型与测试数据结构不同,并且丢弃因子变量使得代码工作确认您遇到的问题不同。

查看您的代码可能是因为您的培训和测试集不是来自相同/唯一的data.frame的子集,也可以进行多次手动转换(包括因子的手动转换)。

根据您的需要,我会看到两件事要尝试:

  • 将您的集合合并到一个data.frame中,并使用您可以使用的键列 将火车和测试分开
  • 或创建一个输出您可以在任务中使用的标准化数据集的函数,并将测试和训练集传递给它 功能(将NA设置为显式级别)

如果您的某个数据集中有一个NA而另一个数据集没有NA,那么手动转换可能导致在随机林中使用因子的问题示例如下:

r random forest error - type of predictors in new data do not match