當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。