线性回归#
- class sklearn.linear_model.LinearRegression(*, fit_intercept=True, copy_X=True, n_jobs=None, positive=False)[source]#
普通最小二乘线性回归。
LinearRegression 拟合具有系数 w = (w1, …, wp) 的线性模型,以最小化数据集中的观察目标与线性逼近预测的目标之间的残差平方和。
- 参数:
- fit_intercept布尔值,默认值为 True
是否计算此模型的截距。如果设置为 False,则计算中不使用截距(即,数据应居中)。
- copy_X布尔值,默认值为 True
如果为 True,则复制 X;否则,它可能会被覆盖。
- n_jobs整数,默认值为 None
用于计算的作业数。仅当问题足够大时,才会提高速度,即首先
n_targets > 1
,其次X
为稀疏矩阵或positive
设置为True
。在joblib.parallel_backend
环境之外,None
表示1。-1
表示使用所有处理器。更多详情请参见术语表。- positivebool,默认为False
设置为
True
时,强制系数为正。此选项仅支持密集数组。0.24版本新增。
- 属性:
- coef_形状为 (n_features,) 或 (n_targets, n_features) 的数组
线性回归问题的估计系数。如果在拟合过程中传递多个目标 (y 为二维数组),则为形状为 (n_targets, n_features) 的二维数组;如果只传递一个目标,则为长度为 n_features 的一维数组。
- rank_int
矩阵
X
的秩。仅当X
为密集矩阵时可用。- singular_形状为 (min(X, y),) 的数组
X
的奇异值。仅当X
为密集矩阵时可用。- intercept_float 或形状为 (n_targets,) 的数组
线性模型中的独立项。如果
fit_intercept = False
,则设置为 0.0。- n_features_in_int
在拟合过程中看到的特征数量。
0.24版本新增。
- feature_names_in_形状为 (
n_features_in_
,) 的ndarray 在拟合过程中看到的特征名称。仅当
X
的特征名称全部为字符串时定义。1.0版本新增。
另请参阅
Ridge
岭回归通过对系数大小施加带有L2正则化的惩罚来解决普通最小二乘法的一些问题。
Lasso
Lasso是一种使用L1正则化估计稀疏系数的线性模型。
ElasticNet
弹性网络是一种使用系数的L1和L2范数正则化进行训练的线性回归模型。
备注
从实现的角度来看,这只是简单的普通最小二乘法 (scipy.linalg.lstsq) 或非负最小二乘法 (scipy.optimize.nnls) 包装为预测器对象。
示例
>>> import numpy as np >>> from sklearn.linear_model import LinearRegression >>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) >>> # y = 1 * x_0 + 2 * x_1 + 3 >>> y = np.dot(X, np.array([1, 2])) + 3 >>> reg = LinearRegression().fit(X, y) >>> reg.score(X, y) 1.0 >>> reg.coef_ array([1., 2.]) >>> reg.intercept_ np.float64(3.0...) >>> reg.predict(np.array([[3, 5]])) array([16.])
- fit(X, y, sample_weight=None)[source]#
拟合线性模型。
- 参数:
- X形状为 (n_samples, n_features) 的{类数组,稀疏矩阵}
训练数据。
- y形状为 (n_samples,) 或 (n_samples, n_targets) 的类数组
目标值。如有必要,将转换为 X 的 dtype。
- sample_weight形状为 (n_samples,) 的类数组,默认为 None
每个样本的个体权重。
0.17版本新增: LinearRegression 的参数 sample_weight 支持。
- 返回:
- selfobject
已拟合的估计器。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
,封装了路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool,默认为True
如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。
- 返回:
- paramsdict
参数名称与其值的映射。
- predict(X)[source]#
使用线性模型进行预测。
- 参数:
- X类数组或稀疏矩阵,形状为 (n_samples, n_features)
样本。
- 返回:
- C数组,形状为 (n_samples,)
返回预测值。
- score(X, y, sample_weight=None)[source]#
返回预测的决定系数。
决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和
((y_true - y_pred)** 2).sum()
,\(v\) 是总平方和((y_true - y_true.mean()) ** 2).sum()
。最佳得分是 1.0,也可能为负值(因为模型可能任意差)。一个始终预测y
期望值的常数模型,忽略输入特征,其 \(R^2\) 得分为 0.0。- 参数:
- X形状为 (n_samples, n_features) 的类数组
测试样本。对于某些估计器,这可能是预计算的核矩阵或形状为
(n_samples, n_samples_fitted)
的泛型对象列表,其中n_samples_fitted
是估计器拟合中使用的样本数量。- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组
X
的真实值。- sample_weight形状为 (n_samples,) 的类数组,默认为 None
样本权重。
- 返回:
- score浮点数
self.predict(X)
关于y
的 \(R^2\)。
备注
从 0.23 版本开始,调用回归器的
score
方法时使用的 \(R^2\) 分数使用multioutput='uniform_average'
,以保持与r2_score
的默认值一致。这会影响所有多输出回归器的score
方法(MultiOutputRegressor
除外)。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearRegression [source]#
传递给
fit
方法的请求元数据。请注意,只有在
enable_metadata_routing=True
时(参见sklearn.set_config
)此方法才相关。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则传递给fit
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给fit
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求而无需更改其他参数。1.3 版本中新增。
注意
仅当此估计器用作元估计器的子估计器时(例如,在
Pipeline
中使用)此方法才相关。否则,它没有任何作用。- 参数:
- sample_weightstr、True、False 或 None,默认为 sklearn.utils.metadata_routing.UNCHANGED
fit
中sample_weight
参数的元数据路由。
- 返回:
- selfobject
更新后的对象。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有<component>__<parameter>
形式的参数,因此可以更新嵌套对象的每个组件。- 参数:
- **params字典
估计器参数。
- 返回:
- self估计器实例
估计器实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LinearRegression [source]#
传递给
score
方法的请求元数据。请注意,只有在
enable_metadata_routing=True
时(参见sklearn.set_config
)此方法才相关。请参阅 用户指南,了解路由机制的工作原理。每个参数的选项为
True
:请求元数据,如果提供则传递给score
。如果未提供元数据,则忽略请求。False
:不请求元数据,元估计器不会将其传递给score
。None
:不请求元数据,如果用户提供元数据,元估计器将引发错误。str
:元数据应使用此给定的别名而不是原始名称传递给元估计器。
默认值(
sklearn.utils.metadata_routing.UNCHANGED
)保留现有的请求。这允许您更改某些参数的请求而无需更改其他参数。1.3 版本中新增。
注意
仅当此估计器用作元估计器的子估计器时(例如,在
Pipeline
中使用)此方法才相关。否则,它没有任何作用。- 参数:
- sample_weightstr、True、False 或 None,默认为 sklearn.utils.metadata_routing.UNCHANGED
score
中sample_weight
参数的元数据路由。
- 返回:
- selfobject
更新后的对象。
图库示例#
使用 KBinsDiscretizer 对连续特征进行离散化