This page

Citing

Please consider citing the scikit-learn.

9.10.12. sklearn.decomposition.fastica

sklearn.decomposition.fastica(X, n_components=None, algorithm='parallel', whiten=True, fun='logcosh', fun_prime='', fun_args={}, max_iter=200, tol=0.0001, w_init=None)

Perform Fast Independent Component Analysis.

Parameters :

X : (n, p) array of shape = [n_samples, n_features], optional

Training vector, where n_samples is the number of samples and n_features is the number of features.

n_components : int, optional

Number of components to extract. If None no dimension reduction is performed.

algorithm : {‘parallel’, ‘deflation’}, optional

Apply an parallel or deflational FASTICA algorithm.

whiten: boolean, optional :

If true perform an initial whitening of the data. Do not set to false unless the data is already white, as you will get incorrect results. If whiten is true, the data is assumed to have already been preprocessed: it should be centered, normed and white.

fun : string or function, optional

The functional form of the G function used in the approximation to neg-entropy. Could be either ‘logcosh’, ‘exp’, or ‘cube’. You can also provide your own function but in this case, its derivative should be provided via argument fun_prime

fun_prime : empty string (‘’) or function, optional

See fun.

fun_args: dictionary, optional :

If empty and if fun=’logcosh’, fun_args will take value {‘alpha’ : 1.0}

max_iter: int, optional :

Maximum number of iterations to perform

tol: float, optional :

A positive scalar giving the tolerance at which the un-mixing matrix is considered to have converged

w_init: (n_components, n_components) array, optional :

Initial un-mixing array of dimension (n.comp,n.comp). If None (default) then an array of normal r.v.’s is used

source_only: boolean, optional :

if True, only the sources matrix is returned

Returns :

K: (n_components, p) array :

pre-whitening matrix that projects data onto th first n.comp principal components. Returned only if whiten is True

W: (n_components, n_components) array :

estimated un-mixing matrix The mixing matrix can be obtained by:

w = np.dot(W, K.T)
A = w.T * (w * w.T).I

S: (n_components, n) array :

estimated source matrix

Notes

The data matrix X is considered to be a linear combination of non-Gaussian (independent) components i.e. X = AS where columns of S contain the independent components and A is a linear mixing matrix. In short ICA attempts to `un-mix’ the data by estimating an un-mixing matrix W where S = W K X.

This implementation was originally made for data of shape [n_features, n_samples]. Now the input is transposed before the algorithm is applied. This makes it slightly faster for Fortran-ordered input.

Implemented using FastICA:

  • A. Hyvarinen and E. Oja, Independent Component Analysis: Algorithms and Applications, Neural Networks, 13(4-5), 2000, pp. 411-430