FastICA#

class sklearn.decomposition.FastICA(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)[原始碼]#

FastICA:用於獨立成分分析的快速演算法。

此實作基於 [1]

請在使用者指南中閱讀更多資訊。

參數:
n_componentsint,預設值=None

要使用的成分數量。如果傳入 None,則使用所有成分。

algorithm{‘parallel’,‘deflation’},預設值=‘parallel’

指定要用於 FastICA 的演算法。

whitenstr 或 bool,預設值=‘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_argsdict,預設值=None

要發送到函數形式的引數。如果為空或 None 且 fun='logcosh',則 fun_args 將取值 {‘alpha’ : 1.0}。

max_iterint,預設值=200

在擬合期間的最大迭代次數。

tolfloat,預設值=1e-4

一個正純量,表示當取消混合矩陣被認為已收斂時的容錯值。

w_init形狀類似陣列 (n_components, n_components),預設值=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_stateint、RandomState 實例或 None,預設值=None

用於在未指定時,使用常態分佈初始化 w_init。傳遞一個 int,以確保在多次函數呼叫中獲得可重現的結果。請參閱詞彙表

屬性:
components_形狀為 (n_components, n_features) 的 ndarray

要應用於資料以取得獨立來源的線性運算子。當 whiten 為 False 時,這等於取消混合矩陣,並且當 whiten 為 True 時,這等於 np.dot(unmixing_matrix, self.whitening_)

mixing_形狀為 (n_features, n_components) 的 ndarray

components_ 的偽反向。它是將獨立來源對應到資料的線性運算子。

mean_形狀為 (n_features,) 的 ndarray

跨功能的平均值。僅當 self.whiten 為 True 時才設定。

n_features_in_int

擬合期間看到的特徵數。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

擬合期間看到的特徵名稱。僅當 X 具有全部為字串的特徵名稱時才定義。

在 1.0 版本中新增。

n_iter_int

如果演算法為「deflation」,則 n_iter 是跨所有元件執行的最大迭代次數。否則,它們只是收斂所需的迭代次數。

whitening_形狀為 (n_components, n_features) 的 ndarray

僅當 whiten 為 ‘True’ 時才設定。這是將資料投影到前 n_components 個主成分上的預先白化矩陣。

另請參閱

PCA

主成分分析 (PCA)。

IncrementalPCA

增量主成分分析 (IPCA)。

KernelPCA

核心主成分分析 (KPCA)。

MiniBatchSparsePCA

小批量稀疏主成分分析。

SparsePCA

稀疏主成分分析 (SparsePCA)。

參考文獻

[1]

A. Hyvarinen 和 E. Oja,獨立成分分析:演算法與應用,神經網路,13(4-5),2000,第 411-430 頁。

範例

>>> from sklearn.datasets import load_digits
>>> from sklearn.decomposition import FastICA
>>> X, _ = load_digits(return_X_y=True)
>>> transformer = FastICA(n_components=7,
...         random_state=0,
...         whiten='unit-variance')
>>> X_transformed = transformer.fit_transform(X)
>>> X_transformed.shape
(1797, 7)
fit(X, y=None)[原始碼]#

將模型擬合到 X。

參數:
X形狀為 (n_samples, n_features) 的類陣列

訓練資料,其中 n_samples 是樣本數,而 n_features 是特徵數。

y忽略

不使用,為了 API 的一致性而存在。

回傳值:
self物件

回傳實例本身。

fit_transform(X, y=None)[原始碼]#

擬合模型並從 X 中還原來源。

參數:
X形狀為 (n_samples, n_features) 的類陣列

訓練資料,其中 n_samples 是樣本數,而 n_features 是特徵數。

y忽略

不使用,為了 API 的一致性而存在。

回傳值:
X_new形狀為 (n_samples, n_components) 的 ndarray

透過使用估計的解混矩陣轉換資料所獲得的估計來源。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

輸出的特徵名稱會加上小寫的類別名稱作為前綴。例如,如果轉換器輸出 3 個特徵,則輸出的特徵名稱為: ["class_name0", "class_name1", "class_name2"]

參數:
input_features字串或 None 的類陣列,預設為 None

僅用於驗證特徵名稱是否與 fit 中看到的名稱一致。

回傳值:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看 使用者指南 了解路由機制如何運作。

回傳值:
routingMetadataRequest

