稀疏編碼器#
- class sklearn.decomposition.SparseCoder(dictionary, *, transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, split_sign=False, n_jobs=None, positive_code=False, transform_max_iter=1000)[原始碼]#
稀疏編碼。
針對固定的預先計算字典,尋找資料的稀疏表示。
結果的每一列都是稀疏編碼問題的解。目標是找到一個稀疏陣列
code
,使得X ~= code * dictionary
詳情請參閱使用者指南。
- 參數:
- dictionary形狀為 (n_components, n_features) 的 ndarray
用於稀疏編碼的字典原子。假設線條已正規化為單位範數。
- transform_algorithm{‘lasso_lars’, ‘lasso_cd’, ‘lars’, ‘omp’, ‘threshold’}, default=’omp’
用於轉換資料的演算法
'lars'
: 使用最小角度迴歸法 (linear_model.lars_path
);'lasso_lars'
: 使用Lars計算Lasso解;'lasso_cd'
: 使用座標下降法計算Lasso解 (linear_model.Lasso)。如果估計的成分是稀疏的,'lasso_lars'
將會更快;'omp'
: 使用正交匹配追蹤來估計稀疏解;'threshold'
: 將投影dictionary * X'
中所有小於 alpha 的係數壓縮為零。
- transform_n_nonzero_coefsint, default=None
在解的每個欄中要達到的非零係數數量。這僅由
algorithm='lars'
和algorithm='omp'
使用,並且在omp
情況下會被alpha
覆蓋。如果None
,則transform_n_nonzero_coefs=int(n_features / 10)
。- transform_alphafloat, default=None
如果
algorithm='lasso_lars'
或algorithm='lasso_cd'
,alpha
是應用於 L1 範數的懲罰。如果algorithm='threshold'
,alpha
是係數將被壓縮為零的閾值的絕對值。如果algorithm='omp'
,alpha
是容錯參數:目標重建誤差的值。在這種情況下,它會覆蓋n_nonzero_coefs
。如果None
,則預設為 1。- split_signbool, default=False
是否將稀疏特徵向量分割為其負部分和正部分的串聯。這可以提高下游分類器的效能。
- n_jobsint, default=None
要執行的平行作業數。
None
表示 1,除非在joblib.parallel_backend
內容中。-1
表示使用所有處理器。詳情請參閱詞彙表。- positive_codebool, default=False
尋找程式碼時是否強制執行正數。
在 0.20 版本中新增。
- transform_max_iterint, default=1000
如果
algorithm='lasso_cd'
或lasso_lars
,要執行的最大迭代次數。在 0.22 版本中新增。
- 屬性:
n_components_
int原子數。
n_features_in_
int在
fit
期間看到的特徵數。- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在fit期間看到的特徵名稱。僅在
X
具有都是字串的特徵名稱時定義。在 1.0 版本中新增。
另請參閱
DictionaryLearning
尋找稀疏編碼資料的字典。
MiniBatchDictionaryLearning
字典學習演算法的更快、較不精確版本。
MiniBatchSparsePCA
小型批次稀疏主成分分析。
SparsePCA
稀疏主成分分析。
sparse_encode
稀疏編碼,其中結果的每一列都是稀疏編碼問題的解。
範例
>>> import numpy as np >>> from sklearn.decomposition import SparseCoder >>> X = np.array([[-1, -1, -1], [0, 0, 3]]) >>> dictionary = np.array( ... [[0, 1, 0], ... [-1, -1, 2], ... [1, 1, 1], ... [0, 1, 1], ... [0, 2, 1]], ... dtype=np.float64 ... ) >>> coder = SparseCoder( ... dictionary=dictionary, transform_algorithm='lasso_lars', ... transform_alpha=1e-10, ... ) >>> coder.transform(X) array([[ 0., 0., -1., 0., 0.], [ 0., 1., 1., 0., 0.]])
- fit(X, y=None)[原始碼]#
不執行任何動作,並傳回未變更的估計器。
此方法僅用於實作通常的 API,因此可以在管線中使用。
- 參數:
- X已忽略
未使用,為了 API 一致性而依慣例存在。
- y已忽略
未使用,為了 API 一致性而依慣例存在。
- 傳回值:
- self物件
傳回實例本身。
- fit_transform(X, y=None, **fit_params)[原始碼]#
擬合數據,然後轉換它。
使用可選參數
fit_params
將轉換器擬合到X
和y
,並返回X
的轉換版本。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列 (array-like)
輸入樣本。
- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like),預設值為 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 的類陣列 (array-like),預設值為 None
僅用於驗證特徵名稱是否與
fit
中看到的名稱相符。
- 傳回值:
- feature_names_out字串物件的 ndarray
轉換後的特徵名稱。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查閱 使用者指南 了解路由機制如何運作。
- 傳回值:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值為 True
如果為 True,將返回此估算器和包含的子物件(屬於估算器)的參數。
- 傳回值:
- paramsdict
參數名稱對應到其值。
- property n_components_#
原子數。
- property n_features_in_#
在
fit
期間看到的特徵數。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
有關如何使用 API 的範例,請參閱 導入 set_output API。
- 參數:
- transform{“default”, “pandas”, “polars”}, 預設值為 None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定保持不變
在 1.4 版本中新增: 新增了
"polars"
選項。
- 傳回值:
- self估算器實例
估算器實例。