使用热力图表示联邦学习场景中的客户端数据分布

news2024/11/18 18:05:08

用于生成热力图,记录过程,方便之后直接使用。
使用场景:联邦学习中显示客户端数据分布,或者显示数据分布的各类其他场景

文章目录

  • 一、代码
    • hot.py
    • 使用方法
  • 二、参数解释
  • 三、样图
  • 关键词


一、代码

写这段代码时主要考虑联邦学习中显示客户端数据分布这一场景

hot.py

import numpy as np
import matplotlib.pyplot as plt
def hot_map(y_train, dataidx_map):
    # CIFAR-10 数据集共有 10 个类别
    num_classes = 10
    # 有 10 个客户端
    num_clients = 10
    #图片中字体大小
    font_size = 32

    # 初始化一个矩阵来存储每个客户端的数据分布
    client_data_distribution = np.zeros((num_clients, num_classes), dtype=int)
    # 统计每个客户端中每个类别的样本数量
    for client_id in range(num_clients):
        indices = dataidx_map[client_id]
        client_labels = y_train[indices]
        unique_labels, label_counts = np.unique(client_labels, return_counts=True)
        for label, count in zip(unique_labels, label_counts):
            client_data_distribution[client_id, label] = count
    # 转置矩阵,这里的转置主要是为了让横坐标是客户端,纵坐标是类标签。如果不转置,横纵坐标会交换
    client_data_distribution = client_data_distribution.T
    # 设置全局字体为新罗马字体
    plt.rcParams["font.family"] = "Times New Roman"
    # 绘制热力图
    plt.figure(figsize=(10, 6))
    plt.imshow(client_data_distribution, cmap='Reds', interpolation='nearest')
    #设置图片标题(上方)
    # plt.title('Clients Data Distribution in CIFAR-10 Dataset')
    # 隐藏坐标轴的边框,更美观
    ax = plt.gca()
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.spines['bottom'].set_visible(False)
    ax.spines['left'].set_visible(False)
    plt.xlabel('Client', fontsize=font_size)
    plt.ylabel('Label', fontsize=font_size)
    cbar = plt.colorbar()
        
    # 隐藏颜色条的边框
    cbar.outline.set_visible(False)
    cbar.ax.tick_params(labelsize=font_size)  # 设置颜色条刻度标签的字体大小 

    plt.xticks(np.arange(num_classes), np.arange(num_classes), fontsize =font_size)
    plt.yticks(np.arange(num_clients), np.arange(num_clients), fontsize=font_size)
    
    # 设置坐标(i, j)显示的数值,可直接注释去除
    for i in range(num_clients):
        for j in range(num_classes):
            # text((x, y)=坐标, s=数值, ha=水平对齐, va=垂直对齐, color=颜色)
            plt.text(x=i, y=j, s=client_data_distribution[j][i], ha='center', va='center', color='white')

    plt.tight_layout()
    plt.savefig('Fig.jpg',dpi = 400, bbox_inches='tight')# bbox_inches用于在保存时将图片位于画布中间,保持紧凑;dpi是一个关于图片清晰度的参数,数值越大,图片越高清
    plt.show()

使用方法

首先在需要调用热力图的地方引入文件

from hot import hot_map

接着在需要画图的地方调用,通常是刚对客户端分配好数据或者对数据分布进行处理后的位置


hot_map(y_train,net_dataidx_map)

二、参数解释

y_train:[6 9 9 … 9 1 1],就是训练数据的标签,用列表表示。

net_dataidx_map:{0:[39982, 40086, 49891, 13047, 8170, 94, 4697,],1:[…], …},这是各客户端的数据分配情况,使用字典显示,字典的键表示客户端标记,表示几号客户端;值用列表显示,列表中的各数值表示y_train的下标,举例来说,以0的39982为例,表示0号客户端包含了y_train中第39982个标签,是客户端与数据标签的映射。

三、样图

在这里插入图片描述


关键词

热力图; 联邦学习; 数据分布;python

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

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

相关文章

短视频抓取:成都柏煜文化传媒有限公司

短视频抓取:技术挑战、法律边界与未来趋势 随着移动互联网的迅猛发展,短视频平台如雨后春笋般涌现,成为现代人生活娱乐的重要组成部分。然而,在海量短视频内容中,如何高效、准确地抓取目标视频,成为了一个…

JUC工具类: Semaphore详解

Semaphore底层是基于AbstractQueuedSynchronizer来实现的。Semaphore称为计数信号量,它允许n个任务同时访问某个资源,可以将信号量看做是在向外分发使用资源的许可证,只有成功获取许可证,才能使用资源。立刀旁 目录 # 带着BAT大厂…

媒体宣发套餐的概述及推广方法-华媒舍

在今天的数字化时代,对于产品和服务的宣传已经变得不可或缺。媒体宣发套餐作为一种高效的宣传方式,在帮助企业塑造品牌形象、扩大影响力方面扮演着重要角色。本文将揭秘媒体宣发套餐,为您呈现一条通往成功的路。 1. 媒体宣发套餐的概述 媒体…

昇思25天学习打卡营第5天|网络与模型相关要素探讨

目录 从 MindSpore 模块中导入nn和ops 定义模型类 模型层 nn.Flatten nn.Dense nn.ReLU nn.SequentialCell nn.Softmax 模型参数 从 MindSpore 模块中导入nn和ops 将 MindSpore 整个模块引入到当前的 Python 脚本里,方便后续运用 MindSpore 所提供的各类功能…

森林防火气象站:守护森林安全的科技利器

