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

sklearn生成混淆矩阵报multilabel-indicator不支持错误

错误根源

sklearn的confusion_matrix函数仅支持一维整数/类别型的真实标签与预测标签输入,你传入的y_test和y_pred均为形状为(样本数, 2)的二维数组,被函数识别为多标签指示器格式,因此抛出multilabel-indicator is not supported错误。
具体问题点:

  • 你当前的y_test是两列结构:第一列对应类别B的0/1标识、第二列对应类别S的0/1标识,属于二分类任务的独热编码标签格式,不是混淆矩阵要求的一维类别标签格式。
  • 你当前的y_pred是模型输出的0~1范围的二维概率值,既没有转换为离散的类别判定结果,维度也不符合输入要求。
修复方案

如果你的任务是B、S二选一的普通二分类任务(每个样本仅属于B、S其中一类),按以下步骤调整即可:

  1. 将二维独热格式的真实标签转换为一维类别标签:对每个样本取独热编码中值为1的位置索引,0代表B类、1代表S类
  2. 将二维概率格式的预测结果转换为一维离散类别标签:对每个样本取概率值最高的位置索引,作为预测类别
  3. 传入转换后的一维数组计算混淆矩阵

参考代码:

from sklearn.metrics import confusion_matrix
import numpy as np

# 转换真实标签为一维格式
y_test_cls = np.argmax(y_test, axis=1)
# 转换预测概率为一维类别结果
y_pred_cls = np.argmax(y_pred, axis=1)
# 计算混淆矩阵
cm = confusion_matrix(y_test_cls, y_pred_cls)
print(cm)

注意:如果你的任务是多标签分类(即单个样本可以同时属于B和S两类),confusion_matrix不支持直接计算全局混淆矩阵,需要针对B、S两个类别分别计算单类混淆矩阵。结合你描述的输出类别设置,你当前属于普通二分类场景,按上述方法转换即可解决报错。

内容的提问来源于stack exchange,提问作者John David Deatherage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:21:23