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 = 0
与Ridge
对象。相反,你应该使用LinearRegression
对象。如果传递了一个数组,则假定惩罚是特定于目标的。因此它们必须在数量上对应。
- fit_interceptbool, default=True
是否为此模型拟合截距。如果设置为false,则在计算中不使用截距(即,
X
和y
应为中心化)。- 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’更适合于大规模数据(可以设置
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求解器。
- 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)
,例如LogisticRegression
或LinearSVC
。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\) 相对于
y
的self.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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.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 infit
.
- 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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.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 inscore
.
- Returns:
- selfobject
The updated object.