Cosan  1.0
Data Analytics Library
Cosan::RandomKFoldParallel Class Reference

#include <randomkfold.h>

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

Public Member Functions

 RandomKFoldParallel ()
 
 RandomKFoldParallel (gsl::index kfoldnumber)
 
 RandomKFoldParallel (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 43 of file randomkfold.h.

Constructor & Destructor Documentation

◆ RandomKFoldParallel() [1/3]

Cosan::RandomKFoldParallel::RandomKFoldParallel ( )
inline

Definition at line 45 of file randomkfold.h.

45 : Splitter() {}

◆ RandomKFoldParallel() [2/3]

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

Definition at line 46 of file randomkfold.h.

46 : Splitter(kfoldnumber) {}

◆ RandomKFoldParallel() [3/3]

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

Definition at line 47 of file randomkfold.h.

47 : Splitter(nrows,kfoldnumber){}

Member Function Documentation

◆ GetSplit()

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

Definition at line 73 of file randomkfold.h.

73 {return split_batch;}

◆ SetSplit()

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

Reimplemented from Cosan::Splitter.

Definition at line 48 of file randomkfold.h.

48  {
49  if (nrows<=KFoldNumber){
50  throw SmallRows;
51  }
52  std::vector<gsl::index> idx(nrows);
53  std::iota(idx.begin(), idx.end(), 0);
54  gsl::index foldSize = nrows/KFoldNumber;
55 // std::mutex mylock;
56  split_batch.resize(KFoldNumber);
57  #pragma omp parallel for
58  for (gsl::index i = 0;i<KFoldNumber;i++){
59  std::vector<gsl::index> testidx,trainidx;
60  std::sample(idx.begin(), idx.end(), std::back_inserter(testidx),
61  foldSize, std::mt19937{std::random_device{}()});
62  std::sort(testidx.begin(),testidx.end());
63  std::set_difference(idx.begin(), idx.end(), testidx.begin(), testidx.end(),
64  std::inserter(trainidx, trainidx.begin()));
65  fmt::print("Current Index is {:}, the current thread num is {:}, total number of threads {:}. trainidx size:{:}, testidx size:{:}\n",
66  i, omp_get_thread_num(),omp_get_num_threads(),trainidx.size(),testidx.size());
67 // mylock.lock();
68  split_batch[i] = {trainidx,testidx};
69 // mylock.unlock();
70  }
71  }

Member Data Documentation

◆ split_batch

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

Definition at line 75 of file randomkfold.h.


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