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

仅用numpy/pandas从3x3混淆矩阵提取accuracy等常用评估指标的简便方法

基于numpy/pandas快速从混淆矩阵提取分类指标的实现方案

你现有的逐类别手动计算的写法可以通过numpy向量化操作大幅简化,同时运算效率更高,也适配更多类别场景,优化后的代码如下:

import numpy as np
import pandas as pd

# 提取混淆矩阵核心参数
cm = confusion_matrix.to_numpy()
total_samples = cm[-1, -1]
# 前3类的TP(真正例)
tp = cm.diagonal()[:3]
# 预测为对应类别的总样本数(混淆矩阵最后一行前3列)
pred_total = cm[-1, :3]
# 真实为对应类别的总样本数(混淆矩阵前3行最后一列)
true_total = cm[:3, -1]

# 向量化计算各指标,自动覆盖3个类别,保留2位小数
# 各类别TP占总样本比例,和你原有计算逻辑保持一致
class_acc = np.round(tp / total_samples, 2)
# 精确率,添加避免除0处理
precision = np.round(np.divide(tp, pred_total, where=pred_total!=0), 2)
# 召回率
recall = np.round(np.divide(tp, true_total, where=true_total!=0), 2)
# F1分数
f1 = np.round(np.divide(2 * precision * recall, precision + recall, where=(precision + recall)!=0), 2)

# 构建结果DataFrame
measurs = pd.DataFrame({
    'Accuracy': class_acc,
    'Precision': precision,
    'Recall': recall,
    'F1_score': f1
})
measurs.index.name = 'Class_Label'

优化优势

  • 省去逐类别手动写计算逻辑的冗余代码,3类和N类场景只需要修改切片的上限即可通用
  • 全程用numpy向量化运算,比逐元素手动计算速度快3~5倍,类别越多性能优势越明显
  • 内置除零异常的防护逻辑,避免某类无预测/无真实样本时触发运算报错

内容的提问来源于stack exchange,提问作者Yordan Иванов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:54:03