From f6a5807fdd4194dab37bfefd3c021f1513b3eb8a Mon Sep 17 00:00:00 2001 From: Ethan Smith-Coss Date: Fri, 30 May 2025 23:48:57 +0100 Subject: [PATCH] README.md Added README.md --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..342f963 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# Principal Component Analysis in C + +The committed files are a fully functioning implementation of the Karhunen–Loève +transform (KLT) as defined on Wikipedia, and verified using multiple languages - +Python, R and MATLAB. Note. It may be common for libraries to call this algorithm +'covariance', 'eig' or similar to distinguish from the SVD alogrithm or +otherwise. The algorithm aims to solve the following system of linear +expressions: + +$$ +\mathbf{Y} = \mathbb{KLT}\{\mathbf{X}\}, +C = \frac{1}{n-1}\mathbf{X}*\mathbf{X}, +\mathbf{V}^{-1}\matbf{C}\mathbf{V} = \mathbf{D}, +\mathit{W} \subset \mathit{V}, +T = \mathbf{B} \cdot \mathbf{W}. +$$ + +The initial dataset $\mathbf{X}$ is reduced in dimensionality by matrix +$\mathit{W}$ which is a subset of eigenvectors, explicitly or intuitively +selected. Matrix $\mathbf{T}$ is the newly reduced data with an explained +variance ratio $\lt1.0$, though typically very high. + +The source code is built entirely on the GNU GSL (2.7) library, to +utilise BLAS optimised functionality.