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)