Downloads · 30 days
0
Jean-Vladimir/stock-forecast-bi
stock-forecast-bi is a machine learning model from Jean-Vladimir. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Mini-projet BI de bout en bout. L'objectif : réduire les ruptures et surstocks d'un distributeur fictif de pièces auto.
Downloads · 30 days
0
Access
Public
Updated Jan 25, 2026
Repo size
629 KB
Likes
0
Public
Click a slice to open those files.
.bin1 MB · 60%
From the Hugging Face model README
Mini-projet BI de bout en bout. L'objectif : réduire les ruptures et surstocks d'un distributeur fictif de pièces auto.
AutoParts Distribution gère 150 références réparties sur 3 entrepôts (Lyon, Bordeaux, Lille). Le directeur supply chain veut :
[Données brutes] [Entrepôt DuckDB] [Modèles] [Dashboard]
CSV --> Schéma en étoile --> Prophet/XGBoost --> Power BI
(ventes, (fact_ventes, (prévisions) (KPIs, alertes)
stocks, dim_produit,
promos) dim_temps...)
Pourquoi ces choix :
# Créer l'environnement
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Installer les dépendances
pip install -r requirements.txt
Configuration disque : tout tient dans un dossier (~50 Mo). DuckDB crée un fichier .duckdb unique. Pas besoin de partition séparée.
# 1. Générer les données de test (2 ans d'historique)
python src/01_generate_data.py
# 2. Construire l'entrepôt (modèle en étoile)
python src/02_build_warehouse.py
# 3. Créer les features et entraîner les modèles
python src/03_train_models.py
# 4. Calculer les KPIs et recommandations
python src/04_compute_kpis.py
# 5. Exporter pour Power BI
python src/05_export_powerbi.py
Schéma dimensionnel classique :
dim_produit (sk_produit, code_ref, libelle, categorie, fournisseur, delai_appro)
dim_entrepot (sk_entrepot, code_depot, ville, capacite_palettes)
dim_temps (sk_temps, date_jour, semaine, mois, trimestre, annee, jour_semaine, est_ferie)
fact_ventes (sk_produit, sk_entrepot, sk_temps, qte_vendue, ca_ht, flag_promo)
fact_stock (sk_produit, sk_entrepot, sk_temps, qte_stock, valeur_stock)
fact_previsions (sk_produit, sk_entrepot, sk_temps, qte_prevue, intervalle_bas, intervalle_haut)
Les snapshots quotidiens de stock permettent d'analyser la couverture et les rotations.
Approche en deux temps :
Features utilisées : jour de semaine, semaine de l'année, flag promo, lag ventes J-7/J-14, météo simplifiée.
| KPI | Formule | Cible |
|---|---|---|
| Taux rupture | jours_rupture / jours_ouvrés | < 5% |
| Couverture | stock_moyen / ventes_moy_jour | 15-45j |
| Rotation | CA / stock_moyen | > 8/an |
| MAPE prévision | mean(abs(prev-reel)/reel) | < 20% |
| Valeur surstockée | stock au-delà de 60j couverture | minimiser |
Le script 05_export_powerbi.py génère :
data/powerbi/fact_*.parquet : tables de faitsdata/powerbi/dim_*.parquet : dimensionsdata/powerbi/kpis_*.csv : KPIs agrégésImport dans Power BI Desktop : Obtenir des données > Parquet (ou CSV).
Alternative sans Power BI : le script génère aussi un dashboard HTML avec Plotly.
Le module 04_compute_kpis.py génère une table alertes avec :
Ce projet couvre les bases. En production :
MIT - à adapter librement.