gpt4 book ai didi

r 随机森林错误 - 新数据中的预测变量类型不匹配

转载 作者:行者123 更新时间:2023-12-03 10:45:22 24 4
gpt4 key购买 nike

我正在尝试在 R ( quantregForest ) 中使用基于随机森林包的分位数回归森林函数。我收到一个类型不匹配错误,我不太明白为什么。

我通过使用训练模型

qrf <- quantregForest(x = xtrain, y = ytrain)

这没有问题,但是当我尝试使用新数据进行测试时
quant.newdata <- predict(qrf, newdata= xtest)

它给出了以下错误:
Error in predict.quantregForest(qrf, newdata = xtest) : 
Type of predictors in new data do not match types of the training data.

我的训练和测试数据来自不同的文件(因此是不同的数据框),但格式相同。我已经检查了预测变量的类别
sapply(xtrain, class)
sapply(xtest, class)

这是输出:
> sapply(xtrain, class)
pred1 pred2 pred3 pred4 pred5 pred6 pred7 pred8
"factor" "integer" "integer" "integer" "factor" "factor" "integer" "factor"
pred9 pred10 pred11 pred12
"factor" "factor" "factor" "factor"


> sapply(xtest, class)
pred1 pred2 pred3 pred4 pred5 pred6 pred7 pred8
"factor" "integer" "integer" "integer" "factor" "factor" "integer" "factor"
pred9 pred10 pred11 pred12
"factor" "factor" "factor" "factor"

它们完全相同。我还检查了“NA”值。 xtrain 和 xtest 都没有 NA 值。我在这里错过了一些微不足道的事情吗?

更新 I:在训练数据上运行预测仍然给出相同的错误
> quant.newdata <- predict(qrf, newdata = xtrain)
Error in predict.quantregForest(qrf, newdata = xtrain) :
names of predictor variables do not match

更新二:我结合了我的训练和测试集,所以从 1 到 101 的行是训练数据,其余的是测试。我将 ( quantregForest ) 中提供的示例修改为:
data <-  read.table("toy.txt", header = T)
n <- nrow(data)
indextrain <- 1:101
xtrain <- data[indextrain, 3:14]
xtest <- data[-indextrain, 3:14]
ytrain <- data[indextrain, 15]
ytest <- data[-indextrain, 15]

qrf <- quantregForest(x=xtrain, y=ytrain)
quant.newdata <- predict(qrf, newdata= xtest)

它有效!如果有人能解释为什么它以这种方式工作而不是另一种方式,我将不胜感激?

最佳答案

我有同样的问题。您可以尝试使用小技巧来均衡训练和测试集的类别。将第一行训练集绑定(bind)到测试集,然后将其删除。对于您的示例,它应该如下所示:

    xtest <- rbind(xtrain[1, ] , xtest)
xtest <- xtest[-1,]

关于r 随机森林错误 - 新数据中的预测变量类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com