嶺迴歸#

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 = 0Ridge 物件。您應該改用 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' 更適合(可以設定 tolmax_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 值在其他線性模型(例如 LogisticRegressionLinearSVC)中對應於 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...)