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)
之间的值。- copybool(默认为 True)
忽略
- whitenbool,可选(默认为 False)
当为 True(默认为 False)时,components_ 向量乘以 n_samples 的平方根,然后除以奇异值,以确保输出不相关且分量方差为单位。
白化会从转换后的信号中移除一些信息(组件的相对方差尺度),但有时可以通过使下游估计器的数据遵循某些预设假设来提高其预测准确性。
- svd_solver字符串 {‘auto’, ‘full’, ‘tsqr’, ‘randomized’}
- auto
求解器根据 X.shape 和 n_components 的默认策略选择:如果输入数据大于 500x500 且要提取的组件数量低于数据最小维度的 80%,则启用更高效的“randomized”方法。否则,计算精确的完全 SVD 并可选择随后进行截断。
- full
运行精确的完全 SVD 并通过后处理选择组件
- randomized
使用
da.linalg.svd_compressed
运行 randomized SVD。
- tolfloat >= 0,可选(默认为 .0)
忽略
- iterated_powerint >= 0,默认为 0
由 svd_solver == ‘randomized’ 计算的幂方法的迭代次数。
- random_stateint、RandomState 实例或 None,可选(默认为 None)
如果为 int,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 da.random 使用的 RandomState 实例。当
svd_solver
== ‘randomized’ 时使用。
- 属性
- components_数组,形状 (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_int
估计的组件数量。当 n_components 设置为 'mle' 或 0 到 1 之间的数字(svd_solver == 'full' 时)时,此数量从输入数据中估计。否则,它等于参数 n_components,或如果 n_components 为 None,则取 n_features 和 n_samples 中较小的值。
- noise_variance_float
根据 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, and J. Demmel. IEEE International Conference on Big Data, 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)¶