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

如何用Python对比两列布尔值并生成混淆矩阵?

用Python生成布尔结果的混淆矩阵

针对你的需求,有两种简单方法可以计算真阳性(TP)、假阳性(FP)、假阴性(FN)、真阴性(TN):

方法1:使用scikit-learn(推荐)

scikit-learn库的confusion_matrix函数可以直接生成混淆矩阵,并快速提取四个指标。首先把你的测试数据整理成列表:

# 对应示例中的Test1(预测结果)和Test2(真实标签)
predicted = [True, True, False, False, True, True, True]
actual = [True, True, True, True, True, True, False]

然后执行以下代码:

from sklearn.metrics import confusion_matrix

# 生成混淆矩阵,参数顺序为:真实标签、预测结果
confusion_mat = confusion_matrix(actual, predicted)

# 展开矩阵提取四个指标(顺序为TN, FP, FN, TP)
tn, fp, fn, tp = confusion_mat.ravel()

print(f"真阳性(TP): {tp}")
print(f"假阳性(FP): {fp}")
print(f"假阴性(FN): {fn}")
print(f"真阴性(TN): {tn}")

运行输出:

真阳性(TP): 4
假阳性(FP): 1
假阴性(FN): 2
真阴性(TN): 0

方法2:手动计算(无需第三方库)

如果不想依赖外部库,可以手动遍历数据统计:

predicted = [True, True, False, False, True, True, True]
actual = [True, True, True, True, True, True, False]

tp = fp = fn = tn = 0

for act, pred in zip(actual, predicted):
    if act and pred:
        tp += 1
    elif not act and pred:
        fp += 1
    elif act and not pred:
        fn += 1
    else:
        tn += 1

print(f"真阳性(TP): {tp}")
print(f"假阳性(FP): {fp}")
print(f"假阴性(FN): {fn}")
print(f"真阴性(TN): {tn}")

关键说明

  • 确保predicted和actual列表的元素顺序严格对应(每个索引对应同一个样本)
  • 定义:
    • TP:真实为True,预测也为True
    • FP:真实为False,预测为True
    • FN:真实为True,预测为False
    • TN:真实为False,预测也为False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:45:32