我使用随机森林算法训练模型。现在,我想在仅包含一条记录的数据集上使用此模型预测结果。
当我尝试执行预测命令时,它会抛出以下错误。
predict.randomForest(model,test1,type =" response")中的错误: 新数据中预测变量的类型与训练数据的类型不匹配。
注意到这是因为训练和测试数据框中因子变量的级别不同。
所以我在stakoverflow中找到了一个使用脚本修改级别的解决方案
common <- intersect(names(train), names(test1))
for (p in common) { if (class(train[[p]]) == "factor") { levels(test1[[p]]) <- levels(train[[p]]) } }
请参阅以下链接查询。
r random forest error - type of predictors in new data do not match
但不幸的是,它改变了大多数变量的数据值。
例如:
在test1数据框中有一个变量名称&#34;类别&#34;有价值&#34;&gt; = 100&#34;它变为&#34; 11-50&#34;
答案 0 :(得分:0)
我们只需更改factor
类
nm1 <- names(which(sapply(train, is.factor)))
for (p in nm1) {
levels(test1[[p]]) <- levels(train[[p]])
}
如果它基于randomForest
,我们甚至不必查找train
数据。从xlevels
对象获取model
,并根据该列分配levels
'test1'列
lvlslst <- model[["forest"]][["xlevels"]]
lvlsCols <- names(lvlslst)[sapply(lvlslst, is.character)]
for(j in lvlsCols) {
levels(test1[[j]]) <- lvlslst[[j]]
}