File size: 3,768 Bytes
ddab381
 
 
 
33de805
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
827a1d5
33de805
 
 
 
 
 
 
 
 
 
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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()