嶺迴歸#
- sklearn.linear_model.ridge_regression(X, y, alpha, *, sample_weight=None, solver='auto', max_iter=None, tol=0.0001, verbose=0, positive=False, random_state=None, return_n_iter=False, return_intercept=False, check_input=True)[原始碼]#
使用正規方程式方法解嶺迴歸方程式。
請參閱使用者指南以瞭解更多資訊。
- 參數:
- X{類陣列 (array-like), 稀疏矩陣 (sparse matrix), 線性算子 (LinearOperator)},形狀為 (n_samples, n_features)
訓練資料。
- y形狀為 (n_samples,) 或 (n_samples, n_targets) 的類陣列 (array-like)
目標值。
- alpha浮點數 (float) 或 形狀為 (n_targets,) 的類陣列 (array-like)
乘以 L2 項的常數,用於控制正規化強度。
alpha
必須為非負的浮點數,即在[0, inf)
範圍內。當
alpha = 0
時,目標等同於普通最小平方法,由LinearRegression
物件解出。由於數值原因,不建議使用alpha = 0
與Ridge
物件。您應該改用LinearRegression
物件。如果傳遞陣列,則假設懲罰特定於目標。因此,它們的數量必須對應。
- sample_weight浮點數 (float) 或形狀為 (n_samples,) 的類陣列 (array-like),預設值為 None
每個樣本的個別權重。如果給定一個浮點數,則每個樣本將具有相同的權重。如果 sample_weight 不是 None 且 solver='auto',則求解器將設定為 'cholesky'。
於 0.17 版本加入。
- solver{'auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga', 'lbfgs'},預設值為 'auto'
用於計算常式的求解器
'auto' 會根據資料類型自動選擇求解器。
'svd' 使用 X 的奇異值分解 (Singular Value Decomposition) 來計算嶺迴歸係數。它是最穩定的求解器,特別是對於奇異矩陣比 'cholesky' 更穩定,但速度較慢。
'cholesky' 使用標準的 scipy.linalg.solve 函數,透過點積 (X.T, X) 的 Cholesky 分解來獲得閉合形式的解。
'sparse_cg' 使用 scipy.sparse.linalg.cg 中找到的共軛梯度求解器。作為一種迭代演算法,對於大規模資料,此求解器比 'cholesky' 更適合(可以設定
tol
和max_iter
)。'lsqr' 使用專用的正規化最小平方常式 scipy.sparse.linalg.lsqr。它是最快的,並且使用迭代程序。
'sag' 使用隨機平均梯度下降法 (Stochastic Average Gradient descent),而 'saga' 使用其改進的無偏版本 SAGA。這兩種方法也都使用迭代程序,並且當 n_samples 和 n_features 都很大時,通常比其他求解器更快。請注意,'sag' 和 'saga' 快速收斂僅在具有大致相同尺度的特徵上才能保證。您可以使用 sklearn.preprocessing 中的縮放器預處理資料。
'lbfgs' 使用
scipy.optimize.minimize
中實作的 L-BFGS-B 演算法。只有在positive
為 True 時才能使用。
除了 'svd' 之外,所有求解器都支援密集和稀疏資料。但是,只有 'lsqr'、'sag'、'sparse_cg' 和 'lbfgs' 在
fit_intercept
為 True 時支援稀疏輸入。於 0.17 版本加入: 隨機平均梯度下降求解器。
於 0.19 版本加入: SAGA 求解器。
- max_iter整數 (int),預設值為 None
共軛梯度求解器的最大迭代次數。對於 'sparse_cg' 和 'lsqr' 求解器,預設值由 scipy.sparse.linalg 確定。對於 'sag' 和 saga 求解器,預設值為 1000。對於 'lbfgs' 求解器,預設值為 15000。
- tol浮點數 (float),預設值為 1e-4
解的精確度。請注意,
tol
對於求解器 'svd' 和 'cholesky' 沒有影響。於 1.2 版本變更: 為了與其他線性模型保持一致,預設值從 1e-3 變更為 1e-4。
- verbose整數 (int),預設值為 0
詳細程度。設定 verbose > 0 將顯示其他資訊,具體取決於所使用的求解器。
- positive布林值 (bool),預設值為 False
設定為
True
時,強制係數為正數。在這種情況下,僅支援 'lbfgs' 求解器。- random_state整數 (int)、RandomState 實例,預設值為 None
當
solver
== 'sag' 或 'saga' 時,用於隨機排列資料。有關詳細資訊,請參閱詞彙表。- return_n_iter布林值 (bool),預設值為 False
如果為 True,則該方法還會回傳
n_iter
,即求解器執行的實際迭代次數。於 0.17 版本加入。
- return_intercept布林值 (bool),預設值為 False
如果為 True 且 X 是稀疏的,則該方法還會回傳截距,並且求解器會自動變更為 'sag'。這僅是使用稀疏資料擬合截距的臨時修復。對於密集資料,請在迴歸之前使用 sklearn.linear_model._preprocess_data。
於 0.17 版本加入。
- check_input布林值 (bool),預設值為 True
如果為 False,則不會檢查輸入陣列 X 和 y。
於 0.21 版本加入。
- 回傳值:
- coef形狀為 (n_features,) 或 (n_targets, n_features) 的 ndarray
權重向量。
- n_iter整數 (int),可選
求解器執行的實際迭代次數。僅當
return_n_iter
為 True 時才會回傳。- intercept浮點數 (float) 或形狀為 (n_targets,) 的 ndarray
模型的截距。僅當
return_intercept
為 True 且 X 是 scipy 稀疏陣列時才會回傳。
註解
此函數不會計算截距。
正規化可以改善問題的條件性,並減少估計值的變異數。數值越大,正規化的強度越高。Alpha 值在其他線性模型(例如
LogisticRegression
或LinearSVC
)中對應於1 / (2C)
。如果傳遞的是陣列,則假定懲罰項是針對特定目標的。因此,它們的數量必須對應。範例
>>> import numpy as np >>> from sklearn.datasets import make_regression >>> from sklearn.linear_model import ridge_regression >>> rng = np.random.RandomState(0) >>> X = rng.randn(100, 4) >>> y = 2.0 * X[:, 0] - 1.0 * X[:, 1] + 0.1 * rng.standard_normal(100) >>> coef, intercept = ridge_regression(X, y, alpha=1.0, return_intercept=True) >>> list(coef) [np.float64(1.9...), np.float64(-1.0...), np.float64(-0.0...), np.float64(-0.0...)] >>> intercept np.float64(-0.0...)