当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cuml.dask.decomposition.PCA用法及代码示例


用法:

class cuml.dask.decomposition.PCA(*, client=None, verbose=False, **kwargs)

PCA(主成分分析)是一种基本的降维技术,用于将 X 中的特征组合成线性组合,以便每个新成分捕获数据的最多信息或方差。 N_components 通常很小,比如 3,可用于数据可视化、数据压缩和探索性分析。

cuML 的 multi-node multi-gpu (MNMG) PCA 需要 dask cuDF 输入,并提供 “Full” 算法。它使用完整的特征分解然后选择前 K 个特征向量。

参数

handlecuml.Handle

指定 cuml.handle 保存用于此模型中计算的内部 CUDA 状态。最重要的是,这指定了将用于模型计算的 CUDA 流,因此用户可以通过在多个流中创建句柄在不同的流中同时运行不同的模型。如果为 None,则创建一个新的。

n_componentsint(默认值 = 1)

您想要的前 K 个奇异向量/值的数量。必须是 <= 数字(列)。

svd_solver‘full’, ‘jacobi’, or ‘tsqr’

‘full’:运行精确的完整 SVD 并通过后处理选择组件 ‘jacobi’:迭代计算协方差矩阵的 SVD

verboseint 或布尔值,默认=False

设置日志记录级别。它必须是 cuml.common.logger.level_* 之一。有关详细信息,请参阅详细级别。

whiten布尔值(默认 = False)

如果为真,de-correlates 组件。这是通过将它们除以相应的奇异值然后乘以 sqrt(n_samples) 来完成的。白化允许每个组件具有单位方差并删除multi-collinearity。它可能对像LinearRegression 这样的相关特征会导致问题的下游任务有益。

注意

PCA 考虑特征的线性组合,特别是那些最大化全局方差结构的组合。这意味着 PCA 非常适合全局结构分析,但不适用于局部关系。考虑 UMAP 或 T-SNE 用于本地重要的嵌入。

PCA的应用

PCA 在实践中广泛用于数据可视化和数据压缩。它已被用于在 2 或 3 维、日常物体和图像的大型数据集中可视化极大的词嵌入,如 Word2Vec 和GloVe,并用于区分癌细胞和健康细胞。

有关其他文档,请参阅 scikitlearn’s PCA

例子

from dask_cuda import LocalCUDACluster
from dask.distributed import Client, wait
import numpy as np
from cuml.dask.decomposition import PCA
from cuml.dask.datasets import make_blobs

cluster = LocalCUDACluster(threads_per_worker=1)
client = Client(cluster)

nrows = 6
ncols = 3
n_parts = 2

X_cudf, _ = make_blobs(nrows, ncols, 1, n_parts,
                cluster_std=0.01,
                verbose=cuml.logger.level_info,
                random_state=10, dtype=np.float32)

wait(X_cudf)

print("Input Matrix")
print(X_cudf.compute())

cumlModel = PCA(n_components = 1, whiten=False)
XT = cumlModel.fit_transform(X_cudf)

print("Transformed Input Matrix")
print(XT.compute())

输出:

Input Matrix:
          0         1         2
          0 -6.520953  0.015584 -8.828546
          1 -6.507554  0.016524 -8.836799
          2 -6.518214  0.010457 -8.821301
          0 -6.520953  0.015584 -8.828546
          1 -6.507554  0.016524 -8.836799
          2 -6.518214  0.010457 -8.821301

Transformed Input Matrix:
                    0
          0 -0.003271
          1  0.011454
          2 -0.008182
          0 -0.003271
          1  0.011454
          2 -0.008182

注意

每次运行此代码时,输出都会有所不同,因为 “make_blobs” 函数会生成随机矩阵。

属性

components_数组

U, S, VT = svd(X) 中的前 K 个分量 (VT.T[:,:n_components])

explained_variance_数组

每个组件在多大程度上解释了 S**2 给出的数据中的差异

explained_variance_ratio_数组

S**2/sum(S**2) 解释了多少百分比的方差

singular_values_数组

前 K 个奇异值。记住所有奇异值 >= 0

mean_数组

X 的逐列平均值。用于表示 - 首先将数据居中。

noise_variance_浮点数

来自 Bishop 1999 年的教科书。用于以后的任务,例如计算 X 的估计协方差。

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuml.dask.decomposition.PCA。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。