import numpy as np import pandas as pd # Fonction de prédiction import gradio as gr import joblib # importer les encodeurs encoder0 = joblib.load('marque.joblib') encoder1 = joblib.load('transmission.joblib') encoder2 = joblib.load('quartier.joblib') encoder3 = joblib.load('etat.joblib') Qt= joblib.load('liste_quartier.joblib') Mq= joblib.load('liste_marque.joblib') Tr= joblib.load('liste_transmission.joblib') # importer le modèle xgb = joblib.load('xgb.joblib') # importer le normaliseur scaler = joblib.load('scaler.joblib') def Pred_func(marque,annee,transmission,prix, quartier): # Encoder les valeurs des , Seller_Type et Transmission Marque = encoder0.transform([marque])[0] Transmission = encoder1.transform([transmission])[0] Quartier = encoder2.transform([quartier])[0] # vecteur des valeurs numériques x_new = np.array([Marque,annee, Transmission,prix, Quartier, ]) x_new = x_new.reshape(1,-1) # convert en un 2D array # Normaliser les données x_new = scaler.transform(x_new) # Prédire y_pred = xgb.predict(x_new)[0] if y_pred == 1: return 'venant' else: return 'occasion' Pred_func('Ford',2017,'Automatique',30000000,'Amitié') # 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: # nouvelle ligne avec les valeurs des Fuel_Type, Seller_Type et Transmission encodées # new_row = np.array([row[0], row[1], encoder0.transform([row[2]])[0], encoder1.transform([row[3]])[0], encoder2.transform([row[4]])[0], encoder3.transform([row[5]])]) # new_row = new_row.reshape(1,-1) # convertir en un 2D array # # Normaliser les données # new_row = scaler.transform(new_row) # # Prédire # y_pred = xgb.predict(new_row) # # Arrondir # y_pred = round(y_pred[0],2) y_pred = Pred_func(row[0],row[1],row[2],row[3],row[4]) # ajouter la prediction sur List_predictions predictions.append(y_pred) df['etat'] = predictions df.to_csv('predictions.csv', index = False) return 'predictions.csv' # définir les blocks demo = gr.Blocks(theme = gr.themes.Monochrome()) # Créer les inputs inputs = [gr.Dropdown(choices=Mq, label ='Marque'), gr.Number(label='Annee'), gr.Dropdown(choices=Tr, label='Transmission'), gr.Number(label='Prix'), gr.Dropdown(choices=Qt, label='Quartier')] # Créer les outputs outputs = gr.Textbox(label='Etat') # Créer l'interface 1 interface1 = gr.Interface(fn = Pred_func, inputs = inputs, outputs = outputs, title="Prédire l'Etat de la voiture", description = """Ce modèle de machine learning nous permet de predire l'état d'une voiture à partir de sa marque,de l'annee, de la transmission, du prix et du quartier de la voiture. """) # Créer l'interface 2 interface2 = gr.Interface(fn = Pred_func_csv, inputs = gr.File(label='Importer un fichier CSV'), outputs = gr.File(label='Télécharger un fichier CSV'), title="Prédiction de l'Etat de plusieurs voitures", description = """Ce modèle de machine learning nous permet de predire l'état d'une voiture à partir de sa marque,de l'annee, de la transmission, du prix et du quartier de la voiture. """) # faire un tabbing des interfaces with demo: gr.TabbedInterface([interface1, interface2], ['Prédiction Simple', 'Prédiction multiple']) # lancer l'interface demo.launch()