R培训和测试集

时间:2015-10-28 02:40:16

标签: r

所以我需要一些我在R中创建的训练和测试集的帮助。代码的目标是将数据集分成一定量k,以及测试集的折叠次数将是i。然后它将返回训练和测试集。我们假设k510

这是我到目前为止所做的。

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只是xy的随机数据框。那就是:

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”缺失,没有默认值

2 个答案:

答案 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,]