Cosan  1.0
Data Analytics Library
Cosan::RandomKFold Class Reference

#include <randomkfold.h>

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

Public Member Functions

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

Constructor & Destructor Documentation

◆ RandomKFold() [1/3]

Cosan::RandomKFold::RandomKFold ( )
inline

Definition at line 13 of file randomkfold.h.

13 : Splitter() {}

◆ RandomKFold() [2/3]

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

Definition at line 14 of file randomkfold.h.

14 : Splitter(kfoldnumber) {}

◆ RandomKFold() [3/3]

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

Definition at line 15 of file randomkfold.h.

15 : Splitter(nrows,kfoldnumber){}

Member Function Documentation

◆ GetSplit()

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

Definition at line 36 of file randomkfold.h.

36 {return split_batch;}

◆ SetSplit()

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

Reimplemented from Cosan::Splitter.

Definition at line 16 of file randomkfold.h.

16  {
17  if (nrows<=KFoldNumber){
18  throw SmallRows;
19  }
20  std::vector<gsl::index> idx(nrows);
21  std::iota(idx.begin(), idx.end(), 0);
22  gsl::index foldSize = nrows/KFoldNumber;
23  for (gsl::index i = 0;i<KFoldNumber;i++){
24  std::vector<gsl::index> testidx,trainidx;
25  std::sample(idx.begin(), idx.end(), std::back_inserter(testidx),
26  foldSize, std::mt19937{std::random_device{}()});
27  std::sort(testidx.begin(),testidx.end());
28  std::set_difference(idx.begin(), idx.end(), testidx.begin(), testidx.end(),
29  std::inserter(trainidx, trainidx.begin()));
30  fmt::print("Current Index is {:}, trainidx size:{:}, testidx size:{:}\n",
31  i,trainidx.size(),testidx.size());
32  split_batch.push_back({trainidx,testidx});
33  }
34  }

Member Data Documentation

◆ split_batch

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

Definition at line 38 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::RandomKFold::split_batch
std::vector< std::tuple< std::vector< gsl::index >, std::vector< gsl::index > > > split_batch
Definition: randomkfold.h:38