#分解 #矩阵 #维度 #pca #ica

petal-decomposition

包括 PCA(主成分分析)和 ICA(独立成分分析)在内的矩阵分解算法

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 数学

Apache-2.0

70KB
1.5K SLoC

petal-decomposition

petal-decomposition 提供包括 PCA(主成分分析)和 ICA(独立成分分析)在内的矩阵分解算法。

crates.io Documentation Coverage Status

需求

  • BLAS/LAPACK 后端(OpenBLAS、Netlib、Intel MKL 或 Accelerate 框架)

特性

  • 带有精确、完整 SVD(奇异值分解)的 PCA
  • 带有随机化、截断 SVD 的 PCA
  • FastICA

Crates 特性

  • 使用 intel-mkl-staticintel-mkl-systemnetlib-staticnetlib-systemopenblas-staticopenblas-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