快速独立成分分析#
- sklearn.decomposition.fastica(X, n_components=None, *, algorithm='parallel', whiten='unit-variance', fun='logcosh', fun_args=None, max_iter=200, tol=0.0001, w_init=None, whiten_solver='svd', random_state=None, return_X_mean=False, compute_sources=True, return_n_iter=False)[source]#
- 执行快速独立成分分析。 - 该实现基于[1]。 - 更多信息请参见 用户指南。 - 参数:
- X形状为 (n_samples, n_features) 的类数组
- 训练向量,其中 - n_samples是样本数,- n_features是特征数。
- n_componentsint,默认为 None
- 要使用的组件数。如果传递 None,则使用所有组件。 
- algorithm{'parallel','deflation'},默认为 'parallel'
- 指定要用于 FastICA 的算法。 
- whitenstr 或 bool,默认为 'unit-variance'
- 指定要使用的白化策略。 - 如果为 'arbitrary-variance',则使用具有任意方差的白化。 
- 如果为 'unit-variance',则重新缩放白化矩阵以确保每个恢复的源具有单位方差。 
- 如果为 False,则数据已被认为已白化,不执行白化。 
 - 1.3 版本中的变化: - whiten的默认值在 1.3 版本中更改为 'unit-variance'。
- fun{'logcosh','exp','cube'} 或可调用对象,默认为 'logcosh'
- 用于近似负熵的 G 函数的函数形式。可以是 'logcosh'、'exp' 或 'cube'。您也可以提供自己的函数。它应该返回一个元组,其中包含函数的值及其在该点的导数。导数应沿其最后维度取平均值。示例 - def my_g(x): return x ** 3, (3 * x ** 2).mean(axis=-1) 
- fun_argsdict,默认为 None
- 要发送到函数形式的参数。如果为空或 None,并且如果 fun='logcosh',则 fun_args 将取值 {'alpha': 1.0}。 
- max_iterint,默认为 200
- 要执行的最大迭代次数。 
- tolfloat,默认为 1e-4
- 一个正标量,给出解混矩阵被认为已收敛的容差。 
- w_init形状为 (n_components, n_components) 的 ndarray,默认为 None
- 初始解混数组。如果 - w_init=None,则使用从正态分布中抽取的值的数组。
- whiten_solver{'eigh','svd'},默认为 'svd'
- 用于白化的求解器。 - 如果问题是退化的,“svd”在数值上更稳定,并且当 - n_samples <= n_features时通常更快。
- 当 - n_samples >= n_features时,“eigh”通常更节省内存,并且当- n_samples >= 50 * n_features时可以更快。
 - 1.2 版本中添加。 
- random_stateint、RandomState 实例或 None,默认为 None
- 当未指定时,用于使用正态分布初始化 - w_init。传递一个 int,以便在多次函数调用中获得可重复的结果。参见 词汇表。
- return_X_meanbool,默认为 False
- 如果为 True,则也返回 X_mean。 
- compute_sourcesbool,默认为 True
- 如果为 False,则不计算源,而只计算旋转矩阵。在处理大型数据时,这可以节省内存。默认为 True。 
- return_n_iterbool,默认为 False
- 是否返回迭代次数。 
 
- 返回:
- K形状为 (n_components, n_features) 的 ndarray 或 None
- 如果 whiten 为 'True',则 K 是将数据投影到前 n_components 主成分的预白化矩阵。如果 whiten 为 'False',则 K 为 'None'。 
- W形状为 (n_components, n_components) 的 ndarray
- 白化后解混数据的方阵。如果 K 不为 None,则混合矩阵是矩阵 - W K的伪逆,否则它是 W 的逆。
- S形状为 (n_samples, n_components) 的 ndarray 或 None
- 估计的源矩阵。 
- X_mean形状为 (n_features,) 的 ndarray
- 特征的平均值。仅当 return_X_mean 为 True 时返回。 
- n_iterint
- 如果算法为“deflation”,则 n_iter 是所有组件运行的最大迭代次数。否则,它们只是收敛所需的迭代次数。只有当 return_n_iter 设置为 - True时才会返回此值。
 
 - 备注 - 数据矩阵 X 被认为是非高斯(独立)分量的线性组合,即 X = AS,其中 S 的列包含独立分量,A 是线性混合矩阵。简而言之,ICA 试图通过估计解混矩阵 W 来“解混”数据,其中 ``S = W K X``。虽然 FastICA 被提出用于估计与特征数量一样多的源,但可以通过设置 n_components < n_features 来估计更少的源。在这种情况下,K 不是方阵,估计的 A 是 ``W K`` 的伪逆。 - 此实现最初是为形状为 [n_features, n_samples] 的数据设计的。现在,在应用算法之前会对输入进行转置。这对于 Fortran 顺序输入来说速度稍快。 - 参考文献 [1]- A. Hyvarinen 和 E. Oja,“快速独立成分分析”,算法与应用,神经网络,13(4-5),2000,第 411-430 页。 - 示例 - >>> from sklearn.datasets import load_digits >>> from sklearn.decomposition import fastica >>> X, _ = load_digits(return_X_y=True) >>> K, W, S = fastica(X, n_components=7, random_state=0, whiten='unit-variance') >>> K.shape (7, 64) >>> W.shape (7, 7) >>> S.shape (1797, 7) 
