{
"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",
" Gender | \n",
" Married | \n",
" Dependents | \n",
" Education | \n",
" Self_Employed | \n",
" ApplicantIncome | \n",
" CoapplicantIncome | \n",
" LoanAmount | \n",
" Loan_Term | \n",
" Credit_History_Available | \n",
" Housing | \n",
" Locality | \n",
"
\n",
" \n",
" Fraud_Risk | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.572674 | \n",
" 0.000000 | \n",
" 0.313953 | \n",
" 0.805233 | \n",
" 0.174419 | \n",
" 4785.148256 | \n",
" 1111.700581 | \n",
" 125.720930 | \n",
" 346.453488 | \n",
" 0.973837 | \n",
" 0.700581 | \n",
" 2.011628 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.851153 | \n",
" 0.834382 | \n",
" 0.905660 | \n",
" 0.777778 | \n",
" 0.865828 | \n",
" 5530.683438 | \n",
" 1774.714885 | \n",
" 152.104822 | \n",
" 331.849057 | \n",
" 0.819706 | \n",
" 0.620545 | \n",
" 1.958071 | \n",
"
\n",
" \n",
"
\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",
" Gender | \n",
" Married | \n",
" Dependents | \n",
" Education | \n",
" Self_Employed | \n",
" ApplicantIncome | \n",
" CoapplicantIncome | \n",
" LoanAmount | \n",
" Loan_Term | \n",
" Credit_History_Available | \n",
" Housing | \n",
" Locality | \n",
" Fraud_Risk | \n",
"
\n",
" \n",
" \n",
" \n",
" Gender | \n",
" 1.000000 | \n",
" 0.356961 | \n",
" 0.121822 | \n",
" -0.080729 | \n",
" 0.265646 | \n",
" 0.008332 | \n",
" 0.116489 | \n",
" 0.087919 | \n",
" -0.074207 | \n",
" -0.019188 | \n",
" -0.013977 | \n",
" -0.008063 | \n",
" 0.311131 | \n",
"
\n",
" \n",
" Married | \n",
" 0.356961 | \n",
" 1.000000 | \n",
" 0.372524 | \n",
" -0.030681 | \n",
" 0.832014 | \n",
" 0.071055 | \n",
" 0.102828 | \n",
" 0.174027 | \n",
" -0.106939 | \n",
" -0.083401 | \n",
" -0.093887 | \n",
" -0.022953 | \n",
" 0.823742 | \n",
"
\n",
" \n",
" Dependents | \n",
" 0.121822 | \n",
" 0.372524 | \n",
" 1.000000 | \n",
" -0.022988 | \n",
" 0.349570 | \n",
" 0.129937 | \n",
" 0.024323 | \n",
" 0.181592 | \n",
" -0.048651 | \n",
" -0.083369 | \n",
" -0.022418 | \n",
" -0.014326 | \n",
" 0.311572 | \n",
"
\n",
" \n",
" Education | \n",
" -0.080729 | \n",
" -0.030681 | \n",
" -0.022988 | \n",
" 1.000000 | \n",
" -0.026170 | \n",
" 0.128624 | \n",
" 0.052806 | \n",
" 0.155956 | \n",
" 0.108287 | \n",
" 0.055851 | \n",
" 0.000979 | \n",
" -0.102404 | \n",
" -0.033216 | \n",
"
\n",
" \n",
" Self_Employed | \n",
" 0.265646 | \n",
" 0.832014 | \n",
" 0.349570 | \n",
" -0.026170 | \n",
" 1.000000 | \n",
" 0.140173 | \n",
" 0.076750 | \n",
" 0.231262 | \n",
" -0.103865 | \n",
" -0.048297 | \n",
" -0.100422 | \n",
" -0.047370 | \n",
" 0.690325 | \n",
"
\n",
" \n",
" ApplicantIncome | \n",
" 0.008332 | \n",
" 0.071055 | \n",
" 0.129937 | \n",
" 0.128624 | \n",
" 0.140173 | \n",
" 1.000000 | \n",
" -0.121032 | \n",
" 0.564648 | \n",
" -0.003925 | \n",
" -0.021712 | \n",
" -0.051459 | \n",
" -0.020718 | \n",
" 0.065581 | \n",
"
\n",
" \n",
" CoapplicantIncome | \n",
" 0.116489 | \n",
" 0.102828 | \n",
" 0.024323 | \n",
" 0.052806 | \n",
" 0.076750 | \n",
" -0.121032 | \n",
" 1.000000 | \n",
" 0.165143 | \n",
" -0.053702 | \n",
" -0.034498 | \n",
" -0.018697 | \n",
" 0.001634 | \n",
" 0.116479 | \n",
"
\n",
" \n",
" LoanAmount | \n",
" 0.087919 | \n",
" 0.174027 | \n",
" 0.181592 | \n",
" 0.155956 | \n",
" 0.231262 | \n",
" 0.564648 | \n",
" 0.165143 | \n",
" 1.000000 | \n",
" 0.074216 | \n",
" -0.024232 | \n",
" -0.086455 | \n",
" 0.019726 | \n",
" 0.162672 | \n",
"
\n",
" \n",
" Loan_Term | \n",
" -0.074207 | \n",
" -0.106939 | \n",
" -0.048651 | \n",
" 0.108287 | \n",
" -0.103865 | \n",
" -0.003925 | \n",
" -0.053702 | \n",
" 0.074216 | \n",
" 1.000000 | \n",
" 0.075339 | \n",
" 0.026265 | \n",
" 0.086213 | \n",
" -0.095366 | \n",
"
\n",
" \n",
" Credit_History_Available | \n",
" -0.019188 | \n",
" -0.083401 | \n",
" -0.083369 | \n",
" 0.055851 | \n",
" -0.048297 | \n",
" -0.021712 | \n",
" -0.034498 | \n",
" -0.024232 | \n",
" 0.075339 | \n",
" 1.000000 | \n",
" 0.017112 | \n",
" -0.004215 | \n",
" -0.237737 | \n",
"
\n",
" \n",
" Housing | \n",
" -0.013977 | \n",
" -0.093887 | \n",
" -0.022418 | \n",
" 0.000979 | \n",
" -0.100422 | \n",
" -0.051459 | \n",
" -0.018697 | \n",
" -0.086455 | \n",
" 0.026265 | \n",
" 0.017112 | \n",
" 1.000000 | \n",
" 0.068134 | \n",
" -0.083019 | \n",
"
\n",
" \n",
" Locality | \n",
" -0.008063 | \n",
" -0.022953 | \n",
" -0.014326 | \n",
" -0.102404 | \n",
" -0.047370 | \n",
" -0.020718 | \n",
" 0.001634 | \n",
" 0.019726 | \n",
" 0.086213 | \n",
" -0.004215 | \n",
" 0.068134 | \n",
" 1.000000 | \n",
" -0.034356 | \n",
"
\n",
" \n",
" Fraud_Risk | \n",
" 0.311131 | \n",
" 0.823742 | \n",
" 0.311572 | \n",
" -0.033216 | \n",
" 0.690325 | \n",
" 0.065581 | \n",
" 0.116479 | \n",
" 0.162672 | \n",
" -0.095366 | \n",
" -0.237737 | \n",
" -0.083019 | \n",
" -0.034356 | \n",
" 1.000000 | \n",
"
\n",
" \n",
"
\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",
" Gender | \n",
" Married | \n",
" Dependents | \n",
" Education | \n",
" Self_Employed | \n",
" ApplicantIncome | \n",
" CoapplicantIncome | \n",
" LoanAmount | \n",
" Loan_Term | \n",
" Credit_History_Available | \n",
" Housing | \n",
" Locality | \n",
" Fraud_Risk | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 1 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 2 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 3 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 4 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 5 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 6 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 7 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 8 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 9 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 10 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 11 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 12 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 13 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 14 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 15 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 16 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 17 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 18 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 19 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 20 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 21 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 22 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 23 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 24 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 25 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 26 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 27 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 28 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 29 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 791 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 792 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 793 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 794 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 795 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 796 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 797 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 798 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 799 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 800 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 801 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 802 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 803 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 804 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 805 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 806 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 807 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 808 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 809 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 810 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 811 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 812 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 813 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 814 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 815 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 816 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 817 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 818 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 819 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
" 820 | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
" False | \n",
"
\n",
" \n",
"
\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": [
"