You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用sklearn.metrics获取多类语义分割混淆矩阵报错,求解决方法

解决多类语义分割混淆矩阵计算错误的问题

错误原因分析

你遇到的ValueError: unknown is not supported有两个核心原因:

  1. argmax的轴参数错误:你使用了axis=1,这是对图像的高度维度(第二个维度)取最大值,完全偏离了类别维度(最后一维,索引为3或-1),导致得到的标签数组维度和语义完全错误。
  2. 输入数组未展平:sklearn.metrics.confusion_matrix要求输入一维数组,但你直接传入了多维的像素标签数组,库无法识别这种格式。

正确解决方案

步骤如下:

  1. 在**类别维度(最后一维)**上执行argmax,得到每个像素对应的类别索引(形状从(29,16,16,11)变为(29,16,16))。
  2. 将多维的像素标签数组展平为一维,符合confusion_matrix的输入要求。

完整代码示例

from sklearn.metrics import confusion_matrix

# 对类别维度(最后一维)取argmax,获取每个像素的类别索引
y_true_labels = y_true.argmax(axis=-1)
y_pred_labels = y_pred.argmax(axis=-1)

# 将多维数组展平为一维
y_true_flat = y_true_labels.flatten()
y_pred_flat = y_pred_labels.flatten()

# 计算混淆矩阵
cf_matrix = confusion_matrix(y_true_flat, y_pred_flat)
print(cf_matrix)

验证形状变化

  • 执行argmax(axis=-1)后,数组形状变为(29, 16, 16),对应29张16×16的图像,每个位置是0-10的类别索引。
  • 展平后数组形状为(29*16*16,)即(7424,),每个元素是单个像素的真实/预测类别,满足confusion_matrix的输入要求。

内容的提问来源于stack exchange,提问作者rayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 08:27:36