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


Python cuml.IncrementalPCA用法及代码示例


用法:

class cuml.IncrementalPCA(*, handle=None, n_components=None, whiten=False, copy=True, batch_size=None, verbose=False, output_type=None)

基于来自scikit-learn 0.23.1 的sklearn.decomposition IncrementalPCA

增量主成分分析(IPCA)。使用数据的奇异值分解进行线性降维,仅保留最重要的奇异向量以将数据投影到较低维空间。在应用 SVD 之前,输入数据居中,但未针对每个特征进行缩放。根据输入数据的大小,该算法的内存效率可能比 PCA 高得多,并且允许稀疏输入。该算法具有恒定的内存复杂度,大约为 batch_size * n_features ,可以在不将整个文件加载到内存的情况下使用 np.memmap 文件。对于稀疏矩阵,将输入分批转换为密集矩阵(以便能够减去均值),从而避免在任何时候存储整个密集矩阵。每个 SVD 的计算开销为 O(batch_size * n_features ** 2) ,但一次只有 2 * batch_size 样本保留在内存中。将有 n_samples / batch_size SVD 计算来获得主成分,而 PCA 需要 1 个复杂的大 SVD O(n_samples * n_features ** 2)

参数

handlecuml.Handle

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

n_componentsint 或无,(默认=无)

要保留的组件数。如果 n_componentsNone ,则 n_components 设置为 min(n_samples, n_features)

whiten布尔型,可选

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

copy布尔,(默认=真)

如果为 False,X 将被覆盖。 copy=False 可用于节省内存,但一般使用不安全。

batch_sizeint 或无,(默认=无)

每批要使用的样本数。仅在调用 fit 时使用。如果 batch_sizeNone ,则从数据中推断出 batch_size 并将其设置为 5 * n_features ,以在近似精度和内存消耗之间取得平衡。

verboseint 或布尔值,默认=False

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

output_type{‘input’, ‘cudf’, ‘cupy’, ‘numpy’, ‘numba’},默认=无

用于控制估计器的结果和属性的输出类型的变量。如果为 None,它将继承在模块级别设置的输出类型 cuml.global_settings.output_type 。有关详细信息,请参阅输出数据类型配置。

注意

[1] 实现增量 PCA 模型。此模型是来自 [2] 的顺序 Karhunen-Loeve 变换的扩展。我们特别放弃了两篇论文的作者使用的优化,在特定情况下使用 QR 分解来降低 SVD 的算法复杂性。该技术的来源是 [3] 。此技术已被省略,因为它仅在使用 n_samples >= 5/3 * n_features 分解矩阵时才有优势,其中 n_samplesn_features 分别是矩阵行和列。此外,它损害了所实现算法的可读性。如果认为有必要,这将是未来优化的好机会。

参考

1

D. Ross, J. Lim, R. Lin, M. Yang. Incremental Learning for Robust Visual Tracking, International Journal of Computer Vision, Volume 77, Issue 1-3, pp. 125-141, May 2008.

2

A. Levy and M. Lindenbaum, Sequential Karhunen-Loeve Basis Extraction and its Application to Images, IEEE Transactions on Image Processing, Volume 9, Number 8, pp. 1371-1374, August 2000.

3

G. Golub and C. Van Loan. Matrix Computations, Third Edition, Chapter 5, Section 5.4.4, pp. 252-253.

4

C. Bishop, 1999. “Pattern Recognition and Machine Learning”, Section 12.2.1, pp. 574

例子

>>> from cuml.decomposition import IncrementalPCA
>>> import cupy as cp
>>> import cupyx
>>>
>>> X = cupyx.scipy.sparse.random(1000, 4, format='csr', density=0.07)
>>> ipca = IncrementalPCA(n_components=2, batch_size=200)
>>> ipca.fit(X)
>>>
>>> # Components:
>>> ipca.components_
array([[-0.02362926,  0.87328851, -0.15971988,  0.45967206],
    [-0.14643883,  0.11414225,  0.97589354,  0.11471273]])
>>>
>>> # Singular Values:
>>> ipca.singular_values_
array([4.90298662, 4.54498226])
>>>
>>> # Explained Variance:
>>> ipca.explained_variance_
array([0.02406334, 0.02067754])
>>>
>>> # Explained Variance Ratio:
>>> ipca.explained_variance_ratio_
array([0.28018011, 0.24075775])
>>>
>>> # Mean:
>>> ipca.mean_
array([0.03249896, 0.03629852, 0.03268694, 0.03216601])
>>>
>>> # Noise Variance:
>>> ipca.noise_variance_.item()
0.003474966583315544

属性

components_数组,形状(n_components,n_features)

具有最大方差的组件。

explained_variance_数组,形状(n_components,)

每个选定组件解释的方差。

explained_variance_ratio_数组,形状(n_components,)

每个选定组件解释的方差百分比。如果存储了所有分量,则解释方差之和等于 1.0。

singular_values_数组,形状(n_components,)

对应于每个选定组件的奇异值。奇异值等于 lower-dimensional 空间中 n_components 变量的 2 范数。

mean_数组,形状(n_features,)

Per-feature 经验平均值,汇总对 partial_fit 的调用。

var_数组,形状(n_features,)

Per-feature 经验方差,汇总调用 partial_fit

noise_variance_浮点数

遵循来自 [4] 的概率 PCA 模型的估计噪声协方差。

n_components_int

组件的估计数量。相关时 n_components=None

n_samples_seen_int

估计器处理的样本数。将在新调用时重置以适应,但在 partial_fit 调用中递增。

batch_size_int

batch_size 推断的批量大小。

相关用法


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