线性回归:模型怎样用一条线预测连续数值

发布时间:2026/7/10 3:50:55

线性回归:模型怎样用一条线预测连续数值
前面已经完成了数据清洗、特征工程、类别编码和数值缩放。现在可以训练第一个经典模型线性回归。它适合回答一类很具体的问题给定一些输入信息结果大概是一个什么连续数值比如房屋价格、订单金额、明天温度、配送时长或设备寿命。本课要解决什么问题假设只有一个特征房屋面积。历史数据告诉我们不同面积对应的成交价格。现在来了一套 92 平米的房子我们想估计它的价格。面积 (m²)成交价 (万元)451205814566168721808621598248110275这不是价格高、中、低的类别选择而是一个可能取 203.5 万、217.8 万等任意值的连续数值因此它是回归任务。从数学角度看模型在算什么一个特征时线性回归学的是一条直线y w x b y wx bywxbx xx是输入特征例如房屋面积y yy是要预测的目标例如房价w ww是权重表示面积每增加 1 个单位价格大约变多少b bb是偏置负责把整条线上下平移。实际项目通常有多个特征例如面积、房间数、楼层和到地铁站距离公式会扩展成多个特征的加权求和y w 1 x 1 w 2 x 2 w 3 x 3 b y w_1 x_1 w_2 x_2 w_3 x_3 byw1​x1​w2​x2​w3​x3​b写成矩阵形式就是y ^ X w b \hat{y} \mathbf{X}\mathbf{w} by^​Xwb其中X \mathbf{X}X是样本矩阵、w \mathbf{w}w是权重向量。核心还是加权求和只是从一条线变成了多维空间里的一个超平面。训练目标MSE 怎么度量错了多少模型一开始并不知道w ww和b bb应该取什么值所以先随便给一个。把每个样本的预测值y ^ i \hat{y}_iy^​i​和真实值y i y_iyi​比较MSE 1 n ∑ i 1 n ( y i − y ^ i ) 2 \text{MSE} \frac{1}{n}\sum_{i1}^{n}(y_i - \hat{y}_i)^2MSEn1​i1∑n​(yi​−y^​i​)2两个关键细节误差先平方保证正负误差不互相抵消同时放大惩罚大误差再取平均让不同样本数之间可比。模型训练的过程就是不断调整w ww和b bb让 MSE 越来越小。用 scikit-learn 跑通第一个例子下面是一个可以直接运行的最小示例数据手工构造便于把注意力放在模型上importnumpyasnpfromsklearn.linear_modelimportLinearRegressionfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportmean_squared_error,r2_score# X 必须是二维每一行一个样本每一列一个特征Xnp.array([[45],[58],[66],[72],[86],[98],[110]])ynp.array([120,145,168,180,215,248,275])X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42)modelLinearRegression()model.fit(X_train,y_train)# 用测试集评估y_predmodel.predict(X_test)print(f权重 (w):{model.coef_[0]:.2f})# 斜率print(f偏置 (b):{model.intercept_:.2f})# 截距print(fMSE:{mean_squared_error(y_test,y_pred):.2f})print(fR²:{r2_score(y_test,y_pred):.2f})# 对新样本预测pricemodel.predict(np.array([[92]]))print(f92 平米预测价:{price[0]:.1f}万元)新手最容易漏掉的三个细节X必须是二维的。即使只有一个特征面积也要写成[[45], [58], ...]每个内层列表是一个样本。y是一维目标数组。fit()是学习predict()是使用。调用predict()不会继续学习这正是测试集可以公平评估的原因。训练和预测的数据形状必须一致。训练用了 4 个特征预测时也必须传 4 个特征列数不匹配直接报错。为什么先划分训练集和测试集训练集用来拟合模型测试集要像未来新数据一样直到最后才交给模型预测。若模型已经见过测试集的真实答案再去算误差就没有意义了。划分要在训练前就完成X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42)下一课会专门讲如何用 MAE、MSE、RMSE 和 R² 判断模型在测试集上表现如何。线性回归的边界在哪里线性回归很适合做第一个基线模型训练快、可解释也能帮助发现数据流程问题。但它假设输入和输出之间是线性关系真实世界不一定如此。场景回归能行吗面积 → 房价基本线性可用广告投入 → 销量边际递减可能非线性用户年龄 → 消费力先升后降倒 U 型折扣力度 → 转化率阶跃式变化遇到明显弯曲、分段或复杂交互的关系不要急着换复杂模型先尝试三步特征变换取对数log ⁡ x \log xlogx、开方x \sqrt{x}x​、分桶后再 One-Hot特征交叉构造面积 × 房间数这样的新特征多项式特征加上x 2 x^2x2、x 3 x^3x3等非线性项。三步都不灵了再考虑决策树、随机森林等非线性模型。先用线性回归跑通流程得到一个可靠基线后续的改进才有比较对象。常见错误把分类问题拿来做回归用户会不会流失只有两个类别应该用分类模型“用户未来消费金额是多少才是回归。如果硬用线性回归去拟合 0/1 标签模型可能输出 0.37、-0.16 这种没有分类意义的概率”。任务目标决定模型和指标不能只看数据长得像不像数字。忘记处理缺失、类别和尺度线性回归不能直接读取字符串类别也不喜欢包含缺失值的输入数量级相差巨大的特征会让w i w_iwi​无法公平比较。前面几课的清洗、编码和缩放是训练流程的一部分不是可选装饰。只看训练集效果模型在训练数据上误差很小并不奇怪它本来就从这些样本中学习。测试集的表现才说明模型是否真正学会了规律。课后练习把示例里的单个特征扩展为两个特征面积和房间数。然后尝试预测一套 92 平米、3 室的房子价格。运行前先回答此时X的形状是(?, ?)小结回归任务预测连续数值线性回归学习特征与目标之间的线性关系y w 1 x 1 ⋯ b y w_1x_1 \dots byw1​x1​⋯bfit()学参数predict()预测新样本两者不互相影响先建立简单、可靠的基线再谈更复杂的模型永远在测试集上评估。下一课评估线性回归的预测模型到底平均错了多少发生大错时又该怎么看。在线阅读点击这里阅读博客原文原文地址https://bestsdz.xyz/posts/linear-regression-basics/

