Types of Numeric Tables#
Heterogeneous Numeric Tables#
Heterogeneous numeric tables enable you to deal with data structures that are of different data types by nature. oneDAL provides two ways to represent non-homogeneous numeric tables: AOS and SOA.
AOS Numeric Table#
AOS Numeric Table provides access to observations (feature vectors) that are laid out in a contiguous memory block:
Array-Of-Structures (AOS) Memory Layout#
Examples#
C++: uxlfoundation/oneDAL
SOA Numeric Table#
SOA Numeric Table provides access to data sets where observations for each feature are laid out contiguously in memory:
Structure-Of-Arrays (SOA) Memory Layout#
Examples#
C++: uxlfoundation/oneDAL
Homogeneous Numeric Tables#
Use homogeneous numeric tables, that is, objects of the
HomogenNumericTable class when all the features are of the same basic data type.
Values of the features are laid out in memory as one contiguous block in
row-major order, where rows correspond to Observation 1, Observation 2, and so on.
CSR Numeric Table#
oneDAL offers the CSRNumericTable class for a special version
of a homogeneous numeric table that encodes sparse data, that is,
the data with a significant number of zero elements. The library
uses the Condensed Sparse Row (CSR) format for encoding:
Condensed Sparse Row (CSR) 0-Based Encoding#
Condensed Sparse Row (CSR) 1-Based Encoding#
Three arrays describe the sparse matrix M as follows:
The array values contains non-zero elements of the matrix row-by-row.
The j-th element of the array columns encodes the column index in the matrix M for the j-th element of the array values.
The i-th element of the array rowIndex encodes the index in the array values corresponding to the first non-zero element in rows indexed i or greater. The last element in the array rowIndex encodes the number of non-zero elements in the matrix M.
The library supports 1-based CSR encoding only. In C++ you can
specify it by providingoneBased value through the indexing parameter
of type CSRIndexing in the constructor of CSRNumericTable.
Examples#
C++: uxlfoundation/oneDAL
Merged Numeric Table#
oneDAL offers the MergedNumericTable class for tables that
provides access to data sets comprising several logical components,
such as a set of feature vectors and corresponding labels. This type
of tables enables you to read those data components from one data
source. This special type of numeric tables can hold several numeric
tables of any type but CSRNumericTable. In a merged numeric table,
arrays are joined by columns and therefore can have different numbers
of columns. In the case of different numbers of rows in input
matrices, the number of rows in a merged table equals \(min(r_1, r_2, \ldots, r_m)\),
where \(r_i\) is the number of
rows in the i-th matrix, \(i = 1, 2, 3, \ldots, m\).
Merged Numeric Table#
Examples#
C++: uxlfoundation/oneDAL