ともにゃん的データ分析ブログ

勉強したことの備忘録とかね

【R】交差検証用に検証用データのインデックスをリストで返す関数

交差検証を実施する際、データセットをn分割する必要があります。
そしてそれぞれが1回だけ検証用データとして扱われます。
以下の関数は、検証用データのインデックスをn個リストとして返す関数です。

dataが使用するデータセット、cv_nがn-fold Cross Validationをするときのnを意味しています。

create_cv_test_index <- function(data, cv_n=5){
  idx <- seq(1, nrow(data))
  n <- round(nrow(data)/cv_n)
  cv_idx_list <- list()
  for(i in 1:cv_n){
    if(i != cv_n){
      cv_idx_tmp <- sample(idx, size=n, replace=FALSE)
      cv_idx_list[[i]] <- cv_idx_tmp
      idx <- idx[!(idx %in% cv_idx_tmp)]
    } else {
      cv_idx_list[[i]] <- sample(idx, size=length(idx), replace=FALSE)
    }
  }
  return(cv_idx_list)
}