相关新闻

计算机二级公共基础 4 大模块:数据结构、算法、软件工程、数据库 2024 版核心考点解析

计算机二级公共基础 4 大模块:数据结构、算法、软件工程、数据库 2024 版核心考点解析

2026/7/10 3:50:55

计算机二级公共基础四大模块:2024版核心考点与高效备考策略对于准备参加计算机二级考试的考生而言,公共基础知识部分往往是复习过程中的难点与重点。本文将聚焦数据结构与算法、程序设计基础、软件工程基础和数据库设计基础这四大核心模块,结…

Python 3.12 集合运算:CCF-CSP 相似度计算 5行代码实现与性能优化

Python 3.12 集合运算:CCF-CSP 相似度计算 5行代码实现与性能优化

2026/7/10 3:40:55

Python 3.12 集合运算:CCF-CSP 相似度计算 5行代码实现与性能优化在CCF-CSP认证考试中,相似度计算是一个常见的题型。这类题目通常要求计算两个集合的Jaccard相似度,即交集大小与并集大小的比值。Python凭借其简洁的语法和强大的内置数据结构…

STM32智能家居机智云

STM32智能家居机智云

2026/7/10 3:40:55

STM32智能家居机智云 需要资料可留下邮箱,关注点赞+收藏哦! 一、功能介绍: 1)检测功能:检测环境温湿度、烟雾浓度、一氧化碳、空气质量、光照强度、大气压强 2)显示功能:将检测到的数…

Python 3.12 + OpenCV 4.8 游戏自动化脚本:5步实现后台键鼠与图色识别

Python 3.12 + OpenCV 4.8 游戏自动化脚本:5步实现后台键鼠与图色识别

2026/7/10 6:51:02

Python 3.12 OpenCV 4.8 游戏自动化脚本:5步实现后台键鼠与图色识别1. 环境准备与基础配置在开始编写游戏自动化脚本前,需要确保开发环境配置正确。Python 3.12作为最新稳定版本,在性能优化和语法特性上都有显著提升,而OpenCV 4.…

多模型编排:避免AI模型依赖风险与智能路由实践

多模型编排:避免AI模型依赖风险与智能路由实践

2026/7/10 6:51:02

这次我们来聊聊一个在AI开发者圈子里越来越重要的话题:如何避免对单一AI模型的过度依赖。如果你经常使用Claude、Codex这类大语言模型,可能会发现自己不自觉地形成了"模型忠诚"——习惯性地只用某个特定模型,而忽略了其他可能更适合…

科技进步奖答辩 PPT 设计四大关键准则

科技进步奖答辩 PPT 设计四大关键准则

2026/7/10 6:51:02

科技进步奖答辩PPT 作为项目成果可视化展示的核心媒介,优质的版式设计与内容排布能够系统呈现技术创新路径、关键突破与综合效益,直观凸显项目科学价值与产业贡献,助力评审快速抓取核心亮点、认可项目技术水平,完善的视觉呈现与逻…

给大家普及一下2026年Java面试的强度!

给大家普及一下2026年Java面试的强度!

2026/7/10 6:51:02

前几天收到一位粉丝私信,说的是他才一年半经验,去面试却被各种问到分布式,高并发,多线程之间的问题。基础层面上的是可以答上来,但是面试官深问的话就不会了!被问得都怀疑现在Java招聘初级岗位到底招的是初…

pxpipe:利用AI视觉通道降低Claude Code开发成本的创新方案

pxpipe:利用AI视觉通道降低Claude Code开发成本的创新方案

2026/7/10 6:51:02

如果你正在使用 Claude Code 进行日常开发,可能已经注意到一个现象:随着项目规模扩大,每次与 AI 助手交互的成本会显著上升。特别是在处理大型代码库时,系统提示、工具文档和会话历史会占用大量输入 token,而这些 toke…

ADP5350 PMIC与PIC24 MCU的嵌入式电源管理方案

ADP5350 PMIC与PIC24 MCU的嵌入式电源管理方案

2026/7/10 6:41:02

1. 为什么需要高级电源管理解决方案在现代嵌入式系统设计中,电源管理已经成为一个关键的技术挑战。随着设备功能越来越复杂,对电源系统的要求也水涨船高——需要同时满足高效率、低功耗、多电压域、智能控制等多重需求。这正是ADP5350这类PMIC&#xff0…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…