Hamsy commited on
Commit
3578429
·
verified ·
1 Parent(s): 5f54337

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -10
app.py CHANGED
@@ -25,22 +25,65 @@ def prediction_func(Hours_Studied,Previous_Scores, Extracurricular_Activities, S
25
  # retourner
26
  return y_pred[0][0]
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  # load les valeurs uniques
29
  uniques = []
30
  for i in range(len(cat_data_columns)):
31
  uniques.append(joblib.load(f'{cat_data_columns[i]}_unique.joblib'))
32
- # créer les inputs
 
 
 
33
  inputs = [gr.Number(label='Hours Studied'),
34
  gr.Number(label='Previous Score'),
35
  gr.Radio(choices=['Yes', 'No'], label='Extracurricular Activities'),
36
  gr.Number(label='Sleep Hours'),
37
  gr.Number(label='Sample Question Papers Practiced')]
38
- # créer les outputs
39
- outputs = gr.Textbox(label = 'Performance')
40
- # Interface
41
- Interface =gr.Interface(fn = prediction_func,
42
- inputs = inputs,
43
- outputs = outputs,
44
- title = 'Prédire la performance des élèves avec une seule entrée',
45
- theme='shivi/calm_seafoam')
46
- Interface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  # retourner
26
  return y_pred[0][0]
27
 
28
+ # Fonction de prédiction multiple
29
+ def prediction_func_csv(file):
30
+ # Lire le fichier csv
31
+ df = pd.read_csv(file)
32
+ predictions = []
33
+ # Boucle sur les lignes du dataframe
34
+ for row in df.iloc[:, :].values:
35
+ # # nouvelle ligne avec les valeurs des Fuel_Type, Seller_Type et Transmission encodées
36
+ # 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]])
37
+ # new_row = new_row.reshape(1,-1) # convertir en un 2D array
38
+ # # Normaliser les données
39
+ # new_row = scaler.transform(new_row)
40
+ # # Prédire
41
+ # y_pred = xgb.predict(new_row)
42
+ # # Arrondir
43
+ # y_pred = round(y_pred[0],2)
44
+ y_pred = prediction_func(row[0], row[1], row[2], row[3], row[4])
45
+ # ajouter la prediction sur List_predictions
46
+ predictions.append(y_pred)
47
+
48
+ df['Performance'] = predictions
49
+ df.to_csv('predictions.csv', index = False)
50
+ return 'predictions.csv'
51
+
52
  # load les valeurs uniques
53
  uniques = []
54
  for i in range(len(cat_data_columns)):
55
  uniques.append(joblib.load(f'{cat_data_columns[i]}_unique.joblib'))
56
+ # définir les blocks
57
+ demo = gr.Blocks(theme='shivi/calm_seafoam')
58
+
59
+ # Créer les inputs
60
  inputs = [gr.Number(label='Hours Studied'),
61
  gr.Number(label='Previous Score'),
62
  gr.Radio(choices=['Yes', 'No'], label='Extracurricular Activities'),
63
  gr.Number(label='Sleep Hours'),
64
  gr.Number(label='Sample Question Papers Practiced')]
65
+ # Créer les outputs
66
+ outputs = gr.Textbox(label='Performance')
67
+ # Créer l'interface 1
68
+ interface1 = gr.Interface(fn = prediction_func_csv,
69
+ inputs = inputs,
70
+ outputs = outputs,
71
+ title="Prédire la performance des élèves avec une seule entrée",
72
+ description = """Ce modèle d'apprentissage automatique nous permet de prédire la performance des élèves à partir des
73
+ Heures étudiées, des Scores précédents, des Activités parascolaires, des Heures de sommeil, des Exemples de sujets d'examen pratiqués .
74
+ """)
75
+ # Créer l'interface 2
76
+ interface2 = gr.Interface(fn = prediction_func_csv,
77
+ inputs = gr.File(label='Upload a csv file'),
78
+ outputs = gr.File(label='Download a csv file'),
79
+ title="Prédire la performance des élèves avec plusieurs entrées",
80
+ description = """"Ce modèle d'apprentissage automatique nous permet de prédire la performance des élèves à partir des
81
+ Heures étudiées, des Scores précédents, des Activités parascolaires, des Heures de sommeil, des Exemples de sujets d'examen pratiqués.
82
+ """)
83
+
84
+ # faire un tabbing des interfaces
85
+ with demo:
86
+ gr.TabbedInterface([interface1, interface2], ['Simple Prediction', 'Prédiction multiple'])
87
+
88
+ # lancer l'interface
89
+ demo.launch()