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

如何通过Weka Experiment API获取各分类的混淆矩阵

Weka实验模块获取分类混淆矩阵实现方法

你当前使用的实验示例代码默认仅配置了TP率、FP率这类聚合指标输出,没有开启混淆矩阵的统计与输出,按以下步骤调整即可拿到类别间的分类对应关系:

  • 配置混淆矩阵统计项
    在代码中初始化评估指标列表的位置(也就是你原有代码添加TP、FP率测量项的地方),导入weka.classifiers.evaluation.ConfusionMatrix类,将混淆矩阵加入测量项列表:
    // 原有代码添加其他指标的位置补充这行
    measurements.add(new ConfusionMatrix());
    
  • 提取并解析混淆矩阵
    遍历实验结果拿到Evaluation类实例后,直接调用实例方法就能拿到原始混淆矩阵结构,配合数据集的类属性即可输出可读的类别对应关系:
    // 获取混淆矩阵:行对应真实类别,列对应预测类别
    double[][] confusionMat = evaluation.confusionMatrix();
    Attribute classAttribute = dataset.classAttribute();
    
    // 打印可读的混淆矩阵
    System.out.printf("%-20s", "真实\\预测");
    for (int col = 0; col < classAttribute.numValues(); col++) {
        System.out.printf("%-15s", classAttribute.value(col));
    }
    System.out.println();
    for (int row = 0; row < confusionMat.length; row++) {
        System.out.printf("%-20s", classAttribute.value(row));
        for (int col = 0; col < confusionMat[row].length; col++) {
            System.out.printf("%-15d", (int)confusionMat[row][col]);
        }
        System.out.println();
    }
    
  • 多折/多轮实验的结果处理
    如果你跑的是交叉验证、多次随机划分这类多轮实验,单轮返回的混淆矩阵仅对应当前划分的结果,需要把每轮矩阵同位置的数值累加,才能得到整体的混淆矩阵,不要直接取单轮结果作为全量实验的统计值。

如果你是用Experiment类的批量任务模式跑实验,不需要手动遍历Evaluation对象,可以直接给结果生产者配置outputConfusionMatrix=true的属性,实验跑完后直接从结果表的对应字段读取混淆矩阵内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:48:29