首页 文章

新数据中的随机森林预测器与训练数据r不匹配

提问于
浏览
-2

我在R中有一个RF模型,它能够正确地预测测试集的结果 . 我正确地测量了变量pf

> str(testing)
'data.frame':   4489 obs. of  9 variables:
 $ pf               : Factor w/ 1755 levels 
 $ p.E              : Factor w/ 24 levels
 $ p.EF             : Factor w/ 30 levels
 $ p.B              : Factor w/ 9 levels 
 $ p.BC             : Factor w/ 26 levels
 $ p.L              : num  110 122 201 60 9 ...
 $ p.N              : Factor w/ 9 levels 
 $ p                : num  580 
 $ pt               : Factor w/ 30 levels

我想生成一些新的数据来尝试在模型中使用,所以我创建了一些新的数据,它们与测试集的第一行相同,试图预测pf:

> df=testing[1,]
> df=droplevels(df)
> str(df)
'data.frame':   1 obs. of  9 variables:
 $ pf               : Factor w/ 1 level
 $ p.E              : Factor w/ 1 level
 $ p.EF             : Factor w/ 1 level
 $ p.B              : Factor w/ 1 level
 $ p.BC             : Factor w/ 1 level
 $ p.L              : num 110
 $ p.N              : Factor w/ 1 level
 $ p                : num 580
 $ pt               : Factor w/ 1 level

并收到以下错误:

> predict(model,df,type='class')
Error in predict.randomForest(model, df, type = "class") : 
  Type of predictors in new data do not match that of the training data.

有人能解释为什么会发生这种情况或建议我如何解决这个问题?

我是否应该放弃我的新df中的水平,这会使模型试图根据新数据预测结果?还是我在瞎眼明显?

1 回答

  • -1

    我不知道为什么,但上面的建议没有用 .

    为了解决这个问题,我创建了一个新的值行,更改了一个值,将其作为我的测试集的最后一行输入,然后在最后一行上运行预测 .

    df=testing[1,]
    df[9]=as.factor(4)
    testing=rbind(testing,df)
    predict(model, testing[4490,],type='class')
    

    这很有效

相关问题