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_init
和V_init
都不是 None 時使用。- V_init形狀為 (n_components, n_features) 的 ndarray,預設值為 None
用於熱啟動情境的組件的初始值。僅當
U_init
和V_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
將轉換器擬合到X
和y
,並傳回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
設定
transform
和fit_transform
的輸出格式。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定不變
在版本 1.4 中新增:新增了
"polars"
選項。
- 返回:
- self估計器實例
估計器實例。