从插入符号模型中收集折叠后的预测

时间:2012-06-29 19:19:45

标签: r cross-validation r-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 个答案:

答案 0 :(得分:6)

我将在输出中添加另一列,指示下一个版本中每个样本的原始行号(可能从现在起一个月)。

最高