用法:
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 个复杂的大 SVDO(n_samples * n_features ** 2)
。- handle:cuml.Handle
指定 cuml.handle 保存用于此模型中计算的内部 CUDA 状态。最重要的是,这指定了将用于模型计算的 CUDA 流,因此用户可以通过在多个流中创建句柄在不同的流中同时运行不同的模型。如果为 None,则创建一个新的。
- n_components:int 或无,(默认=无)
要保留的组件数。如果
n_components
是None
,则n_components
设置为min(n_samples, n_features)
。- whiten:布尔型,可选
如果为真,de-correlates 组件。这是通过将它们除以相应的奇异值然后乘以 sqrt(n_samples) 来完成的。白化允许每个组件具有单位方差并删除multi-collinearity。它可能对像LinearRegression 这样的相关特征会导致问题的下游任务有益。
- copy:布尔,(默认=真)
如果为 False,X 将被覆盖。
copy=False
可用于节省内存,但一般使用不安全。- batch_size:int 或无,(默认=无)
每批要使用的样本数。仅在调用
fit
时使用。如果batch_size
是None
,则从数据中推断出batch_size
并将其设置为5 * n_features
,以在近似精度和内存消耗之间取得平衡。- verbose:int 或布尔值,默认=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_samples
和n_features
分别是矩阵行和列。此外,它损害了所实现算法的可读性。如果认为有必要,这将是未来优化的好机会。参考:
- 1
- 2
- 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
推断的批量大小。
属性:
相关用法
- Python cuml.metrics.pairwise_distances.pairwise_distances用法及代码示例
- Python cuml.neighbors.KNeighborsClassifier用法及代码示例
- Python cuml.ensemble.RandomForestRegressor用法及代码示例
- Python cuml.svm.SVC用法及代码示例
- Python cuml.svm.SVR用法及代码示例
- Python cuml.Lasso用法及代码示例
- Python cuml.tsa.ARIMA.predict用法及代码示例
- Python cuml.multiclass.OneVsRestClassifier用法及代码示例
- Python cuml.preprocessing.LabelBinarizer用法及代码示例
- Python cuml.random_projection.GaussianRandomProjection用法及代码示例
- Python cuml.MBSGDRegressor用法及代码示例
- Python cuml.experimental.preprocessing.PolynomialFeatures用法及代码示例
- Python cuml.PCA用法及代码示例
- Python cuml.feature_extraction.text.HashingVectorizer用法及代码示例
- Python cuml.DBSCAN用法及代码示例
- Python cuml.dask.feature_extraction.text.TfidfTransformer用法及代码示例
- Python cuml.TruncatedSVD用法及代码示例
- Python cuml.common.memory_utils.using_output_type用法及代码示例
- Python cuml.preprocessing.text.stem.PorterStemmer用法及代码示例
- Python cuml.experimental.preprocessing.add_dummy_feature用法及代码示例
注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuml.IncrementalPCA。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。