【scikit-learn】sklearn.linear_model.LinearRegression 类:线性回归
·
sklearn.linear_model.LinearRegression(线性回归)
LinearRegression 是 sklearn.linear_model 提供的 普通最小二乘回归模型,适用于 回归任务,用于 预测连续数值。
1. LinearRegression 作用
- 基于最小二乘法拟合数据,找到最佳拟合的直线。
- 适用于特征与目标变量之间是线性关系的情况。
- 不包含正则化项(无
L1或L2惩罚项),适合 无多重共线性 的数据。
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 | 自动特征选择,压缩部分系数到 0 | L1 |
示例:
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是最基础的回归模型,适用于 线性关系数据。- 如果数据存在 多重共线性,可以使用
Ridge或Lasso进行正则化。
更多推荐


所有评论(0)