import gradio as gr import pandas as pd import numpy as np import joblib # Télécharger les encoders encoder0 = joblib.load('job.joblib') encoder1 = joblib.load('marital.joblib') encoder2 = joblib.load('education.joblib') encoder3 = joblib.load('housing.joblib') encoder4 = joblib.load('loan.joblib') encoder5 = joblib.load('contact.joblib') encoder6 = joblib.load('month.joblib') encoder7 = joblib.load('day_of_week.joblib') encoder8 = joblib.load('poutcome.joblib') encoder9 = joblib.load('y.joblib') # Import du modèle du modele performent model = joblib.load('rf.joblib') # Import du normaliseur scaler = joblib.load('scaler.joblib') def prediction_simple(age, job, marital, education, housing, loan, contact, month, day_of_week,duration,campaign,pdays, previous, poutcome) : job = encoder0.transform([job])[0] marital = encoder1.transform([marital])[0] education = encoder2.transform([education])[0] housing = encoder3.transform([housing])[0] loan = encoder4.transform([loan])[0] contact = encoder5.transform([contact])[0] month = encoder6.transform([month])[0] day_of_week = encoder7.transform([day_of_week])[0] poutcome = encoder8.transform([poutcome])[0] # Transformer les variables envecteurs x_new = np.array([age, job, marital, education, housing, loan, contact, month, day_of_week,duration,campaign,pdays, previous, poutcome]) x_new = x_new.reshape(1,-1) # Normaliser x_new = scaler.transform(x_new) # Prediction y_pred = rf.predict(x_new) return "Souscrire" if y_pred==1 else "Pas souscrire" # Fonction de prédiction multiple def Pred_func_csv(file): # Lire le fichier csv df = pd.read_csv(file) predictions = [] # Boucle sur les lignes du dataframe for row in df.iloc[:, :].values: y_pred = Pred_func(row[0], row[1],row[2],row[3],row[4],row[5], row[6],row[7],row[8],row[9],row[10], row[11],row[12],row[13]) # ajouter la prediction sur List_predictions predictions.append(y_pred) df['y'] = predictions df.to_csv('predictions.csv', index = False) return 'predictions.csv' # définir les blocks demo = gr.Blocks(theme='earneleh/paris') #gr.themes.Monochrome() # gr.themes.Citrus() # gr.themes.Glass() # gr.themes.Ocean() # Créer les inputs inputs = [gr.Number(label='AGE'), gr.Dropdown(choices=['admin.', 'blue-collar', 'entrepreneur', 'housemaid', 'management', 'retired', 'self-employed', 'services', 'student', 'technician', 'unemployed', 'unknown'], label='JOB'), gr.Dropdown(choices=['divorced', 'married', 'single', 'unknown'],label='MARITAL'), gr.Dropdown(choices=['basic.4y', 'basic.6y', 'basic.9y', 'high.school', 'illiterate', 'professional.course', 'university.degree', 'unknown'], label='EDUCATION'), gr.Dropdown(choices=['no', 'unknown', 'yes'], label='HOUSING'), gr.Dropdown(choices=['no', 'unknown', 'yes'],label='LOAN'), gr.Radio(choices=['cellular', 'telephone'],label='CONTACT'), gr.Dropdown(choices=['apr', 'aug', 'dec', 'jul', 'jun', 'mar', 'may', 'nov', 'oct','sep'],label='MONTH'), gr.Radio(choices=['fri', 'mon', 'thu', 'tue', 'wed'],label='DAY_OF_WEEK'), gr.Number(label='DURATION'), gr.Number(label='CAMPAIGN'), gr.Number(label='PDAYS'), gr.Number(label='PREVIOUS'), gr.Dropdown(choices=['failure', 'nonexistent', 'success'], label='POUTCOME')] # Créer les outputs outputs = gr.Textbox(label='Y') # Créer l'interface 1 interface1 = gr.Interface(fn = prediction_simple, inputs = inputs, outputs = outputs, title="Prédire si un client souscrira à un dépot a terme", ) # Créer l'interface 2 interface2 = gr.Interface(fn = Pred_func_csv, inputs = gr.File(label='Upload a csv file'), outputs = gr.File(label='Download a csv file'), title="Prédire si un client souscrira à un dépot a terme avec la prédiction multiple", ) # faire un tabbing des interfaces with demo: gr.TabbedInterface([interface1, interface2], ['Simple Prediction', 'Prédiction multiple']) # lancer l'interface demo.launch()