{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import math\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# some settings for displaying Pandas results\n",
"pd.set_option('display.width', 2000)\n",
"pd.set_option('display.max_rows', 500)\n",
"pd.set_option('display.max_columns', 500)\n",
"pd.set_option('display.precision', 4)\n",
"pd.set_option('display.max_colwidth', -1)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" SK_ID_CURR \n",
" TARGET \n",
" NAME_CONTRACT_TYPE \n",
" CODE_GENDER \n",
" FLAG_OWN_CAR \n",
" FLAG_OWN_REALTY \n",
" CNT_CHILDREN \n",
" AMT_INCOME_TOTAL \n",
" AMT_CREDIT \n",
" AMT_ANNUITY \n",
" AMT_GOODS_PRICE \n",
" NAME_TYPE_SUITE \n",
" NAME_INCOME_TYPE \n",
" NAME_EDUCATION_TYPE \n",
" NAME_FAMILY_STATUS \n",
" NAME_HOUSING_TYPE \n",
" REGION_POPULATION_RELATIVE \n",
" DAYS_BIRTH \n",
" DAYS_EMPLOYED \n",
" DAYS_REGISTRATION \n",
" DAYS_ID_PUBLISH \n",
" OWN_CAR_AGE \n",
" FLAG_MOBIL \n",
" FLAG_EMP_PHONE \n",
" FLAG_WORK_PHONE \n",
" FLAG_CONT_MOBILE \n",
" FLAG_PHONE \n",
" FLAG_EMAIL \n",
" OCCUPATION_TYPE \n",
" CNT_FAM_MEMBERS \n",
" REGION_RATING_CLIENT \n",
" REGION_RATING_CLIENT_W_CITY \n",
" WEEKDAY_APPR_PROCESS_START \n",
" HOUR_APPR_PROCESS_START \n",
" REG_REGION_NOT_LIVE_REGION \n",
" REG_REGION_NOT_WORK_REGION \n",
" LIVE_REGION_NOT_WORK_REGION \n",
" REG_CITY_NOT_LIVE_CITY \n",
" REG_CITY_NOT_WORK_CITY \n",
" LIVE_CITY_NOT_WORK_CITY \n",
" ORGANIZATION_TYPE \n",
" EXT_SOURCE_1 \n",
" EXT_SOURCE_2 \n",
" EXT_SOURCE_3 \n",
" APARTMENTS_AVG \n",
" BASEMENTAREA_AVG \n",
" YEARS_BEGINEXPLUATATION_AVG \n",
" YEARS_BUILD_AVG \n",
" COMMONAREA_AVG \n",
" ELEVATORS_AVG \n",
" ENTRANCES_AVG \n",
" FLOORSMAX_AVG \n",
" FLOORSMIN_AVG \n",
" LANDAREA_AVG \n",
" LIVINGAPARTMENTS_AVG \n",
" LIVINGAREA_AVG \n",
" NONLIVINGAPARTMENTS_AVG \n",
" NONLIVINGAREA_AVG \n",
" APARTMENTS_MODE \n",
" BASEMENTAREA_MODE \n",
" YEARS_BEGINEXPLUATATION_MODE \n",
" YEARS_BUILD_MODE \n",
" COMMONAREA_MODE \n",
" ELEVATORS_MODE \n",
" ENTRANCES_MODE \n",
" FLOORSMAX_MODE \n",
" FLOORSMIN_MODE \n",
" LANDAREA_MODE \n",
" LIVINGAPARTMENTS_MODE \n",
" LIVINGAREA_MODE \n",
" NONLIVINGAPARTMENTS_MODE \n",
" NONLIVINGAREA_MODE \n",
" APARTMENTS_MEDI \n",
" BASEMENTAREA_MEDI \n",
" YEARS_BEGINEXPLUATATION_MEDI \n",
" YEARS_BUILD_MEDI \n",
" COMMONAREA_MEDI \n",
" ELEVATORS_MEDI \n",
" ENTRANCES_MEDI \n",
" FLOORSMAX_MEDI \n",
" FLOORSMIN_MEDI \n",
" LANDAREA_MEDI \n",
" LIVINGAPARTMENTS_MEDI \n",
" LIVINGAREA_MEDI \n",
" NONLIVINGAPARTMENTS_MEDI \n",
" NONLIVINGAREA_MEDI \n",
" FONDKAPREMONT_MODE \n",
" HOUSETYPE_MODE \n",
" TOTALAREA_MODE \n",
" WALLSMATERIAL_MODE \n",
" EMERGENCYSTATE_MODE \n",
" OBS_30_CNT_SOCIAL_CIRCLE \n",
" DEF_30_CNT_SOCIAL_CIRCLE \n",
" OBS_60_CNT_SOCIAL_CIRCLE \n",
" DEF_60_CNT_SOCIAL_CIRCLE \n",
" DAYS_LAST_PHONE_CHANGE \n",
" FLAG_DOCUMENT_2 \n",
" FLAG_DOCUMENT_3 \n",
" FLAG_DOCUMENT_4 \n",
" FLAG_DOCUMENT_5 \n",
" FLAG_DOCUMENT_6 \n",
" FLAG_DOCUMENT_7 \n",
" FLAG_DOCUMENT_8 \n",
" FLAG_DOCUMENT_9 \n",
" FLAG_DOCUMENT_10 \n",
" FLAG_DOCUMENT_11 \n",
" FLAG_DOCUMENT_12 \n",
" FLAG_DOCUMENT_13 \n",
" FLAG_DOCUMENT_14 \n",
" FLAG_DOCUMENT_15 \n",
" FLAG_DOCUMENT_16 \n",
" FLAG_DOCUMENT_17 \n",
" FLAG_DOCUMENT_18 \n",
" FLAG_DOCUMENT_19 \n",
" FLAG_DOCUMENT_20 \n",
" FLAG_DOCUMENT_21 \n",
" AMT_REQ_CREDIT_BUREAU_HOUR \n",
" AMT_REQ_CREDIT_BUREAU_DAY \n",
" AMT_REQ_CREDIT_BUREAU_WEEK \n",
" AMT_REQ_CREDIT_BUREAU_MON \n",
" AMT_REQ_CREDIT_BUREAU_QRT \n",
" AMT_REQ_CREDIT_BUREAU_YEAR \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 100002 \n",
" 1 \n",
" Cash loans \n",
" M \n",
" N \n",
" Y \n",
" 0 \n",
" 202500.0 \n",
" 406597.5 \n",
" 24700.5 \n",
" 351000.0 \n",
" Unaccompanied \n",
" Working \n",
" Secondary / secondary special \n",
" Single / not married \n",
" House / apartment \n",
" 0.0188 \n",
" -9461 \n",
" -637 \n",
" -3648.0 \n",
" -2120 \n",
" NaN \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" Laborers \n",
" 1.0 \n",
" 2 \n",
" 2 \n",
" WEDNESDAY \n",
" 10 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" Business Entity Type 3 \n",
" 0.0830 \n",
" 0.2629 \n",
" 0.1394 \n",
" 0.0247 \n",
" 0.0369 \n",
" 0.9722 \n",
" 0.6192 \n",
" 0.0143 \n",
" 0.00 \n",
" 0.0690 \n",
" 0.0833 \n",
" 0.1250 \n",
" 0.0369 \n",
" 0.0202 \n",
" 0.0190 \n",
" 0.0000 \n",
" 0.0000 \n",
" 0.0252 \n",
" 0.0383 \n",
" 0.9722 \n",
" 0.6341 \n",
" 0.0144 \n",
" 0.0000 \n",
" 0.0690 \n",
" 0.0833 \n",
" 0.1250 \n",
" 0.0377 \n",
" 0.022 \n",
" 0.0198 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0250 \n",
" 0.0369 \n",
" 0.9722 \n",
" 0.6243 \n",
" 0.0144 \n",
" 0.00 \n",
" 0.0690 \n",
" 0.0833 \n",
" 0.1250 \n",
" 0.0375 \n",
" 0.0205 \n",
" 0.0193 \n",
" 0.0000 \n",
" 0.00 \n",
" reg oper account \n",
" block of flats \n",
" 0.0149 \n",
" Stone, brick \n",
" No \n",
" 2.0 \n",
" 2.0 \n",
" 2.0 \n",
" 2.0 \n",
" -1134.0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" \n",
" \n",
" 1 \n",
" 100003 \n",
" 0 \n",
" Cash loans \n",
" F \n",
" N \n",
" N \n",
" 0 \n",
" 270000.0 \n",
" 1293502.5 \n",
" 35698.5 \n",
" 1129500.0 \n",
" Family \n",
" State servant \n",
" Higher education \n",
" Married \n",
" House / apartment \n",
" 0.0035 \n",
" -16765 \n",
" -1188 \n",
" -1186.0 \n",
" -291 \n",
" NaN \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" Core staff \n",
" 2.0 \n",
" 1 \n",
" 1 \n",
" MONDAY \n",
" 11 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" School \n",
" 0.3113 \n",
" 0.6222 \n",
" NaN \n",
" 0.0959 \n",
" 0.0529 \n",
" 0.9851 \n",
" 0.7960 \n",
" 0.0605 \n",
" 0.08 \n",
" 0.0345 \n",
" 0.2917 \n",
" 0.3333 \n",
" 0.0130 \n",
" 0.0773 \n",
" 0.0549 \n",
" 0.0039 \n",
" 0.0098 \n",
" 0.0924 \n",
" 0.0538 \n",
" 0.9851 \n",
" 0.8040 \n",
" 0.0497 \n",
" 0.0806 \n",
" 0.0345 \n",
" 0.2917 \n",
" 0.3333 \n",
" 0.0128 \n",
" 0.079 \n",
" 0.0554 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0968 \n",
" 0.0529 \n",
" 0.9851 \n",
" 0.7987 \n",
" 0.0608 \n",
" 0.08 \n",
" 0.0345 \n",
" 0.2917 \n",
" 0.3333 \n",
" 0.0132 \n",
" 0.0787 \n",
" 0.0558 \n",
" 0.0039 \n",
" 0.01 \n",
" reg oper account \n",
" block of flats \n",
" 0.0714 \n",
" Block \n",
" No \n",
" 1.0 \n",
" 0.0 \n",
" 1.0 \n",
" 0.0 \n",
" -828.0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" 100004 \n",
" 0 \n",
" Revolving loans \n",
" M \n",
" Y \n",
" Y \n",
" 0 \n",
" 67500.0 \n",
" 135000.0 \n",
" 6750.0 \n",
" 135000.0 \n",
" Unaccompanied \n",
" Working \n",
" Secondary / secondary special \n",
" Single / not married \n",
" House / apartment \n",
" 0.0100 \n",
" -19046 \n",
" -225 \n",
" -4260.0 \n",
" -2531 \n",
" 26.0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" Laborers \n",
" 1.0 \n",
" 2 \n",
" 2 \n",
" MONDAY \n",
" 9 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" Government \n",
" NaN \n",
" 0.5559 \n",
" 0.7296 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" -815.0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 3 \n",
" 100006 \n",
" 0 \n",
" Cash loans \n",
" F \n",
" N \n",
" Y \n",
" 0 \n",
" 135000.0 \n",
" 312682.5 \n",
" 29686.5 \n",
" 297000.0 \n",
" Unaccompanied \n",
" Working \n",
" Secondary / secondary special \n",
" Civil marriage \n",
" House / apartment \n",
" 0.0080 \n",
" -19005 \n",
" -3039 \n",
" -9833.0 \n",
" -2437 \n",
" NaN \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" Laborers \n",
" 2.0 \n",
" 2 \n",
" 2 \n",
" WEDNESDAY \n",
" 17 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" Business Entity Type 3 \n",
" NaN \n",
" 0.6504 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 2.0 \n",
" 0.0 \n",
" 2.0 \n",
" 0.0 \n",
" -617.0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 4 \n",
" 100007 \n",
" 0 \n",
" Cash loans \n",
" M \n",
" N \n",
" Y \n",
" 0 \n",
" 121500.0 \n",
" 513000.0 \n",
" 21865.5 \n",
" 513000.0 \n",
" Unaccompanied \n",
" Working \n",
" Secondary / secondary special \n",
" Single / not married \n",
" House / apartment \n",
" 0.0287 \n",
" -19932 \n",
" -3038 \n",
" -4311.0 \n",
" -3458 \n",
" NaN \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" Core staff \n",
" 1.0 \n",
" 2 \n",
" 2 \n",
" THURSDAY \n",
" 11 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" Religion \n",
" NaN \n",
" 0.3227 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" -1106.0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SK_ID_CURR TARGET NAME_CONTRACT_TYPE CODE_GENDER FLAG_OWN_CAR FLAG_OWN_REALTY CNT_CHILDREN AMT_INCOME_TOTAL AMT_CREDIT AMT_ANNUITY AMT_GOODS_PRICE NAME_TYPE_SUITE NAME_INCOME_TYPE NAME_EDUCATION_TYPE NAME_FAMILY_STATUS NAME_HOUSING_TYPE REGION_POPULATION_RELATIVE DAYS_BIRTH DAYS_EMPLOYED DAYS_REGISTRATION DAYS_ID_PUBLISH OWN_CAR_AGE FLAG_MOBIL FLAG_EMP_PHONE FLAG_WORK_PHONE FLAG_CONT_MOBILE FLAG_PHONE FLAG_EMAIL OCCUPATION_TYPE CNT_FAM_MEMBERS REGION_RATING_CLIENT REGION_RATING_CLIENT_W_CITY WEEKDAY_APPR_PROCESS_START HOUR_APPR_PROCESS_START REG_REGION_NOT_LIVE_REGION REG_REGION_NOT_WORK_REGION LIVE_REGION_NOT_WORK_REGION REG_CITY_NOT_LIVE_CITY REG_CITY_NOT_WORK_CITY LIVE_CITY_NOT_WORK_CITY ORGANIZATION_TYPE EXT_SOURCE_1 EXT_SOURCE_2 EXT_SOURCE_3 APARTMENTS_AVG BASEMENTAREA_AVG YEARS_BEGINEXPLUATATION_AVG YEARS_BUILD_AVG COMMONAREA_AVG ELEVATORS_AVG ENTRANCES_AVG FLOORSMAX_AVG FLOORSMIN_AVG LANDAREA_AVG LIVINGAPARTMENTS_AVG LIVINGAREA_AVG NONLIVINGAPARTMENTS_AVG NONLIVINGAREA_AVG APARTMENTS_MODE BASEMENTAREA_MODE YEARS_BEGINEXPLUATATION_MODE YEARS_BUILD_MODE COMMONAREA_MODE ELEVATORS_MODE ENTRANCES_MODE FLOORSMAX_MODE FLOORSMIN_MODE LANDAREA_MODE LIVINGAPARTMENTS_MODE LIVINGAREA_MODE NONLIVINGAPARTMENTS_MODE NONLIVINGAREA_MODE APARTMENTS_MEDI BASEMENTAREA_MEDI YEARS_BEGINEXPLUATATION_MEDI YEARS_BUILD_MEDI COMMONAREA_MEDI ELEVATORS_MEDI ENTRANCES_MEDI FLOORSMAX_MEDI FLOORSMIN_MEDI LANDAREA_MEDI LIVINGAPARTMENTS_MEDI LIVINGAREA_MEDI NONLIVINGAPARTMENTS_MEDI NONLIVINGAREA_MEDI FONDKAPREMONT_MODE HOUSETYPE_MODE TOTALAREA_MODE WALLSMATERIAL_MODE EMERGENCYSTATE_MODE OBS_30_CNT_SOCIAL_CIRCLE DEF_30_CNT_SOCIAL_CIRCLE OBS_60_CNT_SOCIAL_CIRCLE DEF_60_CNT_SOCIAL_CIRCLE DAYS_LAST_PHONE_CHANGE FLAG_DOCUMENT_2 FLAG_DOCUMENT_3 FLAG_DOCUMENT_4 FLAG_DOCUMENT_5 FLAG_DOCUMENT_6 FLAG_DOCUMENT_7 FLAG_DOCUMENT_8 FLAG_DOCUMENT_9 FLAG_DOCUMENT_10 FLAG_DOCUMENT_11 \\\n",
"0 100002 1 Cash loans M N Y 0 202500.0 406597.5 24700.5 351000.0 Unaccompanied Working Secondary / secondary special Single / not married House / apartment 0.0188 -9461 -637 -3648.0 -2120 NaN 1 1 0 1 1 0 Laborers 1.0 2 2 WEDNESDAY 10 0 0 0 0 0 0 Business Entity Type 3 0.0830 0.2629 0.1394 0.0247 0.0369 0.9722 0.6192 0.0143 0.00 0.0690 0.0833 0.1250 0.0369 0.0202 0.0190 0.0000 0.0000 0.0252 0.0383 0.9722 0.6341 0.0144 0.0000 0.0690 0.0833 0.1250 0.0377 0.022 0.0198 0.0 0.0 0.0250 0.0369 0.9722 0.6243 0.0144 0.00 0.0690 0.0833 0.1250 0.0375 0.0205 0.0193 0.0000 0.00 reg oper account block of flats 0.0149 Stone, brick No 2.0 2.0 2.0 2.0 -1134.0 0 1 0 0 0 0 0 0 0 0 \n",
"1 100003 0 Cash loans F N N 0 270000.0 1293502.5 35698.5 1129500.0 Family State servant Higher education Married House / apartment 0.0035 -16765 -1188 -1186.0 -291 NaN 1 1 0 1 1 0 Core staff 2.0 1 1 MONDAY 11 0 0 0 0 0 0 School 0.3113 0.6222 NaN 0.0959 0.0529 0.9851 0.7960 0.0605 0.08 0.0345 0.2917 0.3333 0.0130 0.0773 0.0549 0.0039 0.0098 0.0924 0.0538 0.9851 0.8040 0.0497 0.0806 0.0345 0.2917 0.3333 0.0128 0.079 0.0554 0.0 0.0 0.0968 0.0529 0.9851 0.7987 0.0608 0.08 0.0345 0.2917 0.3333 0.0132 0.0787 0.0558 0.0039 0.01 reg oper account block of flats 0.0714 Block No 1.0 0.0 1.0 0.0 -828.0 0 1 0 0 0 0 0 0 0 0 \n",
"2 100004 0 Revolving loans M Y Y 0 67500.0 135000.0 6750.0 135000.0 Unaccompanied Working Secondary / secondary special Single / not married House / apartment 0.0100 -19046 -225 -4260.0 -2531 26.0 1 1 1 1 1 0 Laborers 1.0 2 2 MONDAY 9 0 0 0 0 0 0 Government NaN 0.5559 0.7296 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 0.0 0.0 0.0 -815.0 0 0 0 0 0 0 0 0 0 0 \n",
"3 100006 0 Cash loans F N Y 0 135000.0 312682.5 29686.5 297000.0 Unaccompanied Working Secondary / secondary special Civil marriage House / apartment 0.0080 -19005 -3039 -9833.0 -2437 NaN 1 1 0 1 0 0 Laborers 2.0 2 2 WEDNESDAY 17 0 0 0 0 0 0 Business Entity Type 3 NaN 0.6504 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.0 0.0 2.0 0.0 -617.0 0 1 0 0 0 0 0 0 0 0 \n",
"4 100007 0 Cash loans M N Y 0 121500.0 513000.0 21865.5 513000.0 Unaccompanied Working Secondary / secondary special Single / not married House / apartment 0.0287 -19932 -3038 -4311.0 -3458 NaN 1 1 0 1 0 0 Core staff 1.0 2 2 THURSDAY 11 0 0 0 0 1 1 Religion NaN 0.3227 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.0 0.0 0.0 0.0 -1106.0 0 0 0 0 0 0 1 0 0 0 \n",
"\n",
" FLAG_DOCUMENT_12 FLAG_DOCUMENT_13 FLAG_DOCUMENT_14 FLAG_DOCUMENT_15 FLAG_DOCUMENT_16 FLAG_DOCUMENT_17 FLAG_DOCUMENT_18 FLAG_DOCUMENT_19 FLAG_DOCUMENT_20 FLAG_DOCUMENT_21 AMT_REQ_CREDIT_BUREAU_HOUR AMT_REQ_CREDIT_BUREAU_DAY AMT_REQ_CREDIT_BUREAU_WEEK AMT_REQ_CREDIT_BUREAU_MON AMT_REQ_CREDIT_BUREAU_QRT AMT_REQ_CREDIT_BUREAU_YEAR \n",
"0 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 1.0 \n",
"1 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0 0 0 0 0 0 0 0 0 0 NaN NaN NaN NaN NaN NaN \n",
"4 0 0 0 0 0 0 0 0 0 0 0.0 0.0 0.0 0.0 0.0 0.0 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# load train data profile\n",
"data_path = \"home-credit-default-risk/application_train.csv\"\n",
"pdf_data = pd.read_csv(data_path)\n",
"pdf_data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Evaluate CNT_CHILDREN"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nqmZoSJKq/R/14Z4TU3jAcwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pdf_data[\"CNT_CHILDREN\"].hist()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 307511.0000\n",
"mean 0.4171 \n",
"std 0.7221 \n",
"min 0.0000 \n",
"25% 0.0000 \n",
"50% 0.0000 \n",
"75% 1.0000 \n",
"max 19.0000 \n",
"Name: CNT_CHILDREN, dtype: float64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_data[\"CNT_CHILDREN\"].describe()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Min: 0, Max: 19\n"
]
}
],
"source": [
"# find bounded range\n",
"min_x = pdf_data[\"CNT_CHILDREN\"].min()\n",
"max_x = pdf_data[\"CNT_CHILDREN\"].max()\n",
"print(\"Min: {}, Max: {}\".format(min_x, max_x))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# extracting histogram\n",
"n_bins = 10\n",
"hist_all = np.histogram(pdf_data[\"CNT_CHILDREN\"], range=(min_x, max_x), bins=n_bins)\n",
"hist_good = np.histogram(pdf_data.query(\"TARGET == 0\")[\"CNT_CHILDREN\"], range=(min_x, max_x), bins=n_bins)\n",
"hist_bad = np.histogram(pdf_data.query(\"TARGET == 1\")[\"CNT_CHILDREN\"], range=(min_x, max_x), bins=n_bins)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([276490, 30466, 513, 28, 4, 3, 2, 3,\n",
" 0, 2]),\n",
" array([ 0. , 1.9, 3.8, 5.7, 7.6, 9.5, 11.4, 13.3, 15.2, 17.1, 19. ]))"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hist_all"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([254427, 27775, 451, 22, 2, 2, 2, 3,\n",
" 0, 2]),\n",
" array([ 0. , 1.9, 3.8, 5.7, 7.6, 9.5, 11.4, 13.3, 15.2, 17.1, 19. ]))"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hist_good"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([22063, 2691, 62, 6, 2, 1, 0, 0, 0,\n",
" 0]),\n",
" array([ 0. , 1.9, 3.8, 5.7, 7.6, 9.5, 11.4, 13.3, 15.2, 17.1, 19. ]))"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hist_bad"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Num good: 282686, Num bad: 24825\n"
]
}
],
"source": [
"# get total number of good and bad for normalization\n",
"total_good = hist_good[0].sum()\n",
"total_bad = hist_bad[0].sum()\n",
"print(\"Num good: {}, Num bad: {}\".format(total_good, total_bad))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.00 276490\n",
"1.90 30466 \n",
"3.80 513 \n",
"5.70 28 \n",
"7.60 4 \n",
"9.50 3 \n",
"11.40 2 \n",
"13.30 3 \n",
"15.20 0 \n",
"17.10 2 \n",
"dtype: int64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s_all = pd.Series(dict(zip(hist_all[1], hist_all[0])))\n",
"s_all.rename(lambda x: \"{0:.2f}\".format(x), inplace=True)\n",
"s_all"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.00 254427\n",
"1.90 27775 \n",
"3.80 451 \n",
"5.70 22 \n",
"7.60 2 \n",
"9.50 2 \n",
"11.40 2 \n",
"13.30 3 \n",
"15.20 0 \n",
"17.10 2 \n",
"dtype: int64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s_good = pd.Series(dict(zip(hist_good[1], hist_good[0])))\n",
"s_good.rename(lambda x: \"{0:.2f}\".format(x), inplace=True)\n",
"s_good"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.00 22063\n",
"1.90 2691 \n",
"3.80 62 \n",
"5.70 6 \n",
"7.60 2 \n",
"9.50 1 \n",
"11.40 0 \n",
"13.30 0 \n",
"15.20 0 \n",
"17.10 0 \n",
"dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s_bad = pd.Series(dict(zip(hist_bad[1], hist_bad[0])))\n",
"s_bad.rename(lambda x: \"{0:.2f}\".format(x), inplace=True)\n",
"s_bad"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.00 9.0003e-01\n",
"1.90 9.8254e-02\n",
"3.80 1.5954e-03\n",
"5.70 7.7825e-05\n",
"7.60 7.0750e-06\n",
"9.50 7.0750e-06\n",
"11.40 7.0750e-06\n",
"13.30 1.0612e-05\n",
"15.20 0.0000e+00\n",
"17.10 7.0750e-06\n",
"dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# calculate distribution of good\n",
"distr_good = s_good / total_good\n",
"distr_good"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.00 8.8874e-01\n",
"1.90 1.0840e-01\n",
"3.80 2.4975e-03\n",
"5.70 2.4169e-04\n",
"7.60 8.0564e-05\n",
"9.50 4.0282e-05\n",
"11.40 0.0000e+00\n",
"13.30 0.0000e+00\n",
"15.20 0.0000e+00\n",
"17.10 0.0000e+00\n",
"dtype: float64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# calculate distribution of bad\n",
"distr_bad = s_bad / total_bad\n",
"distr_bad"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1.0, 0.9999999999999999)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# sanity checkking of normalization\n",
"distr_good.sum(), distr_bad.sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Weight of evidence\n",
"\n",
"$$ln(\\frac{P(Good)}{P(Bad)})$$"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['0.00', '1.90', '3.80', '5.70', '7.60', '9.50'], dtype='object')"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# getting denominator not equal zeros\n",
"idx_filtered = distr_bad[distr_bad != 0].index\n",
"idx_filtered"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" WoE \n",
" \n",
" \n",
" \n",
" \n",
" 0.00 \n",
" 0.0126 \n",
" \n",
" \n",
" 1.90 \n",
" -0.0983 \n",
" \n",
" \n",
" 3.80 \n",
" -0.4482 \n",
" \n",
" \n",
" 5.70 \n",
" -1.1332 \n",
" \n",
" \n",
" 7.60 \n",
" -2.4325 \n",
" \n",
" \n",
" 9.50 \n",
" -1.7393 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" WoE\n",
"0.00 0.0126\n",
"1.90 -0.0983\n",
"3.80 -0.4482\n",
"5.70 -1.1332\n",
"7.60 -2.4325\n",
"9.50 -1.7393"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"woe = np.log(distr_good[idx_filtered] / distr_bad[idx_filtered])\n",
"woe.to_frame(\"WoE\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" WoE \n",
" \n",
" \n",
" \n",
" \n",
" 0.00 \n",
" 0.0126 \n",
" \n",
" \n",
" 1.90 \n",
" -0.0983 \n",
" \n",
" \n",
" 3.80 \n",
" -0.4482 \n",
" \n",
" \n",
" 5.70 \n",
" -1.1332 \n",
" \n",
" \n",
" 7.60 \n",
" -2.4325 \n",
" \n",
" \n",
" 9.50 \n",
" -1.7393 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" WoE\n",
"0.00 0.0126\n",
"1.90 -0.0983\n",
"3.80 -0.4482\n",
"5.70 -1.1332\n",
"7.60 -2.4325\n",
"9.50 -1.7393"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# equivalent equation\n",
"woe = np.log(distr_good[idx_filtered]) - np.log(distr_bad[idx_filtered])\n",
"woe.to_frame(\"WoE\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Information value\n",
"\n",
"$$\\sum(P(Good) - P(Bad)) * ln(\\frac{P(Good)}{P(Bad)})$$"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.001965925751291937"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iv = ((distr_good[idx_filtered] - distr_bad[idx_filtered]) * woe).sum()\n",
"iv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plot results"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAEjCAYAAACIB/7lAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XeYVeW59/HvPTP0KlXKSB1QRASp\ngjUW0JhY4lGKgj1GPdaTxJzkvDkn5817Eo2xlwAWNJaYYvTEgooaNXQVBURkKMJQHIYyMAPDtPv9\nY60hm3Ea09bee36f69rX7HlWu5fD+Ju11rOfx9wdERGReJQSdQEiIiKVUUiJiEjcUkiJiEjcUkiJ\niEjcUkiJiEjcUkiJiEjcUkiJiEjcUkhJ0jGzDWZ2ppmdaGb5ZtaugnU+MbOb6vm4U83sq/CYfzWz\nTlWsO9zMPjKzfeHX4THLzMx+bWY7wtddZmYxy2ea2WozKzWzK8rtt4WZ3WtmW8xsl5k9YmbNYpbn\nlXuVmNmD9fnfQaQ+KaQkabn7AiAL+F5su5kNBYYAz9fXsczsWOB3wOVAd2Af8Egl6zYHXgZ+DxwB\nzAFeDtsBrgMuAI4HhgHnAd+P2cWnwA3AxxXs/k5gFDAUGAScAPysbKG7ty17hXXuB/54+Gcs0jgU\nUpLs5gDTy7VNB1519x31eJxpwP+6+/vungf8B3BRRVdxwGlAGnCfux9w9wcAA74VLp8B3OPuWe6+\nGbgHuKJsY3d/2N3nAQUV7Ps7wAPuvtPdtwMPAFdVUvPFQDbwweGdqkjjUUhJsnsGONnMjgIwsxRg\nKvB0RSub2VFmtruK19RKjnMswRUOAO6+FigkuJqpaN3P/NAxyT4L27+xr/D9sdSMha/Y73ubWYcK\n1p0BPO0aG03iWFrUBYg0JHffZGZ/By4D/h9wBtASeLWS9TcCHWtxqLZAbrm2XKCiK6nq1i2/PBdo\na2ZWg0B5HbjFzN4FUoGbw/bWsfsMQ/tU4Opq9icSKV1JSVMQe8vvcuA5dy+q52PkAe3LtbUH9tZi\n3fLL2wN5Nbzi+SXwCbAMmA/8FSgiuK0Xazrwobuvr8E+RSKjkJKm4C9ALzM7HbiISm71wcHbfeV7\nwMW+plWy6UqCjg5l++kPtAC+rGTdYbE99gg6SKysaF/h+5XUgLvvd/eb3L2Xu/cHdgAfuXtJuVWn\n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\nIfV1eKuO8GvZv9gsID1mvd7Almrae1fQXtUxRCQil45Op0/n1tz1xmpKS3U1JQ2vtiH1ClDWQ28G\n8HJM+/Swl984IDe8VTcXONvMjgg7TJwNzA2X7TWzcWGvvunl9lXRMUQkIs1SU7jj7MF8sW0vr3y6\npfoNROqoJl3QnwcWAIPNLMuPcYcbAAAXUUlEQVTMrgZ+BZxlZmuAs8LvAV4D1gGZwCzgBgB33wn8\nN7AkfP0ibAP4ATA73GYt8HrYXtkxRCRC5x3XgyE92nPPW6spLNbEiNKwLNkegLZp08bz8/MPe7vn\nP2ncCd6mjOhd/Uoiceq91dlc8eQSfnH+sUw/sW/U5Ug9MLN97t4m6jrK04gTInLYTh3UlbH9OvHA\nvEzyD6hHrTQchZSIHDYz40eTjiYn7wBP/mN91OUknew9BRSV6FYqKKREpJZG9jmCs4Z053d/X8eu\n/MKoy0kaWbv2cdGj8/nZS9VOtdQkKKREpNZ+OHEweYXFPPr3tVGXkhQ2797PlFkL2bO/iGnjjoq6\nnLigkBKRWhvUvR0XjejNU/M3sDV3f9TlJLTNu/czeeYCdu8r4vfXjGVY745RlxQXFFIiUie3npkB\nDve/rYkRa2vL7v1MmbkwCKirFVCxFFIiUifpnVozbdxRvLh0E5nZeVGXk3C27N7P5JkL2ZVfyDNX\nj+X4dAVULIWUiNTZjacPpFWzVH77lqbyOBxbc4NnULvyC3nmmrEMV0B9g0JKROqsS9sWXHNyf15b\nvo1PN+2OupyEsDU3uILamVfI01ePUUBVQiElIvXimpP70alNc+7WxIjV2pZbwJSZC9mRV8icq8cw\n4ihNPF4ZhZSI1It2LZtx4+kD+TAzhw/X5ERdTtzallvAlFkLyQmvoE5QQFVJISUi9Wba2KPo1bEV\nd83VxIgV+XpPEFDZewqYc5UCqiYUUiJSb1o2S+XWMzP4LCuXN1Zsi7qcuPL1nuAWX/aeAp6+egwj\n+yigakIhJSL16qITepPRrS13v7maYo0/BwRj8U2ZuZCvwyuokX06RV1SwlBIiUi9Sk0x/m3iYNZt\nz+fPHzfuFDjxKHtPAZNnLWTbngKeumoMo/oqoA6HQkpE6t3ZQ7ozPL0j9729hoKikqjLiUz23uAZ\n1Lbc4ApqtALqsCmkRKTemRk/nnQ0W3MLeGbBV1GXE4nsvcEtvq25BTx1pQKqthRSItIgThzQmZMz\n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\nLYWUiIjErf8PUGdGmMdaZJ0AAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax01 = s_all[idx_filtered].plot(kind=\"bar\", colormap=\"Paired\")\n",
"ax01.set_xlabel(\"CNT_CHILDREN\")\n",
"\n",
"# \n",
"ax02 = ax01.twinx() # instantiate a second axes that shares the same x-axis\n",
"woe.to_frame(\"WoE\").plot(kind=\"line\", ax=ax02, legend=True)\n",
"\n",
"# \n",
"plt.title(\"IV = {0:.5f}\".format(iv))\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Putting all together"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"def calc_woe_and_iv(pdf_input, attr_name, n_bins=10, wanna_plot=False):\n",
" # find bounded range\n",
" min_x = pdf_data[attr_name].min()\n",
" max_x = pdf_data[attr_name].max()\n",
" print(\"Min: {}, Max: {}\".format(min_x, max_x))\n",
" \n",
" # extracting histogram \n",
" hist_all = np.histogram(pdf_data[attr_name], range=(min_x, max_x), bins=n_bins)\n",
" hist_good = np.histogram(pdf_data.query(\"TARGET == 0\")[attr_name], range=(min_x, max_x), bins=n_bins)\n",
" hist_bad = np.histogram(pdf_data.query(\"TARGET == 1\")[attr_name], range=(min_x, max_x), bins=n_bins)\n",
" \n",
" # get total number of good and bad for normalization\n",
" total_good = hist_good[0].sum()\n",
" total_bad = hist_bad[0].sum()\n",
" print(\"Num good: {}, Num bad: {}\".format(total_good, total_bad))\n",
" \n",
" # convert histogram to series\n",
" s_all = pd.Series(dict(zip(hist_all[1], hist_all[0])))\n",
" s_all.rename(lambda x: \"{0:.2f}\".format(x), inplace=True)\n",
" \n",
" s_good = pd.Series(dict(zip(hist_good[1], hist_good[0])))\n",
" s_good.rename(lambda x: \"{0:.2f}\".format(x), inplace=True)\n",
" \n",
" s_bad = pd.Series(dict(zip(hist_bad[1], hist_bad[0])))\n",
" s_bad.rename(lambda x: \"{0:.2f}\".format(x), inplace=True)\n",
" \n",
" # calculate distribution of good/bad\n",
" distr_good = s_good / total_good\n",
" distr_bad = s_bad / total_bad\n",
" \n",
" # getting denominator indices not equal zeros\n",
" idx_filtered = distr_bad[(distr_bad != 0) & (np.isfinite(distr_bad) & (distr_bad > 1e-04))].index\n",
" \n",
" # calculate woe\n",
" woe = np.log(distr_good[idx_filtered]) - np.log(distr_bad[idx_filtered])\n",
" \n",
" # calculate iv\n",
" iv = ((distr_good[idx_filtered] - distr_bad[idx_filtered]) * woe).sum()\n",
" \n",
" # plot (optional)\n",
" if wanna_plot:\n",
" ax01 = s_all[idx_filtered].plot(kind=\"bar\", colormap=\"Paired\")\n",
" ax01.set_xlabel(attr_name)\n",
"\n",
" # \n",
" ax02 = ax01.twinx() # instantiate a second axes that shares the same x-axis\n",
" woe.to_frame(\"WoE\").plot(kind=\"line\", ax=ax02, legend=True)\n",
"\n",
" # \n",
" plt.title(\"IV = {0:.5f}\".format(iv))\n",
" plt.legend(loc=\"best\")\n",
" plt.show()\n",
" \n",
" return woe, iv"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Min: 0, Max: 19\n",
"Num good: 282686, Num bad: 24825\n",
"-- WoE\n"
]
},
{
"data": {
"text/plain": [
"0.00 0.0126\n",
"1.90 -0.0983\n",
"3.80 -0.4482\n",
"5.70 -1.1332\n",
"dtype: float64"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"-- IV: 0.0017294067355007603\n"
]
}
],
"source": [
"woe, iv = calc_woe_and_iv(pdf_data, \"CNT_CHILDREN\", n_bins=10, wanna_plot=False)\n",
"print(\"-- WoE\")\n",
"display(woe)\n",
"\n",
"print(\"-- IV: {}\".format(iv))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Min: 0, Max: 19\n",
"Num good: 282686, Num bad: 24825\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"-- WoE\n"
]
},
{
"data": {
"text/plain": [
"0.00 0.0126\n",
"1.90 -0.0983\n",
"3.80 -0.4482\n",
"5.70 -1.1332\n",
"dtype: float64"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"-- IV: 0.0017294067355007603\n"
]
}
],
"source": [
"woe, iv = calc_woe_and_iv(pdf_data, \"CNT_CHILDREN\", n_bins=10, wanna_plot=True)\n",
"print(\"-- WoE\")\n",
"display(woe)\n",
"\n",
"print(\"-- IV: {}\".format(iv))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Min: 45000.0, Max: 4050000.0\n",
"Num good: 282686, Num bad: 24825\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"-- WoE\n"
]
},
{
"data": {
"text/plain": [
"45000.00 -0.0752\n",
"846000.00 0.2666\n",
"1647000.00 0.6945\n",
"2448000.00 0.8739\n",
"dtype: float64"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"-- IV: 0.02523866785994027\n"
]
}
],
"source": [
"woe, iv = calc_woe_and_iv(pdf_data, \"AMT_CREDIT\", n_bins=5, wanna_plot=True)\n",
"print(\"-- WoE\")\n",
"display(woe)\n",
"\n",
"print(\"-- IV: {}\".format(iv))"
]
}
],
"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.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}