【深度学习与实战】2.1、线性回归模型与梯度下降法先导

 

import numpy as np# 数据准备
X = np.array([1, 2, 3])
y = np.array([3, 5, 7])# 参数初始化
w0, w1 = 0, 0
alpha = 0.1
n = len(X)# 迭代10次
for epoch in range(10):# 计算预测值y_pred = w1 * X + w0# 计算梯度grad_w0 = (1/n) * np.sum(y_pred - y)grad_w1 = (1/n) * np.sum((y_pred - y) * X)# 更新参数w0 = w0 - alpha * grad_w0w1 = w1 - alpha * grad_w1# 计算损失函数loss = (1/(2*n)) * np.sum((y_pred - y)**2)print(f'Epoch {epoch+1}: w0={w0:.3f}, w1={w1:.3f}, Loss={loss:.3f}')

 

六、代码实现(Python示例) 

import numpy as np# 数据准备
X = np.array([1, 2, 3])
y = np.array([3, 5, 7])# 参数初始化
w0, w1 = 0, 0
alpha = 0.1
n = len(X)# 迭代10次
for epoch in range(10):# 计算预测值y_pred = w1 * X + w0# 计算梯度grad_w0 = (1/n) * np.sum(y_pred - y)grad_w1 = (1/n) * np.sum((y_pred - y) * X)# 更新参数w0 = w0 - alpha * grad_w0w1 = w1 - alpha * grad_w1# 计算损失函数loss = (1/(2*n)) * np.sum((y_pred - y)**2)print(f'Epoch {epoch+1}: w0={w0:.3f}, w1={w1:.3f}, Loss={loss:.3f}')

七、总结

  • 线性回归‌:通过线性模型拟合数据,核心是最小化预测误差。
  • 梯度下降‌:通过计算损失函数的梯度,逐步调整参数逼近最优解。
  • 核心公式‌:参数更新规则 wj:=wj−α∂J∂wjwj​:=wj​−α∂wj​∂J​。
  • 实际应用‌:需注意学习率选择、特征缩放和收敛判断。

"""
2.1线性回归模型‌与‌梯度下降\
"""import numpy as np
import matplotlib.pyplot as plt# 设置随机种子(保证可重复性)
np.random.seed(42)# 生成特征 X(单变量)和标签 y
m = 100  # 样本数量
X = 2 * np.random.rand(m, 1)  # 生成 [0, 2) 之间的均匀分布数据
y = 4 + 3 * X + np.random.randn(m, 1)  # 真实关系: y = 4 + 3X + 高斯噪声# 可视化数据
plt.scatter(X, y, alpha=0.7)
plt.xlabel("X")
plt.ylabel("y")
plt.title("Simulated Linear Data")
plt.show()def linear_model(X, theta):"""线性回归的预测函数"""# 公式: h_θ(X) = θ₀ + θ₁X₁ + ... + θₙXₙ# X 形状: (m, n+1)(包含偏置项 1)# theta 形状: (n+1, 1)return X.dot(theta)def compute_cost(X, y, theta):"""计算均方误差(MSE)损失函数"""m = len(y)predictions = linear_model(X, theta)error = predictions - ycost = (1 / (2 * m)) * np.sum(error ** 2)  # 公式: J(θ) = 1/(2m) * Σ(hθ(Xⁱ) - yⁱ)²return cost
def gradient_descent(X, y, theta, alpha, num_iters):"""批量梯度下降算法"""m = len(y)cost_history = []  # 记录每次迭代的损失值for _ in range(num_iters):predictions = linear_model(X, theta)error = predictions - ygradients = (1 / m) * X.T.dot(error)  # 公式: ∇J(θ) = 1/m * Xᵀ(Xθ - y)theta -= alpha * gradients  # 参数更新: θ := θ - α∇J(θ)cost = compute_cost(X, y, theta)cost_history.append(cost)return theta, cost_history# 在特征矩阵 X 中添加偏置项(x₀ = 1)
X_b = np.c_[np.ones((m, 1)), X]  # 形状: (m, 2)# 初始化参数 θ(θ₀, θ₁)
theta_initial = np.random.randn(2, 1)# 设置超参数
alpha = 0.1       # 学习率
num_iters = 1000  # 迭代次数# 运行梯度下降
theta_optimized, cost_history = gradient_descent(X_b, y, theta_initial, alpha, num_iters)# 打印最优参数
print(f"最优参数: θ₀ = {theta_optimized:.3f}, θ₁ = {theta_optimized:.3f}")# 绘制损失函数下降曲线
plt.plot(range(num_iters), cost_history)
plt.xlabel("Iteration")
plt.ylabel("Cost (MSE)")
plt.title("Cost Function Convergence")
plt.show()# 绘制拟合直线和数据点
plt.scatter(X, y, alpha=0.7, label="Data")
plt.plot(X, X_b.dot(theta_optimized), color='red', linewidth=2, label="Linear Regression Fit")
plt.xlabel("X")
plt.ylabel("y")
plt.legend()
plt.title("Linear Regression with Gradient Descent")
plt.show()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

