ModuMLTECH commited on
Commit
aa23456
·
verified ·
1 Parent(s): b76b9d3

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -155
app.py DELETED
@@ -1,155 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """Copie de Untitled4.ipynb
3
-
4
- Automatically generated by Colab.
5
-
6
- Original file is located at
7
- https://colab.research.google.com/drive/1S1GQ3V9KA8SZTVhyRe-esQ-y16vp_D7j
8
- """
9
-
10
- #Importer les packages
11
- import numpy as np
12
- import gradio as gr
13
- import pandas as pd
14
-
15
- data = pd.read_csv('Telephone_data___.csv')
16
- df = pd.read_csv('data_prep.csv')
17
-
18
- # Encoder les variables catégorielles
19
- from sklearn.preprocessing import LabelEncoder
20
- # Créer différents encodeurs pour les variables catégorielles
21
- encoder0 = LabelEncoder()
22
- encoder1 = LabelEncoder()
23
- encoder2 = LabelEncoder()
24
- encoders = [encoder0, encoder1, encoder2]
25
- columns = [col for col in data.columns if data[col].dtype == 'object']
26
- for i in range(len(columns)):
27
- encoders[i].fit(data[columns[i]]) # le modèle prend le temps de reconnaitre les classes
28
- # Fractionner les données
29
- x= df.drop('etat', axis = 1).values # variables prédicteurs
30
- y = df['etat'].values # variable cible
31
-
32
- # importer StandardScaler
33
- from sklearn.preprocessing import StandardScaler, MinMaxScaler, normalize
34
- # Instancier StandardScaler
35
- scaler = StandardScaler()
36
- scaler.fit(x) # calcul de la moyenne et de l'écart type
37
- x = scaler.transform(x) # normalisation
38
-
39
-
40
- from sklearn.model_selection import train_test_split
41
- # Splitter les données en train, val et test
42
- x_train, x_vt,y_train,y_vt = train_test_split(x,y , test_size = 0.2, random_state = 42)
43
- # Splitter les données en val et test
44
- x_val, x_test, y_val, y_test = train_test_split(x_vt, y_vt, test_size = 0.5, random_state = 42)
45
-
46
-
47
- from sklearn.ensemble import GradientBoostingClassifier
48
- # Entrainer Gradient Boosting en utilisant les paramètres optimaux 'max_depth': 4, 'n_estimators': 80
49
- gb = GradientBoostingClassifier(max_depth = 5, n_estimators = 60)
50
- # Entrainement
51
- gb.fit(x_train, y_train)
52
-
53
-
54
- # Importer gradio
55
- import gradio as gr
56
- import numpy as np
57
-
58
- # Fonction de prédiction avec vérifications
59
- def Pred_func(prix, adresse, marque, dim_ecr, ram, stockage):
60
- try:
61
- # Encoder les valeurs des variables adresse et marque
62
- Adresse = encoder0.transform([adresse])[0] # Transformer et récupérer la première valeur
63
- Marque = encoder1.transform([marque])[0]
64
-
65
- # Affichage pour vérifier les encodages
66
- print(f"Encodage Adresse: {Adresse}, Marque: {Marque}")
67
-
68
- # Vecteur des valeurs numériques avec les variables encodées
69
- x_new = np.array([prix, Adresse, Marque, dim_ecr, ram, stockage])
70
- x_new = x_new.reshape(1, -1) # Convertir en un tableau 2D
71
-
72
- # Vérifier la forme des données d'entrée
73
- print(f"Forme des données d'entrée: {x_new.shape}")
74
-
75
- # Normaliser les données
76
- x_new = scaler.transform(x_new)
77
-
78
- # Prédire la variable cible 'etat' avec le modèle gb
79
- y_pred = gb.predict(x_new)
80
-
81
- # Vérifier la forme et la valeur de la prédiction
82
- print(f"Prédiction encodée: {y_pred}")
83
-
84
- # Décoder la valeur prédite pour 'etat'
85
- y_pred_decoded = encoder2.inverse_transform([y_pred[0]])[0] # Décoder la valeur encodée
86
-
87
- # Afficher la valeur décodée
88
- print(f"Prédiction décodée: {y_pred_decoded}")
89
-
90
- return str(y_pred_decoded)
91
-
92
- except Exception as e:
93
- # Afficher l'erreur pour diagnostiquer le problème
94
- print(f"Erreur rencontrée: {str(e)}")
95
- return f"Erreur lors de la prédiction: {str(e)}"
96
-
97
-
98
- # Fonction de prédiction multiple
99
- def Pred_func_csv(file):
100
- # Lire le fichier csv
101
- df = pd.read_csv(file)
102
- # prédictions
103
- predictions = []
104
- # Boucle sur les lignes du dataframe
105
- for row in df.iloc[:, :].values:
106
- # nouvelle ligne avec les valeurs des Fuel_Type, Seller_Type et Transmission encodées
107
- new_row = np.array([row[0], row[1], encoder0.transform([row[2]])[0], encoder1.transform([row[3]])[0]])
108
- new_row = new_row.reshape(1,-1) # convertir en un 2D array
109
- # Normaliser les données
110
- new_row = scaler.transform(new_row)
111
- # Prédire
112
- y_pred = gb.predict(new_row)
113
- # Décoder la valeur prédite pour 'etat'
114
- y_pred_decoded = encoder2.inverse_transform([y_pred[0]])[0] # Décoder la valeur encodée
115
- predictions.append(y_pred_decoded) # Ajouter la prédiction à la liste
116
- df['etat'] = predictions
117
- df.to_csv('predictions.csv', index = False)
118
- return 'predictions.csv'
119
-
120
- # définir les blocks afin de pouvoir ajouter plusieurs interfaces
121
- demo = gr.Blocks(theme = gr.themes.Glass())
122
-
123
- # autres themes
124
- #gr.themes.Base() gr.themes.Default() gr.themes.Glass() gr.themes.Monochrome() gr.themes.Soft()
125
-
126
-
127
- # Interface Gradio pour interagir avec la fonction
128
- interface1 = gr.Interface(
129
- fn=Pred_func, # Fonction à appeler
130
- inputs=[
131
- gr.Number(label="prix"),
132
- gr.Dropdown(choices= list(np.unique(data.adresse)), label='Adresse'), # on utilise list pour bcp de valeur
133
- gr.Dropdown(choices= list(np.unique(data.marque)), label='Marque'), # on utilise list pour bcp de valeur
134
- gr.Number(label="Dimension de l'écran"),
135
- gr.Number(label="RAM (Go)"),
136
- gr.Number(label="Stockage (Go)")
137
- ],
138
- outputs="text", # Sortie sous forme de texte
139
- title="Prédiction de l'état d'un Téléphone portable", # Titre de l'interface
140
- )
141
- # Créer l'interface 2 permettant de faire une prédiction multiple en partant d'un fichier csv
142
- interface2 = gr.Interface(fn = Pred_func_csv,
143
- inputs = gr.File(label='Upload a csv file'),
144
- outputs = gr.File(label='Download a csv file'),
145
- title="Predict the selling price of a car with a multiple inputs",
146
- description = """This machine learning model allows us to predict the selling price of a car
147
- from the kms driven, present price, fuel type, seller type, transmission and age of the car.
148
- """)
149
-
150
- # faire un tabbing (regrouper en onglet) des interfaces
151
- with demo:
152
- gr.TabbedInterface([interface1, interface2], ['Simple Prediction', 'Prédiction multiple'])
153
-
154
- # lancer l'interface
155
- demo.launch(share = True)