首页 文章

createMultiFolds行为与插入符对象的重采样摘要之间是否存在差异?

提问于
浏览
1

我遇到了一个奇怪的问题,使用自定义折叠进行交叉验证 caret .

一个MWE(其中使用createMultiFolds并没有真正意义)

library(caret) #version 6.0-47
data(iris)

set.seed(1)    
train.idx <- createDataPartition(iris$Species, p = .75,
                                 list = FALSE,
                                 times = 1)

train_1 <- iris[train.idx, ]

#I create specific folds
set.seed(1)    
id_1 <- createMultiFolds(train_1$Species, k=10, times = 10)

# And use them in my cross validation
cvCtrl_2 <- trainControl(method = "repeatedcv",
                         index = id_1,
                         classProbs = TRUE)

trainX <- train_1[, names(train_1) != "Species"]

# I fit my model
set.seed(1111)
rfTune2 <- train(trainX, train_1$Species,
                 method = "rf",
                 trControl = cvCtrl_2)

rfTune2

我的模型摘要如下:

##Random Forest 
...
##Resampling: Cross-Validated (10 fold, repeated 1 times)

id_1 是100个索引向量的列表,重复10次交叉验证10次 . 我要求 trainControl 使用此列表进行重采样 .

那么为什么我的模型摘要定义了重新采样

(10折,重复1次)

length(rfTune2$control$index) 等于100,所以我假设我的模型使用所有折叠进行了正确的训练?

我应该在github上发布一个问题,还是我错过了有关trainControl如何工作的明显信息?

1 回答

  • 0

    trainControl 的默认值为

    number = ifelse(grepl("cv", method), 10, 25),
    repeats = ifelse(grepl("cv", method), 1, number)
    

    如果提供 index ,则代码不知道使用了哪种类型的重采样 . 您必须与 repeats 一起指定这些参数以使标签正确 .

相关问题