{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Fraud Detection Notebook using Machine Learning" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting pandas_profiling\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/2c/2f/aae19e2173c10a9bb7fee5f5cad35dbe53a393960fc91abc477dcc4661e8/pandas-profiling-2.3.0.tar.gz (127kB)\n", "\u001b[K |████████████████████████████████| 133kB 15.5MB/s eta 0:00:01\n", "\u001b[?25hRequirement already satisfied: pandas>=0.19 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas_profiling) (0.24.1)\n", "Requirement already satisfied: matplotlib>=1.4 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas_profiling) (3.0.2)\n", "Requirement already satisfied: jinja2>=2.8 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas_profiling) (2.10)\n", "Collecting missingno>=0.4.2 (from pandas_profiling)\n", " Downloading https://files.pythonhosted.org/packages/2b/de/6e4dd6d720c49939544352155dc06a08c9f7e4271aa631a559dfbeaaf9d4/missingno-0.4.2-py3-none-any.whl\n", "Collecting htmlmin>=0.1.12 (from pandas_profiling)\n", " Downloading https://files.pythonhosted.org/packages/b3/e7/fcd59e12169de19f0131ff2812077f964c6b960e7c09804d30a7bf2ab461/htmlmin-0.1.12.tar.gz\n", "Collecting phik>=0.9.8 (from pandas_profiling)\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/45/ad/24a16fa4ba612fb96a3c4bb115a5b9741483f53b66d3d3afd987f20fa227/phik-0.9.8-py3-none-any.whl (606kB)\n", "\u001b[K |████████████████████████████████| 614kB 22.4MB/s eta 0:00:01\n", "\u001b[?25hCollecting confuse>=1.0.0 (from pandas_profiling)\n", " Downloading https://files.pythonhosted.org/packages/4c/6f/90e860cba937c174d8b3775729ccc6377eb91f52ad4eeb008e7252a3646d/confuse-1.0.0.tar.gz\n", "Requirement already satisfied: astropy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas_profiling) (3.1.1)\n", "Requirement already satisfied: pytz>=2011k in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas>=0.19->pandas_profiling) (2018.9)\n", "Requirement already satisfied: python-dateutil>=2.5.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas>=0.19->pandas_profiling) (2.7.5)\n", "Requirement already satisfied: numpy>=1.12.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas>=0.19->pandas_profiling) (1.15.4)\n", "Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib>=1.4->pandas_profiling) (0.10.0)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib>=1.4->pandas_profiling) (1.0.1)\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib>=1.4->pandas_profiling) (2.3.1)\n", "Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from jinja2>=2.8->pandas_profiling) (1.1.0)\n", "Requirement already satisfied: seaborn in /opt/conda/envs/Python36/lib/python3.6/site-packages (from missingno>=0.4.2->pandas_profiling) (0.9.0)\n", "Requirement already satisfied: scipy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from missingno>=0.4.2->pandas_profiling) (1.2.0)\n", "Requirement already satisfied: pytest>=4.0.2 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from phik>=0.9.8->pandas_profiling) (4.2.1)\n", "Requirement already satisfied: numba>=0.38.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from phik>=0.9.8->pandas_profiling) (0.42.0)\n", "Requirement already satisfied: nbconvert>=5.3.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from phik>=0.9.8->pandas_profiling) (5.4.0)\n", "Requirement already satisfied: jupyter-client>=5.2.3 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from phik>=0.9.8->pandas_profiling) (5.2.4)\n", "Collecting pytest-pylint>=0.13.0 (from phik>=0.9.8->pandas_profiling)\n", " Downloading https://files.pythonhosted.org/packages/64/dc/6f35f114844fb12e38d60c4f3d2441a55baff7043ad4e013777dff55746c/pytest_pylint-0.14.1-py3-none-any.whl\n", "Requirement already satisfied: pyyaml in /opt/conda/envs/Python36/lib/python3.6/site-packages (from confuse>=1.0.0->pandas_profiling) (3.13)\n", "Requirement already satisfied: six>=1.5 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from python-dateutil>=2.5.0->pandas>=0.19->pandas_profiling) (1.12.0)\n", "Requirement already satisfied: setuptools in /opt/conda/envs/Python36/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib>=1.4->pandas_profiling) (40.8.0)\n", "Requirement already satisfied: py>=1.5.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pytest>=4.0.2->phik>=0.9.8->pandas_profiling) (1.7.0)\n", "Requirement already satisfied: attrs>=17.4.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pytest>=4.0.2->phik>=0.9.8->pandas_profiling) (18.2.0)\n", "Requirement already satisfied: atomicwrites>=1.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pytest>=4.0.2->phik>=0.9.8->pandas_profiling) (1.3.0)\n", "Requirement already satisfied: pluggy>=0.7 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pytest>=4.0.2->phik>=0.9.8->pandas_profiling) (0.8.1)\n", "Requirement already satisfied: more-itertools>=4.0.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pytest>=4.0.2->phik>=0.9.8->pandas_profiling) (5.0.0)\n", "Requirement already satisfied: llvmlite>=0.27.0dev0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from numba>=0.38.1->phik>=0.9.8->pandas_profiling) (0.27.0)\n", "Requirement already satisfied: mistune>=0.8.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (0.8.4)\n", "Requirement already satisfied: pygments in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (2.3.1)\n", "Requirement already satisfied: traitlets>=4.2 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (4.3.2)\n", "Requirement already satisfied: jupyter_core in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (4.4.0)\n", "Requirement already satisfied: nbformat>=4.4 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (4.4.0)\n", "Requirement already satisfied: entrypoints>=0.2.2 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (0.3)\n", "Requirement already satisfied: bleach in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (3.1.0)\n", "Requirement already satisfied: pandocfilters>=1.4.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (1.4.2)\n", "Requirement already satisfied: testpath in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (0.4.2)\n", "Requirement already satisfied: defusedxml in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (0.5.0)\n", "Requirement already satisfied: pyzmq>=13 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from jupyter-client>=5.2.3->phik>=0.9.8->pandas_profiling) (17.1.2)\n", "Requirement already satisfied: tornado>=4.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from jupyter-client>=5.2.3->phik>=0.9.8->pandas_profiling) (5.1.1)\n", "Requirement already satisfied: pylint>=1.4.5 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (2.2.2)\n", "Requirement already satisfied: ipython-genutils in /opt/conda/envs/Python36/lib/python3.6/site-packages (from traitlets>=4.2->nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (0.2.0)\n", "Requirement already satisfied: decorator in /opt/conda/envs/Python36/lib/python3.6/site-packages (from traitlets>=4.2->nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (4.3.2)\n", "Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from nbformat>=4.4->nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (2.6.0)\n", "Requirement already satisfied: webencodings in /opt/conda/envs/Python36/lib/python3.6/site-packages (from bleach->nbconvert>=5.3.1->phik>=0.9.8->pandas_profiling) (0.5.1)\n", "Requirement already satisfied: astroid>=2.0.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pylint>=1.4.5->pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (2.1.0)\n", "Requirement already satisfied: isort>=4.2.5 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pylint>=1.4.5->pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (4.3.4)\n", "Requirement already satisfied: mccabe in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pylint>=1.4.5->pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (0.6.1)\n", "Requirement already satisfied: lazy-object-proxy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from astroid>=2.0.0->pylint>=1.4.5->pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (1.3.1)\n", "Requirement already satisfied: typed-ast; python_version < \"3.7\" and implementation_name == \"cpython\" in /opt/conda/envs/Python36/lib/python3.6/site-packages (from astroid>=2.0.0->pylint>=1.4.5->pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (1.3.1)\n", "Requirement already satisfied: wrapt in /opt/conda/envs/Python36/lib/python3.6/site-packages (from astroid>=2.0.0->pylint>=1.4.5->pytest-pylint>=0.13.0->phik>=0.9.8->pandas_profiling) (1.11.1)\n", "Building wheels for collected packages: pandas-profiling, htmlmin, confuse\n", " Building wheel for pandas-profiling (setup.py) ... \u001b[?25ldone\n", "\u001b[?25h Stored in directory: /home/dsxuser/.cache/pip/wheels/ce/c7/f1/dbfef4848ebb048cb1d4a22d1ed0c62d8ff2523747235e19fe\n", " Building wheel for htmlmin (setup.py) ... \u001b[?25ldone\n", "\u001b[?25h Stored in directory: /home/dsxuser/.cache/pip/wheels/43/07/ac/7c5a9d708d65247ac1f94066cf1db075540b85716c30255459\n", " Building wheel for confuse (setup.py) ... \u001b[?25ldone\n", "\u001b[?25h Stored in directory: /home/dsxuser/.cache/pip/wheels/b0/b2/96/2074eee7dbf7b7df69d004c9b6ac4e32dad04fb7666cf943bd\n", "Successfully built pandas-profiling htmlmin confuse\n", "Installing collected packages: missingno, htmlmin, pytest-pylint, phik, confuse, pandas-profiling\n", "Successfully installed confuse-1.0.0 htmlmin-0.1.12 missingno-0.4.2 pandas-profiling-2.3.0 phik-0.9.8 pytest-pylint-0.14.1\n" ] } ], "source": [ "!pip install pandas_profiling" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting lightgbm\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/77/0f/5157e6b153b3d4a70dc5fbe2ab6f209604197590f387f03177b7a249ac60/lightgbm-2.2.3-py2.py3-none-manylinux1_x86_64.whl (1.2MB)\n", "\u001b[K |████████████████████████████████| 1.2MB 14.5MB/s eta 0:00:01\n", "\u001b[?25hRequirement already satisfied: scipy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from lightgbm) (1.2.0)\n", "Requirement already satisfied: scikit-learn in /opt/conda/envs/Python36/lib/python3.6/site-packages (from lightgbm) (0.20.3)\n", "Requirement already satisfied: numpy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from lightgbm) (1.15.4)\n", "Installing collected packages: lightgbm\n", "Successfully installed lightgbm-2.2.3\n" ] } ], "source": [ "!pip install lightgbm" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np \n", "import pandas as pd \n", "import matplotlib.pyplot as plt\n", "import ipaddress\n", "import pandas_profiling as pp\n", "%matplotlib inline\n", "from sklearn import preprocessing\n", "plt.rc(\"font\", size=14)\n", "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "import time\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.model_selection import train_test_split\n", "import lightgbm as lgb\n", "from lightgbm import LGBMClassifier\n", "import seaborn as sns\n", "sns.set(style=\"white\")\n", "sns.set(style=\"whitegrid\", color_codes=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Gender Married Dependents Education Self_Employed ApplicantIncome \\\n", "0 1 0 0 1 0 5849 \n", "1 1 1 1 1 1 4583 \n", "2 1 1 0 1 1 3000 \n", "3 1 1 0 0 1 2583 \n", "4 1 0 0 1 0 6000 \n", "\n", " CoapplicantIncome LoanAmount Loan_Term Credit_History_Available \\\n", "0 0 146 360 1 \n", "1 1508 128 360 1 \n", "2 0 66 360 1 \n", "3 2358 120 360 1 \n", "4 0 141 360 1 \n", "\n", " Housing Locality Fraud_Risk \n", "0 1 1 0 \n", "1 1 3 1 \n", "2 1 1 1 \n", "3 1 1 1 \n", "4 1 1 0 \n", "(821, 13)\n" ] } ], "source": [ "\n", "import types\n", "import pandas as pd\n", "from botocore.client import Config\n", "import ibm_boto3\n", "\n", "def __iter__(self): return 0\n", "\n", "# @hidden_cell\n", "# The following code accesses a file in your IBM Cloud Object Storage. It includes your credentials.\n", "# You might want to remove those credentials before you share the notebook.\n", "client_554c07c959184a5fb85f7723b7045646 = ibm_boto3.client(service_name='s3',\n", " ibm_api_key_id='LcFOxAeI1SgkmxN5c5YiOXLFytY-nF4IX4qVUCVKHjiG',\n", " ibm_auth_endpoint=\"https://iam.ng.bluemix.net/oidc/token\",\n", " config=Config(signature_version='oauth'),\n", " endpoint_url='https://s3-api.us-geo.objectstorage.service.networklayer.com')\n", "\n", "body = client_554c07c959184a5fb85f7723b7045646.get_object(Bucket='fraudpredictionseries-donotdelete-pr-goroseftzd9ob6',Key='fraud_data.csv')['Body']\n", "# add missing __iter__ method, so pandas accepts body as file-like object\n", "if not hasattr(body, \"__iter__\"): body.__iter__ = types.MethodType( __iter__, body )\n", "\n", "df = pd.read_csv(body)\n", "print(df.head())\n", "print(df.shape)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pp.ProfileReport(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can observe that there are no missing values and no duplicates. We can do detailed analysis of each attribute to understand the data better. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "percentage of non Fraud Risk is 58.1\n", "percentage of Fraud Risk 41.9\n" ] } ], "source": [ "count_fraud = len(df[df['Fraud_Risk']==0])\n", "count_non_fraud = len(df[df['Fraud_Risk']==1])\n", "pct_of_non_fraud = count_non_fraud/(count_non_fraud +count_fraud)\n", "print(\"percentage of non Fraud Risk is\", round(pct_of_non_fraud*100,2))\n", "pct_of_fraud = count_fraud/(count_non_fraud +count_fraud)\n", "print(\"percentage of Fraud Risk\", round(pct_of_fraud*100,2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the target attribute" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.countplot(x='Fraud_Risk',data=df, palette='hls')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GenderMarriedDependentsEducationSelf_EmployedApplicantIncomeCoapplicantIncomeLoanAmountLoan_TermCredit_History_AvailableHousingLocality
Fraud_Risk
00.5726740.0000000.3139530.8052330.1744194785.1482561111.700581125.720930346.4534880.9738370.7005812.011628
10.8511530.8343820.9056600.7777780.8658285530.6834381774.714885152.104822331.8490570.8197060.6205451.958071
\n", "
" ], "text/plain": [ " Gender Married Dependents Education Self_Employed \\\n", "Fraud_Risk \n", "0 0.572674 0.000000 0.313953 0.805233 0.174419 \n", "1 0.851153 0.834382 0.905660 0.777778 0.865828 \n", "\n", " ApplicantIncome CoapplicantIncome LoanAmount Loan_Term \\\n", "Fraud_Risk \n", "0 4785.148256 1111.700581 125.720930 346.453488 \n", "1 5530.683438 1774.714885 152.104822 331.849057 \n", "\n", " Credit_History_Available Housing Locality \n", "Fraud_Risk \n", "0 0.973837 0.700581 2.011628 \n", "1 0.819706 0.620545 1.958071 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('Fraud_Risk').mean()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GenderMarriedDependentsEducationSelf_EmployedApplicantIncomeCoapplicantIncomeLoanAmountLoan_TermCredit_History_AvailableHousingLocalityFraud_Risk
Gender1.0000000.3569610.121822-0.0807290.2656460.0083320.1164890.087919-0.074207-0.019188-0.013977-0.0080630.311131
Married0.3569611.0000000.372524-0.0306810.8320140.0710550.1028280.174027-0.106939-0.083401-0.093887-0.0229530.823742
Dependents0.1218220.3725241.000000-0.0229880.3495700.1299370.0243230.181592-0.048651-0.083369-0.022418-0.0143260.311572
Education-0.080729-0.030681-0.0229881.000000-0.0261700.1286240.0528060.1559560.1082870.0558510.000979-0.102404-0.033216
Self_Employed0.2656460.8320140.349570-0.0261701.0000000.1401730.0767500.231262-0.103865-0.048297-0.100422-0.0473700.690325
ApplicantIncome0.0083320.0710550.1299370.1286240.1401731.000000-0.1210320.564648-0.003925-0.021712-0.051459-0.0207180.065581
CoapplicantIncome0.1164890.1028280.0243230.0528060.076750-0.1210321.0000000.165143-0.053702-0.034498-0.0186970.0016340.116479
LoanAmount0.0879190.1740270.1815920.1559560.2312620.5646480.1651431.0000000.074216-0.024232-0.0864550.0197260.162672
Loan_Term-0.074207-0.106939-0.0486510.108287-0.103865-0.003925-0.0537020.0742161.0000000.0753390.0262650.086213-0.095366
Credit_History_Available-0.019188-0.083401-0.0833690.055851-0.048297-0.021712-0.034498-0.0242320.0753391.0000000.017112-0.004215-0.237737
Housing-0.013977-0.093887-0.0224180.000979-0.100422-0.051459-0.018697-0.0864550.0262650.0171121.0000000.068134-0.083019
Locality-0.008063-0.022953-0.014326-0.102404-0.047370-0.0207180.0016340.0197260.086213-0.0042150.0681341.000000-0.034356
Fraud_Risk0.3111310.8237420.311572-0.0332160.6903250.0655810.1164790.162672-0.095366-0.237737-0.083019-0.0343561.000000
\n", "
" ], "text/plain": [ " Gender Married Dependents Education \\\n", "Gender 1.000000 0.356961 0.121822 -0.080729 \n", "Married 0.356961 1.000000 0.372524 -0.030681 \n", "Dependents 0.121822 0.372524 1.000000 -0.022988 \n", "Education -0.080729 -0.030681 -0.022988 1.000000 \n", "Self_Employed 0.265646 0.832014 0.349570 -0.026170 \n", "ApplicantIncome 0.008332 0.071055 0.129937 0.128624 \n", "CoapplicantIncome 0.116489 0.102828 0.024323 0.052806 \n", "LoanAmount 0.087919 0.174027 0.181592 0.155956 \n", "Loan_Term -0.074207 -0.106939 -0.048651 0.108287 \n", "Credit_History_Available -0.019188 -0.083401 -0.083369 0.055851 \n", "Housing -0.013977 -0.093887 -0.022418 0.000979 \n", "Locality -0.008063 -0.022953 -0.014326 -0.102404 \n", "Fraud_Risk 0.311131 0.823742 0.311572 -0.033216 \n", "\n", " Self_Employed ApplicantIncome CoapplicantIncome \\\n", "Gender 0.265646 0.008332 0.116489 \n", "Married 0.832014 0.071055 0.102828 \n", "Dependents 0.349570 0.129937 0.024323 \n", "Education -0.026170 0.128624 0.052806 \n", "Self_Employed 1.000000 0.140173 0.076750 \n", "ApplicantIncome 0.140173 1.000000 -0.121032 \n", "CoapplicantIncome 0.076750 -0.121032 1.000000 \n", "LoanAmount 0.231262 0.564648 0.165143 \n", "Loan_Term -0.103865 -0.003925 -0.053702 \n", "Credit_History_Available -0.048297 -0.021712 -0.034498 \n", "Housing -0.100422 -0.051459 -0.018697 \n", "Locality -0.047370 -0.020718 0.001634 \n", "Fraud_Risk 0.690325 0.065581 0.116479 \n", "\n", " LoanAmount Loan_Term Credit_History_Available \\\n", "Gender 0.087919 -0.074207 -0.019188 \n", "Married 0.174027 -0.106939 -0.083401 \n", "Dependents 0.181592 -0.048651 -0.083369 \n", "Education 0.155956 0.108287 0.055851 \n", "Self_Employed 0.231262 -0.103865 -0.048297 \n", "ApplicantIncome 0.564648 -0.003925 -0.021712 \n", "CoapplicantIncome 0.165143 -0.053702 -0.034498 \n", "LoanAmount 1.000000 0.074216 -0.024232 \n", "Loan_Term 0.074216 1.000000 0.075339 \n", "Credit_History_Available -0.024232 0.075339 1.000000 \n", "Housing -0.086455 0.026265 0.017112 \n", "Locality 0.019726 0.086213 -0.004215 \n", "Fraud_Risk 0.162672 -0.095366 -0.237737 \n", "\n", " Housing Locality Fraud_Risk \n", "Gender -0.013977 -0.008063 0.311131 \n", "Married -0.093887 -0.022953 0.823742 \n", "Dependents -0.022418 -0.014326 0.311572 \n", "Education 0.000979 -0.102404 -0.033216 \n", "Self_Employed -0.100422 -0.047370 0.690325 \n", "ApplicantIncome -0.051459 -0.020718 0.065581 \n", "CoapplicantIncome -0.018697 0.001634 0.116479 \n", "LoanAmount -0.086455 0.019726 0.162672 \n", "Loan_Term 0.026265 0.086213 -0.095366 \n", "Credit_History_Available 0.017112 -0.004215 -0.237737 \n", "Housing 1.000000 0.068134 -0.083019 \n", "Locality 0.068134 1.000000 -0.034356 \n", "Fraud_Risk -0.083019 -0.034356 1.000000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.corr(method ='pearson') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can observe strong positive co-relation between the attributes Married & Self Employed to the target variable which is Fraud Risk." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Select input and target variables" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "X = df[df.columns[0:12]]\n", "y = df[df.columns[12:]]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Gender int64\n", "Married int64\n", "Dependents int64\n", "Education int64\n", "Self_Employed int64\n", "ApplicantIncome int64\n", "CoapplicantIncome int64\n", "LoanAmount int64\n", "Loan_Term int64\n", "Credit_History_Available int64\n", "Housing int64\n", "Locality int64\n", "Fraud_Risk int64\n", "dtype: object" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can observe that all the attributes are in Int data type." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check for null values" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GenderMarriedDependentsEducationSelf_EmployedApplicantIncomeCoapplicantIncomeLoanAmountLoan_TermCredit_History_AvailableHousingLocalityFraud_Risk
0FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
4FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
5FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
6FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
7FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
8FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
9FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
10FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
11FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
12FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
13FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
14FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
15FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
16FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
17FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
18FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
19FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
20FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
21FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
22FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
23FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
24FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
25FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
26FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
27FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
28FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
29FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
..........................................
791FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
792FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
793FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
794FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
795FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
796FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
797FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
798FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
799FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
800FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
801FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
802FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
803FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
804FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
805FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
806FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
807FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
808FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
809FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
810FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
811FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
812FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
813FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
814FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
815FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
816FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
817FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
818FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
819FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
820FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
\n", "

821 rows × 13 columns

\n", "
" ], "text/plain": [ " Gender Married Dependents Education Self_Employed ApplicantIncome \\\n", "0 False False False False False False \n", "1 False False False False False False \n", "2 False False False False False False \n", "3 False False False False False False \n", "4 False False False False False False \n", "5 False False False False False False \n", "6 False False False False False False \n", "7 False False False False False False \n", "8 False False False False False False \n", "9 False False False False False False \n", "10 False False False False False False \n", "11 False False False False False False \n", "12 False False False False False False \n", "13 False False False False False False \n", "14 False False False False False False \n", "15 False False False False False False \n", "16 False False False False False False \n", "17 False False False False False False \n", "18 False False False False False False \n", "19 False False False False False False \n", "20 False False False False False False \n", "21 False False False False False False \n", "22 False False False False False False \n", "23 False False False False False False \n", "24 False False False False False False \n", "25 False False False False False False \n", "26 False False False False False False \n", "27 False False False False False False \n", "28 False False False False False False \n", "29 False False False False False False \n", ".. ... ... ... ... ... ... \n", "791 False False False False False False \n", "792 False False False False False False \n", "793 False False False False False False \n", "794 False False False False False False \n", "795 False False False False False False \n", "796 False False False False False False \n", "797 False False False False False False \n", "798 False False False False False False \n", "799 False False False False False False \n", "800 False False False False False False \n", "801 False False False False False False \n", "802 False False False False False False \n", "803 False False False False False False \n", "804 False False False False False False \n", "805 False False False False False False \n", "806 False False False False False False \n", "807 False False False False False False \n", "808 False False False False False False \n", "809 False False False False False False \n", "810 False False False False False False \n", "811 False False False False False False \n", "812 False False False False False False \n", "813 False False False False False False \n", "814 False False False False False False \n", "815 False False False False False False \n", "816 False False False False False False \n", "817 False False False False False False \n", "818 False False False False False False \n", "819 False False False False False False \n", "820 False False False False False False \n", "\n", " CoapplicantIncome LoanAmount Loan_Term Credit_History_Available \\\n", "0 False False False False \n", "1 False False False False \n", "2 False False False False \n", "3 False False False False \n", "4 False False False False \n", "5 False False False False \n", "6 False False False False \n", "7 False False False False \n", "8 False False False False \n", "9 False False False False \n", "10 False False False False \n", "11 False False False False \n", "12 False False False False \n", "13 False False False False \n", "14 False False False False \n", "15 False False False False \n", "16 False False False False \n", "17 False False False False \n", "18 False False False False \n", "19 False False False False \n", "20 False False False False \n", "21 False False False False \n", "22 False False False False \n", "23 False False False False \n", "24 False False False False \n", "25 False False False False \n", "26 False False False False \n", "27 False False False False \n", "28 False False False False \n", "29 False False False False \n", ".. ... ... ... ... \n", "791 False False False False \n", "792 False False False False \n", "793 False False False False \n", "794 False False False False \n", "795 False False False False \n", "796 False False False False \n", "797 False False False False \n", "798 False False False False \n", "799 False False False False \n", "800 False False False False \n", "801 False False False False \n", "802 False False False False \n", "803 False False False False \n", "804 False False False False \n", "805 False False False False \n", "806 False False False False \n", "807 False False False False \n", "808 False False False False \n", "809 False False False False \n", "810 False False False False \n", "811 False False False False \n", "812 False False False False \n", "813 False False False False \n", "814 False False False False \n", "815 False False False False \n", "816 False False False False \n", "817 False False False False \n", "818 False False False False \n", "819 False False False False \n", "820 False False False False \n", "\n", " Housing Locality Fraud_Risk \n", "0 False False False \n", "1 False False False \n", "2 False False False \n", "3 False False False \n", "4 False False False \n", "5 False False False \n", "6 False False False \n", "7 False False False \n", "8 False False False \n", "9 False False False \n", "10 False False False \n", "11 False False False \n", "12 False False False \n", "13 False False False \n", "14 False False False \n", "15 False False False \n", "16 False False False \n", "17 False False False \n", "18 False False False \n", "19 False False False \n", "20 False False False \n", "21 False False False \n", "22 False False False \n", "23 False False False \n", "24 False False False \n", "25 False False False \n", "26 False False False \n", "27 False False False \n", "28 False False False \n", "29 False False False \n", ".. ... ... ... \n", "791 False False False \n", "792 False False False \n", "793 False False False \n", "794 False False False \n", "795 False False False \n", "796 False False False \n", "797 False False False \n", "798 False False False \n", "799 False False False \n", "800 False False False \n", "801 False False False \n", "802 False False False \n", "803 False False False \n", "804 False False False \n", "805 False False False \n", "806 False False False \n", "807 False False False \n", "808 False False False \n", "809 False False False \n", "810 False False False \n", "811 False False False \n", "812 False False False \n", "813 False False False \n", "814 False False False \n", "815 False False False \n", "816 False False False \n", "817 False False False \n", "818 False False False \n", "819 False False False \n", "820 False False False \n", "\n", "[821 rows x 13 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.metrics import accuracy_score\n", "from sklearn.metrics import confusion_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Splitting the data with 70:30 mix" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train_x Shape :: (574, 12)\n", "Train_y Shape :: (574, 1)\n", "Test_x Shape :: (247, 12)\n", "Test_y Shape :: (247, 1)\n" ] } ], "source": [ "print(\"Train_x Shape :: \", X_train.shape)\n", "print(\"Train_y Shape :: \", y_train.shape)\n", "print(\"Test_x Shape :: \", X_test.shape)\n", "print(\"Test_y Shape :: \", y_test.shape)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "d_train = lgb.Dataset(X_train, label=y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Building the model with default parameters" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> Completion Time : 193.7288317680359\n", "Trained LGBM model :: LGBMClassifier(boosting_type='gbdt', class_weight=None, colsample_bytree=1.0,\n", " importance_type='split', learning_rate=0.1, max_depth=-1,\n", " metric='binary_logloss', min_child_samples=20,\n", " min_child_weight=0.001, min_split_gain=0.0, n_estimators=100,\n", " n_jobs=-1, num_leaves=31, objective='binary', random_state=None,\n", " reg_alpha=0.0, reg_lambda=0.0, silent=True, subsample=1.0,\n", " subsample_for_bin=200000, subsample_freq=0)\n" ] } ], "source": [ "def LGBM_classifier(features, target):\n", " \"\"\"\n", " To train the LGBM classifier with features and target data\n", " :param features:\n", " :param target:\n", " :return: trained LGBM classifier\n", " \"\"\"\n", " model = LGBMClassifier(metric='binary_logloss', objective='binary')\n", " model.fit(features, target)\n", " return model\n", "\n", "start = time.time()\n", "trained_model = LGBM_classifier(X_train, y_train.values.ravel())\n", "print(\"> Completion Time : \", time.time() - start)\n", "print(\"Trained LGBM model :: \", trained_model)\n", "predictions = trained_model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train Accuracy :: 1.0\n", "LGBM Model Test Accuracy is :: 0.9230769230769231\n" ] } ], "source": [ "print(\"Train Accuracy :: \", accuracy_score(y_train, trained_model.predict(X_train)))\n", "print(\"LGBM Model Test Accuracy is :: \", accuracy_score(y_test, predictions))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can observe that the model has achieved 92% accuracy on test data and 100% accuracy on train data." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Confusion matrix [[102 5]\n", " [ 14 126]]\n" ] } ], "source": [ "print(\" Confusion matrix \", confusion_matrix(y_test, predictions))" ] }, { "attachments": { "Confusion_Matrix.png": { "image/png": "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67Rp07z3N954I4Cbb765p+nVc4y2pibAdjAtXrwYwM4771y6KLY29ANb9OnTZ/z48d774cOHn3766WFox48f37t373Dc3t4+fvz4MOuXA9/W1jZ+/PilS5duwQ3t7e0nnXRSqVJecMEFANauXVveE0oLVwcNGrSFeRPk6uWXX05Ed9555xa4Kl0FixcvDnpa+eykSZNKF2J7e3uYKcLPK664ouedoaJFixbNnj07gCGUH6akCy+8MPy86qqrACxevJiZp02b1qdPn7L2iRMnDh48uJyego80vN7LLruMiJ599llmvuGGG4QQPd/bwIEDBwwYEBq2yy67lBPEsmXLAFx++eWl4+cvjm9TRdzBNGTIkLa2tvXr12/YsCFwVbAKtgjLlPohM8+fP//666+/6qqrRo0addddd5X29/jx44Mmc+GFF65fvz4omePHj7/rrrs++tGPnn/++Z2dnT09HKWpQ38mKWXp7w6qnfd+5cqVy5cvnzt3brCywkRw9913l0bg3nvvXbatJ5zKEq688sqSd4MQKGscOHBgGTx48cUXgxgJcA1YHTJkyCOPPLLTTjt96EMfCnpmiGQE1ZGIgr8n1Pvcc8+F6SY0YObMmQF4QQkstc3SLRTuDNKvvb29dOUPHjx41apVixYtCppwOSJ9+vQRQqxZsyaUU/pLmjbYe5eY+cADD/Tez5o1q3RhlWZMGVMKYx/O3HHHHR/4wAeeeuqpM88886STTip9bjNmzLjsssv233//K664Yp999gma3owZM6ZOnTpkyJBrrrlm9913X7FiRQCGUqona5ZuA611YMQoigJgAqPPmzdPSlmyYHikWq2WvvKeLrjS9AruhxBHKj03wSQrnyoBQESLFi0KampZmhBi48aNoamB0csqSp9KT0tn5cqVv/zlL0vHY1mjtbZSqZQhr3Ap+Io2bNggpezs7AwuHwB77bWX937XXXctvUql29Z7X6lUSjOsGWj+H0DnnXcegBkzZgRXXuk911ovWbIk+ACYOYoiIUS9Xv/CF75w/PHHz549e9y4cWGkywDolClT5s2bt3jx4vb29iuuuCKA88ILL3zkkUcWL1688847T5s2LUiqJEniOA6gcs6VcAqQC1GsEMzda6+92trarr766smTJwfODmoSEaVpqpQqpVbJ0yUvxnHcU04Gfu0Zcijj48aYgQMHdnR0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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "![Confusion_Matrix.png](attachment:Confusion_Matrix.png)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "feat_imp = pd.Series(trained_model.feature_importances_, index=X.columns)\n", "feat_imp.nlargest(12).plot(kind='barh', figsize=(8,10))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Feature importance as per the model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### SHAP (SHapley Additive exPlanations) is a unified approach to explain the output of any machine learning model. " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting shap\n", "\u001b[?25l Downloading https://files.pythonhosted.org/packages/c9/b3/76dc7e0a039543ff8646e453b3a28bfd55a1954f91a6bc7b6ed8be80bf16/shap-0.30.1.tar.gz (244kB)\n", "\u001b[K |████████████████████████████████| 245kB 14.8MB/s eta 0:00:01\n", "\u001b[?25hRequirement already satisfied: numpy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (1.15.4)\n", "Requirement already satisfied: scipy in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (1.2.0)\n", "Requirement already satisfied: scikit-learn in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (0.20.3)\n", "Requirement already satisfied: matplotlib in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (3.0.2)\n", "Requirement already satisfied: pandas in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (0.24.1)\n", "Requirement already satisfied: tqdm>4.25.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (4.31.1)\n", "Requirement already satisfied: ipython in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (7.2.0)\n", "Requirement already satisfied: scikit-image in /opt/conda/envs/Python36/lib/python3.6/site-packages (from shap) (0.14.1)\n", "Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib->shap) (0.10.0)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib->shap) (1.0.1)\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib->shap) (2.3.1)\n", "Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from matplotlib->shap) (2.7.5)\n", "Requirement already satisfied: pytz>=2011k in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pandas->shap) (2018.9)\n", "Requirement already satisfied: traitlets>=4.2 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (4.3.2)\n", "Requirement already satisfied: pygments in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (2.3.1)\n", "Requirement already satisfied: setuptools>=18.5 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (40.8.0)\n", "Requirement already satisfied: pexpect; sys_platform != \"win32\" in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (4.6.0)\n", "Requirement already satisfied: decorator in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (4.3.2)\n", "Requirement already satisfied: backcall in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (0.1.0)\n", "Requirement already satisfied: pickleshare in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (0.7.5)\n", "Requirement already satisfied: prompt-toolkit<2.1.0,>=2.0.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (2.0.8)\n", "Requirement already satisfied: jedi>=0.10 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from ipython->shap) (0.13.2)\n", "Requirement already satisfied: networkx>=1.8 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from scikit-image->shap) (2.2)\n", "Requirement already satisfied: six>=1.10.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from scikit-image->shap) (1.12.0)\n", "Requirement already satisfied: pillow>=4.3.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from scikit-image->shap) (5.4.1)\n", "Requirement already satisfied: PyWavelets>=0.4.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from scikit-image->shap) (1.0.1)\n", "Requirement already satisfied: dask[array]>=0.9.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from scikit-image->shap) (1.1.1)\n", "Requirement already satisfied: cloudpickle>=0.2.1 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from scikit-image->shap) (0.7.0)\n", "Requirement already satisfied: ipython-genutils in /opt/conda/envs/Python36/lib/python3.6/site-packages (from traitlets>=4.2->ipython->shap) (0.2.0)\n", "Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from pexpect; sys_platform != \"win32\"->ipython->shap) (0.6.0)\n", "Requirement already satisfied: wcwidth in /opt/conda/envs/Python36/lib/python3.6/site-packages (from prompt-toolkit<2.1.0,>=2.0.0->ipython->shap) (0.1.7)\n", "Requirement already satisfied: parso>=0.3.0 in /opt/conda/envs/Python36/lib/python3.6/site-packages (from jedi>=0.10->ipython->shap) (0.3.2)\n", "Requirement already satisfied: toolz>=0.7.3; extra == \"array\" in /opt/conda/envs/Python36/lib/python3.6/site-packages (from dask[array]>=0.9.0->scikit-image->shap) (0.9.0)\n", "Building wheels for collected packages: shap\n", " Building wheel for shap (setup.py) ... \u001b[?25ldone\n", "\u001b[?25h Stored in directory: /home/dsxuser/.cache/pip/wheels/62/94/5e/feb9af12d63a719a32266a29ca564b4dc37b4755052aca6859\n", "Successfully built shap\n", "Installing collected packages: shap\n", "Successfully installed shap-0.30.1\n" ] } ], "source": [ "!pip install shap" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import shap\n", "shap.initjs()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "shap_values = shap.TreeExplainer(trained_model.booster_).shap_values(X_train)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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T9gA0gtYGIPfYOCkTmrrA8AFZlYH/JowWrcJsL27P9hJbRAREZE20kOeu4bzCDtkC38uABx4AZgDbEhYA7jK3ZcCJwKXm9lS4Hrgrs5oqLsvAXYHDJhBCKZPAF/ujPuLiIhI+2RyuVy52yCSpFxm9EpydT0hMzQeGV/eFnVT3W33WlemvkyO+jI56svklLkvM6VeoJE/ERERkRTRmr8UMrNpwGZNFM129606uz1JWlK/glxdFbn6BjL5Eb/lDdCrurwNExER6SIU/lKouwe8lsx45SVqa2vJ9C4Iewp+IiIiH9G0r0gX96tf/Yq6us54io+IiKSBwp+k1vKVHbvZqZT6H374YQ444AC22247dt55Z4455hjcvQNb17y33nqLww47jOHDh/PNb36TZ59t99dBi4hIF6JpX0mtXj0zZEav7LD6c3XF/XmNGTOGm266iQsuuICdd96ZqqoqnnnmGZ5++mni1+J1qp/97Gdsu+22/PjHP+aDDz5gxIgRPPnkk3zmM5/p9LaIiEjyNPInUkZLlizh2muv5dxzz2XvvfdmrbXWoqqqij322IMzzjijyWtGjBjB17/+dWprazn00EP517/+9VHZpEmT+Pa3v812223HLrvswi233ALA+++/z/HHH4+ZscMOO3DIIYewevWnv4TlzTffZNq0aZx88slUV1ezzz77MGjQIJ544omO6QAREel0GvkTKaMXX3yR//73vwwZMqToa77xjW9w8cUXU11dzRVXXEFdXR0PPhi+XOXss8/m6quvxsxYvHgxb731FhBGFz/3uc/x3HPPATB16lQymU8/GmrmzJn069ePvn37fnRsyy23ZObMme35mCIi0oVo5E+kjBYtWsR6661Hz57F//+wAw88kL59+1JdXc3JJ5/M9OnTWbJkCQA9e/Zk5syZLF26lHXWWYetttrqo+MLFizgnXfeoaqqCjNrMvwtW7aMmpqaTxyrqalh2bJl7fiUIiLSlSj8SUUZNHgbAHL1DeHA8oYytqZ16667LgsXLmTlyuLWHq5atYrRo0ez1157sf3227PHHnsAsHDhQgCuvfZaJk2axO67786PfvQjXnzxRQCOPvpoNttsM4466ij23HNPbrrppibr79OnD0uXLv3EsaVLl9KnT5+2fkQREeliFP6kotT0riIzemV4zl9maJd/xt92223HmmuuyYQJ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "shap.summary_plot(shap_values, X_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can observe that attributes like Married, ApplicantIncome, Credit_History_Available, LoanAMount & CoapplicantIncome have high impact on the target variable. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In this notebook, we have done exploratory data analysis, feature importance, model building & interpreting the model attributes for improving the accuracy. This is to demonstrate some of the mandatory steps which are involved in building predictive models which are done manually. These steps can take days to complete. All these steps are automated in AutoAI feature in Watson Studio where we can create and deploy machine learning models in minutes. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }