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

如何构建按站点拆分的非对称4×2 numpy混淆矩阵

4×2站点维度非对称混淆矩阵实现

实现逻辑

矩阵固定维度规则:

  • 4行按顺序对应站点A、B、C、D
  • 2列按顺序对应预测类别Low、High
  • 矩阵元素值为对应站点下被预测为对应类别的样本总数
    直接基于pandas原生交叉统计生成,最终输出numpy格式,无需额外逐组循环计数。

完整代码

import pandas as pd
import numpy as np

# --------------------------
# 以下为测试数据构造块,实际使用时替换为你自己的DataFrame即可
# --------------------------
n = 100 # 单站点样本量
df = pd.DataFrame({
    'Site': ['A']*n + ['B']*n + ['C']*n + ['D']*n,
    'Label': ['High']*2*n + ['Low']*2*n,
    'Prediction': np.random.choice(['Low', 'High'], size=4*n, p=[0.2, 0.8])
})

# --------------------------
# 核心统计逻辑
# --------------------------
# 固定维度顺序,避免类别自动排序导致结果错位
site_rank = ['A', 'B', 'C', 'D']
pred_rank = ['Low', 'High']

# 交叉计数,缺失类别补0
stat_result = pd.crosstab(
    index=df['Site'],
    columns=df['Prediction'],
    dropna=False
).reindex(index=site_rank, columns=pred_rank, fill_value=0)

# 输出4×2规格numpy矩阵
asym_confusion_matrix = stat_result.to_numpy()

结果解读

输出的asym_confusion_matrix为shape=(4,2)的numpy数组:

  • 第0~3行依次对应站点A、B、C、D
  • 第0列为站点样本被预测为Low的数量,第1列为站点样本被预测为High的数量
  • 站点A、B行的第0列值,就是真实标签为High的站点被错判为Low的误判数;站点C、D行的第1列值,就是真实标签为Low的站点被错判为High的误判数,可直接定位各站点分类偏差。

如果你确实需要行对应预测类别、列对应站点的2×4格式,直接对矩阵做转置即可:

asym_confusion_matrix_2x4 = asym_confusion_matrix.T

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:39:18