Spaces:
Sleeping
Sleeping
File size: 2,391 Bytes
505bef6 7831bed e93633b 7831bed 505bef6 e93633b b93c54b 7831bed 505bef6 e93633b 505bef6 e93633b e7d6af8 e93633b edf8945 e93633b edf8945 e93633b edf8945 e7d6af8 edf8945 7831bed edf8945 7831bed e93633b edf8945 7831bed edf8945 7831bed e7d6af8 8cd62e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import os
import gradio as gr
import joblib
import pandas as pd
import numpy as np
from keras.models import load_model
# Vérification des fichiers nécessaires
required_files = [
'Student_Performance.csv',
'encoder.joblib',
'scaler.joblib',
'DNN_model_new.keras'
]
missing_files = [f for f in required_files if not os.path.exists(f)]
if missing_files:
raise FileNotFoundError(f"Les fichiers suivants sont manquants : {missing_files}")
# Chargement des outils
encoder = joblib.load('encoder.joblib')
scaler = joblib.load('scaler.joblib')
# Chargement du modèle
try:
modele = load_model('DNN_model_new.keras')
print("✅ Modèle chargé avec succès.")
except Exception as e:
print(f"❌ Erreur lors du chargement du modèle : {e}")
modele = None
# Fonction de prédiction multiple
def prediction_batch(input_file):
"""
Prédit l'indice de performance pour chaque étudiant dans un fichier CSV.
Le fichier doit contenir les colonnes :
'Hours Studied', 'Previous Scores', 'Extracurricular Activities', 'Sleep Hours', 'Sample Question Papers Practiced'
"""
df_input = pd.read_csv(input_file)
# Encoder la variable catégorielle
df_input['Extracurricular Activities'] = encoder.transform(df_input['Extracurricular Activities'])
# Sélectionner les colonnes dans le bon ordre
X = df_input[['Hours Studied', 'Previous Scores', 'Extracurricular Activities', 'Sleep Hours', 'Sample Question Papers Practiced']].values
# Normaliser
X_scaled = scaler.transform(X)
# Prédire
y_pred = modele.predict(X_scaled).flatten()
# Ajouter la prédiction au DataFrame
df_input['Predicted Performance Index'] = np.round(y_pred, 2)
return df_input
# Interface Gradio pour prédiction multiple
inputs = gr.File(label="Charger un fichier CSV avec les colonnes attendues")
outputs = gr.Dataframe(label="Résultats avec prédiction")
interface = gr.Interface(
fn=prediction_batch,
inputs=inputs,
outputs=outputs,
title='Prédiction multiple des performances des étudiants',
description="Chargez un fichier CSV avec les colonnes : 'Hours Studied', 'Previous Scores', 'Extracurricular Activities', 'Sleep Hours', 'Sample Question Papers Practiced'. Les valeurs pour 'Extracurricular Activities' doivent être 'Yes' ou 'No'."
)
if __name__ == "__main__":
interface.launch(share=True)
|