# Sample labels (1=spam, 0=not spam) actual = [1, 0, 1, 1, 0, 0, 1, 0, 1, 0] predicted = [1, 0, 1, 0, 0, 1, 1, 0, 0, 0] # Compute confusion matrix entries TP = sum(1 for a, p in zip(actual, predicted) if a == 1 and p == 1) FP = sum(1 for a, p in zip(actual, predicted) if a == 0 and p == 1) TN = sum(1 for a, p in zip(actual, predicted) if a == 0 and p == 0) FN = sum(1 for a, p in zip(actual, predicted) if a == 1 and p == 0) print(f"TP: {TP}, FP: {FP}, TN: {TN}, FN: {FN}") # Now calculate the metrics precision = TP / (TP + FP) if (TP + FP) else 0 recall = TP / (TP + FN) if (TP + FN) else 0 f1 = 2 * precision * recall / (precision + recall) if (precision + recall) else 0 print(f"Precision: {precision:.2f}") print(f"Recall: {recall:.2f}") print(f"F1 Score: {f1:.2f}")