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

ImageDataGenerator的.classes是否有序?如何获取预测对应真实标签?

解决混淆矩阵真实标签不匹配问题
  • 核心问题:你混淆了ImageDataGenerator生成器的两个属性:

    • classes:返回的是所有类别的名称列表,并非对应每个测试样本的标签
    • labels:返回的是每个测试样本对应的真实标签数组,顺序和model.predict()输出的y_pred完全匹配
  • 正确操作步骤:

    1. 创建测试数据生成器时,必须设置shuffle=False,保证样本顺序不打乱:
      test_datagen = ImageDataGenerator(rescale=1./255)
      test_generator = test_datagen.flow_from_directory(
          '测试数据集路径',
          target_size=(你的图片高度, 你的图片宽度),
          batch_size=你的批次大小,
          class_mode='categorical',  # 若模型输出为稀疏标签则用'sparse'
          shuffle=False  # 这步是关键,否则标签和预测结果顺序会错位
      )
      
    2. 获取真实标签数组:
      y_true = test_generator.labels
      
    3. 处理预测结果并生成混淆矩阵:
      import numpy as np
      from sklearn.metrics import confusion_matrix
      
      # 获取预测结果,若模型是categorical输出,转成类别索引
      y_pred = model.predict(test_generator)
      y_pred = np.argmax(y_pred, axis=1)
      
      # 生成混淆矩阵
      cm = confusion_matrix(y_true, y_pred)
      
  • 验证方法:
    打印len(y_true)和len(y_pred),两者长度必须相等;同时混淆矩阵的对角线占比应和模型准确率(95%)基本一致,说明标签和预测结果已正确对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:05:26