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


Python sklearn IncrementalPCA用法及代码示例


本文简要介绍python语言中 sklearn.decomposition.IncrementalPCA 的用法。

用法:

class sklearn.decomposition.IncrementalPCA(n_components=None, *, whiten=False, copy=True, batch_size=None)

增量主成分分析(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)

在用户指南中阅读更多信息。

参数

n_components整数,默认=无

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

whiten布尔,默认=假

当 True(默认为 False)时,components_ 向量除以 n_samples 乘以 components_ 以确保输出与单位 component-wise 方差不相关。

白化会从转换后的信号中删除一些信息(分量的相对方差尺度),但有时可以通过使数据尊重一些hard-wired假设来提高下游估计器的预测准确性。

copy布尔,默认=真

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

batch_size整数,默认=无

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

属性

components_ndarray 形状(n_components,n_features)

特征空间中的主轴,表示数据中最大方差的方向。等效地,居中输入数据的右奇异向量与其特征向量平行。组件按 explained_variance_ 排序。

explained_variance_ndarray 形状 (n_components,)

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

explained_variance_ratio_ndarray 形状 (n_components,)

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

singular_values_ndarray 形状 (n_components,)

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

mean_ndarray 形状 (n_features,)

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

var_ndarray 形状 (n_features,)

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

noise_variance_浮点数

根据 Tipping 和 Bishop 1999 的概率 PCA 模型估计的噪声协方差。参见 C. Bishop 的“模式识别和机器学习”,第 12.2.1 页。 574 或 http://www.miketipping.com/papers/met-mppca.pdf

n_components_int

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

n_samples_seen_int

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

batch_size_int

batch_size 推断的批量大小。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

注意

从以下位置实现增量 PCA 模型:D. Ross、J. Lim、R. Lin、M. Yang,用于鲁棒视觉跟踪的增量学习,国际计算机视觉杂志,第 77 卷,第 1-3 期,第 125-141 页,2008 年 5 月。参看https://www.cs.toronto.edu/~dross/ivt/RossLimLinYang_ijcv.pdf

该模型是顺序 Karhunen-Loeve 变换的扩展,来自:A. Levy 和 M. Lindenbaum,Sequential Karhunen-Loeve Basis Extraction and its Application to Images,IEEE Transactions on Image Processing,第 9 卷,第 8 期,第 1371-1374 页,2000 年 8 月。参看https://www.cs.technion.ac.il/~mic/doc/skl-ip.pdf

我们特别放弃了两篇论文的作者使用的优化,在特定情况下使用 QR 分解来降低 SVD 的算法复杂性。这种技术的来源是矩阵计算,第三版,G. Holub 和 C. Van Loan,第 5 章,第 5.4.4 节,第 252-253 页。.该技术已被省略,因为它仅在分解矩阵时具有优势n_samples(行) >= 5/3 *n_features(列),并损害所实现算法的可读性。如果认为有必要,这将是未来优化的好机会。

参考

D. 罗斯、J. Lim、R. Lin、M. Yang。 Incremental Learning for Robust Visual Tracking,国际计算机视觉杂志,第 77 卷,第 1-3 期,第 125-141 页,2008 年 5 月。

G. Golub 和 C. Van Loan。矩阵计算,第三版,第 5 章,第 5.4.4 节,第 252-253 页。

例子

>>> from sklearn.datasets import load_digits
>>> from sklearn.decomposition import IncrementalPCA
>>> from scipy import sparse
>>> X, _ = load_digits(return_X_y=True)
>>> transformer = IncrementalPCA(n_components=7, batch_size=200)
>>> # either partially fit on smaller batches of data
>>> transformer.partial_fit(X[:100, :])
IncrementalPCA(batch_size=200, n_components=7)
>>> # or let the fit function itself divide the data into batches
>>> X_sparse = sparse.csr_matrix(X)
>>> X_transformed = transformer.fit_transform(X_sparse)
>>> X_transformed.shape
(1797, 7)

相关用法


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