# 🤖 Modèle de Machine Learning - Project5 Ce dossier contient le modèle de Machine Learning pour la prédiction de consommation énergétique des bâtiments. ## 📁 Structure des fichiers ``` model/ ├── model.py # Script de génération du modèle ├── model.pkl # Modèle RandomForest sérialisé (26MB) ├── model_info.json # Métadonnées et métriques du modèle ├── generate_model_report.py # Générateur de rapport HTML ├── Makefile # Automatisation des tâches ├── backup/ # Sauvegardes des modèles └── README.md # Cette documentation ``` ## 🎯 Modèle actuel ### Informations générales - **Type** : RandomForestRegressor - **Version** : 1.0 - **Créé le** : 2025-09-21T11:07:42 - **Taille** : 26.0 MB - **Variables** : 17 features ### Métriques de performance ```json { "accuracy": 0.916, "RMSE": 0.09, "MAE": 0.22, "R²": 0.92 } ``` ### Variables d'entrée (17 features) ``` year_built number_of_buildings number_of_floors property_gfa_total property_gfa_parking second_largest_property_use_type_gfa third_largest_property_use_type_gfa multiusage steam electricity natural_gas neighborhood_id building_type_id largest_property_use_type_id primary_property_type_id second_largest_property_use_type_id third_largest_property_use_type_id ``` ## 🚀 Utilisation rapide ### Génération du modèle ```bash # Installation et génération complète make setup # Génération simple make train # Force la régénération make retrain ``` ### Validation et tests ```bash # Valider l'intégrité du modèle make validate # Tester le chargement make test # Tester une prédiction make test-prediction ``` ### Rapport et informations ```bash # Générer un rapport HTML complet make report # Informations rapides make info # Taille des fichiers make model-size ``` ## 📊 Commandes disponibles ### **Génération du modèle** - `make model` / `make train` - Génère le modèle via model.py - `make retrain` - Force la régénération (supprime + recrée) - `make setup` - Workflow complet (dépendances + DB + génération) ### **Validation et tests** - `make validate` - Vérifie l'existence et l'intégrité des fichiers - `make test` - Test de chargement et validation du modèle - `make test-prediction` - Test d'une prédiction avec données aléatoires ### **Gestion et maintenance** - `make info` - Affiche les informations détaillées (JSON) - `make model-size` - Affiche la taille des fichiers - `make backup` - Sauvegarde avec timestamp - `make restore` - Restaure la dernière sauvegarde - `make list-backups` - Liste toutes les sauvegardes - `make clean` / `make clean-all` - Nettoyage ### **Environnement** - `make check-deps` - Vérifie les dépendances Python - `make check-db` - Teste la connexion à la base de données ## 🔧 Configuration technique ### Prérequis ```python # Dépendances principales import sklearn import pandas import numpy import joblib ``` ### Variables d'environnement ```bash DATABASE_URL=postgresql://user:password@localhost/dbname ``` ### Source des données Le modèle est entraîné sur la vue `model_view` de la base de données PostgreSQL qui agrège : - Données Seattle (2016_Building_Energy_Benchmarking.csv) - Données OSE (building_consumption_OSEBuildingID.csv) ## 🛠️ Développement ### Regeneration du modèle 1. Modifier les hyperparamètres dans `model.py` 2. Exécuter `make train` 3. Valider avec `make test` 4. Générer le rapport avec `make report` ### Sauvegarde et versioning ```bash # Sauvegarde manuelle make backup # Lister les versions make list-backups # Restaurer une version précédente make restore ``` ### Structure du modèle ```python # Configuration RandomForest RandomForestRegressor( n_estimators=500, max_features=0.5, random_state=42, min_samples_split=5, max_depth=20 ) ``` ## 📊 Pipeline de données 1. **Source** : Vue `model_view` (PostgreSQL) 2. **Transformation** : Log de la variable cible `site_energy_use_wn_kbtu` 3. **Split** : 80/20 train/test (random_state=42) 4. **Validation** : Cross-validation 5-fold 5. **Métriques** : RMSE, MAE, R², Accuracy ## 🔗 Intégration API Le modèle est automatiquement chargé par l'API FastAPI au démarrage : ```python # Dans main.py from project5.ml.model import MLModel model = MLModel() model.load_model() # Charge model.pkl ``` ## 📞 Support Pour toute question ou problème : 1. **Vérifier l'intégrité** : `make validate` 2. **Tester le modèle** : `make test` 3. **Générer un rapport** : `make report` 4. **Consulter les logs** : Vérifier les sorties des commandes make --- **🏢 Project5 - API de gestion énergétique des bâtiments**