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)[源代码]#
快速独立成分分析
实施基于 [1].
阅读更多的 User Guide .
- 参数:
- X形状类似阵列(n_samples,n_features)
训练载体,在哪里
n_samples
是样本数量和n_features
是功能的数量。- n_componentsint,默认=无
要使用的组件数量。如果没有通过,则全部使用。
- algorithm'parallel','deflation'},default='parallel'
指定用于FastICA的算法。
- whiten字符串或布尔,默认='单位方差'
指定要使用的美白策略。
如果是“arbitrary-variance”,则使用具有任意方差的白化。
如果“单位方差”,则重新调整白化矩阵以确保每个恢复的源具有单位方差。
如果为False,则数据已被视为白化,并且不执行白化。
在 1.3 版本发生变更: 的默认值
whiten
在1.3中更改为“单位方差”。- fun' logcosh ',',','或可调用,默认=' logcosh '
用于逼近时间-的G函数的函数形式。可以是“logcosh”、“exp '或“立方体”。您还可以提供自己的功能。它应该返回一个包含点中函数及其派生函数的值的数组。应沿其最后一个维度求平均值。示例::
def my_g(x): return x ** 3, (3 * x ** 2).mean(axis=-1)
- fun_argsdict,默认=无
要发送到功能表单的参数。如果为空或无,并且fun =' logcosh ',fun_args将取值' Alpha ':1.0}。
- max_iterint,默认=200
要执行的最大迭代次数。
- tolfloat,默认= 1 e-4
一个正量,给出解混合矩阵被认为已收敛的容差。
- w_init形状的nd数组(n_components,n_components),默认=无
Initial un-mixing array. If
w_init=None
, then an array of values drawn from a normal distribution is used.- whiten_solver{“eigh”,“svd”},默认=“svd”
用于白化的求解器。
如果问题退化,“svd”在数字上更稳定,而当问题退化时,“svd”通常更快
n_samples <= n_features
.“eigh”通常内存效率更高,
n_samples >= n_features
,并且可以更快时n_samples >= 50 * n_features
.
Added in version 1.2.
- random_stateint,RandomState实例或无,默认=无
用于初始化
w_init
当未指定时,呈正态分布。传递int,以获得跨多个函数调用的可重现的结果。看到 Glossary .- return_X_mean布尔,默认=假
如果为True,则X_mean也会返回。
- compute_sources布尔,默认=True
如果为假,则不会计算源,而只计算旋转矩阵。这可以在处理大数据时节省内存。切换到True。
- return_n_iter布尔,默认=假
是否返回迭代次数。
- 返回:
- Knd形状数组(n_components,n_features)或无
如果RST为“True”,则K是将数据投影到前n_components主成分上的预白化矩阵。如果RST为“假”,则K为“无”。
- W形状的nd数组(n_components,n_components)
白化后分解数据的平方矩阵。混合矩阵是矩阵的伪逆矩阵
W K
如果K不是无,否则它是W的倒数。- S形状的nd数组(n_samples,n_components)或无
估计的源矩阵。
- X_mean形状的nd数组(n_features,)
平均值高于特征。仅当Return_X_mean为True时返回。
- n_iterint
如果算法是“紧缩”,则n_iter是所有组件上运行的最大迭代次数。否则它们只是收敛所需的迭代次数。只有当Return_n_iter设置为时才返回
True
.
注意到
数据矩阵X被认为是非高斯(独立)分量的线性组合,即X = AS,其中S的列包含独立分量,A是线性混合矩阵。简而言之,ICA试图
un-mix' the data by estimating an un-mixing matrix W where ` ' 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)