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 對應於其他線性模型(例如
LogisticRegression
或LinearSVC
)中的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
fit
中sample_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
score
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。