Enhance list with sort key and summary

This commit is contained in:
2022-02-10 11:57:13 +01:00
parent 6d8afa4993
commit 2e9f73309d
3 changed files with 37 additions and 10 deletions

View File

@@ -700,14 +700,22 @@ class Summary:
self.datasets[result] = report.lines
self.data.append(entry)
def list_results(self, score=None, model=None) -> None:
def list_results(
self, score=None, model=None, input_data=None, sort_key="date"
) -> None:
"""Print the list of results"""
data = self.data.copy()
data = self.data.copy() if input_data is None else input_data
if score:
data = [x for x in data if x["score"] == score]
if model:
data = [x for x in data if x["model"] == model]
data = sorted(data, key=lambda x: x["date"], reverse=True)
data = sorted(
data,
key=lambda x: 0.0
if type(x[sort_key]) is float and math.isnan(x[sort_key])
else x[sort_key],
reverse=True,
)
max_file = max(len(x["file"]) for x in data)
max_title = max(len(x["title"]) for x in data)
print(TextColor.LINE1, end="")
@@ -776,9 +784,7 @@ class Summary:
print("*" + whites(length - 2))
print("*" * length)
def best_result(
self, criterion=None, value=None, score="accuracy"
) -> dict:
def best_results(self, criterion=None, value=None, score="accuracy", n=10):
# First filter the same score results (accuracy, f1, ...)
haystack = [x for x in self.data if x["score"] == score]
haystack = (
@@ -791,11 +797,16 @@ class Summary:
haystack,
key=lambda x: -1.0 if math.isnan(x["metric"]) else x["metric"],
reverse=True,
)[0]
)[:n]
if len(haystack) > 0
else {}
)
def best_result(
self, criterion=None, value=None, score="accuracy"
) -> dict:
return self.best_results(criterion, value, score)[0]
def best_results_datasets(self, score="accuracy") -> dict:
"""Get the best results for each dataset"""
dt = Datasets()
@@ -814,3 +825,10 @@ class Summary:
entry["title"],
)
return best_results
def show_top(self, score="accuracy", n=10):
self.list_results(
score=score,
input_data=self.best_results(score=score, n=n),
sort_key="metric",
)

View File

@@ -29,13 +29,21 @@ def parse_arguments():
required=False,
help="model used in experiment",
)
ap.add_argument(
"-k",
"--key",
type=str,
required=False,
default="date",
help="key to sort results",
)
args = ap.parse_args()
return (args.excel, args.score, args.model)
return (args.excel, args.score, args.model, args.key)
(excel, score, model) = parse_arguments()
(excel, score, model, key) = parse_arguments()
data = Summary()
data.acquire()
data.list_results(score, model)
data.list_results(score=score, model=model, sort_key=key)

View File

@@ -60,5 +60,6 @@ for metric in metrics:
summary.show_result(
summary.best_result(score=metric), title=f"BEST RESULT of {metric}"
)
summary.show_top(score=metric, n=10)
if list_results:
summary.list_results()