matplotlib 动态显示训练过程中的数据和模型的决策边界

文章目录

  • Github
  • 官网
  • 文档
  • 简介
  • 动态显示训练过程中的数据和模型的决策边界
    • 安装
    • 源码

Github

  • https://github.com/matplotlib/matplotlib

官网

  • https://matplotlib.org/stable/

文档

  • https://matplotlib.org/stable/api/index.html

简介

matplotlib 是 Python 中最常用的绘图库之一,用于创建各种类型的静态、动态和交互式可视化。以下是对 matplotlib 的详细介绍,包括其安装、基本使用方法、常见绘图类型、以及如何进行高级绘图和自定义图形。

动态显示训练过程中的数据和模型的决策边界

在这里插入图片描述

安装

pip install tensorflow==2.13.1
pip install matplotlib==3.7.5
pip install numpy==1.24.3

源码

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

# 生成数据
np.random.seed(0)
num_samples_per_class = 500
negative_samples = np.random.multivariate_normal(
    mean=[0, 3],
    cov=[[1, 0.5], [0.5, 1]],
    size=num_samples_per_class
)
positive_samples = np.random.multivariate_normal(
    mean=[3, 0],
    cov=[[1, 0.5], [0.5, 1]],
    size=num_samples_per_class
)

inputs = np.vstack((negative_samples, positive_samples)).astype(np.float32)
targets = np.vstack((np.zeros((num_samples_per_class, 1)), np.ones((num_samples_per_class, 1)))).astype(np.float32)

# 将数据分为训练集和测试集
train_size = int(0.8 * len(inputs))
X_train, X_test = inputs[:train_size], inputs[train_size:]
y_train, y_test = targets[:train_size], targets[train_size:]

# 构建二分类模型
model = Sequential([
    # 输入层:输入形状为 (2,)
    # 第一个隐藏层:包含 4 个节点,激活函数使用 ReLU
    Dense(4, activation='relu', input_shape=(2,)),
    
    # 输出层:包含 1 个节点,激活函数使用 Sigmoid(因为是二分类问题)
    Dense(1, activation='sigmoid')
])

# 编译模型
# 指定优化器为 Adam,损失函数为二分类交叉熵,评估指标为准确率
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 准备绘图
fig, ax = plt.subplots()
cmap_light = ListedColormap(['#FFAAAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#0000FF'])

# 动态绘制函数
def plot_decision_boundary(epoch, logs):
    ax.clear()
    x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
    y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
                         np.arange(y_min, y_max, 0.1))
    grid = np.c_[xx.ravel(), yy.ravel()]
    probs = model.predict(grid).reshape(xx.shape)
    ax.contourf(xx, yy, probs, alpha=0.8, cmap=cmap_light)
    ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train[:, 0], edgecolor='k', cmap=cmap_bold)
    ax.set_title(f'Epoch {epoch+1}')
    plt.draw()
    plt.pause(0.01)

# 自定义回调函数
class PlotCallback(tf.keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs=None):
        plot_decision_boundary(epoch, logs)

# 训练模型并动态显示
plot_callback = PlotCallback()
model.fit(X_train, y_train, epochs=50, batch_size=16, callbacks=[plot_callback])

# 评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test Loss: {loss}")
print(f"Test Accuracy: {accuracy}")

plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux: ubi rootfs 故障案例 (1)

文章目录 1. 前言2. ubi rootfs 故障现场3. 故障分析与解决4. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. ubi rootfs 故障现场 问题故障内核日志如下: Starting ker…

springboot中路径默认配置与重定向/转发所存在的域对象

今天在写项目的时候,突然发现引用js的时候路径不匹配,让我再次对路径问题产生了疑问,通过查阅springboot官网可以发现,在springboot中查找静态资源的时候,会默认在static、public、resources下查找,官网中也…

Redis高频面试基本问题整理

文章目录 1、Redis底层协议2、Redis的热Key问题如何解决3、Redis是单线程还是多线程4、 什么是脑裂问题?5、redis集群会有写操作丢失吗?6、什么是 Redis 的 Pipeline?它有哪些优点?7、redis主从复制、哨兵机制、集群的理解8、缓存…

CRM客户关系管理系统:基于Java的Spring Cloud Alibaba和VUE3的企业级解决方案

鸿鹄CRM客户关系管理系统是一款采用Java语言开发的企业级客户关系管理解决方案。它集成了Spring Cloud Alibaba、Spring Boot、MybatisPlus、Redis和VUE3 ElementUI等先进技术,实现了微服务架构,为用户提供了一个高效、可扩展的CRM平台。 系统功能丰富&…

安装node

下载地址 Node.js — Run JavaScript Everywhere 按照下面的图操作即可 然后就下载完了。

四天工作制,比你想象的更近了一点

原文:Andrew Keshner - 2024.05.30 软件公司、大型企业甚至警察部门都在试验这一看似遥不可及的概念。 教育软件公司 Kuali 的会议精简,除非绝对必要,员工尽量避免安排会议。即使有会议,也鼓励员工跳过与自己工作无关的部分。在…

