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

如何使用Numpy从y_true与y_pred生成假阳性的独热编码掩码?

生成假阳性类别的独热编码数组

问题背景

给定真实标签数组和预测标签数组:

y_true = np.array([5,6,7,5])
y_pred = np.array([5,7,7,5])

需要针对类别5、6、7生成对应假阳性的独热编码数组,最终输出维度为(3,4),其中每一行对应一个类别的假阳性标记(1表示该位置是对应类别的假阳性,0表示不是)。

实现代码

import numpy as np

y_true = np.array([5,6,7,5])
y_pred = np.array([5,7,7,5])
# 定义目标类别集合
classes = np.array([5,6,7])

# 初始化结果数组,形状为(类别数, 样本数)
false_positive_arr = np.zeros((len(classes), len(y_true)), dtype=int)

# 遍历每个类别,生成对应假阳性标记
for idx, cls in enumerate(classes):
    # 假阳性判定:预测为当前类别,但真实标签不是当前类别
    fp_mask = (y_pred == cls) & (y_true != cls)
    # 将布尔掩码转为整数数组,存入结果对应行
    false_positive_arr[idx] = fp_mask.astype(int)

# 按要求格式输出每个类别的结果
for cls_name, fp_list in zip([f"y_falsep_class{c}" for c in classes], false_positive_arr):
    print(f"{cls_name}: {fp_list.tolist()}")

# 验证结果维度
print(f"\n结果数组维度: {false_positive_arr.shape}")

输出结果

运行代码后会得到:

y_falsep_class5: [0, 0, 0, 0]
y_falsep_class6: [0, 0, 0, 0]
y_falsep_class7: [0, 1, 0, 0]

结果数组维度: (3, 4)

逻辑说明

  • 假阳性的判定逻辑:对于某一类别,当预测值等于该类别,但真实值不等于该类别时,该位置标记为1,否则为0
  • 通过遍历每个类别生成对应掩码,再将掩码转为整数数组,最终组合成要求的形状

内容的提问来源于stack exchange,提问作者Muhammad Ikhwan Perwira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:22:02