import joblib import numpy as np from keras.models import load_model import gradio as gr import pandas as pd # Télécharger l'encoder encoder = joblib.load('Extracurricular.joblib') # Télécharger le sacler scaler = joblib.load('scaler.joblib') # Le modèle model = load_model('DNN_model.keras') def predict_func (hours_studied, previous_scores, extra_activities, sleep_hours, sample_question_pp): # encoder la valeur de Extracurriclar Activities using map extra_activities_series = pd.Series([extra_activities]) extra_activities_encoded = extra_activities_series.map(encoder).iloc[0] # vecteur des valeurs numeriques x_new=np.array([hours_studied, previous_scores, extra_activities_encoded, sleep_hours, sample_question_pp]).reshape(1, -1) # Apply scaling x_new=scaler.transform(x_new) # Prediction y_pred = model.predict(x_new) return f"L'élève a une performance de {y_pred[0][0]:.2f}%" demo=gr.Blocks(theme = 'NoCrypt/miku') # Créer les inputs inputs = [gr.Number(label='Hours_Studied'), gr.Number(label='Previous_Scores'), gr.Radio(choices=['Yes', 'No'], label='Extracurricular_Activities'), gr.Number(label='Sleep_Hours'), gr.Number(label='Sample_Question_Papers_Practiced')] # Créer les outputs outputs = gr.Textbox(label='Performance_Index') # Créer l'interface 1 interface1 = gr.Interface(fn = predict_func, inputs = inputs, outputs = outputs, title="Prédire la performence d'un élève" ) # faire un tabbing des interfaces with demo: gr.TabbedInterface([interface1], ['Simple Prediction']) # lancer l'interface demo.launch()