锐捷EWEB路由器 timeout.php任意文件上传漏洞代码审计(DVB-2025-9003)

免责声明 仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 一:产品介绍 锐捷EWEB路由器是锐…

flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)

如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数),你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…

sqlmap 源码阅读与流程分析

0x01 前言 还是代码功底太差,所以想尝试阅读 sqlmap 源码一下,并且自己用 golang 重构,到后面会进行 ysoserial 的改写;以及 xray 的重构,当然那个应该会很多参考 cel-go 项目 0x02 环境准备 sqlmap 的项目地址&…

vscode连接服务器失败问题解决

文章目录 问题描述原因分析解决方法彻底删除VS Code重新安装较老的版本 问题描述 vscode链接服务器时提示了下面问题: 原因分析 这是说明VScode版本太高了。 https://code.visualstudio.com/docs/remote/faq#_can-i-run-vs-code-server-on-older-linux-distribu…

企业网站源码HTML成品网站与网页代码模板指南

在当今数字化时代,企业网站已成为展示品牌形象、吸引客户和提供在线服务的重要工具。对于许多企业来说,使用现成的HTML网站源码模板是快速搭建网站的高效方式。本文将详细介绍企业网站源码、HTML成品网站以及网页代码模板的相关内容,帮助你快…

计算机网络 - OSI 七层模型

OSI 七层模型 OSI(Open System Interconnection,开放系统互联)模型由 ISO(国际标准化组织) 制定,目的是为不同计算机网络系统之间的通信提供一个标准化的框架。它将网络通信划分为 七个层次,每…

flutter-实现瀑布流布局及下拉刷新上拉加载更多

文章目录 1. 效果预览2. 结构分析3. 完整代码4. 总结 1. 效果预览 在 Flutter 应用开发中,瀑布流布局常用于展示图片、商品列表等需要以不规则但整齐排列的内容。同时,下拉刷新和上拉加载更多功能,能够极大提升用户体验,让用户方…

在 Ubuntu 下通过 Docker 部署 Nginx 服务器

1. Docker 和 Nginx 简介以及实验环境 Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成一个轻量级的、可移植的容器。通过 Docker,开发者可以在任何支持 Docker 的环境中运行应用,从而实现一致的开发和生产环境。Docke…

IoT平台实时监测机器人状态的实现方案

通过IoT平台实时监测机器人状态的实现方案与可执行路径 一、整体架构设计 #mermaid-svg-6xMlDfFSZM4Wc8tA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6xMlDfFSZM4Wc8tA .error-icon{fill:#552222;}#mermaid-sv…

mybatis里in关键字拼接id问题

