# template class xf::fintech::PCA¶

#include "pca.hpp"


## Overview¶

Class that will compute the Principal Component Analysis of some input data. Data is assumed to be a set of at most MAX_VARS variables in the rows and at most MAX_OBS observations in the columns.

Parameters:

 DT The data type to be used N The number of components to select from the PCA . NCU Number of computational units to improve parallelism MAX_VARS Maximum number of synthetisable rows. MAX_OBS Maximum number of synthetisable cols. IMPL_METHOD Choice of implementation method. By default it will use the covariance matrix.
template <
typename DT,
unsigned int N,
unsigned int NCU,
unsigned int MAX_VARS,
unsigned int MAX_OBS,
pcaImplementationMethod IMPL_METHOD = pcaImplementationMethod::Covariance
>
class PCA


## Methods¶

### PCA¶

PCA (
const unsigned int noVars,
const unsigned int noObs,
DT data [MAX_VARS][MAX_OBS]
)


Calculates the core Principal Component Analysis functionality from the provided matrix with the given method.

Parameters:

 noVars Number of variables (rows) in the matrix. noObs Number of observations (cols) in the matrix. data The matrix with the data to be analysed.

### getExplainedVariance¶

void getExplainedVariance (DT values [N])


Gets the N principal components’ variance of the input data.

Parameters:

 values Vector of N elements wide where the PCA values will be stored.

### getComponents¶

void getComponents (DT vectors [MAX_VARS][N])


Gets the N principal components of the input data.

Parameters:

 vectors Matrix of MAX_VARS x N elements wide where the principal components will be stored.

void getLoadingsMatrix (DT loadings [MAX_VARS][N])

$loadings = components^T * \sqrt{explainedVariance}$
 loadings Matrix of MAX_VARS x N elements where the PCA loadings will be stored.