100-Days-Of-ML-Code项目解读:多元线性回归实战指南
2025-07-05 01:49:31作者:宣利权Counsellor
什么是多元线性回归
多元线性回归是机器学习中最基础的监督学习算法之一,它通过建立多个自变量与因变量之间的线性关系来进行预测。与简单线性回归不同,多元线性回归可以处理多个特征变量,这使得它在实际业务场景中应用更为广泛。
数据预处理阶段
导入必要的库
在Python中,我们首先需要导入数据处理和分析的核心库:
import pandas as pd # 用于数据框操作
import numpy as np # 用于数值计算
加载数据集
使用pandas的read_csv方法加载CSV格式的数据集:
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[ : , :-1].values # 提取所有行和除最后一列外的所有列作为特征
Y = dataset.iloc[ : , 4 ].values # 提取第5列(索引4)作为目标变量
分类数据编码
当数据中包含分类变量时,我们需要将其转换为数值形式。这里使用了两种编码技术:
- 标签编码(Label Encoding):将类别转换为数字标签
- 独热编码(One-Hot Encoding):创建虚拟变量(dummy variables)
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# 对第4列(索引3)进行标签编码
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
# 对编码后的列进行独热编码
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
避免虚拟变量陷阱
虚拟变量陷阱是指当所有虚拟变量都包含在模型中时会导致多重共线性问题。解决方法通常是删除一个虚拟变量:
X = X[: , 1:] # 删除第一列虚拟变量
数据集划分
将数据划分为训练集和测试集是评估模型性能的关键步骤:
from sklearn.cross_validation import train_test_split
# 80%训练,20%测试,random_state确保可重复性
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)
模型训练阶段
创建并训练多元线性回归模型
使用scikit-learn的LinearRegression类:
from sklearn.linear_model import LinearRegression
regressor = LinearRegression() # 创建回归器实例
regressor.fit(X_train, Y_train) # 在训练数据上拟合模型
预测与评估
在测试集上进行预测
y_pred = regressor.predict(X_test) # 使用训练好的模型进行预测
深入理解
-
特征重要性:多元线性回归模型的系数可以解释为特征的重要性,正系数表示正相关,负系数表示负相关。
-
模型假设:
- 线性关系假设
- 误差项正态分布
- 同方差性
- 无多重共线性
-
评估指标:虽然代码中没有显示评估部分,但常用的评估指标包括:
- R平方值
- 均方误差(MSE)
- 平均绝对误差(MAE)
实际应用建议
-
特征缩放:虽然线性回归不需要特征缩放,但在某些情况下可以加速收敛。
-
异常值处理:线性回归对异常值敏感,建议在预处理阶段进行检查。
-
正则化:当存在过拟合风险时,可以考虑使用岭回归或Lasso回归。
通过这个实战案例,我们完整地展示了多元线性回归从数据预处理到模型预测的全流程,这是机器学习项目中的标准工作流程。