我们一般会把ids集合用StrUtil.join(‘,’)转成"1,2,3"这种形式 然后放入in中 我们会这么写: select id, nick_name, icon from tb_user where id in (#{ids}) order by FIELD(id, #{ids})结果发现sql执行是这样的: select id, nick_name, icon from tb_user where…

4.用 Excel 录入数据

一 用 Excel 录入数据的两种方式 用鼠标键盘录入数据和从网上爬取数据。 二 用鼠标键盘录入数据 1.录入数据的规范 横着录入数据(横着一条条录入数据)。 2.使用快捷键进行数据录入 tab 键和 enter 键。 tab 键:向右移动一个单元格。 tab 键…

C++类与对象-3.23笔记

今天学习了类的概述和写类的基本框架 在哔哩哔哩学习的这个老师的C面向对象高级语言程序设计教程&#xff08;118集全&#xff09;讲的很不错&#xff08;真的&#xff01;&#xff01;&#xff01;&#xff09;&#xff0c;C语言也是在这个老师的带领下学习的 #include<io…

Android读写权限分析

Android系统使用的是Linux内核&#xff0c;所以Android系统沿用了linux系统的那一套文件读写权限。 目录 1&#xff0c;权限解读1.1&#xff0c;权限分为三种类型&#xff1a;1.2&#xff0c;权限针对的三类对象&#xff1a;1.3&#xff0c;文件和目录的权限区别1.3.1&#xf…

Python二分查找【清晰易懂】

1. 二分查找是什么&#xff1f; 想象你在玩“猜数字”游戏&#xff1a; 对方心里想一个 1~100 的数字&#xff0c;你每次猜一个数&#xff0c;对方会告诉你是“大了”还是“小了”。 最快的方法&#xff1a;每次都猜中间的数&#xff01;比如第一次猜50&#xff0c;如果大了&…

关于Qt的各类问题

目录 1、问题&#xff1a;Qt中文乱码 2、问题&#xff1a;启动时避免ComBox控件出现默认值 博客会不定期的更新各种Qt开发的Bug与解决方法,敬请关注! 1、问题&#xff1a;Qt中文乱码 问题描述&#xff1a;我在设置标题时出现了中文乱码 this->setWindowTitle("算法…

关于我对接了deepseek之后部署到本地将数据存储到mysql的过程

写在前面 今天写一下使用nodejs作为服务端&#xff0c;vue作为客户端&#xff0c;mysql的数据库&#xff0c;对接deepseek的全过程&#xff0c;要实现一个很简单的效果就是&#xff0c;可以自由的询问&#xff0c;然后可以将询问的过程存储到mysql的数据库中。 文档对接 deeps…

游戏引擎学习第182天

回顾和今天的计划 昨天的进展令人惊喜&#xff0c;原本的调试系统已经被一个新的系统完全替换&#xff0c;新系统不仅能完成原有的所有功能&#xff0c;还能捕获完整的调试信息&#xff0c;包括时间戳等关键数据。这次的替换非常顺利&#xff0c;效果很好。 今天的重点是在此基…

CSS终极指南:从基础到高级实践

目录 一、CSS基础概念与核心语法 1.1 CSS的本质与作用 1.2 CSS语法结构 二、CSS与HTML结合的四种方式 2.1 内联样式&#xff08;Inline Style&#xff09; 2.2 内部样式表&#xff08;Internal Style Sheet&#xff09; 2.3 外部样式表&#xff08;External Style Sheet…

MATLAB 2024b深度学习新特性全面解析与DeepSeek大模型集成开发

MATLAB 2024b深度学习工具箱通过架构创新与功能强化&#xff0c;为科研创新和行业应用提供了全栈式解决方案。 第一&#xff1a;MATLAB 2024b深度学习工具箱新特性 1、MATLAB Deep Learning Toolbox 2、实时脚本&#xff08;Live Script&#xff09;与交互控件&#xff08…

.NET开源的智能体相关项目推荐

一、AntSK 由AIDotNet团队开发的人工智能知识库与智能体框架&#xff0c;支持多模型集成和离线部署能力。 核心能力&#xff1a; • 支持OpenAI、Azure OpenAI、星火、阿里灵积等主流大模型&#xff0c;以及20余种国产数据库&#xff08;如达梦&#xff09; • 内置语义内核&a…