4 phases MLOps :
- Collecte Données : Open-Meteo API (météo) + Tydom (production locale)
- Apprentissage : Entraînement LinearRegression sur données historiques
- Inférence : Prédictions production PV future
- Log Erreurs : Métriques et comparaison réel vs prédictions
# Créer venv
python -m venv .venv
# Activer venv (PowerShell)
.\.venv\Scripts\Activate.ps1
# Ou (CMD)
.venv\Scripts\activate.batWindows PowerShell? Si erreur d'exécution :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
pip install -r requirements.txtpython main_training_pipeline.pyOptions disponibles :
# Avec paramètres custom
python main_training_pipeline.py \
--data_source weather_api_local_production \
--start_date 2018-01-01 \
--end_date 2021-12-31 \
--latitude 48.7667 \
--longitude 2.6667 \
--split_date 2020-07-31 \
--register_model trueParamètres :
--data_source:api|file|weather_api_local_production(défaut)--input_path: Chemin CSV local (défaut:data/raw/dfmodelpierrerozir.csv)--start_date: Date début API (format YYYY-MM-DD)--end_date: Date fin API--latitude/--longitude: Coordonnées géographiques (défaut: Bussy-Saint-Georges)--split_date: Date train/test split--register_model: Enregistrer dans Azure ML (true/false)
Résultat :
Dataset loaded successfully: (25502, 28)
Train samples : 816
Test samples : 167
R2 : 0.830
MAE : 1440.3 Wh/day
RMSE : 1926.1 Wh/day
✅ Model saved to: outputs/model.pkl
✅ Scaler saved to: outputs/scaler.pkl
✅ Metadata saved to: outputs/metadata.json
python inference.pyRésultat :
{
"predicted_production_wh": 4250.5,
"confidence_interval": [3800.2, 4700.8],
"timestamp": "2026-04-28T10:30:00Z"
}Résultats sauvegardés dans : inference_results.json
python -m src.visualization.testGénère des graphiques :
outputs/predictions_vs_actual.pngoutputs/residuals_plot.png
python submit_training_job.pyLinear_Reg_PV/
├── main_training_pipeline.py # Entraînement complet
├── inference.py # Inférence/prédictions
├── submit_training_job.py # Soumission Azure ML
├── requirements.txt # Dépendances
├── config.json # Configuration projet
│
├── data/
│ ├── raw/ # Données brutes
│ │ └── dfmodelpierrerozir.csv
│ └── processed/ # Données nettoyées
│
├── src/
│ ├── data/
│ │ ├── fetch_api_data.py # Ingestion Open-Meteo + Tydom
│ │ ├── aggregation.py # Agrégation horaire→journalière
│ │ └── cleaning.py # Nettoyage données
│ ├── features/
│ │ ├── clearsky_features.py # Rayonnement ciel clair
│ │ ├── kc_features.py # Index clarté Kc
│ │ └── time_features.py # Features calendaires
│ ├── models/
│ │ ├── train_linear_model.py # Entraînement LinearRegression
│ │ ├── predict.py # Prédictions
│ │ ├── split.py # Train/test split
│ │ └── evaluate_model.py # Évaluation métriques
│ └── visualization/
│ ├── plot_predictions.py # Graphiques
│ └── test.py # Tests visualisation
│
└── outputs/ # Modèles & résultats
├── model.pkl
├── scaler.pkl
└── metadata.json
| Tâche | Commande |
|---|---|
| Setup complet | .\.venv\Scripts\Activate.ps1 && pip install -r requirements.txt |
| Entraîner | python main_training_pipeline.py |
| Prédire | python inference.py |
| Visualiser | python -m src.visualization.test |
| Azure ML | python submit_training_job.py |
- Python 3.11+ (Azure ML supporte 3.8-3.12 ; en local 3.13+ OK)
- Internet : Open-Meteo API (météo historique)
- CSV local : Production PV historique (
data/raw/dfmodelpierrerozir.csv)
- Tydom : Données en temps réel du capteur local
- Open-Meteo : API météo gratuite (lat/lon configurables)
- Azure ML : Optionnel, non requis pour entraînement local