File size: 4,824 Bytes
66a0674
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# 🤖 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**