Skip to main content

solow_decomposition/
lib.rs

1//! # solow-decomposition
2//!
3//! Matrix-decomposition estimators complementing [`solow-multivariate`]'s
4//! classical PCA / factor / rotation surface.
5//!
6//! * [`KernelPca`] — Schölkopf-Smola-Müller (1998) kernel PCA with
7//!   `Linear`, `Rbf`, and `Polynomial` kernels; centering in feature
8//!   space matches the reference `KernelPCA(fit_inverse_transform=False)`.
9//! * [`FastIca`] — Hyvärinen (1999) FastICA with the `logcosh` and
10//!   `exp` nonlinearities and symmetric decorrelation.
11//! * [`Nmf`] — Lee-Seung (2001) multiplicative-update non-negative
12//!   matrix factorisation for the Frobenius objective.
13//!
14//! All three consume a dense `n × d` matrix and produce an `n × k`
15//! projection (KernelPCA, FastICA) or a `n × k` × `k × d`
16//! factorisation (NMF). Deterministic under a caller-supplied seed.
17
18#![forbid(unsafe_code)]
19#![warn(missing_docs)]
20
21pub mod dictionary_learning;
22pub mod ica;
23pub mod incremental_pca;
24pub mod kernel_pca;
25pub mod lda;
26pub mod minibatch_dict;
27pub mod minibatch_nmf;
28pub mod nmf;
29pub mod random_projection;
30pub mod sparse_pca;
31pub mod truncated_svd;
32
33pub use dictionary_learning::DictionaryLearning;
34pub use ica::{FastIca, IcaFun};
35pub use incremental_pca::IncrementalPCA;
36pub use kernel_pca::{KernelKind, KernelPca};
37pub use lda::LatentDirichletAllocation;
38pub use minibatch_dict::MiniBatchDictionaryLearning;
39pub use minibatch_nmf::MiniBatchNmf;
40pub use nmf::Nmf;
41pub use random_projection::{
42    johnson_lindenstrauss_min_dim, GaussianRandomProjection, SparseRandomProjection,
43};
44pub use sparse_pca::SparsePCA;
45pub use truncated_svd::TruncatedSVD;
46
47/// Commonly-used imports.
48pub mod prelude {
49    pub use crate::dictionary_learning::DictionaryLearning;
50    pub use crate::ica::{FastIca, IcaFun};
51    pub use crate::incremental_pca::IncrementalPCA;
52    pub use crate::kernel_pca::{KernelKind, KernelPca};
53    pub use crate::lda::LatentDirichletAllocation;
54    pub use crate::minibatch_dict::MiniBatchDictionaryLearning;
55    pub use crate::minibatch_nmf::MiniBatchNmf;
56    pub use crate::nmf::Nmf;
57    pub use crate::random_projection::{
58        johnson_lindenstrauss_min_dim, GaussianRandomProjection, SparseRandomProjection,
59    };
60    pub use crate::sparse_pca::SparsePCA;
61    pub use crate::truncated_svd::TruncatedSVD;
62}