技术革命的十年:计算机、互联网、大数据、云计算与AI

近10年来,计算机、互联网、大数据、云计算和人工智能等技术领域发展迅速,带来了巨大的变革和创新。以下是各个领域的发展历史、现状、问题瓶颈、未来趋势以及可能的奇点。 计算机技术: 发展历史: 过去:过去十年间&am…

k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)

故障信息 pod一直处于创建中 查看pod详细信息显示 kubectl describe pod 容器id文字 Events: Type Reason Age From Message Normal Scheduled 5m30s default-scheduler Successfully assigned default/nginx-server2-f97c6b9d5-d6dsp to worker02 Warning FailedCreatePod…

可视化数据科学平台在信贷领域应用系列四:决策树策略挖掘

信贷行业的风控策略挖掘是一个综合过程,需要综合考虑风控规则分析结果、效果评估、线上实时监测和业务管理需求等多个方面,以发现和制定有效的信贷风险管理策略。这些策略可能涉及贷款审批标准的调整、贷款利率的制定、贷款额度的设定等,在贷…

基于协同过滤推荐的在线课程选修系统

基于协同过滤推荐的在线课程选修系统 demo 网站查看 http://course.qsxbc.com/all_course/ 点我查看 效果 功能 登录注册、点赞收藏、评分评论,课程推荐,热门课程,个人中心,可视化,后台管理,课程选修 …

商城项目【尚品汇】07分布式锁-2 Redisson篇

文章目录 1 Redisson功能介绍2 Redisson在Springboot中快速入门(代码)2.1 导入依赖2.2 Redisson配置2.3 将自定义锁setnx换成Redisson实现(可重入锁) 3 可重入锁原理3.1 自定义分布式锁setnx为什么不可以重入3.2 redisson为什么可…

opera打不开网页最简单的解决办法

如果以上为解决问题,继续下面操作 检查网络连接: 确认您的电脑已连接到互联网。 检查网络连接是否稳定,网络速度慢或链路拥堵可能会导致网页加载失败。 修改Local State文件: 关闭Opera浏览器。 定位到Opera浏览器的配置…

RPA影刀 | 设置当前时间

1. 新建流程 2. 创建指令 指令1:获取当前日期时间 指令3:日期时间转文本 %Y:年 %m:月 %d:日期 其他字符自由添加。 常用格式如下: %Y年%m月%d日%Y-%m-%d%Y_%m_%d%Y%m%d 3. 运行流程

STM32F103C8T6基于HAL库完成uC/OS-III多任务程序

一、在STM32CubeMX中建立工程 配置RCC 配置SYS 配置PC13为GPIO_Output 配置USART1 生成代码 二、获取uC/OS-III源码 官网下载地址:Micrium Software and Documentation - Silicon Labs 网盘下载:百度网盘 请输入提取码 提取码:lzjl 三、复…

HIP的应用可移植性

Application portability with HIP — ROCm Blogs (amd.com) 许多科学应用程序在配备AMD的计算平台和超级计算机上运行,包括Frontier,这是世界上第一台Exascale系统。这些来自不同科学领域的应用程序通过使用Heterogeneous-compute Interface for Portab…

AI论文速读 | 2024[KDD]GinAR—变量缺失端到端多元时序预测

题目:GinAR: An End-To-End Multivariate Time Series Forecasting Model Suitable for Variable Missing 作者:Chengqing Yu(余澄庆), Fei Wang(王飞), Zezhi Shao(邵泽志), Tangw…

实战 | 通过微调SegFormer改进车道检测效果(数据集 + 源码)

背景介绍 SegFormer:实例分割在自动驾驶汽车技术的快速发展中发挥了关键作用。对于任何在道路上行驶的车辆来说,车道检测都是必不可少的。车道是道路上的标记,有助于区分道路上可行驶区域和不可行驶区域。车道检测算法有很多种,每…

【python报错】TypeError: ‘dict_values‘ Object IsNot Subscriptable

【Python报错】TypeError: ‘dict_values’ object is not subscriptable 在Python中,字典(dict)提供了几种不同的视图对象,包括dict_keys、dict_values和dict_items。这些视图对象允许你以只读方式遍历字典的键、值或键值对。如果…

【大学物理】期末复习双语笔记

3 vectors and scalar 20 damped harmonic motion,forced harmonic motion, superposition of SHM damped harmonic motion underdamped motion:欠阻尼 critical damped零界阻尼 over damped过阻尼 energy of damped harmonic motion application of damped oscillation:减震器…

springboot + Vue前后端项目(第十五记)

项目实战第十五记 写在前面1.后端接口实现1.1 用户表添加角色字段1.2 角色表增加唯一标识字段1.3 UserDTO1.4 UserServiceImpl1.5 MenuServiceImpl 2. 前端实现2.1 User.vue2.2 动态菜单设计2.2.1 Login.vue2.2.2 Aside.vue 2.3 动态路由设计2.3.1 菜单表新增字段page_path2.3.…