|
| 1 | +--- |
| 2 | +title: "Projet : Prédiction du Risque de Crédit (Machine Learning)" |
| 3 | +description: Projet : Prédiction du Risque de Crédit (Machine Learning) |
| 4 | +author: "Natacha NJONGWA YEPNGA" |
| 5 | +format: |
| 6 | + html: |
| 7 | + toc: true |
| 8 | + toc-location: left |
| 9 | + toc-depth: 3 |
| 10 | +from: markdown+emoji |
| 11 | +number-sections: true |
| 12 | +number-depth: 3 |
| 13 | +--- |
| 14 | + |
| 15 | +# Projet : Prédiction du Risque de Crédit (Machine Learning avec Python) |
| 16 | + |
| 17 | +**Date limite de rendu** : 28 février 2025 |
| 18 | +**Enseignante référente** : Natacha Njongwa Yepnga (natachayepnga@gmail.com) |
| 19 | + |
| 20 | +--- |
| 21 | + |
| 22 | +## Introduction |
| 23 | + |
| 24 | +Dans ce projet, nous allons construire un modèle de machine learning pour prédire le risque de défaut de paiement d’un emprunteur. Le TP est divisé en deux parties : |
| 25 | + |
| 26 | +1. **Exercices théoriques** |
| 27 | + Cette première partie vous permettra de renforcer vos compétences en manipulation de données et en programmation Python (Pandas, boucles, fonctions, visualisations). Vous pratiquerez l'importation, le nettoyage et l'exploration de données ainsi que la création de graphiques avec Matplotlib et Seaborn. |
| 28 | + |
| 29 | +2. **Projet pratique** |
| 30 | + Vous développerez un modèle prédictif de risque de crédit de bout en bout, depuis l’exploration des données jusqu’à l’évaluation et l’interprétation des modèles. Vous utiliserez la base de données **Credit Risk Dataset**, qui contient des informations sur des emprunteurs ainsi que leur statut de prêt (0 = remboursé, 1 = défaut). |
| 31 | + |
| 32 | +Ce TP vous permettra de mettre en pratique vos compétences en Python, en manipulation de données et en machine learning, et sera évalué sur la structure et la qualité de votre code, la clarté de vos commentaires et l’interprétation de vos résultats. |
| 33 | + |
| 34 | +--- |
| 35 | + |
| 36 | +## Partie 1 : Exercices Théoriques |
| 37 | +[La base de données est disponible ici](https://www.kaggle.com/datasets/laotse/credit-risk-dataset) |
| 38 | + |
| 39 | + |
| 40 | +### Exercice 1 : Manipulation de données avec Pandas |
| 41 | + |
| 42 | +1. **Importer le dataset** depuis un fichier CSV (par exemple, `credit_risk_dataset.csv`). |
| 43 | +2. **Afficher un aperçu des données** : utilisez `head()`, `info()`, et `describe()` pour examiner la structure et les statistiques des variables. |
| 44 | +3. **Vérifier et traiter les valeurs manquantes** : utilisez `isna().sum()` et proposez une stratégie (suppression ou imputation) pour chaque colonne présentant des valeurs manquantes. |
| 45 | +4. **Trier les données** par revenu (`person_income`) en ordre décroissant et affichez les 5 premières lignes. |
| 46 | +5. **Filtrer les emprunteurs** : sélectionnez ceux dont l’intention de prêt (`loan_intent`) est `"EDUCATION"` et dont le statut de prêt (`loan_status`) est 1. |
| 47 | +6. **Créer une nouvelle colonne** : calculez le ratio du montant du prêt sur le revenu (`loan_amnt / person_income`) et ajoutez-la au DataFrame. |
| 48 | + |
| 49 | +--- |
| 50 | + |
| 51 | +### Exercice 2 : Création de fonctions analytiques |
| 52 | + |
| 53 | +1. **Fonction d'analyse quantitative** |
| 54 | + |
| 55 | + Créez une fonction `analyse_quantitative(df)` qui prend en entrée un DataFrame et : |
| 56 | + - Affiche les statistiques descriptives (moyenne, médiane, écart-type, quartiles, etc.) pour les variables numériques. |
| 57 | + - Génère des histogrammes pour chaque variable numérique. |
| 58 | + - Affiche des boxplots pour détecter les valeurs aberrantes. |
| 59 | + |
| 60 | +2. **Fonction d'analyse qualitative** |
| 61 | + |
| 62 | + Créez une fonction `analyse_qualitative(df)` qui prend en entrée un DataFrame et : |
| 63 | + - Calcule les effectifs et proportions pour chaque modalité des variables qualitatives. |
| 64 | + - Trace des diagrammes en barres pour visualiser la répartition des catégories. |
| 65 | + |
| 66 | +3. **Fonction d'analyse bivariée** |
| 67 | + |
| 68 | + Créez une fonction `analyse_bivariee(df, var1, var2)` qui, en fonction du type des variables, réalise : |
| 69 | + - Pour deux variables quantitatives : un scatter plot et le calcul du coefficient de corrélation. |
| 70 | + - Pour deux variables qualitatives : un tableau de contingence suivi d'une heatmap. |
| 71 | + - Pour une variable quantitative et une variable qualitative : un boxplot de la variable quantitative en fonction de la catégorie. |
| 72 | +4. Appliquez les fonctions à votre base de données et commentez. |
| 73 | +--- |
| 74 | + |
| 75 | + |
| 76 | +## Partie 2 : Projet Pratique - Modèle de Prédiction du Risque de Crédit |
| 77 | + |
| 78 | +Dans cette partie, vous allez développer un modèle de machine learning complet pour prédire si un emprunteur fera défaut sur son crédit. |
| 79 | + |
| 80 | +### Étape 1 : Chargement et exploration des données |
| 81 | + |
| 82 | +- **Charger les données** depuis le fichier CSV dans un DataFrame. |
| 83 | +- **Afficher les premières lignes** et les informations générales du dataset. |
| 84 | +- **Calculer le pourcentage de défauts** en utilisant la colonne `loan_status`. |
| 85 | +- **Examiner la distribution** des variables catégorielles et numériques (à l'aide de `value_counts()`, `describe()`, et de quelques visualisations rapides). |
| 86 | + |
| 87 | +### Étape 2 : Nettoyage et prétraitement des données |
| 88 | + |
| 89 | +- **Traitement des valeurs manquantes** : identifiez les colonnes avec des valeurs manquantes et appliquez une stratégie d'imputation ou de suppression. |
| 90 | +- **Encodage des variables catégorielles** : transformez les variables qualitatives en variables numériques via One-Hot Encoding (ou un encodage ordinal si approprié). |
| 91 | +- **Standardisation** des variables numériques : appliquez la standardisation (ex. Z-score) sur les features numériques pour assurer une échelle comparable. |
| 92 | + |
| 93 | +### Étape 3 : Sélection des variables pertinentes |
| 94 | + |
| 95 | +- **Analyse de corrélation** : examinez la matrice de corrélation pour identifier les features fortement corrélées. |
| 96 | +- **Test d'importance** : entraînez un modèle simple (par exemple, une régression logistique ou une Random Forest) sur l’ensemble d’entraînement pour évaluer l’importance des variables. |
| 97 | +- **Sélection manuelle** : justifiez le choix des variables retenues pour le modèle final (citez, par exemple, le fait que `loan_intent`, `loan_grade`, et `person_income` semblent être les plus influents). |
| 98 | + |
| 99 | +### Étape 4 : Entraînement de modèles |
| 100 | + |
| 101 | +- **Séparer les données** en ensemble d’entraînement et ensemble de test (ex. 70% / 30%). |
| 102 | +- **Entraîner plusieurs modèles** : |
| 103 | + - **Modèle 1 : Régression Logistique** |
| 104 | + - **Modèle 2 : Random Forest** |
| 105 | +- **Évaluer la performance** de chaque modèle sur l’ensemble test en calculant des métriques telles que l’accuracy, le F1-score, et en affichant la matrice de confusion. |
| 106 | +- **Tracer la courbe ROC** et calculer l’AUC pour comparer les modèles. |
| 107 | + |
| 108 | +### Étape 5 : Optimisation des hyperparamètres |
| 109 | + |
| 110 | +- Mettez en place une **Grid Search** ou **Randomized Search** avec validation croisée pour optimiser les hyperparamètres de vos modèles (par exemple, `C` pour la régression logistique, et `n_estimators`, `max_depth` pour la Random Forest). |
| 111 | +- Présentez les **meilleurs paramètres** trouvés et comparez la performance du modèle optimisé sur le jeu de test par rapport aux paramètres par défaut. |
| 112 | + |
| 113 | +### Étape 6 : Interprétation et recommandations |
| 114 | + |
| 115 | +- **Analysez l'importance des variables** : identifiez quelles features influencent le plus le risque de défaut. |
| 116 | +- **Discutez des limites** du modèle : par exemple, le déséquilibre de classes, le sur-apprentissage, etc. |
| 117 | +- **Proposez des recommandations** pour une utilisation en production (ex. ajuster le seuil de décision en fonction du coût des faux négatifs, implémenter un système de monitoring des performances du modèle). |
| 118 | +- **Résumé des insights** : concluez sur ce que votre modèle révèle du risque de crédit dans ce dataset et comment il pourrait aider une institution financière dans ses décisions de prêt. |
| 119 | + |
| 120 | +--- |
| 121 | + |
| 122 | +## Barème d’évaluation |
| 123 | + |
| 124 | +- **Qualité du code** (propreté, clarté, noms des variables, commentaires) : **30%** |
| 125 | +- **Structure du notebook** (organisation claire des sections, séparation logique des étapes) : **20%** |
| 126 | +- **Justification et interprétation des résultats** (analyse critique et explications détaillées) : **30%** |
| 127 | +- **Pertinence des choix de modélisation et visualisation** (sélection des features, choix des modèles, visualisations soignées) : **20%** |
| 128 | + |
| 129 | +--- |
| 130 | + |
| 131 | +## Conclusion |
| 132 | + |
| 133 | +Ce projet vous permettra de mettre en pratique la manipulation de données, la visualisation, et l’apprentissage automatique sur un cas concret de risque de crédit. Vous devez non seulement implémenter un modèle performant, mais aussi structurer et commenter votre travail de manière claire et détaillée. Pensez à bien expliquer chaque choix (prétraitement, sélection de variables, hyperparamètres) et à interpréter vos résultats. |
| 134 | + |
| 135 | +Bonne chance et bonne exploration ! |
| 136 | + |
| 137 | +--- |
| 138 | + |
| 139 | +**Rappel** : Le rendu du TP doit être soumis au plus tard le **28 février 2025**. Veillez à envoyer votre notebook complet à l’adresse : natachayepnga@gmail.com. |
0 commit comments