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)