Cosan  1.0
Data Analytics Library
Cosan::KFoldParallel Class Reference

#include <kfold.h>

Inheritance diagram for Cosan::KFoldParallel:
Cosan::Splitter Cosan::Selection Cosan::CosanBO

Public Member Functions

 KFoldParallel ()
 
 KFoldParallel (gsl::index kfoldnumber)
 
 KFoldParallel (gsl::index nrows, gsl::index kfoldnumber)
 
void SetSplit (gsl::index nrows)
 
std::vector< std::tuple< std::vector< gsl::index >, std::vector< gsl::index > > > & GetSplit ()
 
- Public Member Functions inherited from Cosan::Splitter
 Splitter ()
 
 Splitter (gsl::index kfoldnumber)
 
 Splitter (gsl::index nrows, gsl::index kfoldnumber)
 
gsl::index GetKFoldNumber ()
 
- Public Member Functions inherited from Cosan::Selection
 Selection ()
 
- Public Member Functions inherited from Cosan::CosanBO
 CosanBO ()
 Default constructor. More...
 
virtual const std::string GetName () const
 Get the name of the objects. More...
 

Private Attributes

std::vector< std::tuple< std::vector< gsl::index >, std::vector< gsl::index > > > split_batch
 

Additional Inherited Members

- Protected Attributes inherited from Cosan::Splitter
gsl::index KFoldNumber = 5
 

Detailed Description

Definition at line 143 of file kfold.h.

Constructor & Destructor Documentation

◆ KFoldParallel() [1/3]

Cosan::KFoldParallel::KFoldParallel ( )
inline

Definition at line 145 of file kfold.h.

145 : Splitter() {}

◆ KFoldParallel() [2/3]

Cosan::KFoldParallel::KFoldParallel ( gsl::index  kfoldnumber)
inline

Definition at line 146 of file kfold.h.

146 : Splitter(kfoldnumber) {}

◆ KFoldParallel() [3/3]

Cosan::KFoldParallel::KFoldParallel ( gsl::index  nrows,
gsl::index  kfoldnumber 
)
inline

Definition at line 147 of file kfold.h.

147 : Splitter(nrows,kfoldnumber){}

Member Function Documentation

◆ GetSplit()

std::vector<std::tuple<std::vector < gsl::index>, std::vector<gsl::index> > >& Cosan::KFoldParallel::GetSplit ( )
inline

Definition at line 172 of file kfold.h.

172 { return split_batch; }

◆ SetSplit()

void Cosan::KFoldParallel::SetSplit ( gsl::index  nrows)
inlinevirtual

Reimplemented from Cosan::Splitter.

Definition at line 148 of file kfold.h.

148  {
149  if (nrows <= KFoldNumber) {
150  throw SmallRows;
151  }
152  std::vector <gsl::index> idx(nrows);
153  std::iota(idx.begin(), idx.end(), 0);
154  gsl::index foldSize = nrows / KFoldNumber;
155 // std::mutex mylock;
156  split_batch.resize(KFoldNumber);
157  #pragma omp parallel for
158  for (gsl::index i = 0; i < KFoldNumber; i++) {
159  std::vector <gsl::index> testidx(foldSize), trainidx;
160  if (i == KFoldNumber - 1) {
161  testidx.resize(nrows - i * foldSize);
162  }
163  fmt::print(
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()));
169  split_batch[i] = {trainidx, testidx};
170  }
171  }

Member Data Documentation

◆ split_batch

std::vector<std::tuple<std::vector < gsl::index>, std::vector<gsl::index> > > Cosan::KFoldParallel::split_batch
private

Definition at line 175 of file kfold.h.


The documentation for this class was generated from the following file:
Cosan::SmallRows
Cosan::TooSmallSizeException SmallRows
Cosan::KFoldParallel::split_batch
std::vector< std::tuple< std::vector< gsl::index >, std::vector< gsl::index > > > split_batch
Definition: kfold.h:175
Cosan::Splitter::Splitter
Splitter()
Definition: selection.h:33
Cosan::Splitter::KFoldNumber
gsl::index KFoldNumber
Definition: selection.h:49