稀疏編碼器#

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 將轉換器擬合到 Xy,並返回 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

設定 transformfit_transform 的輸出。

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

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

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

傳回值:
self估算器實例

估算器實例。

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

設定此估算器的參數。

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

參數:
**paramsdict

估算器參數。

傳回值:
self估算器實例

估算器實例。

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

將數據編碼為字典原子的稀疏組合。

編碼方法由物件參數 transform_algorithm 決定。

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

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

y已忽略

未使用,為了 API 一致性而依慣例存在。

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

轉換後的數據。