Txeo v0.1
A Developer-Friendly TensorFlow C++ Wrapper
Loading...
Searching...
No Matches
DataTable.h
Go to the documentation of this file.
1#ifndef DATATABLE_H
2#define DATATABLE_H
3#pragma once
4
5#include "txeo/Matrix.h"
6
7#include <cstddef>
8#include <stdexcept>
9#include <vector>
10
11namespace txeo {
12
23template <typename T>
24class DataTable {
25 public:
26 ~DataTable() = default;
27
28 DataTable(const DataTable &) = default;
29 DataTable(DataTable &&) = default;
30 DataTable &operator=(const DataTable &) = default;
32
53 DataTable(txeo::Matrix<T> &&data, std::vector<size_t> x_cols, std::vector<size_t> y_cols);
54
55 DataTable(const txeo::Matrix<T> &data, std::vector<size_t> x_cols, std::vector<size_t> y_cols)
56 : DataTable{std::move(data.clone()), x_cols, y_cols} {};
57
78 DataTable(txeo::Matrix<T> &&data, std::vector<size_t> y_cols);
79
80 DataTable(const txeo::Matrix<T> &data, std::vector<size_t> y_cols)
81 : DataTable{std::move(data.clone()), y_cols} {};
82
105 DataTable(txeo::Matrix<T> &&data, std::vector<size_t> x_cols, std::vector<size_t> y_cols,
106 size_t eval_percent);
107
108 DataTable(const txeo::Matrix<T> &data, std::vector<size_t> x_cols, std::vector<size_t> y_cols,
109 size_t eval_percent)
110 : DataTable{std::move(data.clone()), x_cols, y_cols, eval_percent} {};
111
134 DataTable(txeo::Matrix<T> &&data, std::vector<size_t> y_cols, size_t eval_percent);
135
136 DataTable(const txeo::Matrix<T> &data, std::vector<size_t> y_cols, size_t eval_percent)
137 : DataTable{std::move(data.clone()), y_cols, eval_percent} {};
138
162 DataTable(txeo::Matrix<T> &&data, std::vector<size_t> x_cols, std::vector<size_t> y_cols,
163 size_t eval_percent, size_t eval_test);
164
165 DataTable(const txeo::Matrix<T> &data, std::vector<size_t> x_cols, std::vector<size_t> y_cols,
166 size_t eval_percent, size_t eval_test)
167 : DataTable{std::move(data.clone()), x_cols, y_cols, eval_percent, eval_test} {};
168
192 DataTable(txeo::Matrix<T> &&data, std::vector<size_t> y_cols, size_t eval_percent,
193 size_t eval_test);
194
195 DataTable(const txeo::Matrix<T> &data, std::vector<size_t> y_cols, size_t eval_percent,
196 size_t eval_test)
197 : DataTable<T>{std::move(data.clone()), y_cols, eval_percent, eval_test} {};
198
224
228 : DataTable<T>{std::move(x_train.clone()), std::move(y_train.clone()),
229 std::move(x_eval.clone()), std::move(y_eval.clone()),
230 std::move(x_test.clone()), std::move(y_test.clone())} {};
231
253
258
278
281
287 const txeo::Matrix<T> &x_train() const { return _x_train; }
288
294 const txeo::Matrix<T> &y_train() const { return _y_train; }
295
301 const txeo::Matrix<T> *x_eval() const;
302
308 const txeo::Matrix<T> *y_eval() const;
309
315 const txeo::Matrix<T> *x_test() const;
316
322 const txeo::Matrix<T> *y_test() const;
323
329 [[nodiscard]] size_t x_dim() const;
330
336 [[nodiscard]] size_t y_dim() const;
337
343 [[nodiscard]] size_t row_size() const;
344
345 [[nodiscard]] bool has_eval() const { return _has_eval; }
346
347 [[nodiscard]] bool has_test() const { return _has_test; }
348
350
351 private:
352 DataTable() = default;
353
354 txeo::Matrix<T> _x_train;
355 txeo::Matrix<T> _y_train;
356 txeo::Matrix<T> _x_eval;
357 txeo::Matrix<T> _y_eval;
358 txeo::Matrix<T> _x_test;
359 txeo::Matrix<T> _y_test;
360 bool _has_eval = false;
361 bool _has_test = false;
362};
363
364class DataTableError : public std::runtime_error {
365 public:
366 using std::runtime_error::runtime_error;
367};
368
369} // namespace txeo
370
371#endif
A container for managing training, evaluation, and test data splits.
Definition DataTable.h:24
DataTable(DataTable &&)=default
DataTable(const txeo::Matrix< T > &data, std::vector< size_t > x_cols, std::vector< size_t > y_cols, size_t eval_percent, size_t eval_test)
Definition DataTable.h:165
const txeo::Matrix< T > * y_test() const
Returns a pointer to test output matrix.
DataTable(const txeo::Matrix< T > &data, std::vector< size_t > y_cols)
Definition DataTable.h:80
size_t y_dim() const
Returns the number of output columns.
bool has_test() const
Definition DataTable.h:347
DataTable & operator=(const DataTable &)=default
DataTable(const txeo::Matrix< T > &x_train, const txeo::Matrix< T > &y_train, const txeo::Matrix< T > &x_eval, const txeo::Matrix< T > &y_eval, const txeo::Matrix< T > &x_test, const txeo::Matrix< T > &y_test)
Definition DataTable.h:225
size_t x_dim() const
Returns the number of input columns.
DataTable(const DataTable &)=default
DataTable(const txeo::Matrix< T > &data, std::vector< size_t > y_cols, size_t eval_percent)
Definition DataTable.h:136
const txeo::Matrix< T > * x_eval() const
Returns a pointer to evaluation input matrix.
const txeo::Matrix< T > & x_train() const
Returns training inputs matrix.
Definition DataTable.h:287
DataTable(txeo::Matrix< T > &&data, std::vector< size_t > y_cols, size_t eval_percent, size_t eval_test)
Construct a DataTable with specified label columns and evaluation/test split percentages....
DataTable(txeo::Matrix< T > &&x_train, txeo::Matrix< T > &&y_train, txeo::Matrix< T > &&x_eval, txeo::Matrix< T > &&y_eval, txeo::Matrix< T > &&x_test, txeo::Matrix< T > &&y_test)
DataTable(txeo::Matrix< T > &&data, std::vector< size_t > y_cols)
Construct a DataTable with specified label columns. All the remaining columns are considered features...
DataTable & operator=(DataTable &&)=default
DataTable(const txeo::Matrix< T > &data, std::vector< size_t > x_cols, std::vector< size_t > y_cols)
Definition DataTable.h:55
const txeo::Matrix< T > & y_train() const
Returns training outputs matrix.
Definition DataTable.h:294
DataTable(txeo::Matrix< T > &&x_train, txeo::Matrix< T > &&y_train, txeo::Matrix< T > &&x_eval, txeo::Matrix< T > &&y_eval)
DataTable(const txeo::Matrix< T > &data, std::vector< size_t > y_cols, size_t eval_percent, size_t eval_test)
Definition DataTable.h:195
const txeo::Matrix< T > * x_test() const
Returns a pointer to test input matrix.
DataTable(const txeo::Matrix< T > &x_train, const txeo::Matrix< T > &y_train)
Definition DataTable.h:279
DataTable(const txeo::Matrix< T > &data, std::vector< size_t > x_cols, std::vector< size_t > y_cols, size_t eval_percent)
Definition DataTable.h:108
size_t row_size() const
Returns the number of training rows.
DataTable(const txeo::Matrix< T > &x_train, const txeo::Matrix< T > &y_train, const txeo::Matrix< T > &x_eval, const txeo::Matrix< T > &y_eval)
Definition DataTable.h:254
DataTable(txeo::Matrix< T > &&data, std::vector< size_t > x_cols, std::vector< size_t > y_cols)
Construct a DataTable with specified feature/label columns.
~DataTable()=default
const txeo::Matrix< T > * y_eval() const
Returns a pointer to evaluation output matrix.
DataTable(txeo::Matrix< T > &&x_train, txeo::Matrix< T > &&y_train)
DataTable(txeo::Matrix< T > &&data, std::vector< size_t > x_cols, std::vector< size_t > y_cols, size_t eval_percent, size_t eval_test)
Construct a DataTable with specified feature/label columns and evaluation/test split percentages.
DataTable< T > clone() const
DataTable(txeo::Matrix< T > &&data, std::vector< size_t > y_cols, size_t eval_percent)
Construct a DataTable with specified label columns and evaluation split percentage....
bool has_eval() const
Definition DataTable.h:345
DataTable(txeo::Matrix< T > &&data, std::vector< size_t > x_cols, std::vector< size_t > y_cols, size_t eval_percent)
Construct a DataTable with specified feature/label columns and evaluation split percentage.