机器学习拟合过程

news2025/1/16 19:05:32
import numpy as np
import matplotlib.pyplot as plt

# 步骤1: 生成模拟数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + 2 * X**2 + np.random.randn(100, 1)

# 步骤2: 定义线性模型 (我们从随机权重开始)
w = np.random.randn(2, 1)
b = np.random.randn(1)


# 步骤3: 定义损失函数 (均方误差)
def mse(y_pred, y_true):
    return ((y_pred - y_true) ** 2).mean()


# 步骤4: 使用梯度下降来优化模型参数
learning_rate = 0.01
epochs = 100

# 记录每次迭代的损失,用于画图
losses = []

# 准备一个颜色列表,用于绘制不同颜色的直线
colors = plt.cm.rainbow(np.linspace(0, 1, epochs))

fig, ax = plt.subplots()

# 绘制数据点
ax.scatter(X, y, label="Data")

# 扩展X值以绘制连续的线条
X_plot = np.linspace(X.min(), X.max(), 100).reshape(-1, 1)
X_plot_ext = np.hstack((X_plot, X_plot**2))

for epoch in range(epochs):
    # 扩展特征
    X_ext = np.hstack((X, X**2))

    # 预测
    y_pred = X_ext @ w + b

    # 计算损失
    loss = mse(y_pred, y)
    losses.append(loss)

    # 梯度下降
    dy_pred = 2 * (y_pred - y)
    dw = X_ext.T @ dy_pred / len(X_ext)
    db = dy_pred.sum(axis=0) / len(X_ext)

    # 更新权重和偏置
    w -= learning_rate * dw
    b -= learning_rate * db

    # 绘制当前拟合的直线,使用不同的颜色
    y_plot_pred = X_plot_ext @ w + b
    ax.plot(X_plot, y_plot_pred, color=colors[epoch], label=f"Epoch {epoch + 1}")

# 设置图例和标签
ax.set_xlabel("X")
ax.set_ylabel("y")
ax.legend()

plt.show()

# 绘制损失下降的曲线
plt.plot(losses)
plt.title("Loss over epochs")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.show()

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

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

相关文章

C++11中的原子操作及其底层缓存一致性

C中的原子变量(atomic variables)是一种并发编程中用于保证数据一致性和线程安全的机制。在多线程环境下,当多个线程同时访问或修改同一个变量时,可能会产生竞争条件(race condition),导致未定义…

Javascript 使用 Jarvis 算法或包装的凸包(Convex Hull using Jarvis’ Algorithm or Wrapping)

给定平面中的一组点,该集合的凸包是包含该集合所有点的最小凸多边形。 我们强烈建议您先阅读以下文章。 如何检查两个给定的线段是否相交? c https://blog.csdn.net/hefeng_aspnet/article/details/141713655 java https://blog.csdn.net/hefeng_aspne…

C#中判断的应用说明二(switch语句)

一.判断的定义说明 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的一般形式: 二.判…

六、设置弹窗显示队列

实现原理: 把弹窗放置在一个队列中,通过设置UI方法,直接调用这个队列中的文本 Queue是一个先进先出的队列。 一、队列的使用 写一个增加提示的方法 在这里使用锁来执行这个语句,向这个队列里面增加一个提示文本 在这里进行文本…

Llama3-Factory模型部署新手指南

