所以我需要一些我在R中创建的训练和测试集的帮助。代码的目标是将数据集分成一定量k
,以及测试集的折叠次数将是i
。然后它将返回训练和测试集。我们假设k
为5
或10
。
这是我到目前为止所做的。
create_sets<-function(df,k,i)
{
n<-dim(df)[1]
#fold size
size<-n/k
#beggining of test set
test_start<-(size*i)-(size)+1
#end of test set
test_end<-size*i
indices<-df(test_start,test_end)
train<-df[indices,]
test<-df[-indices,]
return (list(train=train,test=test))
}
df
只是x
和y
的随机数据框。那就是:
x<-c(1,6,7,4,3,5,7,8,9,8,7,6,5,4,3,4,5,3,2,1)
y<-c(3,5,6,7,5,4,3,5,7,8,9,0,2,3,4,5,6,7,5,6)
df<-data.frame(x,y)
当我运行代码时,我返回错误
df(test_start,test_end)出错:
参数“df2”缺失,没有默认值
答案 0 :(得分:0)
这就是我接近它的方式:
n <- nrow(df)
k <- 5
set.seed(10272015)
s <- sample(1:k, n, replace=TRUE)
result <- rep(NA, k)
for (i in 1:k) {
train <- df[s!=i, ]
test <- df[s==i,]
# fit model
# evaluate
# result[i] <- evalscore
}
mean(result)
答案 1 :(得分:0)
我认为你只需要一个不同子集的索引,如下所示:
k <- 5
folds <- sample(rep(1:k,length=nrow(df)))
然后,你可以得到任何一个k子集(例如1):
df[folds==1,]