mirror of
https://github.com/Doctorado-ML/Stree_datasets.git
synced 2025-08-16 07:56:07 +00:00
Add excel write to analysis_mysql
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import xlsxwriter
|
||||||
from experimentation.Sets import Datasets
|
from experimentation.Sets import Datasets
|
||||||
from experimentation.Utils import TextColor
|
from experimentation.Utils import TextColor
|
||||||
from experimentation.Database import MySQL
|
from experimentation.Database import MySQL
|
||||||
@@ -71,6 +72,14 @@ def parse_arguments() -> Tuple[str, str, str, bool, bool]:
|
|||||||
required=False,
|
required=False,
|
||||||
default=False,
|
default=False,
|
||||||
)
|
)
|
||||||
|
ap.add_argument(
|
||||||
|
"-x",
|
||||||
|
"--excel",
|
||||||
|
type=str,
|
||||||
|
default="",
|
||||||
|
required=False,
|
||||||
|
help="generate excel file",
|
||||||
|
)
|
||||||
args = ap.parse_args()
|
args = ap.parse_args()
|
||||||
return (
|
return (
|
||||||
args.experiment,
|
args.experiment,
|
||||||
@@ -79,9 +88,45 @@ def parse_arguments() -> Tuple[str, str, str, bool, bool]:
|
|||||||
args.tex_output,
|
args.tex_output,
|
||||||
args.compare,
|
args.compare,
|
||||||
args.time,
|
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):
|
def print_header_tex(file_tex, second=False):
|
||||||
# old_header = (
|
# old_header = (
|
||||||
# "\\begin{table}[ht]\n"
|
# "\\begin{table}[ht]\n"
|
||||||
@@ -209,6 +254,7 @@ def report_footer(agg):
|
|||||||
tex_output,
|
tex_output,
|
||||||
compare,
|
compare,
|
||||||
time_info,
|
time_info,
|
||||||
|
excel,
|
||||||
) = parse_arguments()
|
) = parse_arguments()
|
||||||
dbh = MySQL()
|
dbh = MySQL()
|
||||||
database = dbh.get_connection()
|
database = dbh.get_connection()
|
||||||
@@ -240,6 +286,11 @@ for item in models:
|
|||||||
fields += (f"{item}",)
|
fields += (f"{item}",)
|
||||||
report_header(title, experiment, model_type)
|
report_header(title, experiment, model_type)
|
||||||
color = TextColor.LINE1
|
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 = {}
|
agg = {}
|
||||||
for item in [
|
for item in [
|
||||||
"better",
|
"better",
|
||||||
@@ -266,6 +317,7 @@ for number, dataset in enumerate(dt):
|
|||||||
line["leaves"] = 0.0
|
line["leaves"] = 0.0
|
||||||
line["depth"] = 0.0
|
line["depth"] = 0.0
|
||||||
line_tex = line.copy()
|
line_tex = line.copy()
|
||||||
|
line_excel = {}
|
||||||
for column, model in enumerate(models):
|
for column, model in enumerate(models):
|
||||||
record = dbh.find_best(dataset[0], model, experiment)
|
record = dbh.find_best(dataset[0], model, experiment)
|
||||||
if record is None:
|
if record is None:
|
||||||
@@ -291,6 +343,10 @@ for number, dataset in enumerate(dt):
|
|||||||
line[model] = color + item
|
line[model] = color + item
|
||||||
if csv_output:
|
if csv_output:
|
||||||
print(f"{dataset[0]}, {model}, {accuracy}", file=file_csv)
|
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:
|
if tex_output:
|
||||||
print_line_tex(number + 1, dataset[0], line_tex, file_tex)
|
print_line_tex(number + 1, dataset[0], line_tex, file_tex)
|
||||||
if number == 24:
|
if number == 24:
|
||||||
@@ -303,6 +359,8 @@ for number, dataset in enumerate(dt):
|
|||||||
TextColor.LINE2 if color == TextColor.LINE1 else TextColor.LINE1
|
TextColor.LINE2 if color == TextColor.LINE1 else TextColor.LINE1
|
||||||
)
|
)
|
||||||
print(report_line(line))
|
print(report_line(line))
|
||||||
|
if excel != "":
|
||||||
|
excel_write_footer(excel_wb)
|
||||||
report_footer(agg)
|
report_footer(agg)
|
||||||
if csv_output:
|
if csv_output:
|
||||||
file_csv.close()
|
file_csv.close()
|
||||||
|
@@ -5,3 +5,4 @@ ipympl
|
|||||||
mysql-client
|
mysql-client
|
||||||
mysql-connector
|
mysql-connector
|
||||||
sshtunnel
|
sshtunnel
|
||||||
|
xslxwriter
|
||||||
|
Reference in New Issue
Block a user