交叉验证:每行提取模型值?
Cross-validation: extracting the model values out per row?
我正在使用留一法交叉验证进行练习,想知道是否可以从每个验证步骤中提取单独的测试统计数据。
如果我对LOOCV的理解是正确的,应该是这样的:
我对每个最终结果的预测很感兴趣。我的方法是这样的(以 Iris 数据集为例):
attach(iris)
library(caret)
train_iris <- train(
iris$Petal.Width ~ .
, method="rf"
, data=iris
, trControl = trainControl(method="LOOCV")
)
print(train_iris)
输出分别为我提供 0.1784474 0.9448437
的 RMSE 和 Rsquared。如果我的理解是正确的,这些就是交叉验证的聚合值。有什么方法可以提取每次 cv 迭代的 RMSE 和 Rsquared 而不是汇总的训练集?
为了扩展爱巢的回应,如果我使用 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
我正在使用留一法交叉验证进行练习,想知道是否可以从每个验证步骤中提取单独的测试统计数据。
如果我对LOOCV的理解是正确的,应该是这样的:
我对每个最终结果的预测很感兴趣。我的方法是这样的(以 Iris 数据集为例):
attach(iris)
library(caret)
train_iris <- train(
iris$Petal.Width ~ .
, method="rf"
, data=iris
, trControl = trainControl(method="LOOCV")
)
print(train_iris)
输出分别为我提供 0.1784474 0.9448437
的 RMSE 和 Rsquared。如果我的理解是正确的,这些就是交叉验证的聚合值。有什么方法可以提取每次 cv 迭代的 RMSE 和 Rsquared 而不是汇总的训练集?
为了扩展爱巢的回应,如果我使用 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