📦 Livrables à produire
:::{.livrable-title}📊 Livrable 1 — Modélisation fréquence/sévérité::: :::{.livrable-status .required}Obligatoire:::
Script Python qui :
- Génère des données de sinistres (1 000+ lignes)
- Ajuste une loi de Poisson sur la fréquence
- Ajuste une loi Gamma sur la sévérité
- Produit des QQ-plots pour valider l’ajustement
- Calcule la prime pure estimée
:::{.livrable-title}📈 Livrable 2 — Comparaison de distributions::: :::{.livrable-status .required}Obligatoire:::
Comparer Gamma vs Lognormale sur les données de sévérité :
- QQ-plots côte à côte
- AIC pour les deux modèles
- Conclusion argumentée sur le choix
:::{.livrable-title}☁️ Livrable 3 — Script boto3::: :::{.livrable-status .required}Obligatoire:::
Script Python utilisant boto3 pour :
- Créer un bucket S3
- Uploader les données de sinistres
- Les relire depuis S3 dans un DataFrame pandas
🏋️ Exercices métier
📝 Exercice M1 — Estimation Poisson
À partir des données suivantes (nombre de sinistres par assuré sur 1 an), estime le paramètre λ de la loi de Poisson et vérifie s’il y a surdispersion :
| Nb sinistres | 0 | 1 | 2 | 3 | 4+ |
|---|---|---|---|---|---|
| Nb assurés | 7200 | 650 | 120 | 25 | 5 |
- Total assurés : 8 000
- Total sinistres : 0×7200 + 1×650 + 2×120 + 3×25 + 4×5 = 985
- λ̂ = 985/8000 = 0.123
- Moyenne = 0.123, Variance = 0.136
- Ratio variance/moyenne = 1.10 → légère surdispersion, Poisson acceptable en première approximation
📝 Exercice M2 — Ajustement Gamma
Des coûts de sinistres (en €) : 1200, 3500, 800, 5200, 2100, 950, 4300, 1800, 6100, 1500.
Estime les paramètres de la loi Gamma par la méthode des moments.
- Moyenne x̄ = 2745 €
- Variance s² = 3 204 750
- α̂ = x̄² / s² = 2745² / 3 204 750 ≈ 2.35
- β̂ = s² / x̄ = 3 204 750 / 2745 ≈ 1167
- Vérification : α × β = 2.35 × 1167 ≈ 2742 ≈ x̄ ✓
🏋️ Exercices techniques
☁️ Exercice T1 — Premières commandes S3
Avec AWS CLI :
- Crée un bucket
formation-assurance-[ton-nom] - Uploade un fichier CSV de test
- Liste le contenu du bucket
- Télécharge le fichier dans un autre dossier
aws s3 mb s3://formation-assurance-francois
aws s3 cp sinistres.csv s3://formation-assurance-francois/data/
aws s3 ls s3://formation-assurance-francois/data/
aws s3 cp s3://formation-assurance-francois/data/sinistres.csv ./download/☁️ Exercice T2 — boto3 et pandas
Écris un script Python qui uploade un DataFrame pandas sur S3 au format Parquet, puis le relit.
import boto3
import pandas as pd
from io import BytesIO
# Créer des données
df = pd.DataFrame({'sinistre_id': range(100), 'cout': np.random.gamma(2, 1500, 100)})
# Upload en Parquet
buffer = BytesIO()
df.to_parquet(buffer, index=False)
buffer.seek(0)
s3 = boto3.client('s3')
s3.put_object(Bucket='mon-bucket', Key='data/sinistres.parquet', Body=buffer.getvalue())
# Relire
response = s3.get_object(Bucket='mon-bucket', Key='data/sinistres.parquet')
df_loaded = pd.read_parquet(BytesIO(response['Body'].read()))🔗 Pont métier-technique
🤔 Réflexion
- Comment S3 pourrait-il servir de data lake pour ton projet d’assurance ? (données brutes → nettoyées → modèles)
- Pourquoi stocker les modèles entraînés sur S3 plutôt qu’en local ? (reproductibilité, partage, versioning)
- Comment automatiser l’upload des résultats de modélisation sur S3 via le CI/CD ?
✅ Checklist
- Module Métier 5 terminé (Poisson, Gamma, QQ-plot)
- Module Technique 5 terminé (S3, CLI, boto3)
- Livrable 1 produit (modélisation fréquence/sévérité)
- Livrable 2 produit (comparaison distributions)
- Livrable 3 produit (script boto3)
- Exercices réalisés