MLOps_project / app.py
Roboproch's picture
accuracy iniziale app.py
158086e unverified
# Utilities
from src.modello import Modello
from src.dataset import LoadDataset
from sklearn.metrics import accuracy_score
import gradio as gr
# Dichiaro le variabili e costanti che mi serviranno in seguito
model = None
dataset = None
X = None
y = None
y_pred = None
valori = ['negative', 'neutral', 'positive']
def predict_tweet(tweet,esito_atteso) :
# Aggiunge gli input (tweet ed esito_atteso) e l'esito predetto al dataset; restituisce l'esito predetto e la nuova accuracy calcolata sul dataset aggiornato
X.append(tweet)
y.append(esito_atteso)
y_new = model.predict(tweet)[0]
y_pred.append(y_new)
acc_new = f"{accuracy_score(y, y_pred)}"
return y_new,acc_new
if __name__ == "__main__":
# Inizializza gli oggetti
model = Modello()
dataset = LoadDataset()
X = dataset.X
y = dataset.y
y_pred = model.predict(X)
# Stampa accuracy iniziale
print(f"Accuracy iniziale: {accuracy_score(y, y_pred)}")
# Definisce l'interfaccia grafica di Gradio
# Prende in input un testo (tweet) e il sentiment predetto (quest'ultimo scelto da un menu a tendina)
# Restituisce l'esito predetto e la nuova accuracy calcolata sul dataset aggiornato
demo = gr.Interface(
fn=predict_tweet,
inputs=[gr.Textbox(label="Tweet"),gr.Dropdown(choices=valori,label="Esito atteso")],
outputs=[gr.Textbox(label="Previsione modello"),gr.Textbox(label="Ricalcolo accuracy")],
flagging_mode = 'never'
)
# Lancia l'interfaccia grafica
demo.launch()