我用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参数的选项以选择所需的内容。