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 = 0
的Ridge
物件。您應該改用LinearRegression
物件。如果傳遞陣列,則假定懲罰特定於目標。因此,它們在數量上必須對應。
- fit_interceptbool,預設值 = True
是否為此模型擬合截距。如果設定為 False,則計算中不會使用截距(即,預期
X
和y
已置中)。- 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’ 更適合大型資料(可以設定
tol
和max_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 對應於其他線性模型(例如
LogisticRegression
或LinearSVC
)中的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
fit
中sample_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
score
中sample_weight
參數的中繼資料路由。
- 回傳值:
- self物件
更新後的物件。