16 KFold(gsl::index nrows, gsl::index kfoldnumber):
Splitter(nrows,kfoldnumber){}
21 std::vector <gsl::index> idx(nrows);
22 std::iota(idx.begin(), idx.end(), 0);
25 std::vector <gsl::index> testidx(foldSize), trainidx;
27 testidx.resize(nrows - i * foldSize);
29 fmt::print(
"Current Index is {:}, trainidx size:{:}, testidx size:{:}\n",
30 i, nrows - foldSize, foldSize);
31 std::iota(testidx.begin(), testidx.end(), i * foldSize);
32 std::set_difference(idx.begin(), idx.end(), testidx.begin(), testidx.end(),
33 std::inserter(trainidx, trainidx.begin()));
63 std::vector <std::tuple<std::vector < gsl::index>, std::vector<gsl::index>> > &
68 std::vector <std::tuple<std::vector < gsl::index>, std::vector<gsl::index>> >
152 std::vector <gsl::index> idx(nrows);
153 std::iota(idx.begin(), idx.end(), 0);
157 #pragma omp parallel for
159 std::vector <gsl::index> testidx(foldSize), trainidx;
161 testidx.resize(nrows - i * foldSize);
164 "Current Index is {:}, the current thread num is {:}, total number of threads {:}. trainidx size:{:}, testidx size:{:}\n",
165 i, omp_get_thread_num(), omp_get_num_threads(), nrows - foldSize, foldSize);
166 std::iota(testidx.begin(), testidx.end(), i * foldSize);
167 std::set_difference(idx.begin(), idx.end(), testidx.begin(), testidx.end(),
168 std::inserter(trainidx, trainidx.begin()));
172 std::vector <std::tuple<std::vector < gsl::index>, std::vector<gsl::index>> > &
GetSplit() {
return split_batch; }
175 std::vector <std::tuple<std::vector < gsl::index>, std::vector<gsl::index>> >
split_batch;
181 #endif //COSAN_KFOLD_H