5 releases
0.1.4 | Jul 30, 2023 |
---|---|
0.1.3 | Jul 29, 2023 |
0.1.2 | Jul 26, 2023 |
0.1.1 | Jul 26, 2023 |
0.1.0 | Jul 26, 2023 |
#738 in Science
23 downloads per month
Used in pcacsv
27KB
386 lines
Principal component analysis (PCA)
This is a rust library for performing principal component analysis (PCA). It supports:
- Fitting a PCA model on a data matrix
- Projecting data into the PCA space
- Specifying variance explained tolerance to reduce dimensionality
The implementation follows R's prcomp, and should provide equivalent results with minor differences due to numerical stability and the ambiguity of component sign. Tests confirm the correspondence. The PCA is obtained via SVD.
Usage
use pca::PCA;
use ndarray::array;
// Create PCA instance
let mut pca = PCA::new();
// Input data
let x = array![[1.0, 2.0],
[3.0, 4.0]];
// Fit PCA model
pca.fit(x.clone(), None).unwrap();
// Project data
let transformed = pca.transform(x).unwrap();
The fit()
method computes the PCA rotation matrix, mean and scaling factors. It takes the input data and an optional variance explained tolerance threshold, to remove PCs with low explanatory power.
The transform()
method applies the PCA rotation to project new data into the PCA space.
Installation
Use cargo add pca
to get the latest version.
Authors
Erik Garrison erik.garrison@gmail.com
License
This project is licensed under the MIT License - see the LICENSE file for details.
Dependencies
~66MB
~852K SLoC