我正在尝试计算代码,以便从一个热门的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的行。但是,我意识到,我无法计算打印结果中每个标签的真阳性,真阳性,假阳性和假阴性。我不知道如何计算它。是否可以从打印结果中计算出来?
答案 0 :(得分:0)
您可以在代码中使用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)