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}")