Cosan  1.0
Data Analytics Library
Cosan::KFold Class Reference

#include <kfold.h>

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

Public Member Functions

 KFold ()
 
 KFold (gsl::index kfoldnumber)
 
 KFold (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

Constructor & Destructor Documentation

◆ KFold() [1/3]

Cosan::KFold::KFold ( )
inline

Definition at line 14 of file kfold.h.

14 : Splitter() {}

◆ KFold() [2/3]

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

Definition at line 15 of file kfold.h.

15 : Splitter(kfoldnumber) {}

◆ KFold() [3/3]

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

Definition at line 16 of file kfold.h.

16 : Splitter(nrows,kfoldnumber){}

Member Function Documentation

◆ GetSplit()

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

Definition at line 65 of file kfold.h.

65 { return split_batch; }

◆ SetSplit()

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

Reimplemented from Cosan::Splitter.

Definition at line 17 of file kfold.h.

17  {
18  if (nrows <= KFoldNumber) {
19  throw SmallRows;
20  }
21  std::vector <gsl::index> idx(nrows);
22  std::iota(idx.begin(), idx.end(), 0);
23  gsl::index foldSize = nrows / KFoldNumber;
24  for (gsl::index i = 0; i < KFoldNumber; i++) {
25  std::vector <gsl::index> testidx(foldSize), trainidx;
26  if (i == KFoldNumber - 1) {
27  testidx.resize(nrows - i * foldSize);
28  }
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()));
34 
35  split_batch.push_back({trainidx, testidx});
36 
37  }
38  }

Member Data Documentation

◆ split_batch

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

Definition at line 69 of file kfold.h.


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