mirror of
https://github.com/Doctorado-ML/benchmark.git
synced 2025-08-17 16:35:54 +00:00
Add experiments results to excel exreport
This commit is contained in:
118
src/Results.py
118
src/Results.py
@@ -251,22 +251,28 @@ class ReportBest(BaseReport):
|
|||||||
class Excel(BaseReport):
|
class Excel(BaseReport):
|
||||||
row = 6
|
row = 6
|
||||||
|
|
||||||
def __init__(self, file_name, compare=False):
|
def __init__(self, file_name, compare=False, book=None):
|
||||||
super().__init__(file_name)
|
super().__init__(file_name)
|
||||||
self.compare = compare
|
self.compare = compare
|
||||||
|
|
||||||
def get_file_name(self):
|
|
||||||
return self.excel_file_name
|
|
||||||
|
|
||||||
def header(self):
|
|
||||||
if self.compare:
|
if self.compare:
|
||||||
self._load_best_results(
|
self._load_best_results(
|
||||||
self.data["score_name"], self.data["model"]
|
self.data["score_name"], self.data["model"]
|
||||||
)
|
)
|
||||||
self._compare_totals = {}
|
self._compare_totals = {}
|
||||||
self.excel_file_name = self.file_name.replace(".json", ".xlsx")
|
if book is None:
|
||||||
self.book = xlsxwriter.Workbook(self.excel_file_name)
|
self.excel_file_name = self.file_name.replace(".json", ".xlsx")
|
||||||
|
self.book = xlsxwriter.Workbook(self.excel_file_name)
|
||||||
|
self.close = True
|
||||||
|
else:
|
||||||
|
self.book = book
|
||||||
|
self.close = False
|
||||||
self.sheet = self.book.add_worksheet(self.data["model"])
|
self.sheet = self.book.add_worksheet(self.data["model"])
|
||||||
|
|
||||||
|
def get_file_name(self):
|
||||||
|
return self.excel_file_name
|
||||||
|
|
||||||
|
def header(self):
|
||||||
|
|
||||||
header = self.book.add_format()
|
header = self.book.add_format()
|
||||||
header.set_font_size(18)
|
header.set_font_size(18)
|
||||||
subheader = self.book.add_format()
|
subheader = self.book.add_format()
|
||||||
@@ -382,7 +388,8 @@ class Excel(BaseReport):
|
|||||||
for c in range(self.row + 2):
|
for c in range(self.row + 2):
|
||||||
self.sheet.set_row(c, 20)
|
self.sheet.set_row(c, 20)
|
||||||
self.sheet.set_row(0, 25)
|
self.sheet.set_row(0, 25)
|
||||||
self.book.close()
|
if self.close:
|
||||||
|
self.book.close()
|
||||||
|
|
||||||
|
|
||||||
class SQL(BaseReport):
|
class SQL(BaseReport):
|
||||||
@@ -581,10 +588,24 @@ class Benchmark:
|
|||||||
def excel(self):
|
def excel(self):
|
||||||
book = xlsxwriter.Workbook(self.get_excel_file_name())
|
book = xlsxwriter.Workbook(self.get_excel_file_name())
|
||||||
sheet = book.add_worksheet("Benchmark")
|
sheet = book.add_worksheet("Benchmark")
|
||||||
normal = book.add_format({"font_size": 14})
|
normal = book.add_format({"font_size": 14, "border": 1})
|
||||||
decimal = book.add_format({"num_format": "0.000000", "font_size": 14})
|
decimal = book.add_format(
|
||||||
|
{"num_format": "0.000000", "font_size": 14, "border": 1}
|
||||||
|
)
|
||||||
|
decimal_total = book.add_format(
|
||||||
|
{
|
||||||
|
"num_format": "0.000000",
|
||||||
|
"font_size": 14,
|
||||||
|
"border": 1,
|
||||||
|
"bold": True,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
two_decimal_total = book.add_format(
|
||||||
|
{"num_format": "0.00", "font_size": 14, "border": 1, "bold": True}
|
||||||
|
)
|
||||||
merge_format = book.add_format(
|
merge_format = book.add_format(
|
||||||
{
|
{
|
||||||
|
"border": 1,
|
||||||
"bold": 1,
|
"bold": 1,
|
||||||
"align": "center",
|
"align": "center",
|
||||||
"valign": "vcenter",
|
"valign": "vcenter",
|
||||||
@@ -593,6 +614,7 @@ class Benchmark:
|
|||||||
)
|
)
|
||||||
merge_format_normal = book.add_format(
|
merge_format_normal = book.add_format(
|
||||||
{
|
{
|
||||||
|
"border": 1,
|
||||||
"valign": "vcenter",
|
"valign": "vcenter",
|
||||||
"font_size": 14,
|
"font_size": 14,
|
||||||
}
|
}
|
||||||
@@ -615,17 +637,18 @@ class Benchmark:
|
|||||||
sheet.merge_range(row, 0, row + 1, 0, "Dataset", merge_format)
|
sheet.merge_range(row, 0, row + 1, 0, "Dataset", merge_format)
|
||||||
column = 1
|
column = 1
|
||||||
for model in self._models:
|
for model in self._models:
|
||||||
# Merge 2 columns
|
# Merge 3 columns
|
||||||
sheet.merge_range(
|
sheet.merge_range(
|
||||||
row, column, row, column + 1, model, merge_format
|
row, column, row, column + 2, model, merge_format
|
||||||
)
|
)
|
||||||
column += 2
|
column += 3
|
||||||
row += 1
|
row += 1
|
||||||
column = 1
|
column = 1
|
||||||
for _ in range(len(self._models)):
|
for _ in range(len(self._models)):
|
||||||
sheet.write(row, column, "Score", merge_format)
|
sheet.write(row, column, "Score", merge_format)
|
||||||
sheet.write(row, column + 1, "Stdev", merge_format)
|
sheet.write(row, column + 1, "Stdev", merge_format)
|
||||||
column += 2
|
sheet.write(row, column + 2, "Rank", merge_format)
|
||||||
|
column += 3
|
||||||
|
|
||||||
def body():
|
def body():
|
||||||
nonlocal row
|
nonlocal row
|
||||||
@@ -633,6 +656,10 @@ class Benchmark:
|
|||||||
row += 1
|
row += 1
|
||||||
sheet.write(row, 0, f"{dataset:30s}", normal)
|
sheet.write(row, 0, f"{dataset:30s}", normal)
|
||||||
column = 1
|
column = 1
|
||||||
|
range_cells = ""
|
||||||
|
for col in range(0, len(self._models) * 3, 3):
|
||||||
|
range_cells += chr(ord("B") + col) + str(row + 1) + ","
|
||||||
|
range_cells = range_cells[:-1]
|
||||||
for model in self._models:
|
for model in self._models:
|
||||||
sheet.write(
|
sheet.write(
|
||||||
row,
|
row,
|
||||||
@@ -648,11 +675,43 @@ class Benchmark:
|
|||||||
decimal,
|
decimal,
|
||||||
)
|
)
|
||||||
column += 1
|
column += 1
|
||||||
|
cell_target = chr(ord("B") + column - 3) + str(row + 1)
|
||||||
|
sheet.write_formula(
|
||||||
|
row,
|
||||||
|
column,
|
||||||
|
f"=rank({cell_target},({range_cells}))",
|
||||||
|
normal,
|
||||||
|
)
|
||||||
|
column += 1
|
||||||
|
|
||||||
def footer():
|
def footer():
|
||||||
nonlocal row
|
nonlocal row
|
||||||
for c in range(row_init, row + 1):
|
for c in range(row_init, row + 2):
|
||||||
sheet.set_row(c, 20)
|
sheet.set_row(c, 20)
|
||||||
|
# Write totals
|
||||||
|
row += 1
|
||||||
|
sheet.write(row, 0, "Total", merge_format)
|
||||||
|
for col in range(0, len(self._models) * 3, 3):
|
||||||
|
range_metric = (
|
||||||
|
f"{chr(ord('B') + col )}7:{chr(ord('B') + col )}{row}"
|
||||||
|
)
|
||||||
|
sheet.write_formula(
|
||||||
|
row,
|
||||||
|
col + 1,
|
||||||
|
f"=sum({range_metric})/{BEST_ACCURACY_STREE}",
|
||||||
|
decimal_total,
|
||||||
|
)
|
||||||
|
range_rank = (
|
||||||
|
f"{chr(ord('B') + col + 2)}7:"
|
||||||
|
f"{chr(ord('B') + col + 2)}{row}"
|
||||||
|
)
|
||||||
|
sheet.write_formula(
|
||||||
|
row,
|
||||||
|
col + 3,
|
||||||
|
f"=average({range_rank})",
|
||||||
|
two_decimal_total,
|
||||||
|
)
|
||||||
|
row += 1
|
||||||
|
|
||||||
def models_files():
|
def models_files():
|
||||||
nonlocal row
|
nonlocal row
|
||||||
@@ -684,11 +743,36 @@ class Benchmark:
|
|||||||
report.score,
|
report.score,
|
||||||
decimal,
|
decimal,
|
||||||
)
|
)
|
||||||
|
k = Excel(file_name=file_name, book=book)
|
||||||
|
k.report()
|
||||||
|
sheet.freeze_panes(6, 1)
|
||||||
|
sheet.hide_gridlines()
|
||||||
|
|
||||||
|
def exreport_output():
|
||||||
|
file_name = os.path.join(
|
||||||
|
Folders.results, Files.exreport_output(self._score)
|
||||||
|
)
|
||||||
|
sheet = book.add_worksheet("Exreport")
|
||||||
|
normal = book.add_format(
|
||||||
|
{
|
||||||
|
"font_size": 14,
|
||||||
|
"border": 1,
|
||||||
|
"font_color": "blue",
|
||||||
|
"font_name": "Courier",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
with open(file_name) as f:
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
row = 0
|
||||||
|
for line in lines:
|
||||||
|
sheet.write(row, 0, line, normal)
|
||||||
|
row += 1
|
||||||
|
|
||||||
header()
|
header()
|
||||||
body()
|
body()
|
||||||
footer()
|
footer()
|
||||||
models_files()
|
models_files()
|
||||||
|
exreport_output()
|
||||||
book.close()
|
book.close()
|
||||||
|
|
||||||
|
|
||||||
@@ -716,7 +800,7 @@ class Summary:
|
|||||||
self.models = set()
|
self.models = set()
|
||||||
|
|
||||||
def get_models(self):
|
def get_models(self):
|
||||||
return self.models
|
return sorted(self.models)
|
||||||
|
|
||||||
def acquire(self, given_score="any") -> None:
|
def acquire(self, given_score="any") -> None:
|
||||||
"""Get all results"""
|
"""Get all results"""
|
||||||
|
Reference in New Issue
Block a user