refactor pair_check to new class

This commit is contained in:
2022-04-09 19:36:53 +02:00
parent de90374960
commit e9409051c3
2 changed files with 27 additions and 59 deletions

View File

@@ -1166,11 +1166,11 @@ class PairCheck:
self.score = score self.score = score
self.model_a = model_a self.model_a = model_a
self.model_b = model_b self.model_b = model_b
self.winners = winners self.show_winners = winners
self.loosers = loosers self.show_loosers = loosers
self.winners_data = [] self.winners = []
self.loosers_data = [] self.loosers = []
self.tie_data = [] self.tie = []
def compute(self): def compute(self):
summary = Summary() summary = Summary()
@@ -1178,37 +1178,39 @@ class PairCheck:
best_a = summary.best_result( best_a = summary.best_result(
criterion="model", value=self.model_a, score=self.score criterion="model", value=self.model_a, score=self.score
) )
self.file_a = best_a["file"]
best_b = summary.best_result( best_b = summary.best_result(
criterion="model", value=self.model_b, score=self.score criterion="model", value=self.model_b, score=self.score
) )
self.file_b = best_b["file"]
report_a = StubReport(os.path.join(Folders.results, best_a["file"])) report_a = StubReport(os.path.join(Folders.results, best_a["file"]))
report_a.report() report_a.report()
self.score_a = report_a.score
report_b = StubReport(os.path.join(Folders.results, best_b["file"])) report_b = StubReport(os.path.join(Folders.results, best_b["file"]))
report_b.report() report_b.report()
self.score_b = report_b.score
for result_a, result_b in zip(report_a.lines, report_b.lines): for result_a, result_b in zip(report_a.lines, report_b.lines):
result = result_a["score"] - result_b["score"] result = result_a["score"] - result_b["score"]
if result > 0: if result > 0:
self.winners_data.append(result_a["dataset"]) self.winners.append(result_a["dataset"])
elif result < 0: elif result < 0:
self.loosers_data.append(result_a["dataset"]) self.loosers.append(result_a["dataset"])
else: else:
self.tie_data.append(result_a["dataset"]) self.tie.append(result_a["dataset"])
def print(self): def report(self):
print(f"{'Model':<20} {'File':<70} {'Score':<10} Win Tie Loose") print(f"{'Model':<20} {'File':<70} {'Score':<10} Win Tie Loose")
print("=" * 20 + " " + "=" * 70 + " " + "=" * 10 + " === === =====") print("=" * 20 + " " + "=" * 70 + " " + "=" * 10 + " === === =====")
print(f"{self.model_a:<20} {self.file_a:<70} {self.score_a:10.5f}")
print( print(
f"{self.model_a:<20} {self.best_a['file']:<70} {report_1.score:10.5f}" f"{self.model_b:<20} {self.file_b:<70} "
f"{self.score_b:10.5f} "
f"{TextColor.GREEN}{len(self.winners):3d} {TextColor.YELLOW}{len(self.tie):3d} "
f"{TextColor.RED}{len(self.loosers):5d}"
) )
print( if self.show_winners:
f"{model2:<20} {best_2['file']:<70} "
f"{report_2.score:10.5f} "
f"{TextColor.GREEN}{win:3d} {TextColor.YELLOW}{tie:3d} "
f"{TextColor.RED}{loose:5d}"
)
if win_results:
print(TextColor.GREEN + "Winners:") print(TextColor.GREEN + "Winners:")
print(winners) print(self.winners)
if loose_results: if self.show_loosers:
print(TextColor.RED + "Loosers:") print(TextColor.RED + "Loosers:")
print(loosers) print(self.loosers)

View File

@@ -1,8 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import argparse import argparse
import os from Results import PairCheck
from Results import Summary, StubReport from Utils import EnvDefault
from Utils import EnvDefault, Folders, TextColor
"""Check best results of two models giving scores and win-tie-loose results """Check best results of two models giving scores and win-tie-loose results
""" """
@@ -67,39 +66,6 @@ if __name__ == "__main__":
win_results, win_results,
loose_results, loose_results,
) = parse_arguments() ) = parse_arguments()
summary = Summary() pair_check = PairCheck(score, model1, model2, win_results, loose_results)
summary.acquire() pair_check.compute()
win = tie = loose = 0 pair_check.report()
winners = []
loosers = []
best_1 = summary.best_result(criterion="model", value=model1, score=score)
best_2 = summary.best_result(criterion="model", value=model2, score=score)
report_1 = StubReport(os.path.join(Folders.results, best_1["file"]))
report_1.report()
report_2 = StubReport(os.path.join(Folders.results, best_2["file"]))
report_2.report()
for result1, result2 in zip(report_1.lines, report_2.lines):
result = result1["score"] - result2["score"]
if result > 0:
win += 1
winners.append(result1["dataset"])
elif result < 0:
loose += 1
loosers.append(result1["dataset"])
else:
tie += 1
print(f"{'Model':<20} {'File':<70} {'Score':<10} Win Tie Loose")
print("=" * 20 + " " + "=" * 70 + " " + "=" * 10 + " === === =====")
print(f"{model1:<20} {best_1['file']:<70} {report_1.score:10.5f}")
print(
f"{model2:<20} {best_2['file']:<70} "
f"{report_2.score:10.5f} "
f"{TextColor.GREEN}{win:3d} {TextColor.YELLOW}{tie:3d} "
f"{TextColor.RED}{loose:5d}"
)
if win_results:
print(TextColor.GREEN + "Winners:")
print(winners)
if loose_results:
print(TextColor.RED + "Loosers:")
print(loosers)