【scikit-learn】sklearn.linear_model.LinearRegression 类:线性回归

sklearn.linear_model.LinearRegression(线性回归)

LinearRegressionsklearn.linear_model 提供的 普通最小二乘回归模型,适用于 回归任务,用于 预测连续数值


1. LinearRegression 作用

  • 基于最小二乘法拟合数据,找到最佳拟合的直线。
  • 适用于特征与目标变量之间是线性关系的情况
  • 不包含正则化项(无 L1L2 惩罚项),适合 无多重共线性 的数据。

2. LinearRegression 代码示例

(1) 训练线性回归模型

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt

# 生成数据(100 个样本,1 个特征,带噪声)
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)

# 训练线性回归模型
model = LinearRegression()
model.fit(X, y)

# 预测
y_pred = model.predict(X)

# 可视化
plt.scatter(X, y, label="真实数据")
plt.plot(X, y_pred, color="red", label="线性回归拟合")
plt.legend()
plt.show()

解释

  • fit(X, y) 训练线性回归模型,学习 权重(斜率)和截距
  • predict(X) 进行预测,绘制拟合直线。

3. LinearRegression 主要参数

LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)
参数说明
fit_intercept是否计算截距(默认 True
normalize是否对数据进行归一化(已被弃用,推荐使用 StandardScaler
copy_X是否复制 X(防止修改原数据)
n_jobs并行计算(None 表示单线程)

4. 获取回归系数

print("斜率(权重):", model.coef_)
print("截距:", model.intercept_)

解释

  • coef_:回归系数(斜率)。
  • intercept_:截距(当 X=0 时的预测值)。

5. 计算模型性能

from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)

print("均方误差 MSE:", mse)
print("决定系数 R²:", r2)

解释

  • MSE(均方误差):值越小,拟合效果越好。
  • R²(决定系数)1 表示完美拟合,0 表示无解释能力。

6. LinearRegression vs. Ridge vs. Lasso

模型适用情况是否正则化
LinearRegression标准线性回归,无多重共线性时适用
Ridge数据存在多重共线性,防止过拟合L2
Lasso自动特征选择,压缩部分系数到 0L1

示例:

from sklearn.linear_model import Ridge, Lasso

ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)

print("Ridge 斜率:", ridge.coef_)
print("Lasso 斜率:", lasso.coef_)

解释

  • Ridge 增加 L2 正则化,防止过拟合
  • Lasso 增加 L1 正则化,部分特征权重会变成 0(特征选择)

7. 适用场景

  • 预测连续变量(如房价、销量)。
  • 特征与目标变量呈线性关系
  • 数据集较小,且不存在多重共线性

8. 结论

  • LinearRegression 是最基础的回归模型,适用于 线性关系数据
  • 如果数据存在 多重共线性,可以使用 RidgeLasso 进行正则化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值