project5 / model /README.md
GitHub Action
Deploy to HuggingFace Spaces from main branch
66a0674

🤖 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

{
  "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

# 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

# Valider l'intégrité du modèle
make validate

# Tester le chargement
make test

# Tester une prédiction
make test-prediction

Rapport et informations

# 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

# Dépendances principales
import sklearn
import pandas
import numpy
import joblib

Variables d'environnement

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

# Sauvegarde manuelle
make backup

# Lister les versions
make list-backups

# Restaurer une version précédente
make restore

Structure du modèle

# 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 :

# 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