Update app.py
Browse files
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 |
-
#
|
|
|
|
|
|
|
|
|
|
| 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 |
-
#
|
| 39 |
-
outputs = gr.Textbox(label
|
| 40 |
-
#
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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()
|