Nystroem#

class sklearn.kernel_approximation.Nystroem(kernel='rbf', *, gamma=None, coef0=None, degree=None, kernel_params=None, n_components=100, random_state=None, n_jobs=None)[source]#

使用訓練資料的子集來近似核函數映射。

使用資料的子集作為基礎,為任意核函數建構近似的特徵映射。

請參閱使用者指南以了解更多資訊。

在 0.13 版本中新增。

參數:
kernelstr 或可調用物件,預設值為 ‘rbf’

要近似的核函數映射。可調用物件應接受兩個參數和傳遞給此物件的關鍵字參數(作為 kernel_params),並應回傳一個浮點數。

gammafloat,預設值為 None

RBF、拉普拉斯、多項式、指數卡方和 Sigmoid 核函數的 Gamma 參數。預設值的解讀留給核函數;請參閱 sklearn.metrics.pairwise 的文件。其他核函數會忽略此參數。

coef0float,預設值=None

多項式和 Sigmoid 核函數的零係數。其他核函數會忽略此參數。

degreefloat,預設值=None

多項式核函數的次數。其他核函數會忽略此參數。

kernel_paramsdict,預設值=None

傳遞為可呼叫物件的核函數的其他參數(關鍵字引數)。

n_componentsint,預設值=100

要建構的特徵數量。將使用多少資料點來建構映射。

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

用於控制不重複均勻取樣的虛擬隨機數產生器,從訓練資料中取樣 n_components 來建構基礎核函數。傳入 int 以在多個函式呼叫中產生可重複的輸出。請參閱詞彙表

n_jobsint,預設值=None

用於計算的平行處理數量。其原理是將核矩陣分解為 n_jobs 個均等的部分,並平行計算這些部分。

None 代表 1,除非在 joblib.parallel_backend 環境中。-1 代表使用所有處理器。請參閱詞彙表以了解更多詳細資訊。

在 0.24 版本中新增。

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

用於建構特徵映射的訓練點子集。

component_indices_形狀為 (n_components) 的 ndarray

components_ 在訓練集中的索引。

normalization_形狀為 (n_components, n_components) 的 ndarray

嵌入所需的正規化矩陣。在 components_ 上核矩陣的平方根。

n_features_in_int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在 1.0 版本中新增。

另請參閱

AdditiveChi2Sampler

additive chi2 核函數的近似特徵映射。

PolynomialCountSketch

透過張量草圖的多項式核函數近似。

RBFSampler

使用隨機傅立葉特徵近似 RBF 核函數特徵映射。

SkewedChi2Sampler

「偏斜卡方」核函數的近似特徵映射。

sklearn.metrics.pairwise.kernel_metrics

內建核函數列表。

參考文獻

  • Williams, C.K.I. 和 Seeger, M. “使用 Nystroem 方法加速核機器”,神經資訊處理系統進展 2001

  • T. Yang, Y. Li, M. Mahdavi, R. Jin 和 Z. Zhou “Nystroem 方法 vs 隨機傅立葉特徵:理論和實證比較”,神經資訊處理系統進展 2012

範例

>>> from sklearn import datasets, svm
>>> from sklearn.kernel_approximation import Nystroem
>>> X, y = datasets.load_digits(n_class=9, return_X_y=True)
>>> data = X / 16.
>>> clf = svm.LinearSVC()
>>> feature_map_nystroem = Nystroem(gamma=.2,
...                                 random_state=1,
...                                 n_components=300)
>>> data_transformed = feature_map_nystroem.fit_transform(data)
>>> clf.fit(data_transformed, y)
LinearSVC()
>>> clf.score(data_transformed, y)
0.9987...
fit(X, y=None)[原始碼]#

將估算器擬合到資料。

對訓練點的子集進行取樣,計算這些點上的核函數,並計算正規化矩陣。

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

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

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

目標值(對於非監督轉換為 None)。

返回:
self物件

返回實例本身。

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

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

將轉換器擬合到 Xy,並使用可選參數 fit_params,然後返回 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_featuresstr 的類陣列或 None,預設值=None

僅用於驗證特徵名稱是否與 fit 中看到的名稱一致。

返回:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看 使用者指南 以瞭解路由機制如何運作。

返回:
routingMetadataRequest

一個 MetadataRequest,封裝了路由資訊。

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值為 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)。後者的參數形式為 <元件>__<參數>,因此可以更新巢狀物件的每個元件。

參數:
**params字典

估算器參數。

返回:
self估算器實例

估算器實例。

transform(X)[原始碼]#

將特徵映射應用於 X。

使用一些訓練點和 X 之間的核函數,計算近似的特徵映射。

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

要轉換的資料。

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

轉換後的資料。