如何列出清单" image_list"进入一个函数measure_accuracy然后让它返回实际和预测的次数相同?在这种情况下,它将返回3.
列表:
image_list = [
{ 'path':'1.jpg', 'actual':{'dog'}, 'predicted':{'dog'} },
{ 'path':'2.jpg', 'actual':{'dog'}, 'predicted':{'cat'} },
{ 'path':'3.jpg', 'actual':{'cat'}, 'predicted':{'cat'} },
{ 'path':'4.jpg', 'actual':{'cat'}, 'predicted':{'dog'} },
{ 'path':'5.jpg', 'actual':{'dog'}, 'predicted':{'dog'} }
]
所以我想要的是比较列表中的每个项目,如果这两个项目是相同的添加到变量,那么最后返回该变量。 我只是不知道到那里的代码。
我想也许像是
for actual, predicted in image_list:
if actual == predicted:
count = count + 1
答案 0 :(得分:1)
In [7]: sum(x['actual'] == x['predicted'] for x in image_list)
Out[7]: 3
这样:
def measure_accuracy(image_list):
return sum(x['actual'] == x['predicted'] for x in image_list)
total = measure_accuracy(image_list)
average = total / len(image_list)
简要说明这里发生的事情:
x['actual'] == x['predicted']
评估True
或False
。在Python中,True == 1
和False == 0
,所以每次预测值等于实际值时我们得到1,否则为0.所以我们的列表看起来像这样:
[1, 0, 1, 0, 1]
然后我们使用sum
函数将它们全部加在一起得到3。