2017-07-25 12 views
1

リスト "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'} } 
] 

それでは、私がしたいことは、リスト内の各項目を比較し、2つの項目がある場合ならば、同じことがで、変数に追加することですその変数はその変数を返します。 私はちょうどそこに行くコードを知らない。

私は多分そう

for actual, predicted in image_list: 
    if actual == predicted: 
     count = count + 1 

答えて

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またはのいずれかに評価。パイソン、True == 1でとFalse == 0、私たちは1を毎回取得している予測値は実際の値に等しく、そうでない場合は0だから、私たちのリストは次のようになります。

[1, 0, 1, 0, 1] 

その後、我々はsum機能を使用しますそれらをすべて一緒に3を得るために加えてください。

+0

知らない人にはちょっとメモ:これはPythonのブール値が整数のサブクラスなので効果があります。これは、ブーリアンでも整数演算子の通常のリストを使用できることを意味します。 「真」の整数値は「1」であり、「偽」は「0」である。例: 'True + True == 2'、' False + True == 1'。 –

+0

ありがとう、キリスト教徒。私はより明確に投稿を編集していました。 –

+0

どのように3をリスト内のアイテムの量で割りますか?だからこの場合5? – James

関連する問題