-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculates_results_stats.py
71 lines (66 loc) · 3.54 KB
/
calculates_results_stats.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def calculates_results_stats(results_dic):
"""
Calculates statistics of the results of the program run using classifier's model
architecture to classifying pet images. Then puts the results statistics in a
dictionary (results_stats_dic) so that it's returned for printing as to help
the user to determine the 'best' model for classifying images. Note that
the statistics calculated as the results are either percentages or counts.
Parameters:
results_dic - Dictionary with key as image filename and value as a List
(index)idx 0 = pet image label (string)
idx 1 = classifier label (string)
idx 2 = 1/0 (int) where 1 = match between pet image and
classifer labels and 0 = no match between labels
idx 3 = 1/0 (int) where 1 = pet image 'is-a' dog and
0 = pet Image 'is-NOT-a' dog.
idx 4 = 1/0 (int) where 1 = Classifier classifies image
'as-a' dog and 0 = Classifier classifies image
'as-NOT-a' dog.
Returns:
results_stats_dic - Dictionary that contains the results statistics (either
a percentage or a count) where the key is the statistic's
name (starting with 'pct' for percentage or 'n' for count)
and the value is the statistic's value. See comments above
and the classroom Item XX Calculating Results for details
on how to calculate the counts and statistics.
"""
results_stats_dic = dict()
results_stats_dic['n_dogs_img'] = 0
results_stats_dic['n_match'] = 0
results_stats_dic['n_correct_dogs'] = 0
results_stats_dic['n_correct_notdogs'] = 0
results_stats_dic['n_correct_breed'] = 0
for key in results_dic:
# Labels Match Exactly
if results_dic[key][2] == 1:
results_stats_dic['n_match'] += 1
if results_dic[key][3] == 1:
results_stats_dic['n_correct_breed'] += 1
if results_dic[key][3] == 1:
results_stats_dic['n_dogs_img'] += 1
if results_dic[key][4] == 1:
results_stats_dic['n_correct_dogs'] += 1
else:
if results_dic[key][4] == 0:
results_stats_dic['n_correct_notdogs'] += 1
results_stats_dic['n_images'] = len(results_dic)
results_stats_dic['n_notdogs_img'] = (results_stats_dic['n_images'] -
results_stats_dic['n_dogs_img'])
results_stats_dic['pct_match'] = results_stats_dic['n_match'] / \
results_stats_dic['n_images'] * 100.0
results_stats_dic['pct_correct_dogs'] = results_stats_dic['n_correct_dogs'] / \
results_stats_dic['n_dogs_img'] * 100.0
print('n_correct_dogs', results_stats_dic['n_correct_dogs'])
print('n_dogs_img', results_stats_dic['n_dogs_img'])
print('n_images', results_stats_dic['n_images'])
print('n_correct_breed', results_stats_dic['n_correct_breed'])
results_stats_dic['pct_correct_breed'] = results_stats_dic['n_correct_breed'] / \
results_stats_dic['n_dogs_img'] * 100.0
if results_stats_dic['n_notdogs_img'] > 0:
results_stats_dic['pct_correct_notdogs'] = (results_stats_dic['n_correct_notdogs'] /
results_stats_dic['n_notdogs_img'])*100.0
else:
results_stats_dic['pct_correct_notdogs'] = 0.0
return results_stats_dic