增量PCA#

class sklearn.decomposition.IncrementalPCA(n_components=None, *, whiten=False, copy=True, batch_size=None)[源代码]#

增量主成分分析(IPCA)。

使用数据的奇异值分解进行线性降维,仅保留最重要的奇异载体以将数据投影到较低维空间。在应用奇异值分解之前,输入数据会针对每个要素对中,但不会缩放。

根据输入数据的大小,该算法的内存效率比PCA高得多,并且允许稀疏输入。

该算法具有恒定的内存复杂性,数量级 batch_size * n_features ,允许使用NP.memmap文件,而无需将整个文件加载到内存中。对于稀疏矩阵,输入被批量转换为密集矩阵(以便能够减去平均值),这避免了在任何时候存储整个密集矩阵。

每个奇异值的计算负担是 O(batch_size * n_features ** 2) ,但只有2个 * batch_size samples remain in memory at a time. There will be n_samples / batch_size SVD computations to get the principal components, versus 1 large SVD of complexity ``O(n_samples * n_features ** 2)' for PCA。

有关使用示例,请参阅 增量PCA .

阅读更多的 User Guide .

Added in version 0.16.

参数:
n_componentsint,默认=无

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

whiten布尔,默认=假

When True (False by default) the components_ vectors are divided by n_samples times components_ to ensure uncorrelated outputs with unit component-wise variances.

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

copy布尔,默认=True

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

batch_sizeint,默认=无

每个批次使用的样本数量。仅在打电话时使用 fit .如果 batch_sizeNone 那么 batch_size 从数据中推断并设置为 5 * n_features ,以在逼近准确性和内存消耗之间提供平衡。

属性:
components_ndrow形状数组(n_components,n_features)

特征空间中的主要轴,代表数据中最大方差的方向。等效地,中心输入数据的右奇异向量,平行于其特征向量。组件按递减排序 explained_variance_ .

explained_variance_形状的nd数组(n_components,)

每个所选组件解释的差异。

explained_variance_ratio_形状的nd数组(n_components,)

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

singular_values_形状的nd数组(n_components,)

The singular values corresponding to each of the selected components. The singular values are equal to the 2-norms of the n_components variables in the lower-dimensional space.

mean_形状的nd数组(n_features,)

每个功能的经验平均值,总计超过调用 partial_fit .

var_形状的nd数组(n_features,)

每个特征的经验方差,合计超过调用 partial_fit .

noise_variance_浮子

遵循Tipping和Bishop 1999年的概率PCA模型估计的噪音协方差。请参阅C的“模式识别和机器学习”。Bishop,12.2.1 p. 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

期间看到的功能数量 fit .

Added in version 0.24.

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

PCA

主成分分析(PCA)。

KernelPCA

核心主成分分析(KPCA)。

SparsePCA

稀疏主成分分析(SparsePCA)。

TruncatedSVD

使用截断的奇异值降低维度。

注意到

从以下步骤实施增量PCA模型: 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. 请参阅https://www.cs.toronto.edu/~dross/ivt/RossLimLinYang_ijcv.pdf

该模型是顺序Karhunen-Loeve变换的扩展: 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.

我们特别避免了这两篇论文的作者使用的优化,即在特定情况下使用的QR分解,以降低奇异值的算法复杂性。该技术的来源是 Matrix Computations, Third Edition, G. Holub and C. Van Loan, Chapter 5, section 5.4.4, pp 252-253. .该技术已被省略,因为它仅在分解矩阵时才有利 n_samples (行)>= 5/3 * n_features (列),并且损害了所实现算法的可读性。如果认为有必要,这将是未来优化的好机会。

引用

D.罗斯,J. Lim,R.林,M.杨鲁棒视觉跟踪的增量学习,《国际计算机视觉杂志》,第77卷,第1-3期,pp。125-141,2008年5月。

G. Golub and C. Van Loan. Matrix Computations, Third Edition, Chapter 5, Section 5.4.4, pp. 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)
fit(X, y=None)[源代码]#

使用大小为batch_size的迷你批次,用X匹配模型。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

训练数据,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

y忽视

未使用,按照惯例,为了API一致性而存在。

返回:
self对象

返回实例本身。

fit_transform(X, y=None, **fit_params)[源代码]#

适应数据,然后对其进行转换。

适合变压器 Xy 具有可选参数 fit_params 并返回的转换版本 X .

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

y形状为(n_samples,)或(n_samples,n_outputs)的阵列状, 默认值=无

目标值(无监督转换)。

**fit_paramsdict

其他适合参数。

返回:
X_newndray形状数组(n_samples,n_features_new)

变形的数组。

get_covariance()[源代码]#

使用生成模型计算数据协方差。

cov = components_.T * S**2 * components_ + sigma2 * eye(n_features) 其中S**2包含解释的方差,西格玛2包含噪音方差。

返回:
cov形状数组=(n_features,n_features)

估计的数据协方差。

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

输出的功能名称将以大写的类别名称为开头。例如,如果Transformer输出3个特征,则输出的特征名称为: ["class_name0", "class_name1", "class_name2"] .

参数:
input_features字符串或无的类数组,默认=无

仅用于通过中看到的名称验证要素名称 fit .

返回:
feature_names_out字符串对象的nd数组

转换的功能名称。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

get_precision()[源代码]#

用生成式模型计算数据精度矩阵。

等于协方差的倒数,但为了效率而使用矩阵求逆引理计算。

返回:
precision数组,形状=(n_features,n_features)

估计的数据精度。

inverse_transform(X)[源代码]#

将数据转换回其原始空间。

换句话说,返回输入 X_original 其变换将是X。

参数:
X形状类似阵列(n_samples,n_components)

新数据,其中 n_samples 是样本数量和 n_components 是组件的数量。

返回:
X_原始阵列状形状(n_样本,n_特征)

原始数据,其中 n_samples 是样本数量和 n_features 是功能的数量。

注意到

如果启用白化,inverate_transform将计算精确的逆操作,其中包括反向白化。

partial_fit(X, y=None, check_input=True)[源代码]#

与X的增量匹配。所有X都作为单个批次处理。

参数:
X形状类似阵列(n_samples,n_features)

训练数据,在哪里 n_samples 是样本数量和 n_features 是功能的数量。

y忽视

未使用,按照惯例,为了API一致性而存在。

check_input布尔,默认=True

在X上运行check_Array。

返回:
self对象

返回实例本身。

set_output(*, transform=None)[源代码]#

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

transform(X)[源代码]#

对X应用降维。

如果X是稀疏的,则使用大小为batch_size的小批量将X投影到之前从训练集中提取的第一个主成分上。

参数:
X形状(n_samples,n_features)的{类数组,稀疏矩阵}

新数据,其中 n_samples 是样本数量和 n_features 是功能的数量。

返回:
X_new形状的nd数组(n_samples,n_components)

X在第一主成分中的投影。

示例

>>> import numpy as np
>>> from sklearn.decomposition import IncrementalPCA
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2],
...               [1, 1], [2, 1], [3, 2]])
>>> ipca = IncrementalPCA(n_components=2, batch_size=3)
>>> ipca.fit(X)
IncrementalPCA(batch_size=3, n_components=2)
>>> ipca.transform(X)