diff --git a/go_ia/compare_predictions.py b/go_ia/compare_predictions.py new file mode 100644 index 0000000..8ed7e59 --- /dev/null +++ b/go_ia/compare_predictions.py @@ -0,0 +1,38 @@ +import argparse + +def compare_files(file1_path, file2_path, epsilon=1e-2): + """ + By ChatGPT + Compare les lignes de deux fichiers contenant des valeurs flottantes, + à epsilon près, et calcule l'accuracy. + + Args: + file1_path (str): chemin du premier fichier. + file2_path (str): chemin du second fichier. + epsilon (float): tolérance pour comparer les valeurs. + + Returns: + float: accuracy (proportion de lignes équivalentes à epsilon près). + """ + with open(file1_path, 'r') as f1, open(file2_path, 'r') as f2: + lines1 = [float(line.strip()) for line in f1 if line.strip()] + lines2 = [float(line.strip()) for line in f2 if line.strip()] + + if len(lines1) != len(lines2): + raise ValueError(f"Les fichiers n'ont pas le même nombre de lignes : {len(lines1)} != {len(lines2)}") + + total = len(lines1) + correct = sum(abs(a - b) <= epsilon for a, b in zip(lines1, lines2)) + + accuracy = correct / total + print(f"Accuracy: {accuracy:.4f} ({correct}/{total} lignes correctes à epsilon={epsilon})") + return accuracy + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Comparer deux fichiers ligne par ligne à epsilon près.") + parser.add_argument("file1", help="Chemin du premier fichier (résultat modèle)") + parser.add_argument("file2", help="Chemin du second fichier (résultat attendu)") + parser.add_argument("--epsilon", type=float, default=1e-1, help="Tolérance pour la comparaison (défaut: 1e-2)") + + args = parser.parse_args() + compare_files(args.file1, args.file2, epsilon=args.epsilon)