理解多类别热力图&&热力图绘制代码(易用,可快速选择类别)

在多类别分类任务中生成的热力图(例如语义分割或图像分类任务中的类别概率图),通常每个像素会对应多个类别的概率。假设已经经过 softmax 层处理,那么每个像素点的值是某个类别的概率分布,取值范围在 [0, 1] 之间,并且所有类别的概率之和为 1。热力图颜色深浅的含义取决于你选择显示的类别的概率。

如何理解多类别的热力图

  1. 单类别热力图

    • 如果你只想观察某个类别的分布,可以从 softmax 输出中选择该类别的概率矩阵生成热力图。
    • 在这种情况下,颜色越深(假设使用的是深色调的颜色映射),表示该类别的概率越高,即模型越“确信”该像素属于该类别。
    • 比如,选择类别 A 的概率图生成热力图,则颜色深浅代表类别 A 的概率强弱,越深说明该像素越可能属于类别 A。
  2. 多类别综合热力图

    • 在某些情况下,可能希望在一张热力图中展示多类别信息。这种情况下通常会采用不同颜色表示不同类别,然后颜色的深浅表示该类别的概率强度。
    • 例如,类别 A 用红色,类别 B 用蓝色,类别 C 用绿色,那么每个像素点的颜色会是各类别颜色按其概率强度混合的结果。颜色越深的部分,表示模型在该类别上的预测越“确定”。

颜色越深的含义

  • 颜色越深表示更高的概率值:在单类别热力图中,经过 softmax 后,颜色越深的区域表示该类别的概率越接近 1,说明模型认为这些像素很可能属于该类别。
  • 低概率表示浅色:对于较浅的颜色(接近白色或透明),表示模型认为该类别的可能性较低,或更倾向于其他类别。

示例说明

假设我们有一个经过 softmax 的输出张量,尺寸为 [3, 256, 256],代表三个类别,每个通道对应一个类别的概率图。

  • 类别 1 热力图:可以取张量的第一个通道 [256, 256] 来绘制类别 1 的概率分布热力图,颜色越深表示越高的概率。
  • 类别 2 热力图:同样,可以取张量的第二个通道 [256, 256] 来绘制类别 2 的概率分布热力图。

代码示例

import matplotlib.pyplot as plt
import torch

def plot_heatmap(data, category, cmap='viridis'):
    """
    绘制指定类别的概率热力图

    参数:
    - data: Softmax 后的多类别概率张量,例如形状为 [3, 256, 256]
    - category: 要绘制的类别索引,例如 0 表示第一个类别
    - cmap: 颜色映射,默认 'viridis'
    """
    if isinstance(data, torch.Tensor):
        data = data[category].numpy()
    elif isinstance(data, np.ndarray):
        data = data[category]
    else:
        raise TypeError("data must be a torch Tensor or numpy array")
    
    plt.imshow(data, cmap=cmap)
    plt.colorbar()
    plt.title(f"Category {category} Probability Heatmap")
    plt.show()

# 假设 softmax 后的张量,形状为 [3, 256, 256]
softmax_output = torch.rand(3, 256, 256)  # 示例数据

# 绘制类别 0 的概率热力图
plot_heatmap(softmax_output, category=0, cmap='hot')

总结

  • 颜色越深:表示该类别的概率越高,即模型对该类别的置信度越高。
  • 不同类别可以分别绘制热力图:每个类别的概率图可以单独绘制成一张热力图,以便观察该类别在图像中的分布情况。
  • 多类别混合显示:可以通过颜色映射的方式,将多个类别的概率分布叠加在一起,以不同颜色表示不同类别的置信度分布。
### 使用MATLAB创建全球热力 为了在MATLAB中创建全球热力,可以利用地理坐标数据并结合`geoplot`函数族来实现。具体来说,通过加载经纬度网格以及相应的数值矩阵,再应用颜色映射表展示不同区域的数据分布情况。 #### 准备工作 首先安装必要的工具箱,如Mapping Toolbox,这提供了处理地球科学数据的功能集[^1]。 ```matlab % 加载样本气候数据作为演示用途 load('globalTemperature.mat'); % 假设此文件包含了温度数据T和对应的地理位置Lat,Lon ``` #### 绘制基础地背景 设置底样式以便更好地呈现最终效果: ```matlab figure; worldmap world; % 创建世界范围的地轴对象 land = shaperead('landareas','UseGeoCoords',true); geoshow(land,'FaceColor',[0.5 0.7 0.5],'EdgeColor','none'); ``` #### 添加热力层 根据实际需求调整色彩方案,并将数据投影到球面上形成视觉上的度差异: ```matlab [c,h]=contourfm(Lat,Lon,T); % T代表要可视化的变量数组 delete(h) % 移除轮廓线只保留填充区 cm=colormap(jet(length(unique(T)))); % 自定义调色板长度匹配唯一值数量 for i=1:length(c.LevelList)-1 ind=find(T>=c.LevelList(i)&T<c.LevelList(i+1)); geoshow(Lat(ind),Lon(ind),'DisplayType','polygon',... 'FaceColor',cm(fix((i-1)/length(cm)*size(cm,1))+1,:)) end colorbar('southoutside') % 显示右侧的颜色条解释说明 cbh=colorbar; set(get(cbh,'label'),'string','Temperature (°C)') title({'Global Temperature Distribution';'Year XXXX'}) ``` 上述代码片段展示了如何基于给定的纬度(`Lat`)、经度(`Lon`)及相应测量值构建一张具有地理意义的世界级热力。注意这里假设存在名为`globalTemperature.mat`的数据源提供所需输入参数,在真实场景下需替换为自己的数据集[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值