核心中心器#

class sklearn.preprocessing.KernelCenterer[原始碼]#

將任意核矩陣 \(K\) 置中。

定義一個核 \(K\),使得

\[K(X, Y) = \phi(X) . \phi(Y)^{T}\]

\(\phi(X)\) 是將 \(X\) 的列映射到希爾伯特空間的函數,而 \(K\) 的形狀為 (n_samples, n_samples)

這個類別允許計算 \(\tilde{K}(X, Y)\),使得

\[\tilde{K(X, Y)} = \tilde{\phi}(X) . \tilde{\phi}(Y)^{T}\]

\(\tilde{\phi}(X)\) 是希爾伯特空間中置中的映射資料。

KernelCenterer 在不顯式計算映射 \(\phi(\cdot)\) 的情況下將特徵置中。當處理代數計算(例如 KernelPCA 的特徵分解)時,有時會需要使用置中的核。

請參閱使用者指南中的更多資訊。

屬性:
K_fit_rows_形狀為 (n_samples,) 的 ndarray

核矩陣每一列的平均值。

K_fit_all_浮點數

核矩陣的平均值。

n_features_in_整數

擬合期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在 1.0 版本中新增。

另請參閱

sklearn.kernel_approximation.Nystroem

使用訓練資料的子集逼近核映射。

參考文獻

範例

>>> from sklearn.preprocessing import KernelCenterer
>>> from sklearn.metrics.pairwise import pairwise_kernels
>>> X = [[ 1., -2.,  2.],
...      [ -2.,  1.,  3.],
...      [ 4.,  1., -2.]]
>>> K = pairwise_kernels(X, metric='linear')
>>> K
array([[  9.,   2.,  -2.],
       [  2.,  14., -13.],
       [ -2., -13.,  21.]])
>>> transformer = KernelCenterer().fit(K)
>>> transformer
KernelCenterer()
>>> transformer.transform(K)
array([[  5.,   0.,  -5.],
       [  0.,  14., -14.],
       [ -5., -14.,  19.]])
fit(K, y=None)[原始碼]#

擬合 KernelCenterer。

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

核矩陣。

yNone

忽略。

傳回:
self物件

傳回實例本身。

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

擬合資料,然後轉換它。

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

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

輸入樣本。

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

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

**fit_params字典

額外的擬合參數。

傳回:
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字典

將參數名稱映射到其值的字典。

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$') KernelCenterer[原始碼]#

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

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

每個參數的選項如下:

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

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

  • None:不請求中繼資料,如果使用者提供中繼資料,則 meta-estimator 會引發錯誤。

  • str:中繼資料應該以指定的別名(而不是原始名稱)傳遞至 meta-estimator。

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

1.3 版本新增。

請注意

僅當此估算器用作 meta-estimator 的子估算器時,此方法才相關,例如在 Pipeline 中使用。否則,它沒有任何作用。

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

transformcopy 參數的中繼資料路由。

傳回:
self物件

更新後的物件。

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

居中處理核心矩陣。

參數:
K形狀為 (n_samples1, n_samples2) 的 ndarray

核矩陣。

copybool,預設值為 True

設定為 False 以執行就地計算。

傳回:
K_new形狀為 (n_samples1, n_samples2) 的 ndarray

傳回實例本身。