新数据中的随机森林预测变量与训练数据r

时间:2016-07-02 22:18:53

标签: r random-forest

我在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 个答案:

答案 0 :(得分:-1)

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

为了修复它,我创建了一个新的值行,更改了一个值,将其作为我的测试集的最后一行输入,然后在最后一行上运行预测。

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

这有效