一、介绍 为了保持其公司在人工智能开源大模型领域的地位,社交巨头Meta推出了旗下最新开源模型。当地时间4月18日,Meta在官网上宣布公布了旗下最新大模型Llama 3。目前,Llama 3已经开放了80亿(8B)和700亿(…

报表控件stimulsoft操作:使用 Stimulsoft 产品连接到 Json数据源

我们继续我们的系列文章,介绍如何在 Stimulsoft 产品中连接各种类型的数据源。在上一篇文章中,我们讨论了如何连接 OData。今天,我们将深入研究另一种类型的数据源 - JSON。 Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate…

Bat To Exe Converter软件:将批处理文件bat转换成exe应用程序

Bat To Exe Converter软件: 将批处理文件bat转换成exe应用程序(文章最后附软件下载地址)Bat To Exe Converter软件可以把批处理文件bat转换为exe可执行文件,甚至运用密码保护文件,生成的.EXE是独立的文件,…

DevExpress WinForms中文教程:Data Grid - 如何点击获取信息?

在使用DevExpress WinForms的Data Grid之类控件时,可能需要实现自定义用户交互,例如显示数据行的上下文菜单,或者在双击一行时调用编辑表单。在这些情况下,您需要在指定的坐标处标识网格元素。 在本教程中,您将学习如…

Python案例 | 使用K-means 聚类算法提取图像中的颜色

假如我们需要提取下图中的颜色,可以通过使用 K-means 聚类算法对图像进行颜色聚类分析,并生成一个基于聚类中心(即最具代表性的颜色)的RGB值和调色板。 # 通过使用 K-means 聚类算法对图像进行颜色聚类分析,并生成一个基于聚类中心(即最具代…

时间序列预测(二)——前馈神经网络(Feedforward Neural Network, FNN)

上一篇文章有提到线性回归方程。 时间序列预测(二)——前馈神经网络(Feedforward Neural Network, FNN)-CSDN博客 与线性回归相比: 线性回归只有一个线性层,输入直接映射到输出,不包含隐藏层…

「漏洞复现」灵当CRM data/pdf.php 任意文件读取漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

网页内容获取:Scala自动化脚本的实现

对于开发者和数据科学家来说,自动化获取网页内容是一个常见的需求。Scala,作为一种多范式编程语言,以其强大的函数式编程特性和并发处理能力,成为了编写高效自动化脚本的理想选择。本文将介绍如何使用Scala结合Selenium WebDriver…

Element Ui el-table列表中的tooltip内容过长超出屏幕换行显示

elementui-table组件列表中的tooltip内容过长超出屏幕换行显示内容,虽然el-table列属性中带的有show-overflow-tooltip,可以设置内容超出列宽度显示为…,且有tooltip提示全部内容,但是内容过多时,提示会超出屏幕: 只有…

芒果YOLOv10改进136:注意力机制MLLA|即插即用:融合Mamba设计精髓的线性注意力视觉Transformer

💡本篇内容:芒果YOLOv10改进136:即插即用,最新注意力机制MLLA:融合 Mamba 设计精髓的线性注意力视觉Transformer MLLA|Mamba-Like Linear Attention 模块 | 即插即用 该模块将选择性的状态空间模型和线性注意力在一个统一公式中进行了重新阐述,将Mamba重新定义为具有六个主…

从头开始的可视化数据 matplotlib:初学者努力绘制数据图

从头开始学习使用 matplotlib 可视化数据,对于初学者来说,可能会有些挑战,但 matplotlib 的核心理念非常清晰:绘制图表需要了解如何设置图形、坐标轴以及如何用数据填充它们。我们可以通过一些简单的例子来逐步介绍基本步骤。 1. …

小程序底部导航按钮实现

商城小程序需要四个底部导航按钮,遂记录一下实现过程 最终实现效果如下所示 新建一个小程序项目,我是创建了JS模板,项目创建完成后需要新建五个文件夹,其中四个(page子文件夹)用于存放pages文件&#xff0…

探索光耦:光耦——不间断电源(UPS)系统中的安全高效卫士

在现代社会,不间断电源(UPS)系统已成为保障关键设备和数据安全的关键设施,广泛应用于企业数据中心、家庭电子设备等场景。UPS能在电力中断或波动时提供稳定电力,确保设备持续运行。而在这套系统中,光耦&…

C# 使用S7netplus读取西门子PLC的DB块-S7协议

在工业的设备监控领域,S7协议使用比较普遍下面简单教大家使用 1、添加包 2、添加帮助类(读写数据就研究该类即可,具体的理论就不多说了) //plc中类型与c#类型 bool > Bit //Byte > byte //word > ushort //DWord > uint //Int > short …

【AI知识点】三种不同架构的大语言模型(LLMs)的区别

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI大项目】【AI应用】 在自然语言处理(NLP)中,预训练语言模型(LLMs, Large Language Models)通常基于不同的架构,如仅编码器的模型(Enc…