KernelRidge#

class sklearn.kernel_ridge.KernelRidge(alpha=1, *, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None)[source]#

核嶺迴歸。

核嶺迴歸(KRR)結合了嶺迴歸(具有 l2 範數正規化的線性最小平方法)和核技巧。因此,它學習由各自的核和數據引起的空間中的線性函數。對於非線性核,這對應於原始空間中的非線性函數。

KRR 學習的模型形式與支持向量迴歸(SVR)相同。但是,使用了不同的損失函數:KRR 使用平方誤差損失,而支持向量迴歸使用 epsilon 不敏感損失,兩者都與 l2 正規化結合使用。與 SVR 相比,擬合 KRR 模型可以閉合形式完成,並且對於中型數據集通常更快。另一方面,學習的模型是非稀疏的,因此比 SVR 慢,SVR 在預測時學習 epsilon > 0 的稀疏模型。

此估算器內建支援多變量迴歸(即當 y 是形狀為 [n_samples, n_targets] 的 2d 陣列時)。

請在使用者指南中閱讀更多內容。

參數:
alphafloat 或形狀為 (n_targets,) 的類陣列,預設值為 1.0

正規化強度;必須是正浮點數。正規化改善了問題的條件,並減少了估計的變異數。較大的值指定更強的正規化。Alpha 對應於其他線性模型(例如LogisticRegressionLinearSVC)中的 1 / (2C)。如果傳遞陣列,則假定懲罰是針對目標的。因此,它們必須在數量上對應。有關公式,請參閱嶺迴歸和分類

kernelstr 或可調用物件,預設值為 “linear”

內部使用的核映射。此參數直接傳遞到pairwise_kernels。如果kernel是字串,則它必須是pairwise.PAIRWISE_KERNEL_FUNCTIONS或 “precomputed” 中的度量之一。如果kernel為 “precomputed”,則假設 X 是核矩陣。或者,如果kernel是可調用函數,則會針對每一對實例(行)調用它,並記錄結果值。可調用物件應採用 X 中的兩行作為輸入,並將相應的核值作為單個數字傳回。這意味著不允許使用sklearn.metrics.pairwise中的可調用物件,因為它們對矩陣而不是單個樣本進行操作。請改用標識核的字串。

gammafloat,預設值為 None

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

degreefloat,預設值為 3

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

coef0float,預設值為 1

用於多項式和 Sigmoid 核的零係數。其他核將忽略此參數。

kernel_paramsdict,預設值為 None

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

屬性:
dual_coef_形狀為 (n_samples,) 或 (n_samples, n_targets) 的 ndarray

核空間中權重向量的表示

X_fit_形狀為 (n_samples, n_features) 的 {ndarray,稀疏矩陣}

訓練數據,這也是預測所必需的。如果 kernel == “precomputed”,則這將是預先計算的訓練矩陣,形狀為 (n_samples, n_samples)。

n_features_in_int

fit期間看到的特徵數。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在 1.0 版本中新增。

另請參閱

sklearn.gaussian_process.GaussianProcessRegressor

高斯過程迴歸器,提供自動核超參數調整和預測不確定性。

sklearn.linear_model.Ridge

線性嶺迴歸。

sklearn.linear_model.RidgeCV

內建交叉驗證的嶺迴歸。

sklearn.svm.SVR

支援向量迴歸,接受各種核。

參考文獻

  • Kevin P. Murphy “Machine Learning: A Probabilistic Perspective”, The MIT Press chapter 14.4.3, pp. 492-493

範例

>>> from sklearn.kernel_ridge import KernelRidge
>>> import numpy as np
>>> n_samples, n_features = 10, 5
>>> rng = np.random.RandomState(0)
>>> y = rng.randn(n_samples)
>>> X = rng.randn(n_samples, n_features)
>>> krr = KernelRidge(alpha=1.0)
>>> krr.fit(X, y)
KernelRidge(alpha=1.0)
fit(X, y, sample_weight=None)[source]#

擬合核嶺迴歸模型。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列、稀疏矩陣}

訓練數據。如果 kernel == “precomputed”,則這將是一個預先計算的核矩陣,形狀為 (n_samples, n_samples)。

y形狀為 (n_samples,) 或 (n_samples, n_targets) 的類陣列

目標值。

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

每個樣本的個別權重,如果傳遞 None 則會被忽略。

傳回值:
self物件

傳回實例本身。

get_metadata_routing()[source]#

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

請查看使用者指南,了解路由機制的運作方式。

傳回值:
routingMetadataRequest

一個封裝路由資訊的MetadataRequest

get_params(deep=True)[source]#

取得此估算器的參數。

參數:
deepbool,預設值為 True

如果為 True,則會傳回此估算器和包含的子物件(為估算器)的參數。

傳回值:
paramsdict

對應到其值的參數名稱。

predict(X)[原始碼]#

使用核脊迴歸模型進行預測。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列、稀疏矩陣}

樣本。如果 kernel == “precomputed”,則此處為預先計算的核矩陣,形狀為 [n_samples, n_samples_fitted],其中 n_samples_fitted 是此估算器擬合時使用的樣本數。

傳回值:
C形狀為 (n_samples,) 或 (n_samples, n_targets) 的 ndarray

返回預測值。

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

返回預測的決定係數。

決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和 ((y_true - y_pred)** 2).sum(),而 \(v\) 是總平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳可能分數為 1.0,並且可以為負數(因為模型的表現可能任意差)。一個始終預測 y 的期望值的常數模型,而不考慮輸入特徵,其 \(R^2\) 分數將為 0.0。

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

測試樣本。對於某些估算器,這可能是預先計算的核矩陣,或形狀為 (n_samples, n_samples_fitted) 的通用物件列表,其中 n_samples_fitted 是估算器擬合時使用的樣本數。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列

X 的真實值。

sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None

樣本權重。

傳回值:
scorefloat

self.predict(X) 相對於 y\(R^2\)

注意

當在迴歸器上呼叫 score 時使用的 \(R^2\) 分數,從 0.23 版本開始使用 multioutput='uniform_average',以保持與 r2_score 的預設值一致。這會影響所有多輸出迴歸器的 score 方法(MultiOutputRegressor 除外)。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') KernelRidge[原始碼]#

請求傳遞給 fit 方法的中繼資料。

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

每個參數的選項如下

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

  • False:不請求中繼資料,並且元估算器不會將其傳遞給 fit

  • None:不請求中繼資料,如果使用者提供,元估算器將會引發錯誤。

  • str:中繼資料應使用此給定的別名傳遞給元估算器,而不是原始名稱。

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

新增於 1.3 版。

注意

只有在將此估算器用作元估算器的子估算器時(例如在 Pipeline 中使用),此方法才相關。否則,它沒有任何效果。

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

fitsample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

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

設定此估算器的參數。

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

參數:
**paramsdict

估算器參數。

傳回值:
self估算器實例

估算器實例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') KernelRidge[原始碼]#

請求傳遞給 score 方法的中繼資料。

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

每個參數的選項如下

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

  • False:不請求中繼資料,並且元估算器不會將其傳遞給 score

  • None:不請求中繼資料,如果使用者提供,元估算器將會引發錯誤。

  • str:中繼資料應使用此給定的別名傳遞給元估算器,而不是原始名稱。

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

新增於 1.3 版。

注意

只有在將此估算器用作元估算器的子估算器時(例如在 Pipeline 中使用),此方法才相關。否則,它沒有任何效果。

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

scoresample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。