我用caret在下面训练了rpart模型。

trainIndex <- createDataPartition(d$Happiness, p=.8, list=FALSE)
dtrain <- d[trainIndex, ]
dtest <- d[-trainIndex, ]
fitControl <- trainControl(## 10-fold CV
  method = "repeatedcv", number=10, repeats=10)
fitRpart <- train(Happiness ~ ., data=dtrain, method="rpart",
                trControl = fitControl)
testRpart <- predict(fitRpart, newdata=dtest)


dtest包含1296个观察值,因此我希望testRpart产生一个长度为1296的矢量。取而代之的是1077长(即219短)。

当我在dtest的前220行上运行预测时,得到的预测结果为1,因此始终为219短。

关于为什么这样的任何解释,以及如何使输入获得一致的输出,我该怎么做?

编辑:可以从here加载d以重现上述内容。

最佳答案

我下载了您的数据,并找到了解释差异的原因。

如果仅从数据集中删除缺失值,则输出的长度匹配:

testRpart <- predict(fitRpart, newdata = na.omit(dtest))


注意nrow(na.omit(dtest))是1103,而length(testRpart)是1103。因此,您需要一种策略来解决缺失的值。请参阅?predict.rpart和na.action参数的选项以选择所需的内容。

07-24 09:52