mirror of
https://github.com/Doctorado-ML/Stree_datasets.git
synced 2025-08-15 07:26:02 +00:00
Add excel write to analysis_mysql
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import argparse
|
||||
from typing import Tuple
|
||||
import numpy as np
|
||||
import xlsxwriter
|
||||
from experimentation.Sets import Datasets
|
||||
from experimentation.Utils import TextColor
|
||||
from experimentation.Database import MySQL
|
||||
@@ -71,6 +72,14 @@ def parse_arguments() -> Tuple[str, str, str, bool, bool]:
|
||||
required=False,
|
||||
default=False,
|
||||
)
|
||||
ap.add_argument(
|
||||
"-x",
|
||||
"--excel",
|
||||
type=str,
|
||||
default="",
|
||||
required=False,
|
||||
help="generate excel file",
|
||||
)
|
||||
args = ap.parse_args()
|
||||
return (
|
||||
args.experiment,
|
||||
@@ -79,9 +88,45 @@ def parse_arguments() -> Tuple[str, str, str, bool, bool]:
|
||||
args.tex_output,
|
||||
args.compare,
|
||||
args.time,
|
||||
args.excel,
|
||||
)
|
||||
|
||||
|
||||
def excel_write_header(book, sheet):
|
||||
header = book.add_format()
|
||||
header.set_font_size(18)
|
||||
subheader = book.add_format()
|
||||
subheader.set_font_size(16)
|
||||
bold = book.add_format({"bold": True, "font_size": 14})
|
||||
sheet.write(0, 0, "Dataset", bold)
|
||||
sheet.set_column(0, 0, 30)
|
||||
i = 1
|
||||
lengths = [10, 10, 10, 10, 10, 10, 10]
|
||||
for item, length in zip(models_tree, lengths):
|
||||
sheet.write(0, i, item, bold)
|
||||
sheet.set_column(i, i, length)
|
||||
i += 1
|
||||
|
||||
|
||||
def excel_write_line(book, sheet, dataset, line):
|
||||
try:
|
||||
excel_write_line.row += 1
|
||||
except AttributeError:
|
||||
excel_write_line.row = 1
|
||||
size_n = 14
|
||||
decimal = book.add_format({"num_format": "0.000000", "font_size": size_n})
|
||||
normal = book.add_format({"font_size": size_n})
|
||||
col = 0
|
||||
excel_ws.write(excel_write_line.row, col, dataset, normal)
|
||||
for item in line.values():
|
||||
sheet.write(excel_write_line.row, col + 1, item, decimal)
|
||||
col += 1
|
||||
|
||||
|
||||
def excel_write_footer(book):
|
||||
book.close()
|
||||
|
||||
|
||||
def print_header_tex(file_tex, second=False):
|
||||
# old_header = (
|
||||
# "\\begin{table}[ht]\n"
|
||||
@@ -209,6 +254,7 @@ def report_footer(agg):
|
||||
tex_output,
|
||||
compare,
|
||||
time_info,
|
||||
excel,
|
||||
) = parse_arguments()
|
||||
dbh = MySQL()
|
||||
database = dbh.get_connection()
|
||||
@@ -240,6 +286,11 @@ for item in models:
|
||||
fields += (f"{item}",)
|
||||
report_header(title, experiment, model_type)
|
||||
color = TextColor.LINE1
|
||||
if excel != "":
|
||||
file_name = f"{excel}.xlsx"
|
||||
excel_wb = xlsxwriter.Workbook(file_name)
|
||||
excel_ws = excel_wb.add_worksheet("exreport")
|
||||
excel_write_header(excel_wb, excel_ws)
|
||||
agg = {}
|
||||
for item in [
|
||||
"better",
|
||||
@@ -266,6 +317,7 @@ for number, dataset in enumerate(dt):
|
||||
line["leaves"] = 0.0
|
||||
line["depth"] = 0.0
|
||||
line_tex = line.copy()
|
||||
line_excel = {}
|
||||
for column, model in enumerate(models):
|
||||
record = dbh.find_best(dataset[0], model, experiment)
|
||||
if record is None:
|
||||
@@ -291,6 +343,10 @@ for number, dataset in enumerate(dt):
|
||||
line[model] = color + item
|
||||
if csv_output:
|
||||
print(f"{dataset[0]}, {model}, {accuracy}", file=file_csv)
|
||||
if excel != "":
|
||||
line_excel[model] = accuracy
|
||||
if excel != "":
|
||||
excel_write_line(excel_wb, excel_ws, dataset[0], line_excel)
|
||||
if tex_output:
|
||||
print_line_tex(number + 1, dataset[0], line_tex, file_tex)
|
||||
if number == 24:
|
||||
@@ -303,6 +359,8 @@ for number, dataset in enumerate(dt):
|
||||
TextColor.LINE2 if color == TextColor.LINE1 else TextColor.LINE1
|
||||
)
|
||||
print(report_line(line))
|
||||
if excel != "":
|
||||
excel_write_footer(excel_wb)
|
||||
report_footer(agg)
|
||||
if csv_output:
|
||||
file_csv.close()
|
||||
|
@@ -5,3 +5,4 @@ ipympl
|
||||
mysql-client
|
||||
mysql-connector
|
||||
sshtunnel
|
||||
xslxwriter
|
||||
|
Reference in New Issue
Block a user