Cosan  1.0
Data Analytics Library
Cosan::TimeSeriesSplitParallel Class Reference

#include <timeseriessplit.h>

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

Public Member Functions

 TimeSeriesSplitParallel ()
 
 TimeSeriesSplitParallel (gsl::index kfoldnumber)
 
 TimeSeriesSplitParallel (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 45 of file timeseriessplit.h.

Constructor & Destructor Documentation

◆ TimeSeriesSplitParallel() [1/3]

Cosan::TimeSeriesSplitParallel::TimeSeriesSplitParallel ( )
inline

Definition at line 48 of file timeseriessplit.h.

48 : Splitter() {}

◆ TimeSeriesSplitParallel() [2/3]

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

Definition at line 49 of file timeseriessplit.h.

49 : Splitter(kfoldnumber) {}

◆ TimeSeriesSplitParallel() [3/3]

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

Definition at line 50 of file timeseriessplit.h.

50 : Splitter(nrows,kfoldnumber){}

Member Function Documentation

◆ GetSplit()

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

Definition at line 80 of file timeseriessplit.h.

80 {return split_batch;}

◆ SetSplit()

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

Reimplemented from Cosan::Splitter.

Definition at line 53 of file timeseriessplit.h.

53  {
54  if (nrows <= KFoldNumber) {
55  throw SmallRows;
56  }
57  std::vector <gsl::index> idx(nrows);
58  std::iota(idx.begin(), idx.end(), 0);
59  gsl::index foldSize = nrows/(KFoldNumber+1);
60 // std::mutex mylock;
61  fmt::print("*********************************\n");
62  fmt::print("Begin Time Series Splitting in Parallel!!\n");
63  split_batch.resize(KFoldNumber);
64  #pragma omp parallel for
65  for (gsl::index i = 1; i<=KFoldNumber;i++){
66 // std::vector<gsl::index> trainidx = std::vector<gsl::index>(idx.begin(), idx.begin()+foldSize*i+nrows%(kfoldnumber+1));
67 // std::vector<gsl::index> testidx = std::vector<gsl::index>(idx.begin()+foldSize*i+nrows%(kfoldnumber+1), idx.begin()+foldSize*(1+i)+nrows%(kfoldnumber+1));
68 // split_batch.push_back({trainidx,testidx});
69 // mylock.lock();
70  fmt::print("Current Index is {:}, the current thread num is {:}, total number of threads {:}. trainidx size:{:}, testidx size:{:}\n",
71  i-1, omp_get_thread_num(),omp_get_num_threads(),foldSize*i+nrows%(KFoldNumber+1),foldSize);
72  split_batch[i-1]={ std::vector<gsl::index>(idx.begin(), idx.begin()+foldSize*i+nrows%(KFoldNumber+1)),
73  std::vector<gsl::index>(idx.begin()+foldSize*i+nrows%(KFoldNumber+1), idx.begin()+foldSize*(1+i)+nrows%(KFoldNumber+1))};
74 // mylock.unlock();
75  }
76 
77  fmt::print("End Time Series Splitting in Parallel!!\n");
78  fmt::print("*********************************\n");
79  }

Member Data Documentation

◆ split_batch

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

Definition at line 82 of file timeseriessplit.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::TimeSeriesSplitParallel::split_batch
std::vector< std::tuple< std::vector< gsl::index >, std::vector< gsl::index > > > split_batch
Definition: timeseriessplit.h:82