在广袤无垠的森林中,火灾一直是威胁森林生态安全的重要因素。为了有效预防和控制森林火灾,科学家们不断研发新技术,而森林防火气象站正是这一领域的重要成果之一。其中,森林防火气象站凭借其强大的功能和独特的设计,在…

餐厅在线点餐小程序源码系统可外卖配送 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化时代,餐厅在线点餐小程序已成为餐饮行业的重要工具。它不仅为消费者提供了便捷的点餐体验,也为餐厅提高了运营效率和服务质量。小编给大家分享一款餐厅在线点餐小程序源码系统,该系统不仅支持在线点餐,还具…

Python逻辑控制语句 之 循环语句--while循环

1.while 的介绍 让指定的代码 重复 的执行。 应用场景: while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复执行 2.while 的语法 初始条件设置 # 通常是重复执行的 计数器 while 判断条件: # 判断计数器是否达到目标次数 条件…

博途PLC轴工艺对象随动误差监视功能

S7-1200PLC和V90总线伺服通过工艺对象实现定位控制时在组态工艺对象里有这样的随动误差监视功能介绍,关于这个功能,今天我们解读下,工艺对象组态编程可以参考下面文章链接: S7-1200PLC和V90总线伺服通过工艺对象实现定位控制(标准报文3应用)_v90工艺对象3号报文-CSDN博客文…

放弃吧!你招不到优秀AI产品经理;程序员优雅做副业指南;一人企业系统方法论(6万字);大模型训练10条黄金法则 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 1. 5亿条国内招聘信息,洞察 1639 种人类职业被AI替代的风险 2023年,OpenAI 发布了一篇论文 GPTs are GPTs: An Early Look at…

Tektronix泰克 AWG70001A 任意波形发生器

Tektronix泰克 AWG70001A 任意波形发生器 AWG70000A 系列任意波形发生器 (AWG) 在采样率、信号保真度和波形内存方面代表着尖端水平,特别适合复杂器件、系统和实验的设计、测试和操作。由于高达 50 GS/s 采样率和 10 位垂直分辨率,它提供了优秀的信号激…

CDS 基本原理与ADT 安装

一、ADT环境安装及介绍 安装eclipse 选择适合的ADT版本: SAP Development Tools for Eclipse - 2023-03 Software Repository https://tools.hana.ondemand.com/2023-06 SAP Development Tools for Eclipse - Latest Software Repository 选择ABAP development …

go Channel原理 (二)

Channel 设计原理 不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存。 在主流编程语言中,多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信,同时也提供了一种不同的并发模型,即通…

OSRAM欧司朗XBO短弧氙灯160WHSXLOFR短弧氙灯450W

OSRAM欧司朗XBO短弧氙灯160WHSXLOFR短弧氙灯450W

Pycharm中安装Pytorch的库

step1&#xff1a; step2&#xff1a; step3&#xff1a; pip install torch torchvisionstep4&#xff1a; pip install numpy<2 # 版本低点&#xff0c;和pytorch版本不兼容&#xff0c;我当时是用的2.0的step5&#xff1a; pip install pandasstep6&#xff1a; …

2.00004 优化器执行计划生成的流程是怎么样的?

文章目录 整体架构关键结构体PlannerInfo (pathnodes.h:195)PlannerGlobal (pathnodes.h:95)函数栈关键函数pg_plan_query (postgres.c:885)planner (planner.c:274)standard_planner (planner.c:287)subquery_planner (planner.c:628)整体架构 关键结构体 PlannerInfo (pathn…

【电源拓扑】PFC

为什么开关电源中都有PFC电路 PFC电路就是功率矫正电路&#xff0c;目的是为了防止杂波对电网产生冲击 AC220V通过整流桥之后电压和电流的波形分析 PFC电路为什么选择是Boost升压电路 PFC电路为什么要把电压升高到400V 为了解决输入电压低于滤波电容电压这个矛盾&#xff0…

2024攻防演练:亚信安全推出MSS/SaaS短期定制服务

随着2024年攻防演练周期延长的消息不断传出&#xff0c;各参与方将面临前所未有的挑战。面对强大的攻击队伍和日益严格的监管压力&#xff0c;防守单位必须提前进行全面而周密的准备和部署。为应对这一形势&#xff0c;亚信安全特别推出了为期三个月的MSS/SaaS短期订阅方案。该…

《昇思25天学习打卡营第8天|CarpeDiem》

《昇思25天学习打卡营第8天|CarpeDiem》 模型训练构建数据集定义神经网络模型定义超参、损失函数和优化器超参损失函数优化器 训练与评估 打卡 今天是昇思25天学习打卡营的第8天&#xff0c;终于迎来 模型训练 的部分了&#xff01;&#xff01;&#xff01; 兴奋 发癫 模型训…

2065. 最大化一张图中的路径价值 Hard

给你一张 无向 图&#xff0c;图中有 n 个节点&#xff0c;节点编号从 0 到 n - 1 &#xff08;都包括&#xff09;。同时给你一个下标从 0 开始的整数数组 values &#xff0c;其中 values[i] 是第 i 个节点的 价值 。同时给你一个下标从 0 开始的二维整数数组 edges &#xf…

SSL证书的重要作用和申请方法

SSL&#xff08;Secure Sockets Layer&#xff09;证书作为一种基础而强大的网络安全工具&#xff0c;扮演着保护数据传输安全、建立用户信任的桥梁角色。本文将深入探讨SSL证书的主要作用&#xff0c;并详细介绍其申请方法&#xff0c;以帮助网站所有者为用户提供一个更加安全…