【问题标题】:Cross-validation: extracting the model values out per row?交叉验证:每行提取模型值?
【发布时间】:2016-11-03 12:09:08
【问题描述】:

我正在使用 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,而不是汇总的训练集?

【问题讨论】:

  • 不要使用caret,而是查看trainControl 及其savePredictions 参数。试试savePredictions="final"

标签: r r-caret cross-validation


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 2014-02-18
    • 2013-12-08
    • 2016-05-26
    • 2020-03-26
    • 2015-12-22
    • 2015-05-01
    • 2017-01-27
    • 2021-06-09
    相关资源
    最近更新 更多