ridge_regression#
- 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)#
解决岭方程通过正规方程法。
更多信息请参阅 用户指南 。
- Parameters:
- X{array-like, sparse matrix, LinearOperator} of shape (n_samples, n_features)
训练数据。
- yarray-like of shape (n_samples,) or (n_samples, n_targets)
目标值。
- alphafloat or array-like of shape (n_targets,)
乘以L2项的常数,控制正则化强度。
alpha
必须是一个非负浮点数,即在[0, inf)
中。当
alpha = 0
时,目标等同于普通最小二乘法,由LinearRegression
对象解决。出于数值原因,不建议使用alpha = 0
与Ridge
对象。相反,你应该使用LinearRegression
对象。如果传递了一个数组,则假定惩罚是特定于目标的。因此它们必须在数量上对应。
- sample_weightfloat or array-like of shape (n_samples,), default=None
每个样本的个体权重。如果给定一个浮点数,每个样本将有相同的权重。如果 sample_weight 不是 None 且 solver=’auto’,则求解器将设置为 ‘cholesky’。
Added in version 0.17.
- solver{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, default=’auto’
在计算例程中使用的求解器:
‘auto’ 根据数据类型自动选择求解器。
‘svd’ 使用 X 的奇异值分解来计算岭系数。它是最稳定的求解器,特别是对于奇异矩阵比 ‘cholesky’ 更稳定,但速度较慢。
‘cholesky’ 使用标准的 scipy.linalg.solve 函数通过 Cholesky 分解 dot(X.T, X) 获得闭式解。
‘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’ 外的所有求解器都支持密集和稀疏数据。然而,只有 ‘lsqr’, ‘sag’, ‘sparse_cg’ 和 ‘lbfgs’ 在
fit_intercept
为 True 时支持稀疏输入。Added in version 0.17: 随机平均梯度下降求解器。
Added in version 0.19: SAGA 求解器。
- max_iterint, default=None
共轭梯度求解器的最大迭代次数。对于 ‘sparse_cg’ 和 ‘lsqr’ 求解器,默认值由 scipy.sparse.linalg 确定。对于 ‘sag’ 和 saga 求解器,默认值为 1000。对于 ‘lbfgs’ 求解器,默认值为 15000。
- tolfloat, default=1e-4
解的精度。注意
tol
对 ‘svd’ 和 ‘cholesky’ 求解器没有影响。Changed in version 1.2: 默认值从 1e-3 改为 1e-4,以与其他线性模型保持一致。
- verboseint, default=0
详细级别。设置 verbose > 0 将根据使用的求解器显示额外信息。
- positivebool, default=False
当设置为
True
时,强制系数为正。只有 ‘lbfgs’ 求解器在这种情况下受支持。- random_stateint, RandomState instance, default=None
当
solver
== ‘sag’ 或 ‘saga’ 时用于打乱数据。详见 Glossary 。- return_n_iterbool, default=False
如果为 True,该方法还将返回
n_iter
,即求解器执行的实际迭代次数。Added in version 0.17.
- return_interceptbool, default=False
如果为 True 且 X 是稀疏的,该方法还将返回截距,并且求解器将自动更改为 ‘sag’。这只是对稀疏数据拟合截距的一个临时修复。对于密集数据,请在回归之前使用 sklearn.linear_model._preprocess_data。
Added in version 0.17.
- check_inputbool, default=True
如果为 False,则不会检查输入数组 X 和 y。
Added in version 0.21.
- Returns:
- coefndarray of shape (n_features,) or (n_targets, n_features)
权重向量。
- n_iterint, optional
求解器执行的实际迭代次数。仅在
return_n_iter
为 True 时返回。- interceptfloat or ndarray of shape (n_targets,)
模型的截距。仅在
return_intercept
为 True 且 X 是 scipy 稀疏数组时返回。
Notes
该函数不会计算截距。
正则化改善了问题的条件,并减少了估计的方差。较大的值指定更强的正则化。Alpha 对应于其他线性模型中的
1 / (2C)
,例如LogisticRegression
或LinearSVC
。如果传递了一个数组,则假定惩罚是特定于目标的。因此它们必须在数量上对应。Examples
>>> 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) [1.9..., -1.0..., -0.0..., -0.0...] >>> intercept -0.0...