LayeOumar commited on
Commit
4fb37b1
·
verified ·
1 Parent(s): b7d1c5a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +93 -0
app.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ # Fonction de prédiction
4
+ import gradio as gr
5
+ import joblib
6
+ # importer les encodeurs
7
+ encoder0 = joblib.load('Fuel_Type.joblib')
8
+ encoder1 = joblib.load('Seller_Type.joblib')
9
+ encoder2 = joblib.load('Transmission.joblib')
10
+ # importer le modèle
11
+ xgb = joblib.load('xgb.joblib')
12
+ # importer le normaliseur
13
+ scaler = joblib.load('scaler.joblib')
14
+ def Pred_func(Kms_Driven,Present_Price, Fuel_Type, Seller_Type, Transmission, Age):
15
+
16
+ # Encoder les valeurs des Fuel_Type, Seller_Type et Transmission
17
+ Fuel_Type = encoder0.transform([Fuel_Type])[0]
18
+ Seller_Type = encoder1.transform([Seller_Type])[0]
19
+ Transmission = encoder2.transform([Transmission])[0]
20
+ # vecteur des valeurs numériques
21
+ x_new = np.array([Kms_Driven,Present_Price, Fuel_Type, Seller_Type, Transmission, Age])
22
+ x_new = x_new.reshape(1,-1) # convert en un 2D array
23
+ # Normaliser les données
24
+ x_new = scaler.transform(x_new)
25
+ # Prédire
26
+ y_pred = xgb.predict(x_new)
27
+ # Arrondir
28
+ y_pred = round(y_pred[0],2)
29
+ return str(y_pred) + 'k$'
30
+
31
+ # Fonction de prédiction multiple
32
+ def Pred_func_csv(file):
33
+ # Lire le fichier csv
34
+ df = pd.read_csv(file)
35
+ predictions = []
36
+ # Boucle sur les lignes du dataframe
37
+ for row in df.iloc[:, :].values:
38
+ # nouvelle ligne avec les valeurs des Fuel_Type, Seller_Type et Transmission encodées
39
+ new_row = np.array([row[0], row[1], encoder0.transform([row[2]])[0], encoder1.transform([row[3]])[0], encoder2.transform([row[4]])[0], row[5]])
40
+ new_row = new_row.reshape(1,-1) # convertir en un 2D array
41
+ # Normaliser les données
42
+ new_row = scaler.transform(new_row)
43
+ # Prédire
44
+ y_pred = xgb.predict(new_row)
45
+ # Arrondir
46
+ y_pred = round(y_pred[0],2)
47
+ # ajouter la prediction sur List_predictions
48
+ predictions.append(y_pred)
49
+
50
+ df['Selling_Price'] = predictions
51
+ df.to_csv('predictions.csv', index = False)
52
+ return 'predictions.csv'
53
+
54
+ # définir les blocks
55
+ demo = gr.Blocks(theme = gr.themes.Monochrome())
56
+
57
+ # Créer les inputs
58
+ inputs = [gr.Number(label='Kms Driven'),
59
+ gr.Number(label='Present Price'),
60
+ gr.Radio(choices=['Petrol', 'Diesel', 'CNG'], label='Fuel Type'),
61
+ gr.Radio(choices=['Dealer', 'Individual'], label='Seller Type'),
62
+ gr.Radio(choices=['Manual', 'Automatic'], label='Transmission'),
63
+ gr.Number(label='Age')]
64
+ # Créer les outputs
65
+ outputs = gr.Textbox(label='Selling Price')
66
+ # Créer l'interface 1
67
+ interface1 = gr.Interface(fn = Pred_func,
68
+ inputs = inputs,
69
+ outputs = outputs,
70
+ title="Predict the selling price of a car with a single input",
71
+ description = """This machine learning model allows us to predict the selling price of a car
72
+ from the kms driven, present price, fuel type, seller type, transmission and age of the car.
73
+ """)
74
+ # Créer l'interface 2
75
+ interface2 = gr.Interface(fn = Pred_func_csv,
76
+ inputs = gr.File(label='Upload a csv file'),
77
+ outputs = gr.File(label='Download a csv file'),
78
+ title="Predict the selling price of a car with a multiple inputs",
79
+ description = """This machine learning model allows us to predict the selling price of a car
80
+ from the kms driven, present price, fuel type, seller type, transmission and age of the car.
81
+ """)
82
+
83
+ # faire un tabbing des interfaces
84
+ with demo:
85
+ gr.TabbedInterface([interface1, interface2], ['Simple Prediction', 'Prédiction multiple'])
86
+
87
+ # lancer l'interface
88
+ demo.launch()
89
+
90
+
91
+
92
+
93
+