我正在为练习使用Leave-One-Out交叉验证,并且想知道是否可以从每个验证步骤中提取单独的测试统计数据。
如果我对LOOCV的理解是对的,那应该是这样的:
我对每个最终结果的预测感兴趣。我的方法看起来像这样(以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是什么,而不是总结训练集?
答案 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