Skip to content

JohanRocheteau/Implementez_un_modele_de_scoring_Openclassrooms

Repository files navigation

Projet N°6 : Implémentez un modèle de scoring

Mise en situation :

  • Entreprise : Prêt à dépenser
  • Logo : Logo
  • Activité : Propose des crédits à la consommation pour les personnes ayant peu ou pas du tout d'historique de prêt.
  • But : Mise en place d'un outil de scoring crédit pour calculer la probabilité qu'un client rembourse son prêt immobilier.
  • Jeux de données : Base de Données
  • Missions :
    • Construire un modèle de scoring qui donnera une prédiction sur la probabilité de faillite d'un client de façon automatique.
    • Construire un dashboard interactif à destination des gestionnaires de la relation client permettant d'interpréter les prédictions faites par le modèle, et d’améliorer la connaissance client des chargés de relation client.
    • Mettre en production le modèle de scoring de prédiction à l’aide d’une API, ainsi que le dashboard interactif qui appelle l’API pour les prédictions.

Réalisations :

  • Librairies principales : Mlflow, divers modèles de ML, Pipeline

  • **Etapes réalisées : **

    • Analyse des données :

    • Ouvertures des fichiers

    • Création/modifications des variables (par calculs, dummisations, factorisation) grâce au code de Kaggle

    • Merge des fichiers

    • Création de fichiers moins lourds pour GitHub (25Mo max)

    • Récupération des nouveaux clients pour l'application

    • Etude du déséquilibre des données et choix d'un modèle de Machine Learning :

    • Utilisation de MLFlow pour le suivi et la comparaison des runs

    • Création de deux métriques pour ajouter du poids aux faux négatifs

    • Comparaison de diverses façons de gérer le déséquilibre des données : SMOTE, Class_Weight, Undersampling, Oversampling

    Unbalanced

    • Comparaison de divers modèles de Machine Learning : DummyClassifier, LogisticRegression, randomForestClassifier et LGBMClassifier (Plus KNN et XGBOOST qui étaient trop longs à runner) :
    • Etude de la variation du poids sur le CLASS_WEIGHT :

    Poids

    • Optimisation du modèle de machine learning choisi :
    • Réduction du nombre de variables aux variables ayant moins de 70% de NaNs
    • Optimisation du modèle LGBMclassifier via GridSearchCV en trois étapes
    • Analyse des résultats via Matrice de Confusion :

    MC

    • Etude de la variation du seuil de probabilité servant à améliorer la métrique perso :

    Proba

    • Exportation du modèle final en pickle pour utilisation sur mon API Flask.
    • Etude des features importances (Features_importances et SHAPglobale et locale) :

    SHAP

    • Divers tests de prédictions via MLFlow, via l'API Flask en locale et l'API Flask sur Heroku.

    • Etude du DataDrift :

    • Réalisé sur les 20 variables issues du features_importances :

    DD2 DD1

    • Création d'une API FLASK en python hébergé sur Heroku pour la prédiction du remboursement du prêt immobilier.
    • Création d'une application Streamlit qui appelle l'API FLASK :
      • Interface de l'application :

    Interface

    • Prédiction pour un client :

    Prediction

    • Graphiques sur deux variables pertinentes pour le client :

    Graphiques

Les fichiers :

  • .github/workflows :

    • development.yml : tests unitaires via Actions de Github
    • workflow.yml : déploiement de FLASK sur HEROKU
  • Applications :

    • Donneesgenerees :
      • ModelGrid.sav : modèle de ML final
      • OldDataP7s : petit morceau des données Anciens clients (25M max)
      • ShorNewDataP7 : données des 100 nouveaux clients
      • listNewClients : listes des 100 nouveaux clients
    • Images :
      • Images utilisées par l'application Streamlit
    • Tests Unitaires :
      • test_UnitestFlask.py : Tests unitaires pour Flask
      • test_UnitestStreamlit.py : Tests unitaires pour Streamlit
    • AppFlask.py : API FLASK utilisée lors du déploiement
    • Prenoms.csv : liste de prénoms pour l'application
    • patronymes.csv : liste de noms de familles pour l'application
  • Notebook :

    • Donneesgenerees:
      • BestVariables : 20 meilleures variables pour le Data Drift
    • ResultatsDataDrift :
      • data_drift_report.html
      • data_stability.html
    • Data Drift.ipynb : Notebook d'analyse du DD
    • DonneesP7.ipynb : Nettoyage des merges des données
    • MLP7-ChoixModèle-Unbalance.ipynb : Notebook de modélisation pour choix du traitement des données déséquilibrées et du modèle de ML.
    • MLP7-OptimisationModel.ipynb : Notebook d'optimisation du modèle (et tests de l'API)
  • .gitignore : fichiers à ignorer dans le suivit du projet

  • AppStreamlit.py : Application Streamlit (doit être à la racine pour être déployé sur Streamlit.io)

  • Procfile : Fichier permettant de déployer FLASK sur Heroku.

  • Readme.md : informations générales

  • requirements.txt : librairies python à installer lors des déploiements automatiques

  • runtime.txt : version de python

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published