Newer
Older
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
import analysis_functions
import analysis_plots
import data_model
"""
A program to demonstrate average precision at a specific rank
and for all ranks.
"""
# Load the CSV data.
query_results = data_model.load_query_results()
# Find the precision.
precision_vs_rank = analysis_functions.precision(query_results[1])
rank = list(range(1, len(precision_vs_rank)+1))
# Find the average precision.
average_precision_vs_rank = analysis_functions.average_precision(query_results[1],
precision_vs_rank)
# Plot the average precision.
analysis_plots.line_plot("average_precision.png",
rank,
average_precision_vs_rank,
labels={
"title": "Average precision vs rank for query 1",
"xlabel": "Rank",
"ylabel": "Average precision"
})
# The average precision at the highest rank.
print(f"Average precision, after all ranks = {average_precision_vs_rank[-1]}")
# Calculating the average precision using recall.
recall_vs_rank = analysis_functions.recall(query_results[1])
avp = 0
n = len(recall_vs_rank)
previous_recall = 0
for i in range(n):
avp += (recall_vs_rank[i] - previous_recall) * precision_vs_rank[i]
previous_recall = recall_vs_rank[i]
print(f"Average precision, for all ranks = {avp}")