【发布时间】:2019-07-18 10:59:34
【问题描述】:
我已经根据这里How to split a data set to do 10-fold cross validation using no packages进行了无包的k-fold交叉验证
我需要从训练数据的每一折中选择 30% 的样本。这是我的功能:
samples = 300
r = 0.83
library('MASS')
df = data.frame(mvrnorm(n=samples, mu=c(0, 0), Sigma=matrix(c(1, r, r, 1), nrow=2), empirical=TRUE))
w = df[sample(nrow(df)),]
w = data.frame(w)
kcv = 10
folds <- cut(seq(from = 1,to = nrow(w)),breaks=kcv,labels=FALSE)
kfolddata<-cbind(w,folds)
for(i in 1:kcv){ #i=1
testIndexes <- which(kfolddata[,ncol(kfolddata)]==i,arr.ind=TRUE)
testData <- w[testIndexes, ]
trainData <- w[-testIndexes, ]
trainIndexes <- kfolddata[-testIndexes,]
if(i==1) {
set.seed=1234
SubInd = sample(nrow(trainData) , size = round(0.3 *
(nrow(trainData))),replace=F)
} else {
SubInd = rbind(SubInd,sample(nrow(trainData) , size = round(0.3 *
nrow(trainData))),replace=F))}}
}
}
结果将仅显示所选子集的 ID。如何获取 SubInt 的所选 ID 的信息(变量)?
使用rbind 是正确的方法吗?因为我需要从 SubInt 进行另一个循环。
【问题讨论】:
-
而不是
nrow(trainData),如果你有trainIndexes,然后在最后使用w[SubInd, ]。如果你有一个合适的例子,那么给出更好的答案会更容易。 -
@suren 我确实有 trainindex。让我编辑我的帖子