从caret模型中收集折叠外的预测结果

10

我想使用Caret模型的“折叠外”预测结果来训练第二阶段模型,该模型包括一些原始的预测变量。我可以按如下方式收集“折叠外”预测结果:

#Load Data
set.seed(1)
library(caret)
library(mlbench)
data(BostonHousing)

#Build Model (see ?train)
rpartFit <- train(medv ~ . + rm:lstat, data = BostonHousing, method="rpart",
               trControl=trainControl(method='cv', number=folds, 
                                        savePredictions=TRUE))

#Collect out-of-fold predictions
out_of_fold <- rpartFit$pred
bestCP <- rpartFit$bestTune[,'.cp']
out_of_fold <- out_of_fold[out_of_fold$.cp==bestCP,]

这很不错,但它们的顺序是错误的:

> all.equal(out_of_fold$obs, BostonHousing$medv)
[1] "Mean relative difference: 0.4521906"
我知道train对象返回一个列表,其中包含用于训练每个折叠的索引:
> str(rpartFit$control$index)
List of 10
 $ Fold01: int [1:457] 1 2 3 4 5 6 7 8 9 10 ...
 $ Fold02: int [1:454] 2 3 4 8 10 11 12 13 14 15 ...
 $ Fold03: int [1:457] 1 2 3 4 5 6 7 8 9 10 ...
 $ Fold04: int [1:455] 1 2 3 5 6 7 8 9 10 11 ...
 $ Fold05: int [1:455] 1 2 3 4 5 6 7 8 9 10 ...
 $ Fold06: int [1:455] 1 2 3 4 5 6 7 8 9 10 ...
 $ Fold07: int [1:457] 1 3 4 5 6 7 8 9 10 13 ...
 $ Fold08: int [1:455] 1 2 4 5 6 7 9 11 12 14 ...
 $ Fold09: int [1:455] 1 2 3 4 5 6 7 8 9 10 ...
 $ Fold10: int [1:454] 1 2 3 4 5 6 7 8 9 10 ...

我该如何利用这些信息,使得我的 out_of_fold 对象中的观测值与原始的 BostonHousing 数据集中的观测值顺序一致?

1个回答

6
在下一个版本(大概一个月后)中,我会给输出添加另一列,以指示每个样本的原始行号。
马克斯

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接