File size: 4,399 Bytes
f6c456d
16bcc58
 
c31822d
f6c456d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16bcc58
f6c456d
 
 
 
 
 
 
 
 
16bcc58
f6c456d
 
16bcc58
f6c456d
 
 
16bcc58
 
 
 
 
 
f6c456d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 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()