Ridge#

類別 sklearn.linear_model.Ridge(alpha=1.0, *, fit_intercept=True, copy_X=True, max_iter=None, tol=0.0001, solver='auto', positive=False, random_state=None)[原始碼]#

具有 L2 正規化的線性最小平方法。

最小化目標函數

||y - Xw||^2_2 + alpha * ||w||^2_2

此模型解決一個迴歸模型,其中損失函數為線性最小平方法函數,正規化則由 L2 範數給定。也稱為嶺迴歸或季霍諾夫正規化。此估算器內建支援多變數迴歸(即當 y 為形狀 (n_samples, n_targets) 的二維陣列時)。

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

參數:
alpha{float, 形狀為 (n_targets,) 的 ndarray},預設值 = 1.0

乘以 L2 項的常數,控制正規化強度。alpha 必須為非負浮點數,即在 [0, inf) 範圍內。

alpha = 0 時,目標等同於普通最小平方法,由 LinearRegression 物件解決。基於數值原因,不建議使用 alpha = 0Ridge 物件。您應該改用 LinearRegression 物件。

如果傳遞陣列,則假定懲罰特定於目標。因此,它們在數量上必須對應。

fit_interceptbool,預設值 = True

是否為此模型擬合截距。如果設定為 False,則計算中不會使用截距(即,預期 Xy 已置中)。

copy_Xbool,預設值 = True

如果為 True,則將複製 X;否則,可能會覆寫 X。

max_iterint,預設值 = None

共軛梯度求解器的最大迭代次數。對於 'sparse_cg' 和 'lsqr' 求解器,預設值由 scipy.sparse.linalg 決定。對於 'sag' 求解器,預設值為 1000。對於 'lbfgs' 求解器,預設值為 15000。

tolfloat,預設值 = 1e-4

解(coef_)的精確度由 tol 決定,它為每個求解器指定不同的收斂準則

  • 'svd':tol 沒有影響。

  • 'cholesky':tol 沒有影響。

  • 'sparse_cg':殘差的範數小於 tol

  • 'lsqr':tol 設定為 scipy.sparse.linalg.lsqr 的 atol 和 btol,它們根據矩陣和係數的範數控制殘差向量的範數。

  • 'sag' 和 'saga':係數的相對變化小於 tol

  • 'lbfgs':絕對(投影)梯度最大值 = max|residuals| 小於 tol

變更於 1.2 版: 預設值從 1e-3 變更為 1e-4,以與其他線性模型保持一致。

solver{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’},預設值 = ‘auto’

要在計算常式中使用的求解器

  • ‘auto’ 會根據資料類型自動選擇求解器。

  • ‘svd’ 使用 X 的奇異值分解來計算嶺係數。它是最穩定的求解器,尤其對於奇異矩陣比 ‘cholesky’ 更穩定,但代價是速度較慢。

  • ‘cholesky’ 使用標準的 scipy.linalg.solve 函式來取得封閉式解。

  • ‘sparse_cg’ 使用在 scipy.sparse.linalg.cg 中找到的共軛梯度求解器。作為迭代演算法,此求解器比 ‘cholesky’ 更適合大型資料(可以設定 tolmax_iter)。

  • ‘lsqr’ 使用專用的正規化最小平方法常式 scipy.sparse.linalg.lsqr。它是最快的,並使用迭代程序。

  • ‘sag’ 使用隨機平均梯度下降法,而 ‘saga’ 使用其改進的無偏版本,稱為 SAGA。這兩種方法也都使用迭代程序,並且當 n_samples 和 n_features 都很大時,通常比其他求解器更快。請注意,只有在特徵具有大致相同的尺度時,才能保證 'sag' 和 'saga' 的快速收斂。您可以使用 sklearn.preprocessing 的縮放器預先處理資料。

  • ‘lbfgs’ 使用在 scipy.optimize.minimize 中實作的 L-BFGS-B 演算法。只有當 positive 為 True 時才能使用它。

除了 ‘svd’ 之外的所有求解器都支援密集和稀疏資料。但是,只有當 fit_intercept 為 True 時,'lsqr'、'sag'、'sparse_cg' 和 'lbfgs' 才支援稀疏輸入。

新增於 0.17 版: 隨機平均梯度下降求解器。

新增於 0.19 版: SAGA 求解器。

positivebool,預設值 = False

當設定為 True 時,強制係數為正值。在這種情況下,僅支援 'lbfgs' 求解器。

random_stateint,RandomState 實例,預設值 = None

solver == ‘sag’ 或 ‘saga’ 時,用於打亂數據。詳情請參閱詞彙表

0.17 版本新增: random_state 以支援隨機平均梯度法 (Stochastic Average Gradient)。

屬性:
coef_形狀為 (n_features,) 或 (n_targets, n_features) 的 ndarray

權重向量。

intercept_浮點數或形狀為 (n_targets,) 的 ndarray

決策函數中的獨立項。如果 fit_intercept = False,則設為 0.0。

n_iter_None 或形狀為 (n_targets,) 的 ndarray

每個目標的實際迭代次數。僅適用於 sag 和 lsqr 求解器。其他求解器將返回 None。

0.17 版本新增。

n_features_in_整數

fit 期間看到的特徵數量。

0.24 版本新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

1.0 版本新增。

solver_字串

在擬合時由計算常式使用的求解器。

1.5 版本新增。

另請參閱

RidgeClassifier

嶺分類器。

RidgeCV

具有內建交叉驗證的嶺迴歸。

KernelRidge

核嶺迴歸結合了嶺迴歸和核技巧。

備註

正規化可以改善問題的條件並減少估計的變異數。較大的值表示較強的正規化。Alpha 對應於其他線性模型(例如LogisticRegressionLinearSVC)中的 1 / (2C)

範例

>>> from sklearn.linear_model import Ridge
>>> 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)
>>> clf = Ridge(alpha=1.0)
>>> clf.fit(X, y)
Ridge()
fit(X, y, sample_weight=None)[原始碼]#

擬合嶺迴歸模型。

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

訓練數據。

y形狀為 (n_samples,) 或 (n_samples, n_targets) 的 ndarray

目標值。

sample_weight浮點數或形狀為 (n_samples,) 的 ndarray,預設值為 None

每個樣本的個別權重。如果給定浮點數,則每個樣本都將具有相同的權重。

回傳值:
self物件

擬合的估算器。

get_metadata_routing()[原始碼]#

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

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

回傳值:
routingMetadataRequest

封裝路由資訊的 MetadataRequest

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

取得此估算器的參數。

參數:
deep布林值,預設值為 True

如果為 True,將回傳此估算器和其中包含的子物件(亦為估算器)的參數。

回傳值:
params字典

將參數名稱對應到其值的字典。

predict(X)[原始碼]#

使用線性模型進行預測。

參數:
X類陣列或稀疏矩陣,形狀 (n_samples, n_features)

樣本。

回傳值:
C陣列,形狀 (n_samples,)

回傳預測值。

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 的期望值的常數模型,而不考慮輸入特徵,將獲得 0.0 的 \(R^2\) 分數。

參數:
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

樣本權重。

回傳值:
score浮點數

\(R^2\) 是針對 self.predict(X) 相對於 y 的決定係數。

備註

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

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

請求傳遞至 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$') Ridge[原始碼]#

請求傳遞至 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物件

更新後的物件。