python - 如何计算打印结果中的字母?
问题描述
我正在尝试计算代码以从单热 MNIST 字母数据中找到准确度得分。我想计算 MNIST 数据中每个标签的准确率,因为我对精度、召回率和 f1 分数使用相同的值。y_true
是数据框[88800, 26]
。首先,我定义了真阳性、真阴性和其他。我的代码是:
for i in y_true:
x=y_true[i]
y=y_pred[i]
for j in range(len(x)):
if (x.values[j] == 1) and (y.values[j] == 1):
print("True Positive", y_pred.columns[i-1])
elif (x.values[j] == 0) and (y.values[j] == 0):
print("True Negative", y_pred.columns[i-1])
elif (x.values[j] == 0) and (y.values[j] == 1):
print("False Positive", y_pred.columns[i-1])
else:
print("False Negative", y_pred.columns[i-1])
输出是:
True Positive 1
True Positive 1
True Negative 1
...
True Negative 26
直到每个标签为 1 和 26 的行。但是,我意识到,我无法从打印结果中计算每个标签有多少真阳性、真阴性、假阳性和假阴性。我不知道如何计算它。是否可以从打印结果中计算?
解决方案
您可以Counter
在您的代码中使用:
from collections import Counter
c = Counter()
for j in range(len(x)):
if (x.values[j] == 1) and (y.values[j] == 1):
print("True Positive", y_pred.columns[i-1])
c.update([f'"True Positive" {y_pred.columns[i-1]}'])
elif (x.values[j] == 0) and (y.values[j] == 0):
print("True Negative", y_pred.columns[i-1])
c.update([f'"True Negative" {y_pred.columns[i-1]}'])
elif (x.values[j] == 0) and (y.values[j] == 1):
print("False Positive", y_pred.columns[i-1])
c.update([f'"False Positive" {y_pred.columns[i-1]}'])
else:
print("False Negative", y_pred.columns[i-1])
c.update([f'"False Negative" {y_pred.columns[i-1]}'])
在此之后,这c
将是您想要的输出。
要打印输出,请使用:
for k,v in dict(c).items():
print(k,':',v)
推荐阅读
- php - 如何修复php变量中的错误?服务器给出 500 错误
- web - 如何将 SAFE 模板应用程序发布到网站/托管服务
- ansible - ansibe 查找模块额外输出,为什么以及如何
- python-3.x - 我有一个字节列表,我想要一个字符串列表
- vb.net - 从网络摄像头视频中捕获图像(aforge)
- python - Music21 Python 库将只输出钢琴声音
- sql-server - 使用 OVER 或 LAG 函数计算 ROLLING 5 天期间的订单数量?
- django - 有没有办法将表单数据从一个url发布到另一个url,然后根据表单数据渲染模板
- php - 未知的mysql单元条目
- typescript - 用于 Storybook 的 Webpack:找不到具有 .web、.ios 或 .android 扩展名的 ts 文件的模块