dask_ml.decomposition.PCA

dask_ml.decomposition.PCA

class dask_ml.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power=0, random_state=None)[源代码]

主成分分析 (PCA)

使用数据的奇异值分解进行线性降维,将其投影到低维空间。

它使用了 Benson 等人(2013)的“tsqr”算法。更多信息请参见参考文献。

更多信息请参阅 用户指南

参数
n_componentsint, 或 None

保留的组件数量。如果未设置 n_components,则保留所有组件:

n_components == min(n_samples, n_features)

备注

与 scikit-learn 不同,n_components='mle'n_components(0, 1) 之间的值目前不受支持。

复制bool (默认 True)

忽略

whitenbool, 可选 (默认 False)

当设置为 True 时(默认值为 False),components_ 向量会乘以 n_samples 的平方根,然后除以奇异值,以确保输出是无相关性的,并且各分量具有单位方差。

白化会从转换后的信号中移除一些信息(各分量的相对方差尺度),但有时可以通过使数据符合某些硬编码假设来提高下游估计器的预测准确性。

svd_solver字符串 {‘auto’, ‘full’, ‘tsqr’, ‘randomized’}
自动 :

求解器是根据 X.shapen_components 的默认策略选择的:如果输入数据大于 500x500 且要提取的成分数量小于数据最小维度的 80%,则启用更高效的 ‘randomized’ 方法。否则,将计算精确的完整 SVD 并在之后选择性地截断。

完整的 :

运行精确的完整SVD并通过后处理选择组件

随机化 :

使用 da.linalg.svd_compressed 运行随机SVD。

tolfloat >= 0, 可选 (默认 .0)

忽略

iterated_powerint >= 0, 默认值为 0

由 svd_solver == ‘randomized’ 计算的幂方法的迭代次数。

random_stateint, RandomState 实例或 None, 可选 (默认 None)

如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 da.random 使用的 RandomState 实例。当 svd_solver == ‘randomized’ 时使用。

属性
组件array, 形状 (n_components, n_features)

特征空间中的主轴,表示数据中最大方差的方向。这些成分按 explained_variance_ 排序。

explained_variance_数组,形状 (n_components,)

所选成分解释的方差量。

等于 X 的协方差矩阵的 n_components 个最大特征值。

explained_variance_ratio_数组,形状 (n_components,)

每个选定成分解释的方差百分比。

如果 n_components 未设置,则存储所有组件,并且比率之和等于 1.0。

singular_values_数组,形状 (n_components,)

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

mean_数组,形状 (n_features,)

每个特征的经验均值,从训练集中估计得出。

等于 X.mean(axis=0)

n_components_整数

估计的组件数量。当 n_components 设置为 ‘mle’ 或 0 到 1 之间的数字(且 svd_solver == ‘full’)时,此数量从输入数据中估计。否则,它等于参数 n_components,或者在 n_components 为 None 时,等于 n_features 和 n_samples 中的较小值。

噪声方差浮动

根据Tipping和Bishop 1999年的概率PCA模型估计的噪声协方差。参见C. Bishop的《模式识别与机器学习》,12.2.1节,第574页,或http://www.miketipping.com/papers/met-mppca.pdf。需要计算估计的数据协方差和得分样本。

等于协方差矩阵 X 的最小特征值的平均值,数量为 (min(n_features, n_samples) - n_components)。

注释

与 scikit-learn 的区别:

  • svd_solver : ‘randomized’ 使用 dask.linalg.svd_compressed,’full’ 使用 dask.linalg.svd,’arpack’ 是无效的。

  • iterated_power : 默认为 0,这是 dask.linalg.svd_compressed 的默认值。

  • n_components : n_components='mle' 是不允许的。介于 0 和 1 之间的分数 n_components 是不允许的。

参考文献

在MapReduce架构中对高瘦矩阵进行直接QR分解。A. Benson, D. Gleich, 和 J. Demmel. IEEE国际大数据会议, 2013. http://arxiv.org/abs/1301.1071

示例

>>> import numpy as np
>>> import dask.array as da
>>> from dask_ml.decomposition import PCA
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> dX = da.from_array(X, chunks=X.shape)
>>> pca = PCA(n_components=2)
>>> pca.fit(dX)
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False)
>>> print(pca.explained_variance_ratio_)  
[ 0.99244...  0.00755...]
>>> print(pca.singular_values_)  
[ 6.30061...  0.54980...]
>>> pca = PCA(n_components=2, svd_solver='full')
>>> pca.fit(dX)                 
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
  svd_solver='full', tol=0.0, whiten=False)
>>> print(pca.explained_variance_ratio_)  
[ 0.99244...  0.00755...]
>>> print(pca.singular_values_)  
[ 6.30061...  0.54980...]

方法

fit(X[, y])

用 X 拟合模型。

fit_transform(X[, y])

用 X 拟合模型并在 X 上应用降维。

get_covariance()

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

get_feature_names_out([input_features])

获取转换后的输出特征名称。

get_metadata_routing()

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

get_params([deep])

获取此估计器的参数。

get_precision()

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

inverse_transform(X)

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

score(X[, y])

返回所有样本的平均对数似然值。

score_samples(X)

返回每个样本的对数似然值。

set_output(*[, transform])

设置输出容器。

set_params(**params)

设置此估计器的参数。

transform(X)

对 X 进行降维处理。

__init__(n_components=None, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power=0, random_state=None)[源代码]