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)[原始碼]#

執行快速獨立成分分析(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)