我在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中的水平,这会使模型试图根据新数据预测结果?或者我正在瞎扯着明显的东西?
答案 0 :(得分:-1)
我不知道为什么,但上面的建议没有用。
为了修复它,我创建了一个新的值行,更改了一个值,将其作为我的测试集的最后一行输入,然后在最后一行上运行预测。
df=testing[1,]
df[9]=as.factor(4)
testing=rbind(testing,df)
predict(model, testing[4490,],type='class')
这有效