Ridge#

class 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范数给出。也称为岭回归或Tikhonov正则化。该估计器内置支持多变量回归(即,当y是一个形状为(n_samples, n_targets)的二维数组时)。

更多信息请参阅 用户指南

Parameters:
alpha{float, ndarray of shape (n_targets,)}, default=1.0

乘以L2项的常数,控制正则化强度。 alpha 必须是一个非负浮点数,即在 [0, inf) 中。

alpha = 0 时,目标等价于普通最小二乘法,由 LinearRegression 对象解决。出于数值原因,不建议使用 alpha = 0Ridge 对象。相反,你应该使用 LinearRegression 对象。

如果传递了一个数组,则假定惩罚是特定于目标的。因此它们必须在数量上对应。

fit_interceptbool, default=True

是否为此模型拟合截距。如果设置为false,则在计算中不使用截距(即, Xy 应为中心化)。

copy_Xbool, default=True

如果为True,将复制X;否则,可能会覆盖它。

max_iterint, default=None

共轭梯度求解器的最大迭代次数。对于’sparse_cg’和’lsqr’求解器,默认值由scipy.sparse.linalg决定。对于’sag’求解器,默认值为1000。对于’lbfgs’求解器,默认值为15000。

tolfloat, default=1e-4

解的精度( coef_ )由 tol 决定,它为每个求解器指定了一个不同的收敛准则:

  • ‘svd’:tol 无影响。

  • ‘cholesky’:tol 无影响。

  • ‘sparse_cg’: 残差的范数小于 tol

  • ‘lsqr’:tol 设置为scipy.sparse.linalg.lsqr的atol和btol,它们控制残差向量的范数在矩阵和系数的范数中的表示。

  • ‘sag’和’saga’: coef的相对变化小于 tol

  • ‘lbfgs’: 绝对(投影)梯度的最大值=max|残差|小于 tol

Changed in version 1.2: 默认值从1e-3改为1e-4,以与其他线性模型保持一致。

solver{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, default=’auto’

计算例程中使用的求解器:

  • ‘auto’根据数据类型自动选择求解器。

  • ‘svd’使用X的奇异值分解来计算Ridge系数。它是最稳定的求解器,特别是对于奇异矩阵比’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’外的所有求解器都支持密集和稀疏数据。然而,只有’lsqr’、’sag’、’sparse_cg’和’lbfgs’在 fit_intercept 为True时支持稀疏输入。

Added in version 0.17: 随机平均梯度下降求解器。

Added in version 0.19: SAGA求解器。

positivebool, default=False

当设置为 True 时,强制系数为正。只有’lbfgs’求解器在这种情况下受支持。

random_stateint, RandomState实例, default=None

solver == ‘sag’或’saga’时用于打乱数据。详见 Glossary

Added in version 0.17: random_state 以支持随机平均梯度。

Attributes:
coef_ndarray of shape (n_features,) or (n_targets, n_features)

权重向量。

intercept_float or ndarray of shape (n_targets,)

决策函数中的独立项。如果 fit_intercept = False ,则设置为0.0。

n_iter_None or ndarray of shape (n_targets,)

每个目标的实际迭代次数。仅适用于sag和lsqr求解器。其他求解器将返回None。

Added in version 0.17.

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称为所有字符串时定义。

Added in version 1.0.

solver_str

计算例程在拟合时使用的求解器。

Added in version 1.5.

See also

RidgeClassifier

岭分类器。

RidgeCV

内置交叉验证的岭回归。

KernelRidge

结合岭回归与核技巧的核岭回归。

Notes

正则化改善了问题的条件,并减少了估计的方差。较大的值指定更强的正则化。Alpha对应于其他线性模型中的 1 / (2C) ,例如 LogisticRegressionLinearSVC

Examples

>>> 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)#

拟合岭回归模型。

Parameters:
X{ndarray, sparse matrix},形状为 (n_samples, n_features)

训练数据。

yndarray,形状为 (n_samples,) 或 (n_samples, n_targets)

目标值。

sample_weightfloat 或 ndarray,形状为 (n_samples,),默认=None

每个样本的个体权重。如果给定一个浮点数,每个样本将有相同的权重。

Returns:
selfobject

拟合的估计器。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

使用线性模型进行预测。

Parameters:
Xarray-like 或 sparse matrix, shape (n_samples, n_features)

样本。

Returns:
Carray, shape (n_samples,)

返回预测值。

score(X, y, sample_weight=None)#

返回预测的决定系数。

决定系数 \(R^2\) 定义为 \((1 - rac{u}{v})\) ,其中 \(u\) 是残差平方和 ((y_true - y_pred)** 2).sum() ,而 \(v\) 是总平方和 ((y_true - y_true.mean()) ** 2).sum() 。最好的可能得分是 1.0,它可能是负的(因为模型可能任意地差)。一个总是预测 y 的期望值的常数模型,忽略输入特征,将得到 \(R^2\) 得分为 0.0。

Parameters:
Xarray-like of shape (n_samples, n_features)

测试样本。对于某些估计器,这可能是一个预计算的核矩阵或一个形状为 (n_samples, n_samples_fitted) 的通用对象列表,其中 n_samples_fitted 是估计器拟合中使用的样本数量。

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

X 的真实值。

sample_weightarray-like of shape (n_samples,), default=None

样本权重。

Returns:
scorefloat

\(R^2\) 相对于 yself.predict(X)

Notes

在调用回归器的 score 时使用的 \(R^2\) 得分从 0.23 版本开始使用 multioutput='uniform_average' 以保持与 r2_score 默认值一致。 这影响了所有多输出回归器的 score 方法(除了 MultiOutputRegressor )。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Ridge#

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in fit .

Returns:
selfobject

The updated object.

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') Ridge#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.