交叉验证:每行提取模型值?

时间:2016-11-01 20:52:43

标签: r r-caret cross-validation

我正在为练习使用Leave-One-Out交叉验证,并且想知道是否可以从每个验证步骤中提取单独的测试统计数据。

如果我对LOOCV的理解是对的,那应该是这样的:

enter image description here

我对每个最终结果的预测感兴趣。我的方法看起来像这样(以Iris数据集为例):

attach(iris)

library(caret)

train_iris <- train(
  iris$Petal.Width ~ .
  , method="rf"
  , data=iris
  , trControl = trainControl(method="LOOCV")
)

print(train_iris)

输出分别为RMSE和Rsquared提供0.1784474 0.9448437。如果我的理解是正确的,那么这些是交叉验证中的聚合值。有没有办法提取每个cv迭代的RMSE和Rsquared是什么,而不是总结训练集?

1 个答案:

答案 0 :(得分:1)

要扩展aichao的回复,如果我使用savePredictions="final",那么iris_train$pred会告诉我我正在寻找的内容:

> head(train_iris$pred)
  mtry      pred obs rowIndex
1    2 0.2744045 0.3       20
2    2 0.4143063 0.3       19
3    2 0.3563173 0.2       21
4    2 0.2429914 0.4       17
5    2 0.2035579 0.2        4