【发布时间】:2012-05-11 02:29:07
【问题描述】:
我已经开始使用 10 折交叉验证为人工数据集创建一些训练和测试集:
rows <- 1000
X1<- sort(runif(n = rows, min = -1, max =1))
occ.prob <- 1/(1+exp(-(0.0 + 3.0*X1)))
true.presence <- rbinom(n = rows, size = 1, prob = occ.prob)
# combine data as data frame and save
data <- data.frame(X1, true.presence)
id <- sample(1:10,nrow(data),replace=TRUE)
ListX <- split(data,id)
fold1 <- data[id==1,]
fold2 <- data[id==2,]
fold3 <- data[id==3,]
fold4 <- data[id==4,]
fold5 <- data[id==5,]
fold6 <- data[id==6,]
fold7 <- data[id==7,]
fold8 <- data[id==8,]
fold9 <- data[id==9,]
fold10 <- data[id==10,]
trainingset <- subset(data, id %in% c(2,3,4,5,6,7,8,9,10))
testset <- subset(data, id %in% c(1))
我只是想知道是否有更简单的方法来实现这一点,以及如何执行分层交叉验证以确保类先验 (true.presence) 在所有折叠中大致相同?
【问题讨论】:
-
您可能会发现使用一些预先构建的函数更容易,例如 ipred 包中的
errorest。 -
谢谢我遇到了这个但不知道如何使用它。如果你能这么好心并写一个答案,我会接受的。请注意,我不想使用公式和模型等。我只想拆分(即创建 10 个训练/测试集)。谢谢。
-
如果您只想要折叠,ipred 可能不会有太大帮助。我确信一定有一个包可以在某处执行此操作,但我已经包含了一些代码的答案,以便您同时开始。
标签: r