《什么是线性回归,成本函数,梯度下降》

发布时间:2026/10/17 15:57:30

《什么是线性回归,成本函数,梯度下降》 线性回归线性回归就是找一条直线让这条直线贴合数据用来预测新的数据成本函数成本函数就是用来衡量这条直线画的好不好的一个数字。误差越大成本越高画的越差。梯度下降梯度下降是一种方法通过不断调整参数让成本函数越来越小最后找到最好的直线从何而来线性回归因为显示数据中很多都是线性关系我们想用一个简单模型去描述它。代码import numpy as npimport matplotlib.pyplot as plt# 生成模拟数据房子的面积和价格x np.array([?,? ?,? ?, ], dtypefloat) # 面积y np.array([?,?,?,?,?], dtypefloat) # 价格# 线性回归y w * x b# 用最小二乘法直接求解析解n len(x)# 求斜率 ww (n * np.sum(x * y) - np.sum(x) * np.sum(y)) / (n * np.sum(x**2) - np.sum(x)**2)# 求截距 bb (np.sum(y) - w * np.sum(x)) / nprint(f斜率 w {w})print(f截距 b {b})print(f预测函数y {w:.2f} * x {b:.2f})# 画图plt.scatter(x, y, colorblue, label真实数据)plt.plot(x, w * x b, colorred, label预测直线)plt.xlabel(面积)plt.ylabel(价格)plt.title(线性回归)plt.legend()plt.grid(True)plt.show()成本函数因为我们需要一个标准来比较不同直线的优劣。代码import numpy as npimport matplotlib.pyplot as plt# 模拟数据x np.array([?,?,?,?,?], dtypefloat)y np.array([?,?,?,?,?], dtypefloat)def compute_cost(x, y, w, b):计算均方误差成本函数J(w, b) (1 / 2n) * Σ(wx b - y)²n len(x)predictions w * x bcost (1 / (2 * n)) * np.sum((predictions - y) ** 2)return cost# 测试几组 w 和 b看看成本函数的变化print(当 w 0, b 0 时成本 , compute_cost(x, y, 0, 0))print(当 w 1, b 0 时成本 , compute_cost(x, y, 1, 0))print(当 w 2, b 1 时成本 , compute_cost(x, y, 2, 1))# 画出成本函数随 w 变化的曲线w_values np.linspace(0, 4, 100)costs [compute_cost(x, y, w, 0) for w in w_values]plt.plot(w_values, costs)plt.xlabel(w)plt.ylabel(成本 J(w))plt.title(成本函数曲线)plt.grid(True)plt.show()梯度下降因为很多问题没有解析解需要一个能一步步逼近最优解的方法。代码import numpy as npimport matplotlib.pyplot as plt# 模拟数据x np.array([?,?,?,?,?], dtypefloat)y np.array([?,?,?,?,?], dtypefloat)def gradient_descent(x, y, w_init, b_init, learning_rate, iterations):用梯度下降找最优的 w 和 bw w_initb b_initn len(x)cost_history [] # 记录每次迭代的成本for i in range(iterations):# 预测值predictions w * x b# 计算梯度dw (1 / n) * np.sum((predictions - y) * x)db (1 / n) * np.sum(predictions - y)# 更新参数w w - learning_rate * dwb b - learning_rate * db# 计算并记录成本cost (1 / (2 * n)) * np.sum((predictions - y) ** 2)cost_history.append(cost)return w, b, cost_history# 初始参数w_init 0b_init 0learning_rate 0.01iterations 1000# 执行梯度下降w_final, b_final, cost_history gradient_descent(x, y, w_init, b_init, learning_rate, iterations)print(f最终的 w {w_final})print(f最终的 b {b_final})print(f预测函数y {w_final:.2f} * x {b_final:.2f})# 画成本函数随迭代次数的变化plt.plot(cost_history)plt.xlabel(迭代次数)plt.ylabel(成本 J(w, b))plt.title(梯度下降过程)plt.grid(True)plt.show()线性回归预测成本函数判断好坏梯度下降找到最优参数
延伸阅读

更多相关文章

2026/10/17 0:39:17

AI漫剧实操指南

AI漫剧制作全流程实操指南:零基础单人低成本起号,抢占短视频流量红利! 摘要:本文系统介绍了AI漫剧制作的完整六步流程:从剧本创作、分镜设计、文生图、图生视频、剪辑配音到发布优化。针对零基础创作者,详细拆解了每个环节的核心要点、实用技巧和避坑指南,提供可复用的…

2026/10/17 1:37:08

计算机毕业设计之青海省留守儿童资助管理平台的设计与实现

随着青海省城乡经济差异的不断扩大,大量农村劳动力涌向城市寻求更好的就业机会和生活条件,导致农村地区出现了大量的留守儿童,这些孩子因父母长期在外务工,缺乏直接的关爱与教育引导,面临着生活照顾不足、学习辅导缺失…

2026/10/16 5:29:20

Vim常用操作/命令

Vim 是 Unix/Linux 系统中的一种文本编辑器。它最大的特点是完全可以通过键盘操作,熟练之后编辑代码和文本的效率非常高,但对新手而言其操作/命令不易记忆,这理整理了常用的Vim操作/命令。类别命令/操作说明模式切换i插入模式,光标…

2026/10/17 15:55:41

AI辅助MBA论文写作:9个靠谱工具与避坑指南

先给一句实话:AI论文网站不是“一键生成MBA论文”的神器,谁要是这么跟你保证,趁早拉黑。真正靠谱的用法,是把这些工具当成贴身研究助理——帮你找文献、理逻辑、调格式、改病句,但论文里的核心判断、行业分析和决策建议…

2026/10/17 15:55:41

软件系统实施方案怎么写?从环境基线到验收交付的落地指南

简介:这份资源是一份面向软件项目实施人员、项目经理及IT管理者的《软件系统实施方案》文档,聚焦于软件项目从启动到交接的全流程落地方法,适合需要编写实施方案或规范实施流程的从业者参考。压缩包内共1个doc文件,约72KB&#xf…

2026/10/17 15:55:41

MATLAB实现Koch曲线:分形迭代与复数坐标可视化

1. 项目概述:一条“自相似”的线,如何用几十行代码画出无限细节?你有没有见过雪花的边缘?放大再放大,它总在重复着相似的锯齿结构;或者海岸线的轮廓,无论卫星图还是显微镜下的岩石断面&#xff…

2026/10/17 15:55:41

HTTP协议分析实验:Wireshark抓包拆解请求/响应报文与GET/POST对比

HTTP协议分析实验,是计算机网络课程里最能让人“开窍”的一个实验。我当初做这个实验的时候,第一次在抓包工具里亲眼看到自己访问网页时发出的那些字节,才真正理解课本上说的“请求报文”“响应报文”不是抽象框架,而是实实在在写…

2026/10/17 15:55:41

Git 心智模型与事故恢复:新人版本控制实战指南

新同事第一天入职,组长让我抽个空把开发环境给他过一遍。我原本的计划特别朴素:花二十分钟把 Git 的日常链路演示一遍,能 clone、add、commit、push、pull,先跑起来别出岔子就行。结果这位新同学第一句“Git 和 SVN 到底差在哪”就…

2026/10/17 15:50:40

CC-Switch 完整安装与使用指南:从下载到 API 配置全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/17 14:20:58

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