首页 > 解决方案 > ValueError:具有多个元素的数组的真值不明确。如何从 4D 数组中找出 1 和 0 计数

问题描述

我正在计算一个分割评估工作,其中我有预测和基本事实。预测阵列和地面实况阵列形状(28、1、224、224)。现在来计算真阳性(TP)、真阴性(TN)、假阳性(FP)、假阴性(FN)。我曾经使用下面给出的代码来计算这些值,但出现了一些错误。

def perf_measure( y_hat , y_actual):
TP = 0
FP = 0
TN = 0
FN = 0


for i in range(len(y_hat)): 
    
    if y_actual[i]==1 and y_hat[i]==1:
       TP += 1
    if y_hat[i]==1 and y_actual[i]!=y_hat[i]:
       FP += 1
    if y_actual[i]==0 and y_hat[i]==0:
       TN += 1
    if y_hat[i]==0 and y_actual[i]!=y_hat[i]:
       FN += 1

return(TP, FP, TN, FN)

标签: python

解决方案


如果您的数组是 4 维的,那么您需要遍历所有维度。但是有一个更好的解决方案:使用y_hat.flatten()and重塑你的数组并y_true.flatten()通过混淆矩阵运行它们。请参阅混淆矩阵描述中的示例,了解如何一次获得 TP、FP、TN、FN。


推荐阅读