如何用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
相关产品推荐
相关产品推荐

