云计算百科
云计算领域专业知识百科平台

速通机器学习 02 | 线性回归

前言

上一节我们学了 KNN 分类算法(用来“分类、判断类别”)。

这一节我们学机器学习 最基础、最重要的回归算法——线性回归。

如果说 KNN 是猜类别,那线性回归就是 猜数字。

1. 什么是线性回归?

生活中很多问题都是 预测数值:

  • 根据房子面积预测房价
  • 根据学习时长预测 考试分数
  • 根据天数预测 销量、温度、走势

这些连续的数字预测,全部属于:回归任务。

线性回归的核心思想:

从数学统计的角度来看,当我们把只有一个特征的数据点画在图上,通过观察可以发现,可以找到一条最贴合所有数据点的直线。之后对于新的数据,直接用这条直线来预测结果。

线性回归:找到一条最贴合所有数据的直线

小知识:相关关系 ≠ 因果关系

线性回归研究的是变量之间的相关关系——两个变量一起变化的趋势。

举个例子:冰淇淋销量和溺水人数,数据上看起来正相关,但不是因果关系(不是冰淇淋导致溺水),而是因为天热两者都增加。

所以用线性回归时,要结合业务常识判断,不要看到相关就认为有因果。

2. 数学公式

数学原理不做过多的解释,理解一下整体的流程就好,代码会帮我们运算,不懂的数学部分可以直接略过看代码部分

一元线性公式:

y=kx+b

  • x:输入特征(比如房子面积)
  • y:预测结果(房价)
  • k:斜率(权重)
  • b:截距(偏置)

机器训练的过程,就是 自动算出最合适的 k 和 b,让这条线最贴合数据。

拓展知识:误差项 & 多元线性回归

1. 误差项 ε

完整公式其实是y=kx+b+\\varepsilon,ε代表除x外其他所有随机因素的影响。现实世界太复杂,不可能把所有因素都放进模型,所以误差永远存在。

2. 多元线性回归

实际项目往往有多个特征,比如预测房价要看面积、房间数、楼龄。公式变成:y=k1x1+k2x2+...+b,每个特征对应一个权重。

代码不用改,传多列特征进去就行,sklearn自动处理。

二元线性回归:找到一个最贴合数据的平面

3. 机器怎么“学会”这条线或者平面?

我们随便画一条线肯定不准。

机器的目标:让所有样本的预测值和真实值差距最小。

这个差距,叫做 误差(损失)。

线性回归默认使用 最小二乘法 计算最优解:

简单理解:让所有点到直线的总误差最小。

我们不用手推公式,代码会自动帮我们算出最优 k、b。

4. 线性回归能干什么?

4.1 解决回归问题(预测数字)

房价、股票、温度、销量、薪资预测全部适用。

4.2 分析特征影响大小

权重 k 越大,代表这个特征对结果影响越大,非常适合做数据分析。

4.3 怎么判断变量"线不线性"?——相关系数

在用线性回归之前,我们通常先看看两个变量到底有没有线性关系。

最常用的指标:皮尔逊相关系数(r)

  • r 接近 1:强正相关(x越大,y越大)
  • r 接近 -1:强负相关(x越大,y越小)
  • r 接近 0:几乎没线性关系

经验判断标准:

相关系数绝对值

相关程度

≥ 0.8

高度相关

0.5 ~ 0.8

中度相关

0.3 ~ 0.5

低度相关

< 0.3

基本不相关

如果两个变量相关系数很低,用线性回归效果就不会好,这时要考虑换模型或做特征工程。

相关系数怎么算?

公式不用死记,理解思想就行:r = \\frac{\\sum (x-\\bar{x})(y-\\bar{y})}{\\sqrt{\\sum (x-\\bar{x})^2 \\cdot \\sum (y-\\bar{y})^2}}

大白话拆解:

  • 分子:x和y的"变化趋势是否一致"——x偏大时y也偏大,乘起来就是正的;x大y小,乘起来就是负的
  • 分母:把x和y各自的波动幅度做标准化,消除量纲影响
  • 最终结果被压缩在 [-1, 1] 之间

举个极简例子(手算感受一下)

x = [1, 2, 3],y = [2, 4, 6]

x的平均值=2,y的平均值=4

分子:(1-2)(2-4) + (2-2)(4-4) + (3-2)(6-4) = 2 + 0 + 2 = 4

分母:√[(1+0+1) × (4+0+4)] = √[2×8] = √16 = 4

r = 4/4 = 1 → 完美正相关!

实际工作不用手算,一行代码搞定:

如果两个变量相关系数很低,用线性回归效果就不会好,这时要考虑换模型或做特征工程。

5. 实战代码:多元线性回归完整案例(可直接运行)

场景:根据体重、年龄,预测人体收缩血压(经典多元线性回归实战)

代码分段讲解:读取本地数据、特征标签分离、模型训练、参数查看、预测评估

5.1 代码分段精讲

数据在本文的开头可以下载。

数据样例:

多元线性回归数据:体重、年龄、血压收缩

下面将代码拆分为:导库 → 读取数据 → 分离特征标签 → 模型训练 → 模型评估 → 新数据预测 六个步骤,逐块讲解:

第一步:导入所需工具库

pandas 用于读取、处理表格数据;LinearRegression 是 sklearn 内置的线性回归模型,直接拿来用,无需自己写公式。

import pandas as pd
from sklearn.linear_model import LinearRegression

第二步:读取本地CSV数据集

读取电脑本地的多元回归数据文件,设置编码为 gbk,避免中文列名乱码。

# 读取本地多元线性回归数据集
data = pd.read_csv(r"D:\\pythoncode2\\bigdata_ai40\\机器学习\\data\\多元线性回归.csv", encoding='gbk')

第三步:分离特征与标签(核心步骤)

机器学习训练必须区分:特征X(用来预测的依据) 和 标签Y(需要预测的结果)。

本次用两个特征:体重、年龄,预测标签:血压收缩,属于标准多元线性回归(多特征预测单数值)。

# 特征:体重、年龄(多个特征=多元回归)
x = data[['体重', '年龄']]
# 标签:最终要预测的血压值
y = data['血压收缩']

第四步:创建模型并训练数据

实例化线性回归模型,通过 fit() 方法让模型学习数据规律,自动计算出最优权重k和截距b。

# 初始化线性回归模型
lr_model = LinearRegression()
# 传入特征、标签,完成模型训练
lr_model.fit(x, y)

第五步:模型自测评估

使用 score() 方法计算 R² 得分,用来判断模型拟合效果,分数越接近1,模型预测越准确。

# 自测模型准确率(R²得分)
score = lr_model.score(x, y)
print(f"模型R²拟合得分:{score:.3f}")

第六步:新增!模型参数查看 + 新数据预测

训练完成后,可查看模型学到的规律,同时对未知新数据做预测,真正实现AI预测效果。

# 查看各特征权重(体重、年龄对血压的影响程度)
print("特征权重:", lr_model.coef_)
# 查看模型截距
print("模型截距:", lr_model.intercept_)
预测新数据:体重80kg、年龄35岁的血压值
new_pred = lr_model.predict([[80, 35]])
print(f"体重80kg/35岁 预测血压:{new_pred[0]:.1f}")

总结

线性回归是机器学习里最基础、最实用的回归算法,核心就是找到一条最贴合所有数据点的直线(或平面),用来预测连续数值。

整个过程不需要手推公式,sklearn 的 LinearRegression 一行代码就能完成训练和预测。只要理解特征、标签、权重、截距这几个概念,再结合相关系数判断变量线性关系,就能上手实战。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 速通机器学习 02 | 线性回归
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!