fastica#
- 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]#
执行快速独立成分分析(Fast Independent Component Analysis)。
此实现基于 [1]。
在用户指南中阅读更多内容。
- 参数:
- X形状为 (n_samples, n_features) 的类数组
训练向量,其中
n_samples
是样本数,n_features
是特征数。- n_components整型,默认值为 None
要使用的成分数量。如果传入 None,则使用所有成分。
- algorithm{'parallel', 'deflation'},默认值为 'parallel'
指定 FastICA 使用的算法。
- whiten字符串或布尔值,默认值为 '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_args字典,默认值为 None
要传递给函数形式的参数。如果为空或 None,并且 fun='logcosh',fun_args 将取值 {'alpha' : 1.0}。
- max_iter整型,默认值为 200
要执行的最大迭代次数。
- tol浮点型,默认值为 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_state整型,RandomState 实例或 None,默认值为 None
当未指定时,用于通过正态分布初始化
w_init
。传入一个整型值,以确保在多次函数调用中结果可重现。请参阅术语表。- return_X_mean布尔值,默认值为 False
如果为 True,则也返回 X_mean。
- compute_sources布尔值,默认值为 True
如果为 False,则不计算源,只计算旋转矩阵。这可以在处理大数据时节省内存。默认为 True。
- return_n_iter布尔值,默认值为 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_iter整型
如果算法为“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 and E. Oja, “Fast Independent Component Analysis”, Algorithms and Applications, Neural Networks, 13(4-5), 2000, pp. 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)