|
import gradio as gr |
|
import pandas as pd |
|
import matplotlib.pyplot as plt |
|
import numpy as np |
|
import csv |
|
from scipy.stats import wilcoxon |
|
import matplotlib.gridspec as gridspec |
|
|
|
LIBRARIES = ["ALOY", "APSTUD", "CLI", "CLOV", "COMPASS", "CONFCLOUD", "CONFSERVER", "DAEMON", "DM", "DNN", "DURACLOUD", "EVG", "FAB", |
|
"MDL", "MESOS" ,"MULE", "NEXUS", "SERVER", "STL", "TIDOC", "TIMOB", "TISTUD", "XD"] |
|
|
|
def grafico(list_output_MbR, list_output_NEOSP, nome_projeto, pip_choices): |
|
list_results = [["MbR Regressor", np.mean(list_output_MbR)], ["NEOSP-SVR Regressor", np.mean(list_output_NEOSP)]] |
|
df = pd.DataFrame(list_results, columns=["Model", "MAE"]) |
|
df_list_output_MbR = pd.DataFrame(list_output_MbR, columns=["MAE"]) |
|
df_list_output_NEOSP = pd.DataFrame(list_output_NEOSP, columns=["MAE"]) |
|
fig, ax = plt.subplots(2, 2) |
|
|
|
G = gridspec.GridSpec(2, 2) |
|
axes_1 = plt.subplot(G[0, :]) |
|
axes_2 = plt.subplot(G[1, 0]) |
|
axes_3 = plt.subplot(G[1, 1]) |
|
|
|
|
|
axes_1.set_xlabel("Index Execução") |
|
axes_1.set_ylabel("MAE") |
|
axes_1.legend() |
|
axes_1.grid(True, which = "both", axis = "x" ) |
|
axes_1.minorticks_on() |
|
if "MbR Regressor" in pip_choices: |
|
axes_1.scatter(range(1,51), df_list_output_MbR["MAE"].loc[1:50], label="MbR Regressor", color="red", alpha=0.5,) |
|
if "NEOSP-SVR Regressor" in pip_choices: |
|
axes_1.scatter(range(1,51), df_list_output_NEOSP["MAE"].loc[1:50], label="NEOSP-SVR Regressor", color = "blue", alpha=0.5) |
|
|
|
|
|
axes_2.set_ylabel("MAE Médio") |
|
axes_2.set_xlabel("Modelos") |
|
if "MbR Regressor" in pip_choices: |
|
graf1 = axes_2.bar(df["Model"].iloc[[0]], df["MAE"].iloc[[0]], color="red", alpha=0.5) |
|
axes_2.bar_label(graf1, fmt="%.01f", size=10, label_type="edge") |
|
if "NEOSP-SVR Regressor" in pip_choices: |
|
graf2 = axes_2.bar(df["Model"].iloc[[1]], df["MAE"].iloc[[1]], color = "blue", alpha=0.5) |
|
axes_2.bar_label(graf2, fmt="%.01f", size=10, label_type="edge") |
|
|
|
|
|
axes_3.set_xlabel("MAE") |
|
axes_3.set_ylabel("Frequência") |
|
if "MbR Regressor" in pip_choices: |
|
axes_3.hist(df_list_output_MbR["MAE"], color="red", alpha=0.5) |
|
if "NEOSP-SVR Regressor" in pip_choices: |
|
axes_3.hist(df_list_output_NEOSP["MAE"], color="blue", alpha=0.5) |
|
|
|
|
|
fig.set_figwidth(15) |
|
fig.set_figheight(8) |
|
fig.suptitle("Projeto {}".format(nome_projeto)) |
|
|
|
|
|
resultado = "" |
|
if (pip_choices == ["NEOSP-SVR Regressor", "MbR Regressor"]) or (pip_choices == ["MbR Regressor", "NEOSP-SVR Regressor"]): |
|
res = wilcoxon(list_output_MbR, list_output_NEOSP) |
|
resultado = "MbR vs. NEOSP-SVR => Statistics: {} | valor-p: {}".format(res.statistic, res.pvalue) |
|
|
|
return gr.update(value=plt, visible=True), gr.update(value=resultado, visible=True) |
|
|
|
|
|
def create_pip_plot(libraries, pip_choices): |
|
nome_projeto = libraries |
|
list_output_MbR = [] |
|
with open("metricas_{}_MbR.csv".format(nome_projeto), "r") as arquivo: |
|
arquivo_csv = csv.reader(arquivo) |
|
for i, linha in enumerate(arquivo_csv): |
|
list_output_MbR.append(float(linha[0])) |
|
list_output_NEOSP_SVR = [] |
|
with open("metricas_{}_NEOSP_SVR.csv".format(nome_projeto), "r") as arquivo: |
|
arquivo_csv = csv.reader(arquivo) |
|
for i, linha in enumerate(arquivo_csv): |
|
list_output_NEOSP_SVR.append(float(linha[0])) |
|
return grafico(list_output_MbR, list_output_NEOSP_SVR, nome_projeto, pip_choices) |
|
|
|
|
|
demo = gr.Blocks() |
|
|
|
with demo: |
|
with gr.Row(): |
|
with gr.Column(): |
|
gr.Markdown("## Conjunto de Dados") |
|
libraries = gr.Dropdown(choices=LIBRARIES, label="Projeto", value="ALOY") |
|
with gr.Column(): |
|
gr.Markdown("## Gráficos") |
|
pip = gr.CheckboxGroup(choices=["MbR Regressor", "NEOSP-SVR Regressor"], label="Modelos Preditivos") |
|
|
|
|
|
with gr.Row(): |
|
fetch = gr.Button(value="Fetch") |
|
with gr.Row(): |
|
with gr.Column(): |
|
star_plot = gr.Text(visible=False, label="Wilcoxon Test") |
|
pip_plot = gr.Plot(visible=False) |
|
|
|
|
|
|
|
fetch.click(create_pip_plot, inputs=[libraries, pip], outputs=[pip_plot, star_plot]) |
|
|
|
|
|
|
|
demo.launch() |