我在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 回答
我不知道为什么,但上面的建议没有用 .
为了解决这个问题,我创建了一个新的值行,更改了一个值,将其作为我的测试集的最后一行输入,然后在最后一行上运行预测 .
这很有效