一個 MetadataRequest,封裝路由資訊。

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設為 True

如果為 True,將回傳此估算器以及所包含的子物件(也是估算器)的參數。

回傳值:
paramsdict

參數名稱對應到它們的值。

inverse_transform(X, copy=True)[原始碼]#

將來源轉換回混合資料(應用混合矩陣)。

參數:
X形狀為 (n_samples, n_components) 的類陣列

來源,其中 n_samples 是樣本數,而 n_components 是成分數。

copybool,預設為 True

如果為 False,則傳遞給 fit 的資料將被覆寫。預設為 True。

回傳值:
X_new形狀為 (n_samples, n_features) 的 ndarray

使用混合矩陣重建的資料。

set_inverse_transform_request(*, copy: bool | None | str = '$UNCHANGED$') FastICA[原始碼]#

請求傳遞到 inverse_transform 方法的中繼資料。

請注意,只有在 enable_metadata_routing=True 時,此方法才相關(請參閱 sklearn.set_config)。請參閱 使用者指南 了解路由機制如何運作。

每個參數的選項如下

  • True:請求中繼資料,並在提供時傳遞給 inverse_transform。如果未提供中繼資料,則會忽略請求。

  • False:不請求中繼資料,且元估算器不會將其傳遞給 inverse_transform

  • None:不請求中繼資料,且如果使用者提供中繼資料,元估算器將會引發錯誤。

  • str:中繼資料應使用此給定的別名傳遞至元估算器,而不是原始名稱。

預設值(sklearn.utils.metadata_routing.UNCHANGED)保留現有的請求。這可讓您變更某些參數的請求,而不會變更其他參數的請求。

在 1.3 版中新增。

注意

僅當此估算器用作元估算器的子估算器時,此方法才相關,例如在 Pipeline 中使用。否則,它不會產生任何效果。

參數:
copystr、True、False 或 None,預設為 sklearn.utils.metadata_routing.UNCHANGED

針對 inverse_transform 中的 copy 參數的中繼資料路由。

回傳值:
self物件

已更新的物件。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱 介紹 set_output API 以了解如何使用此 API 的範例。

參數:
transform{“default”, “pandas”, “polars”}, 預設值=None

設定 transformfit_transform 的輸出格式。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換配置保持不變

在 1.4 版本中新增:新增了 "polars" 選項。

回傳值:
self估計器實例

估計器實例。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單的估計器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個元件。

參數:
**params字典

估計器參數。

回傳值:
self估計器實例

估計器實例。

set_transform_request(*, copy: bool | None | str = '$UNCHANGED$') FastICA[原始碼]#

請求傳遞至 transform 方法的中繼資料。

請注意,只有在 enable_metadata_routing=True 時,此方法才相關(請參閱 sklearn.set_config)。請參閱 使用者指南 了解路由機制如何運作。

每個參數的選項如下

  • True:請求中繼資料,並在提供時傳遞至 transform。如果未提供中繼資料,則會忽略請求。

  • False:不請求中繼資料,且 meta-estimator 不會將其傳遞至 transform

  • None:不請求中繼資料,且如果使用者提供中繼資料,元估算器將會引發錯誤。

  • str:中繼資料應使用此給定的別名傳遞至元估算器,而不是原始名稱。

預設值(sklearn.utils.metadata_routing.UNCHANGED)保留現有的請求。這可讓您變更某些參數的請求,而不會變更其他參數的請求。

在 1.3 版中新增。

注意

僅當此估算器用作元估算器的子估算器時,此方法才相關,例如在 Pipeline 中使用。否則,它不會產生任何效果。

參數:
copystr、True、False 或 None,預設為 sklearn.utils.metadata_routing.UNCHANGED

針對 transform 中的 copy 參數的中繼資料路由。

回傳值:
self物件

已更新的物件。

transform(X, copy=True)[原始碼]#

從 X 中還原來源(套用反混合矩陣)。

參數:
X形狀為 (n_samples, n_features) 的類陣列

要轉換的資料,其中 n_samples 是樣本數,n_features 是特徵數。

copybool,預設為 True

如果為 False,則可以覆寫傳遞給 fit 的資料。預設為 True。

回傳值:
X_new形狀為 (n_samples, n_components) 的 ndarray

透過使用估計的解混矩陣轉換資料所獲得的估計來源。