【发布时间】:2020-02-05 13:24:48
【问题描述】:
我想将我的数据集分成 30 折。所以我使用了 R. I set.seed 中 caret 包中的 createFolds 函数来获得可重现的结果。
现在,我想要 20 个不同的随机样本。换句话说,20 种不同的 30 折。因此,我需要将set.seed 更改20 次。
有没有办法让这更容易。
wdbcc=as.data.frame(scale(wdbc))
set.seed(12345)
k = 30
folds <- createFolds(wdbcc$PE, k = k, list = TRUE, returnTrain = TRUE)
注意
wdbcc 是我的数据集,k 是折叠数,PE 是因变量。
EDIT1
下面我将给出一个我想要的简单示例
首先我会使用下面的set.seed
wdbcc=as.data.frame(scale(wdbc))
set.seed(12345)
k = 30
folds <- createFolds(wdbcc$PE, k = k, list = TRUE, returnTrain = TRUE)
然后,我将在折叠拆分为
上构建模型 lm = list()
for (i in 1:k) {
lm[[i]] = lm(PE~ ., data = wdbcc[folds[[i]],])
}
然后,我将使用相同的想法,但将 set.seed 更改为 (123456) 而不是 (12345),并在此基础上构建模型。
我需要用不同的 set.seed 做 20 次。每次在不同的 set.seed 上构建模型。
EDIT2
简单地说,如果我有 30 个折叠,我将在这 30 个折叠上建立线性回归,因此我将有 30 个模型结果。我需要有相同的过程,但有不同的 30 折(20 次,每 20 次我有不同的 30 折)所以,我将在 30 次不同的折叠上构建 20 次的模型。
【问题讨论】:
-
您能否添加最小的可重现示例?此外:
createFolds()函数从何而来?据我所知,它不是 Base R。 -
@Georgery,我编辑了这个问题。
标签: r cross-validation