一、线性回归核心概念
- 基本定义:通过属性的线性组合进行预测的模型,目标是找到一条直线、平面或高维超平面,使预测值与真实值的误差最小化。
- 数学表达式
- 单变量:f(x)=w0+w1x(w0为截距,w1为权重)
- 多变量:f(x)=w1x1+w2x2+...+wdxd+b
- 向量形式:f(x)=wTx+b(w权重向量,b为偏置)
二、模型求解方法
- 最小二乘法:基于均方误差(对应欧氏距离)最小化进行求解,试图找到使所有样本到直线的欧氏距离之和最小的直线。
- 参数估计:通过求误差函数E(w,b)的最小值确定参数w和b,过程为对w和b求导并令导数为 0,求解得到最优参数。
三、评估指标
- 误差平方和(SSE/RSS):SSE=∑i=1m(yi−y^i)2,反映预测值与真实值的总误差。
- 均方误差(MSE):MSE=n1∑i=1n(yi−y^i)2,是 SSE 的平均值,消除了样本数量的影响。
- 决定系数(R²):R2=1−SSTSSE=1−VarMSE,越接近 1 说明模型拟合效果越好,其中 SST 为总平方和,Var 为真实值的方差。
四、多元线性回归
- 表达式:y=w0+w1x1+w2x2+...+wnxn,适用于多个特征变量的场景,通过多个特征的线性组合进行预测。
五、sklearn 线性回归工具
- 函数:
linear_model.LinearRegression()
- 主要参数
fit_intercept
:是否有截距,默认为 True,若为 False 则直线过原点。normalize
:是否将数据归一化,默认为 False。
六、课堂练习:波士顿房价预测
1. 代码实现
python
运行
# 导入必要的库
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.datasets import make_regression # 生成模拟回归数据集
# 生成模拟的房价相关数据集(特征数为5,样本数为500)
X, y = make_regression(n_samples=500, n_features=5, noise=20, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建线性回归模型
model = LinearRegression(fit_intercept=True, normalize=False)
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"均方误差(MSE):{mse}")
print(f"决定系数(R²):{r2}")
print("模型系数:", model.coef_)
print("截距:", model.intercept_)
2. 代码说明
- 数据划分:将数据集按 8:2 的比例划分为训练集和测试集,用于模型的训练和评估。
- 模型创建与训练:使用
LinearRegression
创建模型,设置有截距且不进行数据归一化,然后用训练集训练模型。 - 模型评估:通过计算均方误差(MSE)和决定系数(R²)评估模型性能,MSE 越小、R² 越接近 1,说明模型效果越好,同时输出模型的系数和截距,可了解各特征对房价的影响程度。