【问题标题】:Is there a trainControl method of just a e.g. 90% and 10% split rather than cv?是否有一个 trainControl 方法,例如90% 和 10% 分开而不是 cv?
【发布时间】:2019-07-08 22:10:30
【问题描述】:

我正在阅读插入符号文档here

我过去曾使用方法 cv 进行交叉验证,但在这种情况下,我想使用 90% 训练和 10% 保持测试的简单拆分。

我想我可以做 folds = 1 但想知道在插入符号中是否有规定的方法?

在文档中,可用于 trainControl() 中的方法的参数如下:

重采样方式:boot、boot632、cv、repeatcv、LOOCV、LGOCV (对于重复的训练/测试拆分),无(仅适合一个模型 整个训练集),oob(仅适用于随机森林、袋装树、 袋装土、袋装灵活判别分析或条件 树森林模型)、“adaptive_cv”、“adaptive_boot”或 "adaptive_LGOCV"

但我不确定这些是什么意思。也许其中之一就是我需要的?

【问题讨论】:

    标签: r r-caret


    【解决方案1】:

    一种解决方案是在caret 之外创建训练/测试拆分,并使用trainControlindex 参数使caret 使用这些数据分区。

    这需要一个火车索引向量列表。 使用caret::createDataPartition() 函数可以轻松创建这样的对象。

    library(caret)
    library(MASS)
    
    set.seed(1234)
    
    # create four 50/50 partitions
    parts <- createDataPartition(Boston$medv, times = 4, p = 0.5)
    
    ctrl <- trainControl(method = "repeatedcv", 
                         ## The method doesn't matter
                         ## since we are defining the resamples
                         index= parts, 
                         savePredictions = TRUE
                         ) 
    res <- train(medv ~ indus + chas, data = Boston, method = "lm",
                 trControl = ctrl)
    
    res
    

    请注意,createDataPartition 创建了按结果变量分层的拆分。 我最终创建了自己的数据分区函数来创建真正的随机分区。这是出于教学目的。我的印象是,对结果进行分层抽样实际上总是比随机抽样更可取。

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2021-02-15
      相关资源
      最近更新 更多