From 357822e80b62fd3d8fc5013556a7be3ecd03579b Mon Sep 17 00:00:00 2001 From: Mohamed Kallel Date: Sat, 7 Sep 2024 12:21:04 +0100 Subject: [PATCH] Updated Doc --- Exploratory_Data_Analysis.ipynb | 49 ++++++++++++++++++++++----- Loan_Default_Prediction_Models.ipynb | 48 ++++++++++---------------- README.md | 15 ++++---- banner.jpg | Bin 0 -> 23606 bytes 4 files changed, 64 insertions(+), 48 deletions(-) create mode 100644 banner.jpg diff --git a/Exploratory_Data_Analysis.ipynb b/Exploratory_Data_Analysis.ipynb index 5bbcc4a..8215756 100644 --- a/Exploratory_Data_Analysis.ipynb +++ b/Exploratory_Data_Analysis.ipynb @@ -18,7 +18,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 1. Enviroment Preparation" + "\"banner\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Content Table\n", + "- [1. Environment Setup](#1.-Environment-Setup)\n", + "- [2. Data Exploration](#2.-Data-Exploration)\n", + "- [3. Data Analysis](#3.-Data-Analysis)\n", + "- [4. Data Processing](#4.-Data-Processing)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Notebook Overview\n", + "This Notebook is focused on exploring & analysing the Dataset.\n", + "\n", + "### Dataset\n", + "\n", + "- **Source**: Loan_Data\n", + "- **Initial Dataset Size**: 10K entries" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Environment Setup" ] }, { @@ -77948,7 +77986,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 4. Data Preprocessing" + "## 4. Data Processing" ] }, { @@ -78224,13 +78262,6 @@ "source": [ "df.to_csv(\"Data/Processed_Loan_Data.csv\", index=False)" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] } ], "metadata": { diff --git a/Loan_Default_Prediction_Models.ipynb b/Loan_Default_Prediction_Models.ipynb index 272fa2a..da6819a 100644 --- a/Loan_Default_Prediction_Models.ipynb +++ b/Loan_Default_Prediction_Models.ipynb @@ -14,49 +14,37 @@ "---" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"banner\"" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Content Table\n", - "- [0. Environment Setup](#0.-Environment-Setup)\n", - "- [1. Data Exploration & Management](#1.-Data-Exploration-&-Management)\n", - "- [2. Feature Selection](#2.Feature-Selection)\n", - " - [A. Quantitative Data](#A.-Quantitative-Data)\n", - " - [B. Qualitative Data](#B.-Qualitative-Data)\n", - "- [3. Final Data Preparation](#3.-Final-Data-Preparation)\n", - "- [4. Statistical Modeling](#4.-Statistical-Modeling)\n", - " - [A. Multicollinearity tests](#A.-Multicollinearity-tests)\n", - " - [B. Data Standardization](#B.-Data-Standardization)\n", - " - [C. Model creation & fitting](#C.-Model-creation-&-fitting)\n", - " - [D. Model Optimization](#D.-Model-Optimization)\n", - " - [E. Model testing](#E.-Model-testing)\n", - "- [5. Conclusion](#5.-Conclusion)" + "- [1. Environment Setup](#1.-Environment-Setup)\n", + "- [2. Data Preprocessing](#2.-Data-Preprocessing)\n", + "- [3. Model Experimentation](#3.-Model-Experimentation)\n", + " - [A. Logistic Regression](#A.-Logistic-Regression)\n", + " - [B. Random Forest](#B.-Random-Forest)\n", + "- [4. Conclusion](#4.Conclusion)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Project Overview\n", - "\n", - "This project aims to analyze the determinants for a woman being the primary source of revenue in a household using data from the \"Conditions de Travail 2013\" survey. The analysis will be focused on individuals living in couples in the same household.\n", - "\n", - "### Objectives\n", - "The objective of the project is to analyze, based on the 2013 Working Conditions survey, the determinants for a woman being the primary source of revenue in the household.\n", - "1. Data Exploration & Management: Explore the dataset and the available data and handle missing data.\n", - "2. Feature Selection: The dataset presents 541 Columns/Features. A selection needs to be made to be able to conduct further analysis.\n", - "3. Build and evaluate a logistic regression model to identify significant predictors of a women being the primary source of revenue in the household.\n", + "### Notebook Overview\n", + "This Notebook is focused on Model implementation, training & evaluation; All while using Mlflow to log parameters, metrics and artifacts\n", "\n", "### Dataset\n", "\n", - "- **Source**: Conditions de Travail 2013 (Volet \"Actif\")\n", - "- **Initial Dataset Size**: 33,673 individuals\n", - "- **Filtered Dataset**: Individuals living in couples at the same household\n", - "\n", - "### Dependencies\n", - "\n", - "- Python libraries: pandas, numpy, matplotlib, seaborn, statsmodels, scikit-learn, plotly, scipy" + "- **Source**: Loan_Data\n", + "- **Initial Dataset Size**: 10K entries" ] }, { @@ -70,7 +58,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 1. Environment Prepration" + "## 1. Environment Setup" ] }, { diff --git a/README.md b/README.md index 43f8302..2064e5d 100644 --- a/README.md +++ b/README.md @@ -64,23 +64,20 @@ The main objective of this project is build an image and a pipeline with all the To pull the Docker image from Docker Hub, run the following command: ```sh # Pull the docker image -$ docker pull medkallel/dunhumby-the-complete-journey-dashboard:latest - -# Or if you downloaded the .tar image -$ docker load -i dunhumby-the-complete-journey-dashboard.tar +$ docker pull medkallel/loan-default-prediction:latest ``` #### 2. Building the Docker Image If you prefer to build the Docker image locally, navigate to the project directory and run: ```sh # Build the docker image -$ docker build -t dunhumby-the-complete-journey-dashboard . +$ docker build -t loan-default-prediction . ``` #### 3. Running the Docker Container To run the Docker container, use the following command: ```sh # Run the docker container -$ docker run -p 8501:8501 dunhumby-the-complete-journey-dashboard +$ docker run -p 5000:5000 Loan-Default-Prediction ``` > [!TIP] > You can access the app on another device by following the link: ```http://:8501``` @@ -95,9 +92,9 @@ To run this project locally, follow these steps: 1. Clone the repository: ```sh # Clone the repository -$ git clone https://github.com/Medkallel/Dunhumby-The-complete-Journey-Dashboard +$ git clone https://github.com/Medkallel/Loan-Default-Prediction.git # Navigate into the directory -$ cd Dunhumby-The-complete-Journey-Dashboard +$ cd Loan-Default-Prediction ``` 2. Install the required dependencies: ```sh @@ -109,7 +106,7 @@ $ pip install -r requirements.txt 1. To use the App, Just run the app.py ```sh -python app.py +$ python app.py ``` --- ## Project structure diff --git a/banner.jpg b/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..643eac7d2ae4abbc68961c44aeb6fa6c5be4ce38 GIT binary patch literal 23606 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