12 个版本 (6 个重大更改)
0.7.0 | 2024 年 5 月 20 日 |
---|---|
0.6.2 | 2022 年 5 月 5 日 |
0.6.1 | 2021 年 6 月 14 日 |
0.4.1 | 2020 年 7 月 17 日 |
#122 in 数学
70KB
1.5K SLoC
petal-decomposition
petal-decomposition 提供包括 PCA(主成分分析)和 ICA(独立成分分析)在内的矩阵分解算法。
需求
- BLAS/LAPACK 后端(OpenBLAS、Netlib、Intel MKL 或 Accelerate 框架)
特性
- 带有精确、完整 SVD(奇异值分解)的 PCA
- 带有随机化、截断 SVD 的 PCA
- FastICA
Crates 特性
-
使用
intel-mkl-static
、intel-mkl-system
、netlib-static
、netlib-system
、openblas-static
或openblas-system
之一来选择 BLAS/LAPACK 后端。有关详细信息,请参阅 ndarray-linalg 的文档。注意:在 macOS 上,默认使用 Accelerate 框架,因此不需要这些特性。
-
serialization
使能使用 serde 进行序列化/反序列化。
示例
以下示例展示了如何将 PCA 应用到三个样本的数组中,以及如何获得奇异值以及每个分量解释的方差。
use ndarray::arr2;
use petal_decomposition::Pca;
let x = arr2(&[[0_f64, 0_f64], [1_f64, 1_f64], [2_f64, 2_f64]]);
let mut pca = PcaBuilder::new(2).build(); // Keep two dimensions.
pca.fit(&x).unwrap();
let s = pca.singular_values(); // [2_f64, 0_f64]
let v = pca.explained_variance_ratio(); // [1_f64, 0_f64]
let y = pca.transform(&x).unwrap(); // [-2_f64.sqrt(), 0_f64, 2_f64.sqrt()]
许可证
版权所有 2020-2024 Petabi, Inc.
在 Apache License, Version 2.0(以下简称“许可证”)下许可;除非适用法律要求或书面同意,否则不得使用此 crate,除非遵守许可证。
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证下权限和限制的特定语言,请参阅 LICENSE。
贡献
除非您明确表示,否则您根据Apache-2.0许可协议定义的,有意提交以包含在作品中的任何贡献,应按上述方式许可,不附加任何额外条款或条件。
依赖关系
~75MB
~1M SLoC