# Importer gradio import gradio as gr import joblib import numpy as np import pandas as pd # Télécharger le model model = joblib.load("knn_model.joblib") # Téléchager le scaler scaler = joblib.load("scaler.joblib") # Télécharger les encoders encoder0 = joblib.load("marque.joblib") encoder1 = joblib.load("transmission.joblib") encoder2 = joblib.load('region.joblib') # Foncton de prediction simple def predict_simple(marque, annee, transmission, prix, region): marque = encoder0.transform([marque])[0] transmission = encoder1.transform([transmission])[0] region = encoder2.transform([region])[0] # vecteur des valeurs numériques x_new = np.array([marque, annee, transmission, prix, region]) x_new = x_new.reshape(1,-1) # Normaliser les données x_new = scaler.transform(x_new) # Prediction y_pred = model.predict(x_new) # Afficher return "Venante" if y_pred == 1 else "Occasion" # FOnction de prediction multiple def predict_multiple(file): # Lire le fichier df = pd.read_csv(file) predictions = [] for row in df.iloc[:, :].values: y_pred = predict_simple(row[0], row[1],row[2],row[3],row[4]) # ajouter la prediction sur List_predictions predictions.append(y_pred) df.to_csv('predictions.csv', index = False) return 'predictions.csv' # Interface gradio demo = gr.Blocks(theme = gr.themes.Glass()) inputs = [gr.Dropdown(choices= ['Acura', 'Audi', 'Autres', 'BMW', 'Buick', 'Cadillac', 'Chevrolet', 'Chrysler', 'Citroen', 'Dacia', 'Daihatsu', 'Dodge', 'Fiat', 'Ford', 'GMC', 'Great Wall', 'Honda', 'Hyundai', 'Infinity', 'Isuzu', 'Jaguar', 'Jeep', 'Kia', 'Land Rover', 'Lexus', 'Lincoln', 'Maserati', 'Mazda', 'Mercedes-Benz', 'Mini', 'Mitsubishi', 'Nissan', 'Opel', 'Peugeot', 'Porsche', 'Range Rover', 'Renault', 'Saturn', 'Seat', 'Skoda', 'Ssangyong', 'Subaru', 'Suzuki', 'Tata', 'Toyota', 'Volkswagen'],label= "Marque"), gr.Slider(2000, 2025, step=1, label="Année"), gr.Dropdown(choices=['Automatique', 'Manuelle', 'Tiptronic'],label="Transmission"), gr.Number(label="Prix"), gr.Dropdown(choices=['Almadies', 'Almadies 2', 'Amitié', 'Avenue Bourguiba', 'Bambilor', 'Bargny', 'Bel air', 'Biscuiterie', 'Cambérène', 'Castor', 'Cite Mixta', 'Cité Damel', 'Cité asecna', 'Cité assemblée', 'Cité avion', 'Cité biagui', 'Cité keur gorgui', 'Colobane', 'Comico', 'Dalifort', 'Derkle', 'Diamaguene', 'Diamniadio', 'Dieuppeul', 'Djily mbaye', 'Fann', 'Fann Hock', 'Fenêtre mermoz', 'Gibraltar', 'Golf', 'Gorée', 'Grand-Dakar', 'Grand-Yoff', 'Guediawaye', 'Gueule-Tapée', 'Hann Bel-Air', 'Hann marinas', 'Hann maristes', 'Hlm', 'Hlm grand-yoff', 'Keur Massar', 'Keur ndiaye lô', 'Lac Rose', 'Lac rose', 'Liberte 1', 'Liberte 2', 'Liberte 3', 'Liberte 4', 'Liberte 5', 'Liberte 6', 'Liberte 6 extension', 'Malika', 'Mamelles', 'Mbao', 'Mermoz', 'Médina', 'Ndiakhirate', 'Ngor', 'Niague', 'Nord foire', 'Ouakam', 'Ouest foire', 'Parcelles Assainies', 'Patte d‘oie', 'Pikine', 'Plateau', 'Point-e', 'Rufisque', 'Sacré-cœur', 'Sangalkam', 'Sebikotane', 'Sicap Liberté', 'Sicap Sacré-cœur', 'Sicap baobab', 'Sicap foire', 'Sicap mbao', 'Sud foire', 'Thiaroye', 'Tivaouane peulh', 'VDN', 'Virage', 'Yene', 'Yeumbeul', 'Yoff', 'Zac Mbao', 'Zone de captage'], label="Region")] outputs = gr.Textbox(label="Etat") interface1 = gr.Interface(fn = predict_simple,inputs=inputs,outputs=outputs, title=" Predire si une voiture est venante ou occasion", description=" Faire la prediction simple pour savoir si une voiture est venante ou occasion") interface2 = gr.Interface(fn = predict_multiple, inputs=gr.File(label="Téléversez un fichier csv"), outputs=gr.File(label="Télécharger votre fichier"), title=" Predire si une voiture est venante ou occasion avec une prediction multiple", description=" Faire la prediction simple pour savoir si une voiture est venante ou occasion avec une prediction multiple") with demo : gr.TabbedInterface([interface1, interface2],['Simple Prediction', 'Prédiction multiple']) demo.launch()