尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

速通机器学习 02 | 线性回归 前言上一节我们学了KNN 分类算法用来“分类、判断类别”。这一节我们学机器学习最基础、最重要的回归算法——线性回归。如果说 KNN 是猜类别那线性回归就是猜数字。1. 什么是线性回归生活中很多问题都是预测数值根据房子面积预测房价根据学习时长预测考试分数根据天数预测销量、温度、走势这些连续的数字预测全部属于回归任务。线性回归的核心思想从数学统计的角度来看当我们把只有一个特征的数据点画在图上通过观察可以发现可以找到一条最贴合所有数据点的直线。之后对于新的数据直接用这条直线来预测结果。线性回归找到一条最贴合所有数据的直线小知识相关关系 ≠ 因果关系线性回归研究的是变量之间的相关关系——两个变量一起变化的趋势。举个例子冰淇淋销量和溺水人数数据上看起来正相关但不是因果关系不是冰淇淋导致溺水而是因为天热两者都增加。所以用线性回归时要结合业务常识判断不要看到相关就认为有因果。2. 数学公式数学原理不做过多的解释理解一下整体的流程就好代码会帮我们运算不懂的数学部分可以直接略过看代码部分一元线性公式x输入特征比如房子面积y预测结果房价k斜率权重b截距偏置机器训练的过程就是自动算出最合适的 k 和 b让这条线最贴合数据。拓展知识误差项 多元线性回归1. 误差项 ε完整公式其实是ε代表除x外其他所有随机因素的影响。现实世界太复杂不可能把所有因素都放进模型所以误差永远存在。2. 多元线性回归实际项目往往有多个特征比如预测房价要看面积、房间数、楼龄。公式变成每个特征对应一个权重。代码不用改传多列特征进去就行sklearn自动处理。二元线性回归找到一个最贴合数据的平面3. 机器怎么“学会”这条线或者平面我们随便画一条线肯定不准。机器的目标让所有样本的预测值和真实值差距最小。这个差距叫做误差损失。线性回归默认使用最小二乘法计算最优解简单理解让所有点到直线的总误差最小。我们不用手推公式代码会自动帮我们算出最优 k、b。4. 线性回归能干什么4.1 解决回归问题预测数字房价、股票、温度、销量、薪资预测全部适用。4.2 分析特征影响大小权重 k 越大代表这个特征对结果影响越大非常适合做数据分析。4.3 怎么判断变量线不线性——相关系数在用线性回归之前我们通常先看看两个变量到底有没有线性关系。最常用的指标皮尔逊相关系数rr 接近 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的平均值2y的平均值4分子(1-2)(2-4) (2-2)(4-4) (3-2)(6-4) 2 0 2 4分母√[(101) × (404)] √[2×8] √16 4r 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(rD:\pythoncode2\bigdata_ai40\机器学习\data\多元线性回归.csv, encodinggbk)第三步分离特征与标签核心步骤机器学习训练必须区分特征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 一行代码就能完成训练和预测。只要理解特征、标签、权重、截距这几个概念再结合相关系数判断变量线性关系就能上手实战。
返回列表