100天机器学习实战:简单线性回归原理与实现详解
2025-07-05 01:48:36作者:范垣楠Rhoda
线性回归基础概念
简单线性回归是机器学习中最基础也最重要的算法之一,它通过建立自变量(X)和因变量(Y)之间的线性关系来进行预测。其数学表达式为:
Y = aX + b
其中:
- Y 是因变量(预测目标)
- X 是自变量(特征)
- a 是斜率(回归系数)
- b 是截距
数据预处理步骤
在开始建模前,我们需要对数据进行预处理:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据集
dataset = pd.read_csv('studentscores.csv')
# 提取特征和标签
X = dataset.iloc[:, :1].values # 第一列作为特征
Y = dataset.iloc[:, 1].values # 第二列作为标签
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(
X, Y,
test_size=0.25, # 25%数据作为测试集
random_state=0 # 随机种子保证可重复性
)
关键点解析:
- 使用pandas读取CSV数据文件
- iloc方法用于按位置选择数据
- train_test_split是划分数据集的标准方法
- test_size=0.25表示保留25%数据作为测试集
模型训练过程
from sklearn.linear_model import LinearRegression
# 创建线性回归模型实例
regressor = LinearRegression()
# 在训练数据上拟合模型
regressor.fit(X_train, Y_train)
模型训练原理:
- 最小二乘法:寻找使残差平方和最小的参数
- 模型会计算最优的斜率和截距
- fit方法完成参数估计过程
模型预测与评估
# 在测试集上进行预测
Y_pred = regressor.predict(X_test)
预测结果可以用于:
- 计算各种评估指标(如MSE、R²等)
- 与实际值比较分析模型性能
- 发现可能的异常值或模型不足
结果可视化分析
训练集可视化
plt.scatter(X_train, Y_train, color='red') # 绘制实际数据点
plt.plot(X_train, regressor.predict(X_train), color='blue') # 绘制回归线
plt.title('训练集结果可视化')
plt.xlabel('自变量')
plt.ylabel('因变量')
plt.show()
测试集可视化
plt.scatter(X_test, Y_test, color='red') # 测试集实际值
plt.plot(X_test, Y_pred, color='blue') # 测试集预测值
plt.title('测试集结果可视化')
plt.xlabel('自变量')
plt.ylabel('因变量')
plt.show()
可视化分析要点:
- 红点表示实际观测值
- 蓝线表示模型预测的回归线
- 点与线的距离反映了预测误差
- 比较训练集和测试集表现可判断模型泛化能力
实际应用建议
- 特征工程:尝试对特征进行变换(如对数变换)可能改善线性关系
- 模型诊断:检查残差是否随机分布,验证线性假设
- 扩展应用:了解多元线性回归处理多个特征的情况
- 正则化:当特征较多时,考虑岭回归或Lasso回归
通过这个简单但完整的示例,我们实践了机器学习项目的标准流程:数据准备→模型训练→预测评估→结果可视化。这是掌握更复杂模型的重要基础。