LayeOumar commited on
Commit
33de805
·
verified ·
1 Parent(s): 79d2f56

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +99 -0
app.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Fonction de prédiction
2
+ import gradio as gr
3
+ import joblib
4
+ # importer les encodeurs
5
+ encoder0 = joblib.load('marque.joblib')
6
+ encoder1 = joblib.load('transmission.joblib')
7
+ encoder2 = joblib.load('quartier.joblib')
8
+ encoder3 = joblib.load('etat.joblib')
9
+
10
+ Qt= joblib.load('liste_quartier.joblib')
11
+ Mq= joblib.load('liste_marque.joblib')
12
+ Tr= joblib.load('liste_transmission.joblib')
13
+ # importer le modèle
14
+ xgb = joblib.load('xgb.joblib')
15
+ # importer le normaliseur
16
+ scaler = joblib.load('scaler.joblib')
17
+ def Pred_func(marque,annee,transmission,prix, quartier):
18
+
19
+ # Encoder les valeurs des , Seller_Type et Transmission
20
+ Marque = encoder0.transform([marque])[0]
21
+ Transmission = encoder1.transform([transmission])[0]
22
+ Quartier = encoder2.transform([quartier])[0]
23
+
24
+ # vecteur des valeurs numériques
25
+ x_new = np.array([Marque,annee, Transmission,prix, Quartier, ])
26
+ x_new = x_new.reshape(1,-1) # convert en un 2D array
27
+ # Normaliser les données
28
+ x_new = scaler.transform(x_new)
29
+ # Prédire
30
+ y_pred = xgb.predict(x_new)[0]
31
+ if y_pred == 1:
32
+ return 'venant'
33
+ else:
34
+ return 'occasion'
35
+ Pred_func('Ford',2017,'Automatique',30000000,'Amitié')
36
+
37
+
38
+ # Fonction de prédiction multiple
39
+ def Pred_func_csv(file):
40
+ # Lire le fichier csv
41
+ df = pd.read_csv(file)
42
+ predictions = []
43
+ # Boucle sur les lignes du dataframe
44
+ for row in df.iloc[:, :].values:
45
+ # nouvelle ligne avec les valeurs des Fuel_Type, Seller_Type et Transmission encodées
46
+ # 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]])])
47
+ # new_row = new_row.reshape(1,-1) # convertir en un 2D array
48
+ # # Normaliser les données
49
+ # new_row = scaler.transform(new_row)
50
+ # # Prédire
51
+ # y_pred = xgb.predict(new_row)
52
+ # # Arrondir
53
+ # y_pred = round(y_pred[0],2)
54
+
55
+ y_pred = Pred_func(row[0],row[1],row[2],row[3],row[4])
56
+
57
+ # ajouter la prediction sur List_predictions
58
+ predictions.append(y_pred)
59
+
60
+ df['etat'] = predictions
61
+ df.to_csv('predictions.csv', index = False)
62
+ return 'predictions.csv'
63
+
64
+
65
+ # définir les blocks
66
+ demo = gr.Blocks(theme = gr.themes.Monochrome())
67
+
68
+ # Créer les inputs
69
+ inputs = [gr.Dropdown(choices=Mq, label ='Marque'),
70
+ gr.Number(label='Annee'),
71
+ gr.Dropdown(choices=Tr, label='Transmission'),
72
+ gr.Number(label='Prix'),
73
+ gr.Dropdown(choices=Qt, label='Quartier')]
74
+
75
+ # Créer les outputs
76
+ outputs = gr.Textbox(label='Etat')
77
+ # Créer l'interface 1
78
+ interface1 = gr.Interface(fn = Pred_func,
79
+ inputs = inputs,
80
+ outputs = outputs,
81
+ title="Prédire l'Etat de la voiture",
82
+ description = """Ce modèle de machine learning nous permet de predire l'état d'une voiture
83
+ à partir de sa marque,de l'annee, de la transmission, du prix et du quartier de la voiture.
84
+ """)
85
+ # Créer l'interface 2
86
+ interface2 = gr.Interface(fn = Pred_func_csv,
87
+ inputs = gr.File(label='Importer un fichier CSV'),
88
+ outputs = gr.File(label='Télécharger un fichier CSV'),
89
+ title="Prédiction du prix de plusieurs voitures",
90
+ description = """Ce modèle de machine learning nous permet de predire l'état d'une voiture
91
+ à partir de sa marque,de l'annee, de la transmission, du prix et du quartier de la voiture.
92
+ """)
93
+
94
+ # faire un tabbing des interfaces
95
+ with demo:
96
+ gr.TabbedInterface([interface1, interface2], ['Prédiction Simple', 'Prédiction multiple'])
97
+
98
+ # lancer l'interface
99
+ demo.launch()