giseldo's picture
ultima versao
1dcc182
raw
history blame
4.7 kB
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])
# ax1
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)
# ax2
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")
# ax3
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)
# graficos geral
fig.set_figwidth(15)
fig.set_figheight(8)
fig.suptitle("Projeto {}".format(nome_projeto))
# text
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")
# stars = gr.CheckboxGroup(choices=["Stars", "Week over Week"], label="")
# issues = gr.CheckboxGroup(choices=["Issue", "Exclude org members", "week over week"], label="")
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)
# issue_plot = gr.Plot(visible=False)
fetch.click(create_pip_plot, inputs=[libraries, pip], outputs=[pip_plot, star_plot])
#fetch.click(create_star_plot, inputs=[libraries, pip], outputs=star_plot)
# fetch.click(create_issue_plot, inputs=[libraries, issues], outputs=issue_plot)
demo.launch()