前言
上一节我们学了 KNN 分类算法(用来“分类、判断类别”)。
这一节我们学机器学习 最基础、最重要的回归算法——线性回归。
如果说 KNN 是猜类别,那线性回归就是 猜数字。
1. 什么是线性回归?
生活中很多问题都是 预测数值:
- 根据房子面积预测房价
- 根据学习时长预测 考试分数
- 根据天数预测 销量、温度、走势
这些连续的数字预测,全部属于:回归任务。
线性回归的核心思想:
从数学统计的角度来看,当我们把只有一个特征的数据点画在图上,通过观察可以发现,可以找到一条最贴合所有数据点的直线。之后对于新的数据,直接用这条直线来预测结果。

线性回归:找到一条最贴合所有数据的直线
|
小知识:相关关系 ≠ 因果关系 线性回归研究的是变量之间的相关关系——两个变量一起变化的趋势。 举个例子:冰淇淋销量和溺水人数,数据上看起来正相关,但不是因果关系(不是冰淇淋导致溺水),而是因为天热两者都增加。 所以用线性回归时,要结合业务常识判断,不要看到相关就认为有因果。 |
2. 数学公式
数学原理不做过多的解释,理解一下整体的流程就好,代码会帮我们运算,不懂的数学部分可以直接略过看代码部分
一元线性公式:

- x:输入特征(比如房子面积)
- y:预测结果(房价)
- k:斜率(权重)
- b:截距(偏置)
机器训练的过程,就是 自动算出最合适的 k 和 b,让这条线最贴合数据。
|
拓展知识:误差项 & 多元线性回归 1. 误差项 ε 完整公式其实是 2. 多元线性回归 实际项目往往有多个特征,比如预测房价要看面积、房间数、楼龄。公式变成: 代码不用改,传多列特征进去就行,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 |
基本不相关 |
如果两个变量相关系数很低,用线性回归效果就不会好,这时要考虑换模型或做特征工程。
相关系数怎么算?
公式不用死记,理解思想就行:
大白话拆解:
- 分子: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 一行代码就能完成训练和预测。只要理解特征、标签、权重、截距这几个概念,再结合相关系数判断变量线性关系,就能上手实战。
网硕互联帮助中心
,每个特征对应一个权重。





评论前必须登录!
注册