Fiche de travail — Semaine 5

Exercices : modélisation fréquence/sévérité et AWS S3

Auteur·rice

François Boussengui

Date de publication

25 mars 2026


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

  1. Crée un bucket formation-assurance-[ton-nom]
  2. Uploade un fichier CSV de test
  3. Liste le contenu du bucket
  4. 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

  1. Comment S3 pourrait-il servir de data lake pour ton projet d’assurance ? (données brutes → nettoyées → modèles)
  2. Pourquoi stocker les modèles entraînés sur S3 plutôt qu’en local ? (reproductibilité, partage, versioning)
  3. 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

← Retour à la Semaine 5 Module Métier 5 Module Technique 5