python - 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)
解决方案
如果您的数组是 4 维的,那么您需要遍历所有维度。但是有一个更好的解决方案:使用y_hat.flatten()
and重塑你的数组并y_true.flatten()
通过混淆矩阵运行它们。请参阅混淆矩阵描述中的示例,了解如何一次获得 TP、FP、TN、FN。
推荐阅读
- c# - 在 DataGridView 上显示数据库
- database - 数据库 SQL 执行器(旧版)0:2211 执行失败:违反主键约束
- vue.js - 如何在 Vue.js 中指定 userId - Vue Cookie
- python-3.x - 垂直线不会出现在 pyplot - pandas 中它们应该出现的位置
- python - NumPy:有效地将行/列分配给数组
- c# - Twilio TaskRouter - 在分配回调中检索来电者号码
- c++ - 在哈希表 C++ 中插入函数
- linux - 使用“git diff”命令生成补丁文件。使用“patch”命令应用补丁文件后,权限丢失
- azure-devops - 如何将 selenium IDE 测试用例集成到 azure devops 管道?
- spring - 根据@RequestMapping 的产生条件返回错误响应的内容类型