Spaces:
Sleeping
Sleeping
| 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) | |