Newer
Older
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",
"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}")