SparsePCA#

class sklearn.decomposition.SparsePCA(n_components=None, *, alpha=1, ridge_alpha=0.01, max_iter=1000, tol=1e-08, method='lars', n_jobs=None, U_init=None, V_init=None, verbose=False, random_state=None)[source]#

稀疏主成分分析(SparsePCA)。

尋找一組可以最佳重建資料的稀疏成分。稀疏的程度可以透過 L1 懲罰的係數來控制,由參數 alpha 給定。

請參閱使用者指南中的詳細資訊。

參數:
n_componentsint,預設值為 None

要提取的稀疏原子數量。如果為 None,則 n_components 會設定為 n_features

alphafloat,預設值為 1

控制稀疏度的參數。數值越高,組件越稀疏。

ridge_alphafloat,預設值為 0.01

在呼叫 transform 方法時,為了改善條件而應用的嶺收縮量。

max_iterint,預設值為 1000

要執行的最大迭代次數。

tolfloat,預設值為 1e-8

停止條件的容差。

method{‘lars’, ‘cd’},預設值為 ‘lars’

用於優化的方法。lars:使用最小角度迴歸方法來解決 lasso 問題(linear_model.lars_path)。cd:使用座標下降法來計算 Lasso 解(linear_model.Lasso)。如果估計的成分是稀疏的,則 Lars 會更快。

n_jobsint,預設值為 None

要運行的並行作業數。None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有處理器。有關更多詳細資訊,請參閱詞彙表

U_init形狀為 (n_samples, n_components) 的 ndarray,預設值為 None

用於熱啟動情境的載入的初始值。僅當 U_initV_init 都不是 None 時使用。

V_init形狀為 (n_components, n_features) 的 ndarray,預設值為 None

用於熱啟動情境的組件的初始值。僅當 U_initV_init 都不是 None 時使用。

verboseint 或 bool,預設值為 False

控制訊息的詳細程度;數值越高,訊息越多。預設值為 0。

random_stateint、RandomState 實例或 None,預設值為 None

在字典學習期間使用。傳遞 int 以在多個函式呼叫中獲得可重複的結果。請參閱詞彙表

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

從資料中提取的稀疏組件。

error_ndarray

每次迭代時的誤差向量。

n_components_int

估計的組件數。

在版本 0.23 中新增。

n_iter_int

執行的迭代次數。

mean_形狀為 (n_features,) 的 ndarray

從訓練集中估計的每個特徵的經驗平均值。等於 X.mean(axis=0)

n_features_in_int

fit 期間看到的特徵數量。

在版本 0.24 中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在版本 1.0 中新增。

另請參閱

PCA

主成分分析實作。

MiniBatchSparsePCA

SparsePCA 的小批量變體,速度更快但準確性較低。

DictionaryLearning

使用稀疏碼的通用字典學習問題。

範例

>>> import numpy as np
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.decomposition import SparsePCA
>>> X, _ = make_friedman1(n_samples=200, n_features=30, random_state=0)
>>> transformer = SparsePCA(n_components=5, random_state=0)
>>> transformer.fit(X)
SparsePCA(...)
>>> X_transformed = transformer.transform(X)
>>> X_transformed.shape
(200, 5)
>>> # most values in the components_ are zero (sparsity)
>>> np.mean(transformer.components_ == 0)
np.float64(0.9666...)
fit(X, y=None)[source]#

從 X 中的資料擬合模型。

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

訓練向量,其中 n_samples 是樣本數,n_features 是特徵數。

y已忽略

未使用,這裡為了 API 一致性而按照慣例存在。

返回:
self物件

返回實例本身。

fit_transform(X, y=None, **fit_params)[source]#

擬合資料,然後轉換資料。

使用選用的參數 fit_params 將轉換器擬合到 Xy,並傳回 X 的轉換版本。

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

輸入樣本。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值為 None

目標值(對於無監督轉換,則為 None)。

**fit_paramsdict

其他擬合參數。

返回:
X_new形狀為 (n_samples, n_features_new) 的 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)[來源]#

取得此估計器的參數。

參數:
deep布林值,預設為 True

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

返回:
params字典

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

inverse_transform(X)[來源]#

將資料從潛在空間轉換回原始空間。

由於前向分解會導致資訊遺失,此反向轉換是一種近似值。

在版本 1.2 中新增。

參數:
X形狀為 (n_samples, n_components) 的 ndarray

潛在空間中的資料。

返回:
X_original形狀為 (n_samples, n_features) 的 ndarray

在原始空間中重建的資料。

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估計器實例

估計器實例。

transform(X)[來源]#

將資料以最小平方法投影到稀疏成分上。

為了避免在系統未充分定義的情況下出現不穩定性問題,可以透過 ridge_alpha 參數套用正規化(嶺迴歸)。

請注意,稀疏 PCA 成分的正交性並未像 PCA 中那樣強制執行,因此無法使用簡單的線性投影。

參數:
X形狀為 (n_samples, n_features) 的 ndarray

要轉換的測試資料,必須具有與用於訓練模型的資料相同的特徵數量。

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

轉換後的資料。