{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Drop Features with High PSI Value\n", "\n", "The **DropHighPSIFeatures** selects features based on the Population Stability Index (PSI). The higher this value, the more unstable a feature. Unstable in this case means that there is a significant change in the distribution of the feature in the groups being compared.\n", "\n", "To determine the PSI of a feature, the DropHighPSIFeatures takes a dataframe and splits it in 2 based on a reference variable. This reference variable can be numerical, categorical or date. If the variable is numerical, the split ensures a certain proportion of observations in each sub-dataframe. If the variable is categorical, we can split the data based on the categories. And if the variable is a date, we can split the data based on dates.\n", "\n", "**In this notebook, we showcase many possible ways in which the DropHighPSIFeatures can be used to select features based on their PSI value.**\n", "\n", "### Dataset\n", "\n", "We use the Credit Approval data set from the UCI Machine Learning Repository.\n", "\n", "To download the Credit Approval dataset from the UCI Machine Learning Repository visit [this website](http://archive.ics.uci.edu/ml/machine-learning-databases/credit-screening/) and click on crx.data to download data. Save crx.data to the parent folder to this notebook folder.\n", "\n", "**Citation:**\n", "\n", "Dua, D. and Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.\n", "\n", "# Data preparation\n", "\n", "We will edit some of the original variables and add some additional features to simulate different scenarios." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from datetime import date\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "from sklearn.model_selection import train_test_split\n", "\n", "from feature_engine.selection import DropHighPSIFeatures" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load the data" ] }, { "cell_type": "code", "execution_count": 2, "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", "
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16
0b30.830.000ugwv1.25tt1fg202.001
1a58.674.460ugqh3.04tt6fg43.05601
2a24.500.500ugqh1.50tf0fg280.08241
3b27.831.540ugwv3.75tt5tg100.031
4b20.175.625ugwv1.71tf0fs120.001
\n", "
" ], "text/plain": [ " A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16\n", "0 b 30.83 0.000 u g w v 1.25 t t 1 f g 202.0 0 1\n", "1 a 58.67 4.460 u g q h 3.04 t t 6 f g 43.0 560 1\n", "2 a 24.50 0.500 u g q h 1.50 t f 0 f g 280.0 824 1\n", "3 b 27.83 1.540 u g w v 3.75 t t 5 t g 100.0 3 1\n", "4 b 20.17 5.625 u g w v 1.71 t f 0 f s 120.0 0 1" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load data\n", "data = pd.read_csv('../crx.data', header=None)\n", "\n", "# add variable names according to UCI Machine Learning\n", "# Repo information\n", "data.columns = ['A'+str(s) for s in range(1,17)]\n", "\n", "# replace ? by np.nan\n", "data = data.replace('?', np.nan)\n", "\n", "# re-cast some variables to the correct types \n", "data['A2'] = data['A2'].astype('float')\n", "data['A14'] = data['A14'].astype('float')\n", "\n", "# encode target as binary\n", "data['A16'] = data['A16'].map({'+':1, '-':0})\n", "\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Edit and add features" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# simulate customers from different portfolios.\n", "data['A13'] = data['A13'].map({'g':'portfolio_1', 's':'portfolio_2', 'p':'portfolio_3'})\n", "data['A13'].fillna('Unknown', inplace=True)\n", "\n", "# simulate customers from different channels\n", "data['A12'] = data['A12'].map({'f':'wholesale', 't':'retail'})\n", "data['A12'].fillna('Missing', inplace=True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# simulate customers from different age groups\n", "\n", "data['A6'].fillna('Missing', inplace=True)\n", "\n", "labels = {\n", "'w': '20-25',\n", "'q': '25-30',\n", "'m': '30-35',\n", "'r': '35-40',\n", "'cc': '40-45',\n", "'k': '45-50',\n", "'c': '50-55',\n", "'d': '55-60',\n", "'x': '60-65',\n", "'i': '65-70',\n", "'e': '70-75',\n", "'aa': '75-80',\n", "'ff': '85-90',\n", "'j': 'Unknown',\n", "'Missing': 'Missing',\n", "}\n", " \n", "data['A6'] = data['A6'].map(labels)" ] }, { "cell_type": "code", "execution_count": 5, "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", "
A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16date
0b30.830.000ug20-25v1.25tt1wholesaleportfolio_1202.0012018-01-01
1a58.674.460ug25-30h3.04tt6wholesaleportfolio_143.056012018-01-02
2a24.500.500ug25-30h1.50tf0wholesaleportfolio_1280.082412018-01-03
3b27.831.540ug20-25v3.75tt5retailportfolio_1100.0312018-01-04
4b20.175.625ug20-25v1.71tf0wholesaleportfolio_2120.0012018-01-05
\n", "
" ], "text/plain": [ " A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 \\\n", "0 b 30.83 0.000 u g 20-25 v 1.25 t t 1 wholesale portfolio_1 \n", "1 a 58.67 4.460 u g 25-30 h 3.04 t t 6 wholesale portfolio_1 \n", "2 a 24.50 0.500 u g 25-30 h 1.50 t f 0 wholesale portfolio_1 \n", "3 b 27.83 1.540 u g 20-25 v 3.75 t t 5 retail portfolio_1 \n", "4 b 20.17 5.625 u g 20-25 v 1.71 t f 0 wholesale portfolio_2 \n", "\n", " A14 A15 A16 date \n", "0 202.0 0 1 2018-01-01 \n", "1 43.0 560 1 2018-01-02 \n", "2 280.0 824 1 2018-01-03 \n", "3 100.0 3 1 2018-01-04 \n", "4 120.0 0 1 2018-01-05 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# add a datetime variable\n", "\n", "data['date'] = pd.date_range(start='1/1/2018', periods=len(data))\n", "\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Analysis\n", "\n", "We will plot the distributions of numerical and categorical variables." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A1', 'A4', 'A5', 'A6', 'A7', 'A9', 'A10', 'A12', 'A13']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# categorical variables\n", "\n", "vars_cat = data.select_dtypes(include='O').columns.to_list()\n", "\n", "vars_cat" ] }, { "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" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAELCAYAAADURYGZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAATrElEQVR4nO3df5BdZ33f8fcHGRkwGCfxkoIlLEGUaTWBJHSR6YQ2JIGJXGPJAUMll9pQJoKkAlKnTEXbcRkndLCZkMFYLSgEhyaoQjhDssQCJUOgDCF2tAYHkDwiirCx1LpejPGPNmDLfPvHvSLX6/1xVt5zr3bP+zVzR/d5znPPfnd2tJ895znnOakqJEnd9aRRFyBJGi2DQJI6ziCQpI4zCCSp4wwCSeo4g0CSOs4gkKSOMwikU5Tkc0nuS3LmQN87kzyS5KGB1/NGWac0H4NAOgVJ1gD/FChg07TNH6uqpw+8jg69QGkBDALp1FwO3Az8HnDFaEuRnhiDQDo1lwMf7b9+McmPDmy7OMm3kxxM8iujKU9qziCQFijJS4Hzgb1VdSvwt8Bl/c17gX8EjAG/DFyVZOtICpUaMgikhbsC+NOq+la/vbvfR1Udqqr/VVWPVtUXgfcBl46oTqmRM0ZdgLSUJHkq8FpgRZK7+91nAuck+cmq+utpHykgw6xRWiiDQFqYS4BHgRcADw/07wUuT/J54PPAd4AXA28F/sNwS5QWxiCQFuYK4Iaq+uZgZ5LrgeuA5wAfpneUcAy4pqo+MvQqpQWID6aRpG5zsliSOs4gkKSOMwgkqeMMAknqOINAkjpuyV0+eu6559aaNWtGXYYkLSm33nrrt6pqbKZtSy4I1qxZw+Tk5KjLkKQlJcmds23z1JAkdZxBIEkdZxBIUscZBJLUcQaBJHWcQSBJHWcQSFLHGQSS1HFL7oayYVuz46ZRl9CqO9590ahLkDRiHhFIUscZBJLUcQaBJHWcQSBJHWcQSFLHGQSS1HEGgSR1nEEgSR1nEEhSxxkEktRxBoEkdZxBIEkd12oQJNmY5HCSI0l2zLD9t5Pc1n99Pcl32qxHkvR4ra0+mmQFsBN4BXAMOJBkoqoOnRxTVf92YPxbgJ9uqx5J0szaPCLYABypqqNV9TCwB9g8x/itwP9osR5J0gzaDILzgLsG2sf6fY+T5HxgLfDns2zflmQyyeTU1NSiFypJXXa6TBZvAW6sqkdn2lhVu6pqvKrGx8bGhlyaJC1vbQbBcWD1QHtVv28mW/C0kCSNRJtBcABYl2RtkpX0ftlPTB+U5B8CPwT8ZYu1SJJm0VoQVNUJYDuwH7gd2FtVB5NcnWTTwNAtwJ6qqrZqkSTNrtWH11fVPmDftL6rprXf2WYNkqS5nS6TxZKkETEIJKnjDAJJ6jiDQJI6ziCQpI4zCCSp4wwCSeo4g0CSOs4gkKSOMwgkqeMMAknqOINAkjrOIJCkjjMIJKnjDAJJ6jiDQJI6ziCQpI4zCCSp41oNgiQbkxxOciTJjlnGvDbJoSQHk+xusx5J0uO19sziJCuAncArgGPAgSQTVXVoYMw64B3Az1TVfUme1VY9kqSZtXlEsAE4UlVHq+phYA+wedqYXwZ2VtV9AFV1T4v1SJJm0GYQnAfcNdA+1u8b9OPAjyf5iyQ3J9k4046SbEsymWRyamqqpXIlqZtGPVl8BrAOeBmwFfidJOdMH1RVu6pqvKrGx8bGhluhJC1zbQbBcWD1QHtVv2/QMWCiqh6pqm8AX6cXDJKkIWkzCA4A65KsTbIS2AJMTBvzR/SOBkhyLr1TRUdbrEmSNE1rQVBVJ4DtwH7gdmBvVR1McnWSTf1h+4F7kxwCPgu8varubasmSdLjtXb5KEBV7QP2Teu7auB9AVf2X5KkERj1ZLEkacQMAknqOINAkjrOIJCkjjMIJKnjDAJJ6jiDQJI6ziCQpI4zCCSp4wwCSeo4g0CSOs4gkKSOW1AQJHlSkrPbKkaSNHzzBkGS3UnOTnIW8DXgUJK3t1+aJGkYmhwRrK+qB4BLgE8Ba4F/1WZRkqThaRIET07yZHpBMFFVjwDValWSpKFpEgQfBO4AzgI+n+R84IE2i5IkDc+8TyirquuA6wa67kzyc+2VJEkapnmDIMmZwKuBNdPGX93gsxuB9wErgA9V1bunbX898B7geL/r+qr6UJPCJUmLo8kzi/8YuB+4Ffhe0x0nWQHsBF4BHAMOJJmoqkPThn6sqrY33a8kaXE1CYJVVbXxFPa9AThSVUcBkuwBNgPTg0CSNEJNJou/mOQFp7Dv84C7BtrH+n3TvTrJV5LcmGT1KXwdSdIT0CQIXgrcmuRw/xf2V5N8ZZG+/ieBNVX1QuDPgI/MNCjJtiSTSSanpqYW6UtLkqDZqaELT3Hfx4HBv/BX8feTwgBU1b0DzQ8B1860o6raBewCGB8f9x4GSVpE8x4RVNWdwDnAxf3XOf2++RwA1iVZm2QlsAWYGByQ5NkDzU3A7Q3rliQtkiZrDb0N+CjwrP7rD5K8Zb7PVdUJYDuwn94v+L1VdTDJ1Uk29Ye9NcnBJH8NvBV4/al9G5KkU9Xk1NAbgQuq6v8CJLkG+Evg/fN9sKr2Afum9V018P4dwDsWUrAkaXE1mSwO8OhA+9F+nyRpGWhyRHADcEuST/TblwC/21pFkqSharLW0HuTfI7eZaQAb6iqL7dalSRpaGYNgiRnV9UDSX6Y3uqjdwxs++Gq+nb75UmS2jbXEcFu4JX01hgavHY//fbzWqxLkjQkswZBVb2y/+/a4ZUjSRq2JvcRfKZJnyRpaZprjuApwNOAc5P8EH9/yejZzLx4nCRpCZprjuBNwK8Bz6E3T3AyCB4Arm+3LEnSsMw1R/A+4H1J3lJV895FLElamprcR/D+JD8BrAeeMtD/39ssTJI0HE2eWfyfgZfRC4J99Jal/gJgEEjSMtBkraFLgV8A7q6qNwA/CTyz1aokSUPTJAj+rqq+D5xIcjZwD4994IwkaQlrsujcZJJzgN+hd/XQQ/SWoZYkLQNNJot/tf/2A0k+DZxdVYv1zGJJ0og1ubN4IsllSc6qqjsMAUlaXprMEfwWvSWoDyW5Mcml/buOJUnLQJOH1//P/umh5wEfBF5Lb8J4Xkk2Jjmc5EiSHXOMe3WSSjLetHBJ0uJockRAkqcCrwbeDLwY+EiDz6wAdtK772A9sDXJ+hnGPQN4G3BL87IlSYulyRzBXuB24OfprTH0/Kp6S4N9bwCOVNXRqnoY2ANsnmHcbwDXAN9tXLUkadHMGQRJngTcRu+X/5ur6rP9ewqaOA+4a6B9jGmrliZ5EbC6qm5qXrIkaTHNGQT9X/qvqapHF/sL90PmvcCvNxi7LclkksmpqanFLkWSOq3JHMFn+pO5mX/oYxznsXcgr+r3nfQM4CeAzyW5A3gJMDHThHFV7aqq8aoaHxsbW2AZkqS5NAmCNwEfBx5O8kCSB5M80OBzB4B1SdYmWQlsASZObqyq+6vq3KpaU1VrgJuBTVU1ufBvQ5J0qprcWfyMU9lxVZ1Ish3YD6wAPlxVB5NcDUxW1cTce5AkDUOTZagD/EtgbVX9RpLVwLOr6q/m+2xV7aO3dPVg31WzjH1Zo4olSYuqyamh/wr8E+CyfvshevcHSJKWgSarj15QVS9K8mWAqrqvf85fkrQMNDkieKR/l3ABJBkDmt5LIEk6zTUJguuATwDPSvIueo+p/C+tViVJGpomVw19NMmt9B5XGeCSqrq99cokSUPRZK2h5wPfqKqdwNeAV/SfWCZJWgaanBr6Q+DRJD9Gbxnq1cDuVquSJA1NkyD4flWdAF4FXF9Vbwee3W5ZkqRhaXrV0FbgcuBP+n1Pbq8kSdIwNQmCN9C7oexdVfWNJGuB32+3LEnSsDR5VOUh4N8BB5O8ADheVde0XpkkaSiarDV0EfAB4G/pXT66NsmbqupTbRcnSWpfkyUmfgv4uao6Aj+4nPQmwCCQpGWgyRzBgydDoO8o8GBL9UiShmzWI4Ikr+q/nUyyD9hLb72h19B76IwkaRmY69TQxQPv/w/ws/33U8BTWqtIkjRUswZBVb1hmIVIkkajyVpDq5J8Isk9/dcfJlk1jOIkSe1rMll8A72Hzj+n//pkv0+StAw0CYKxqrqhqk70X78HjDXZeZKNSQ4nOZJkxwzb35zkq0luS/KFJOsXWL8k6QlqEgT3JnldkhX91+uAe+f7UP+pZjuBC4H1wNYZftHvrqoXVNVPAdcC711Y+ZKkJ6pJEPxr4LXA3cD/Bi6lt/7QfDYAR6rqaFU9DOwBNg8OqKoHBppn0X8cpiRpeJo8oexOYNMp7Ps84K6B9jHggumDkvwb4EpgJfDzM+0oyTZgG8Bzn/vcUyhFkjSbJkcEraqqnVX1fODfA/9pljG7qmq8qsbHxhpNT0iSGmozCI7Te5rZSav6fbPZA1zSYj2SpBm0GQQHgHVJ1iZZCWyhdxnqDyRZN9C8CPibFuuRJM2gcRAkeUmSTyf5XJJL5hvff7zldmA/cDuwt6oOJrk6yck5h+1JDia5jd48wRUL/g4kSU/IXIvO/YOqunug60rgl+g9k+AW4I/m23lV7QP2Teu7auD92xZYryRpkc111dAHknwJuLaqvgt8h96lo98HHpjjc5KkJWTWU0NVdQnwZeBPklwO/BpwJvAjOKkrScvGnHMEVfVJ4BeBZwKfAL5eVddV1dQwipMktW/WIEiyKclngU8DXwP+BbA5yZ7+4yolScvAXHMEv0lvmYinAvuragPw6/1LPt9F73JQSdISN1cQ3A+8CngacM/Jzqr6GwwBSVo25poj+CV6E8NnAJcNpxxJ0rDN9ajKbwHvH2ItkqQRGPmic5Kk0TIIJKnjDAJJ6rh5H0wjLWVrdtw06hJac8e7Lxp1CVomPCKQpI4zCCSp4wwCSeo4g0CSOs4gkKSOMwgkqeNaDYIkG5McTnIkyY4Ztl+Z5FCSryT5TJLz26xHkvR4rQVBkhXATuBCYD2wNcn6acO+DIxX1QuBG4Fr26pHkjSzNo8INgBHqupoVT0M7AE2Dw6oqs9W1f/rN28GVrVYjyRpBm0GwXnAXQPtY/2+2bwR+NRMG5JsSzKZZHJqyqdkStJiOi0mi5O8DhgH3jPT9qraVVXjVTU+NjY23OIkaZlrc62h48Dqgfaqft9jJHk58B+Bn62q77VYjyRpBm0eERwA1iVZm2QlvcdbTgwOSPLTwAeBTVV1zwz7kCS1rLUgqKoTwHZgP3A7sLeqDia5Osmm/rD3AE8HPp7ktiQTs+xOktSSVpehrqp9wL5pfVcNvH95m19fkjS/02KyWJI0OgaBJHWcQSBJHWcQSFLHGQSS1HEGgSR1nEEgSR1nEEhSxxkEktRxBoEkdZxBIEkdZxBIUscZBJLUcQaBJHWcQSBJHWcQSFLHGQSS1HEGgSR1XKtBkGRjksNJjiTZMcP2f5bkS0lOJLm0zVokSTNrLQiSrAB2AhcC64GtSdZPG/ZN4PXA7rbqkCTNrc2H128AjlTVUYAke4DNwKGTA6rqjv6277dYhyRpDm2eGjoPuGugfazfJ0k6jSyJyeIk25JMJpmcmpoadTmStKy0GQTHgdUD7VX9vgWrql1VNV5V42NjY4tSnCSpp80gOACsS7I2yUpgCzDR4teTJJ2C1oKgqk4A24H9wO3A3qo6mOTqJJsAkrw4yTHgNcAHkxxsqx5J0szavGqIqtoH7JvWd9XA+wP0ThlJkkZkSUwWS5LaYxBIUscZBJLUcQaBJHWcQSBJHWcQSFLHGQSS1HEGgSR1nEEgSR1nEEhSxxkEktRxBoEkdZxBIEkdZxBIUscZBJLUcQaBJHWcQSBJHWcQSFLHGQSS1HGtBkGSjUkOJzmSZMcM289M8rH+9luSrGmzHknS47UWBElWADuBC4H1wNYk66cNeyNwX1X9GPDbwDVt1SNJmtkZLe57A3Ckqo4CJNkDbAYODYzZDLyz//5G4PokqapqsS5JS8CaHTeNuoRW3fHui0Zdwg+0GQTnAXcNtI8BF8w2pqpOJLkf+BHgW4ODkmwDtvWbDyU53ErFp4dzmfb9tykegy0mf3ZL23L/+Z0/24Y2g2DRVNUuYNeo6xiGJJNVNT7qOrRw/uyWti7//NqcLD4OrB5or+r3zTgmyRnAM4F7W6xJkjRNm0FwAFiXZG2SlcAWYGLamAngiv77S4E/d35AkoartVND/XP+24H9wArgw1V1MMnVwGRVTQC/C/x+kiPAt+mFRdd14hTYMuXPbmnr7M8v/gEuSd3mncWS1HEGgSR1nEEgSR23JO4jWM6SXDlD9/3ArVV125DL0QIleQrwq8BLgQK+APy3qvruSAuTFsDJ4hFLshsYBz7Z73ol8BVgDfDxqrp2RKWpgSR7gQeBP+h3XQacU1WvGV1VairJV+kF+KD7gUngN6uqE/c1GQQjluTzwD+vqof67acDNwEb6R0VTF+oT6eRJIem/4xm6tPpKcm1wKPA7n7XFuBpwN3AS6vq4lHVNkyeGhq9ZwHfG2g/AvxoVf1dku/N8hmdPr6U5CVVdTNAkgvo/TWppeHlVfWigfZXk3ypql6U5HUjq2rIDILR+yhwS5I/7rcvBnYnOYvHrtSq09M/Br6Y5Jv99nOBwydPOVTVC0dXmhpYkWRDVf0VQJIN9G6ABTgxurKGy1NDp4Ek48DP9Jt/UVX+RblEJJl1RUeAqrpzWLVo4fr/924Ant7vepDec1IOARdV1d5R1TZMBoGkzhq4ai/9f4sOXrVnEEjqrIGr9ibohUEnr9ozCCR1llft9XhnsaQum/WqvWn9y5pXDUnqMq/aw1NDkjrOq/YMAknqPOcIJKnjDAJJ6jiDQJI6ziCQpI4zCCSp4/4/Jw9fOQd0Yy0AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEtCAYAAAAfjIc8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAppElEQVR4nO3df7xcVX3v/9ebBOJPQCAqEiBR8LZRlEoItCogVAxVfgkIEeXHVdFStF57rem1RaXqA3q/akVRoYKAiohYSiwBtFXw+gNIgAgESo0BIRE1AgL+AgPv7x9rHZwMJ8nsmdnJOTnv5+Mxj7Nn7b0/s2bOnvM5e6+115JtIiIierXJhq5ARESML0kcERHRSBJHREQ0ksQRERGNJHFEREQjSRwREdFIEkdERDSSxBGxnki6StL9kqZ0lb9E0rcl/UrSzyT99YaqY0Qvkjgi1gNJ04GXAwYO6ijfBrgCOBPYGtgJ+PoGqGJEz5Q7xyPaJ+lk4FXAtcDzbb+mln8Y2N72Gzdk/SKayBlHxPpxDPDF+niVpGfV8j2B+yR9T9LPJX1N0g4brJYRPUjiiGiZpJcBOwIX2b4e+BHw+rp6GnAs8NfADsAdwJc2RD0jepXEEdG+Y4Gv2/5FfX5BLQP4LXCJ7YW2fwd8APgzSVtsgHpG9GTyhq5AxMZM0pOB1wGTJP20Fk8BtpT0YuAmSoP5iDQ6xpiXxBHRrkOAR4FdgEc6yi+itHt8DviqpNOBJcA/AN+x/cB6rmdEz9KrKqJFkq4Altj+m67y1wGnU9o43gL8PfAU4DvAibbvXt91jehVEkdERDSSxvGIiGgkiSMiIhpJ4oiIiEaSOCIiopEkjoiIaGRC3MexzTbbePr06Ru6GhER48r111//C9tTu8snROKYPn06ixYt2tDViIgYVyT9eLTyXKqKiIhGkjgiIqKRJI6IiGik1cQhaY6k2yUtlTRvlPXvknSrpJsk/aekHTvWHSvph/VxbEf5bpJurjFPl6Q230NERKyutcQhaRJwBnAAMBOYK2lm12Y3ArNsvwi4GPinuu9WwPuAPYDZwPskPaPu82nKoHA718ectt5DREQ8UZtnHLOBpbaX2X4EuBA4uHMD29+y/Zv69BrKSKFQ5mb+hu37bN8PfAOYI2lbYHPb17iMzng+ZdjqiIhYT9pMHNsBnUNDL69la/Im4PJ17LtdXe41ZkREDNmYuI9D0huAWcDeQ4x5AnACwA477DCssBERE16biWMFsH3H82m1bDWS/hx4L7C37Yc79t2na9+ravm0rvInxASwfRZwFsCsWbOeMOnI9HmX9fYuqjtPfXWj7SMiNlZtXqpaCOwsaYakzYCjgPmdG0j6E+BM4CDbP+9YdSWwv6Rn1Ebx/YErbd8DPChpz9qb6hjg0hbfQ0REdGntjMP2KkknUZLAJOAc20sknQIssj0f+L/A04Cv1F61d9k+yPZ9kv6RknwATrF9X10+ETgXeDKlTeRyIiJivWm1jcP2AmBBV9nJHct/vpZ9zwHOGaV8EfDCIVYzIiIayJ3jERHRSBJHREQ0ksQRERGNJHFEREQjSRwREdFIEkdERDSSxBEREY0kcURERCNJHBER0UgSR0RENJLEERERjSRxREREI0kcERHRSBJHREQ0ksQRERGNJHFEREQjSRwREdFIq4lD0hxJt0taKmneKOv3knSDpFWSDu8of4WkxR2P30k6pK47V9IdHet2bfM9RETE6lqbOlbSJOAM4JXAcmChpPm2b+3Y7C7gOOB/d+5r+1vArjXOVsBS4Osdm7zb9sVt1T0iItaszTnHZwNLbS8DkHQhcDDweOKwfWdd99ha4hwOXG77N+1VNSIietXmpartgLs7ni+vZU0dBXypq+xDkm6S9DFJU/qtYERENDemG8clbQvsAlzZUfx3wB8BuwNbAe9Zw74nSFokadHKlStbr2tExETRZuJYAWzf8XxaLWvidcAltn8/UmD7HhcPA5+jXBJ7Attn2Z5le9bUqVMbvmxERKxJm4ljIbCzpBmSNqNccprfMMZcui5T1bMQJAk4BLhl8KpGRESvWksctlcBJ1EuM90GXGR7iaRTJB0EIGl3ScuBI4AzJS0Z2V/SdMoZy9Vdob8o6WbgZmAb4INtvYeIiHiiNntVYXsBsKCr7OSO5YWUS1ij7XsnozSm2953uLWMiIgmxnTjeEREjD1JHBER0UgSR0RENJLEERERjSRxREREI0kcERHRSBJHREQ0ksQRERGNJHFEREQjSRwREdFIEkdERDSSxBEREY0kcURERCNJHBER0UgSR0RENJLEERERjSRxREREI60mDklzJN0uaamkeaOs30vSDZJWSTq8a92jkhbXx/yO8hmSrq0xv1znM4+IiPWktcQhaRJwBnAA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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for var in vars_cat:\n", " data[var].value_counts(normalize=True).plot.bar()\n", " plt.title(var)\n", " plt.ylabel('% observations')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A2', 'A3', 'A8', 'A11', 'A14', 'A15']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# numerical variables\n", "\n", "vars_num = data.select_dtypes(exclude='O').columns.to_list()\n", "\n", "vars_num.remove('A16')\n", "\n", "vars_num.remove('date')\n", "\n", "vars_num" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEICAYAAACwDehOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAb4klEQVR4nO3dfZRcdZ3n8ffH8DBIY8LT9GYD0kFZzmGIAulB9vgw3eLwDHEVGTALAXHjnAXFJSpBhsFZh2MYJzoBZmCiMASNNOigiTwMsBwajmcmSBoCzaOE2CiZkKgJSRoiGPjuH/f2pQhVlVvVdasq3Z/XOXX61u/eW79P3equb99nRQRmZmYA72h1ADMzax8uCmZmlnFRMDOzjIuCmZllXBTMzCzjomBmZhkXBTMzy7gomNVBUr+kDZJ2LWnrlXSfpI2ShqrM+2eSQtLfNiWsWQ1cFMxqJKkL+DAQwCklo14Grge+XGXenYEFwIMFRjSrm4uCWe3OApYBNwCzRhoj4ucR8T1gVZV55wB3A08XGdCsXi4KZrU7C1icPo6V1JlnJkkHAJ8B/m+B2cxGxUXBrAaSPgQcANwSEQPAc8Cnc85+JXBpRAwXlc9stFwUzGozC7g7In6bPv8BJZuQKpF0MrBHRNxcZDiz0dqp1QHMdhSSdgNOAyZIejFt3hWYJOn9EfFoldmPBrpL5psIvC5pWkTMKC61WW1cFMzy+zjwOjANeK2k/RbgLElfBnYBdgYk6Y+ANyLiNeBSYF7JPAuA/wS+3oTcZrm5KJjlNwv4l4j4VWmjpKtJ9hfcCdxTMmoLcD/QExGbgc0l82wBXo6I9YWnNquBfJMdMzMb4R3NZmaWcVEwM7OMi4KZmWVcFMzMLLNDH320zz77RFdXV13zvvzyy+y+++6NDdQA7ZoL2jebc9XGuWozFnMNDAz8NiL2LTsyInbYx/Tp06Ne9913X93zFqldc0W0bzbnqo1z1WYs5gKWR4XvVW8+MjOzjIuCmZllXBTMzCzjomBmZhkXBTMzy7gomJlZxkXBzMwyLgpmZpYprChIul7SOkmPlxk3R1JI2id9LklXSlop6TFJRxSVy8zMKivyMhc3AFcDN5Y2StofOAYovVHJ8cBB6eMDwDXpz8IMrt7I2XNvLztuaN6JRXZtZta2CltTiIgHgHJ3lfo28BWg9O4+M4Ab0zOwl5Hc83ZyUdnMzKy8pu5TkDQDWB1vv8H5FODXJc9fSNvMzKyJCr0dp6Qu4LaIOFTSO4H7gGMiYqOkIaA7In4r6TZgXkT8LJ3vXuCiiFhe5jVnA7MBOjs7p/f19dWVbd36jazdUn7ctCkT63rNRhgeHqajo6Nl/VfTrtmcqzbOVZuxmKu3t3cgIrrLjWvmpbPfA0wFHpUEsB/wsKQjgdXA/iXT7pe2vU1ELAQWAnR3d0dPT09dYa5avIT5g+Xf/tDM+l6zEfr7+6n3PRWtXbM5V22cqzbjLVfTNh9FxGBE/HFEdEVEF8kmoiMi4kVgKXBWehTSUcDGiFjTrGxmZpYo8pDUm4D/AA6W9IKkc6tMfgewClgJfAf430XlMjOzygrbfBQRZ2xnfFfJcADnFZXFzMzy8RnNZmaWcVEwM7OMi4KZmWVcFMzMLOOiYGZmGRcFMzPLuCiYmVnGRcHMzDIuCmZmlnFRMDOzjIuCmZllXBTMzCzjomBmZhkXBTMzy7gomJlZxkXBzMwyLgpmZpZxUTAzs4yLgpmZZVwUzMws46JgZmaZwoqCpOslrZP0eEnbNyU9LekxST+WNKlk3MWSVkp6RtKxReUyM7PKilxTuAE4bpu2e4BDI+J9wC+AiwEkHQKcDvxJOs8/SZpQYDYzMyujsKIQEQ8A67dpuzsitqZPlwH7pcMzgL6IeDUifgmsBI4sKpuZmZWniCjuxaUu4LaIOLTMuJ8CN0fE9yVdDSyLiO+n464D7oyIH5WZbzYwG6Czs3N6X19fXdnWrd/I2i3lx02bMrGu12yE4eFhOjo6WtZ/Ne2azblq41y1GYu5ent7ByKiu9y4nUaVqk6SLgG2AotrnTciFgILAbq7u6Onp6euDFctXsL8wfJvf2hmfa/ZCP39/dT7norWrtmcqzbOVZvxlqvpRUHS2cBJwNHx5mrKamD/ksn2S9vMzKyJmnpIqqTjgK8Ap0TEKyWjlgKnS9pV0lTgIODnzcxmZmYFrilIugnoAfaR9AJwGcnRRrsC90iCZD/CX0bEE5JuAZ4k2ax0XkS8XlQ2MzMrr7CiEBFnlGm+rsr0lwOXF5XHzMy2z2c0m5lZxkXBzMwyLgpmZpZxUTAzs4yLgpmZZVwUzMws46JgZmYZFwUzM8u4KJiZWWa7RUHSpyTtkQ7/laRbJR1RfDQzM2u2PGsKl0bEZkkfAj5GcqmKa4qNZWZmrZCnKIxcmO5EYGFE3A7sUlwkMzNrlTxFYbWkfwb+ArhD0q455zMzsx1Mni/304C7gGMj4iVgL+DLRYYyM7PW2G5RSG+GswR4WdK7gZ2Bp4sOZmZmzbfd+ylI+jzJDXLWAm+kzQG8r8BcZmbWAnlusnMBcHBE/K7oMGZm1lp59in8GthYdBAzM2u9PGsKq4B+SbcDr440RsS3CktlZmYtkaco/Cp97ILPTzAzG9O2WxQi4m8AJHWkz4fzvLCk64GTgHURcWjathdwM9AFDAGnRcQGSQIWACcArwBnR8TDtb4ZMzMbnTzXPjpU0iPAE8ATkgYk/UmO174BOG6btrnAvRFxEHBv+hzgeOCg9DEbX0bDzKwl8uxoXghcGBEHRMQBwBzgO9ubKSIeANZv0zwDWJQOLwI+XtJ+YySWAZMkTc6RzczMGkgRUX0C6dGIeP/22irM2wXcVrL56KWImJQOC9gQEZMk3QbMi4ifpePuBS6KiOVlXnM2ydoEnZ2d0/v6+rb/LstYt34ja7eUHzdtysS6XrMRhoeH6ejoaFn/1bRrNueqjXPVZizm6u3tHYiI7nLjch19JOlS4Hvp8/9JckTSqERESKpekcrPt5Bk7YXu7u7o6empq/+rFi9h/mD5tz80s77XbIT+/n7qfU9Fa9dszlUb56rNeMuVZ/PRZ4B9gVvTx75pWz3WjmwWSn+uS9tXA/uXTLdf2mZmZk2U5+ijDcAXGtTfUmAWMC/9uaSk/XxJfcAHgI0RsaZBfZqZWU4Vi4Kkf4iIL0r6Kcm1jt4iIk6p9sKSbgJ6gH0kvUBy/aR5wC2SzgWeJ7kCK8AdJIejriQ5JPWc2t+KmZmNVrU1hZF9CH9fzwtHxBkVRh1dZtoAzqunHzMza5yKRSEiBtLBwyJiQek4SRcA9xcZzMzMmi/PjuZZZdrObnAOMzNrA9X2KZwBfBqYKmlpyag9ePtJaWZmNgZU26fw78AaYB9gfkn7ZuCxIkOZmVlrVNun8DzJEUL/vXlxzMyslfJcEO8oSQ9JGpb0mqTXJW1qRjgzM2uuPDuarwbOAJ4FdgM+C/xjkaHMzKw18hQFImIlMCEiXo+If+Htl8Q2M7MxIM8F8V6RtAuwQtLfkex8zlVMzMxsx5Lny/3MdLrzgZdJLlz3ySJDmZlZa+RZU5gO3B4Rm4C/KTiPmZm1UJ41hZOBX0j6nqSTJOUpJGZmtgPablGIiHOA9wI/JDkK6TlJ3y06mJmZNV+u//oj4g+S7iS5hPZuJPdW/myBuczMrAXynLx2vKQbSM5T+CTwXeC/FJzLzMxaIM+awpnALcDnIuLVgvOYmVkLVS0KkiYAkyPiJ82JY2ZmrVR181FEvA68IWlik/KYmVkL5dl8NAwMSrqH5OQ1ACLiC4WlMjOzlshTFG5NH2ZmNsZttyhExCJJuwHvjohnGtGppP9DckhrAIPAOcBkoA/YGxgAzoyI1xrRn5mZ5ZPnkNSTgRXAv6XPD9vm9pw1kTQF+ALQHRGHAhOA04ErgG9HxHuBDcC59fZhZmb1ybP56GvAkUA/QESskHRgA/rdTdIfgHeSXHn1oyT3hAZYlPZ7zSj7aaiuubeXbR+ad2KTk5iZFUMRUX0CaVlEHCXpkYg4PG17LCLeV3en0gXA5cAW4G7gAmBZupaApP2BO9M1iW3nnQ3MBujs7Jze19dXV4Z16zeydkv5cdOmlD/YanD1xpqmr8fw8DAdHR0Ne71GatdszlUb56rNWMzV29s7EBHd5cblWVN4QtKngQmSDiLZ9PPvdSUBJO0JzACmAi+RXFMp9017ImIhsBCgu7s7enp66spx1eIlzB8s//aHZpZ/zbMrrSlUmL4e/f391Pueitau2ZyrNs5Vm/GWK09R+DxwCfAqcBNwF/D1UfT5MeCXEfEbAEm3Ah8EJknaKSK2AvsBq0fRR1N5s5KZjRV5rpL6SkRcEhF/CnwAuCIifj+KPn8FHCXpnZIEHA08CdwHnJpOMwtYMoo+zMysDnmOPvqBpHdJ2p3k8NEnJX253g4j4kHgR8DD6eu9g2Rz0EXAhZJWkhyWel29fZiZWX3ybD46JCI2SZoJ3AnMJTmP4Jv1dhoRlwGXbdO8iuQoJzMza5E8d17bWdLOJPdQWBoRfyA56czMzMaYPEXhn4EhYHfgAUkHAJuKDGVmZq2R5zIXVwJXljQ9L6m3uEhmZtYqeXY07y3pSkkPSxqQtADwpbTNzMagPJuP+oDfkNyK89R0+OYiQ5mZWWvkOfpockSUnqz2t5L+oqhAZmbWOnmKwt2STie5TzMkawt3FRdp7PCZzma2o6lYFCRtJjn0VMAXge+no95Bcje2LxUdzszMmqtiUYiIPZoZxMzMWi/P5iMknQJ8JH3aHxG3FRfJzMxaJc8hqfNI7nfwZPq4QNI3ig5mZmbNl2dN4QTgsIh4A0DSIuAR4OIig5mZWfPlOU8BYFLJsE9cMzMbo/KsKXwDeETSfSRHIn2E5EqpVicfqmpm7SrPtY9uktQP/GnadFFEvFhoKjMza4lcRx9FxBpgacFZzMysxfLuUzAzs3HARcHMzDJVi4KkCZKeblYYMzNrrapFISJeB56R9O4m5TEzsxbKs6N5T+AJST8HXh5pjIhT6u1U0iTgu8ChJBfd+wzwDMl9GrpIbv95WkRsqLcPMzOrXZ6icGkB/S4A/i0iTpW0C/BO4KvAvRExT9JcknMhLiqgbzMzq2C7O5oj4n6S/9x3TocfAh6ut0NJE0lOgLsuff3XIuIlYAawKJ1sEfDxevswM7P6KCKqTyD9L2A2sFdEvEfSQcC1EXF0XR1KhwELSS6u935ggOSCe6sjYlI6jYANI8+3mX92mofOzs7pfX199cRg3fqNrN1Sfty0KeWv5DG4emNdfeU1bcpEhoeH6ejoKLSferVrNueqjXPVZizm6u3tHYiI7nLj8hSFFcCRwIMRcXjaNhgR0+oJI6kbWAZ8MCIelLQA2AR8vrQISNoQEXtWe63u7u5Yvnx5PTG4avES5g+W33pW6XITlS5P0ShD806kv7+fnp6eQvupV7tmc67aOFdtxmIuSRWLQp7zFF6NiNdKXmwnkp3D9XoBeCEiHkyf/wg4AlgraXLax2Rg3Sj6MDOzOuQpCvdL+iqwm6Q/B34I/LTeDtPrJv1a0sFp09Ekm5KWArPStlnAknr7MDOz+uQ5+mgucC4wCHwOuIPkcNLR+DywOD3yaBVwDkmBukXSucDzwGmj7MPMzGqU5yqpb6Q31nmQZLPRM7G9HRHbf80VQLntWXXtvDYzs8bYblGQdCJwLfAcyf0Upkr6XETcWXQ4MzNrrjybj+YDvRGxEkDSe4DbARcFM7MxJs+O5s0jBSG1CthcUB4zM2uhimsKkj6RDi6XdAdwC8k+hU+RnNVsZmZjTLXNRyeXDK8F/iwd/g2wW2GJzMysZSoWhYg4p5lBzMys9fIcfTSV5LyCrtLpR3PpbDMza095jj76CckVTX8KvFFoGjMza6k8ReH3EXFl4UnMzKzl8hSFBZIuA+4GXh1pjIi676lgZmbtKU9RmAacCXyUNzcfRfrczMzGkDxF4VPAgaWXzzYzs7EpzxnNjwOTCs5hZmZtIM+awiTgaUkP8dZ9Cj4k1cxsjMlTFC4rPIWZmbWFPPdTuL8ZQczMrPXynNG8mTfvybwLsDPwckS8q8hg9qauubeXbR+ad2KTk5jZWJdnTWGPkWFJAmYARxUZyszMWiPP0UeZSPwEOLaYOGZm1kp5Nh99ouTpO0jurfz7whKZmVnL5Dn6qPS+CluBIZJNSKMiaQKwHFgdESelV2PtA/YGBoAzfcKcmVlz5dmnUNR9FS4AngJGdlhfAXw7IvokXQucC1xTUN9mZlZGtdtx/nWV+SIivl5vp5L2A04ELgcuTHdgfxT4dDrJIuBruCiYmTWVIqL8CGlOmebdSf6D3zsiOuruVPoR8A1gD+BLwNnAsoh4bzp+f+DOiDi0zLyzgdkAnZ2d0/v6+urKsG79RtZuKT9u2pSJZdsHV2+sq6+8pk2ZyPDwMB0db120lfqtlLMo5bK1A+eqjXPVZizm6u3tHYiI7nLjqt2Oc/7IsKQ9SDb3nEOy3X9+pfm2R9JJwLqIGJDUU+v8EbEQWAjQ3d0dPT01vwQAVy1ewvzB8m9/aGb51zy7wvkCjTI0s4f+/n62fU+V+q2UsyjlsrUD56qNc9VmvOWquk9B0l7AhcBMkk06R0TEhlH2+UHgFEknAH9Esk9hATBJ0k4RsRXYD1g9yn7MzKxG1fYpfBP4BMl/5dMiYrgRHUbExcDFaR89wJciYqakHwKnkqyJzAKWNKK/HUnX3NuZM21r4WskZmaVVDt5bQ7wX4G/Av5T0qb0sVnSpgKyXESy03klyWGp1xXQh5mZVVFtn0JNZzvXIyL6gf50eBVwZNF9mplZZYV/8ZuZ2Y7DRcHMzDIuCmZmlnFRMDOzjIuCmZllXBTMzCyT59LZ1qZ8m04zazSvKZiZWcZFwczMMi4KZmaWcVEwM7OMdzSXUWkHrpnZWOc1BTMzy3hNYQzyoapmVi+vKZiZWcZFwczMMi4KZmaWcVEwM7OMi4KZmWVcFMzMLNP0oiBpf0n3SXpS0hOSLkjb95J0j6Rn0597Njubmdl414o1ha3AnIg4BDgKOE/SIcBc4N6IOAi4N31uZmZN1PST1yJiDbAmHd4s6SlgCjAD6EknWwT0Axc1O99Y5pPazGx7WrpPQVIXcDjwINCZFgyAF4HOVuUyMxuvFBGt6VjqAO4HLo+IWyW9FBGTSsZviIi37VeQNBuYDdDZ2Tm9r6+vrv7Xrd/I2i11zVqozt1oeq5pUybmmm54eJiOjo6C09TOuWrjXLUZi7l6e3sHIqK73LiWXPtI0s7AvwKLI+LWtHmtpMkRsUbSZGBduXkjYiGwEKC7uzt6enrqynDV4iXMH2y/Sz/Nmba16bmGZvbkmq6/v596l3eRnKs2zlWb8ZarFUcfCbgOeCoivlUyaikwKx2eBSxpdjYzs/GuFf8qfxA4ExiUtCJt+yowD7hF0rnA88BpLchmZjauteLoo58BqjD66GZmMTOzt/IZzWZmlnFRMDOzjIuCmZllXBTMzCzjomBmZpn2O3vLms7XRDKzEV5TMDOzjIuCmZllXBTMzCzjfQpW0bb7GuZM28rZaZv3N5iNTV5TMDOzjIuCmZllXBTMzCzjomBmZhkXBTMzy/joI6uLz4I2G5u8pmBmZhkXBTMzy7gomJlZxvsUrKG8r8Fsx+Y1BTMzy7TdmoKk44AFwATguxExr8WRrAUqrXGUM2faVnqKi2I2rrRVUZA0AfhH4M+BF4CHJC2NiCdbm8xGq5Yv+Ua+fqXNVo2avpobjtu95nlq4U1140Olz7mo369223x0JLAyIlZFxGtAHzCjxZnMzMYNRUSrM2QknQocFxGfTZ+fCXwgIs4vmWY2MDt9ejDwTJ3d7QP8dhRxi9KuuaB9szlXbZyrNmMx1wERsW+5EW21+SiPiFgILBzt60haHhHdDYjUUO2aC9o3m3PVxrlqM95ytdvmo9XA/iXP90vbzMysCdqtKDwEHCRpqqRdgNOBpS3OZGY2brTV5qOI2CrpfOAukkNSr4+IJwrqbtSboArSrrmgfbM5V22cqzbjKldb7Wg2M7PWarfNR2Zm1kIuCmZmlhmXRUHScZKekbRS0twm972/pPskPSnpCUkXpO1fk7Ra0or0cULJPBenWZ+RdGyB2YYkDab9L0/b9pJ0j6Rn0597pu2SdGWa6zFJRxSU6eCSZbJC0iZJX2zF8pJ0vaR1kh4vaat5+UialU7/rKRZBeX6pqSn075/LGlS2t4laUvJcru2ZJ7p6ee/Ms2uAnLV/Lk1+u+1Qq6bSzINSVqRtjdzeVX6bmju71hEjKsHyQ7s54ADgV2AR4FDmtj/ZOCIdHgP4BfAIcDXgC+Vmf6QNOOuwNQ0+4SCsg0B+2zT9nfA3HR4LnBFOnwCcCcg4CjgwSZ9di8CB7RieQEfAY4AHq93+QB7AavSn3umw3sWkOsYYKd0+IqSXF2l023zOj9PsyrNfnwBuWr63Ir4ey2Xa5vx84G/bsHyqvTd0NTfsfG4ptDSS2lExJqIeDgd3gw8BUypMssMoC8iXo2IXwIrSd5Ds8wAFqXDi4CPl7TfGIllwCRJkwvOcjTwXEQ8X2WawpZXRDwArC/TXy3L51jgnohYHxEbgHuA4xqdKyLujoit6dNlJOf8VJRme1dELIvkm+XGkvfSsFxVVPrcGv73Wi1X+t/+acBN1V6joOVV6buhqb9j47EoTAF+XfL8Bap/KRdGUhdwOPBg2nR+uhp4/cgqIs3NG8DdkgaUXE4EoDMi1qTDLwKdLcg14nTe+sfa6uUFtS+fViy3z5D8RzliqqRHJN0v6cNp25Q0SzNy1fK5NXt5fRhYGxHPlrQ1fXlt893Q1N+x8VgU2oKkDuBfgS9GxCbgGuA9wGHAGpJV2Gb7UEQcARwPnCfpI6Uj0/+IWnIMs5KTGU8Bfpg2tcPyeotWLp9KJF0CbAUWp01rgHdHxOHAhcAPJL2riZHa7nPbxhm89R+Ppi+vMt8NmWb8jo3HotDyS2lI2pnkQ18cEbcCRMTaiHg9It4AvsObmzyaljciVqc/1wE/TjOsHdkslP5c1+xcqeOBhyNibZqx5csrVevyaVo+SWcDJwEz0y8T0s0zv0uHB0i21/+3NEPpJqZCctXxuTVzee0EfAK4uSRvU5dXue8Gmvw7Nh6LQksvpZFus7wOeCoivlXSXro9/n8AI0dGLAVOl7SrpKnAQSQ7uBqda3dJe4wMk+yofDztf+TohVnAkpJcZ6VHQBwFbCxZxS3CW/6Da/XyKlHr8rkLOEbSnummk2PStoZScrOqrwCnRMQrJe37KrlvCZIOJFk+q9JsmyQdlf6OnlXyXhqZq9bPrZl/rx8Dno6IbLNQM5dXpe8Gmv07Npq95Tvqg2Sv/S9Iqv4lTe77QySrf48BK9LHCcD3gMG0fSkwuWSeS9KszzDKIxyq5DqQ5MiOR4EnRpYLsDdwL/As8P+AvdJ2kdwQ6bk0d3eBy2x34HfAxJK2pi8vkqK0BvgDyXbac+tZPiTb+Femj3MKyrWSZLvyyO/Ytem0n0w/3xXAw8DJJa/TTfIl/RxwNekVDxqcq+bPrdF/r+Vype03AH+5zbTNXF6Vvhua+jvmy1yYmVlmPG4+MjOzClwUzMws46JgZmYZFwUzM8u4KJiZWcZFwczMMi4KZmaW+f9f1UTDN/u5YAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for var in vars_num:\n", " data[var].hist(bins=50)\n", " plt.title(var)\n", " plt.ylabel('Number observations')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# PSI feature selection\n", "\n", "## Split data based on proportions\n", "\n", "DropHighPSIFeatures splits the dataset in 2, a base dataset and a comparison dataset. The comparison dataset is compared against the base dataset to determine the PSI.\n", "\n", "We may want to divide the dataset just based on **proportion of observations**. We want to have, say, 60% of observations in the base dataset. We can use the **dataframe index** to guide the split.\n", "\n", "**NOTE** that for the split, the transformer orders the variable, here the index, and then smaller values of the variable will be in the base dataset, and bigger values of the variable will go to the test dataset. In other words, this is not a random split." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# First, we split the data into a train and a test set\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " data[vars_cat+vars_num],\n", " data['A16'],\n", " test_size=0.1,\n", " random_state=42,\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Now we set up the DropHighPSIFeatures\n", "# to split based on fraction of observations\n", "\n", "transformer = DropHighPSIFeatures(\n", " split_frac=0.6, # the proportion of obs in the base dataset\n", " split_col=None, # If None, it uses the index\n", " strategy = 'equal_frequency', # whether to create the bins of equal frequency\n", " threshold=0.1, # the PSI threshold to drop variables\n", " variables=vars_num, # the variables to analyse\n", " missing_values='ignore',\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DropHighPSIFeatures(missing_values='ignore', split_frac=0.6, threshold=0.1,\n", " variables=['A2', 'A3', 'A8', 'A11', 'A14', 'A15'])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now we fit the transformer to the train set.\n", "\n", "# Here, the transformer will split the data, \n", "# determine the PSI of each feature and identify\n", "# those that will be removed.\n", "\n", "transformer.fit(X_train)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "415.0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the value in the index that determines the separation\n", "# into base and comparison datasets. \n", "\n", "# Observations whose index value is smaller than \n", "# the cut_off will be in the base dataset. \n", "# The remaining ones in the test data.\n", "\n", "transformer.cut_off_" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.1" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the PSI threshold above which variables \n", "# will be removed.\n", "\n", "# We can change this when we initialize the transformer\n", "\n", "transformer.threshold" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'A2': 0.0787531730176423,\n", " 'A3': 0.08032153261330531,\n", " 'A8': 0.1919536825616741,\n", " 'A11': 0.04766182980880748,\n", " 'A14': 0.10382066854104179,\n", " 'A15': 0.020778411016241834}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# During fit() the transformer determines the PSI\n", "# values for each variable and stores it.\n", "\n", "transformer.psi_values_" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A8', 'A14']" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The variables that will be dropped:\n", "# those whose PSI is biggher than the threshold.\n", "\n", "transformer.features_to_drop_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand what the DropHighPSIFeatures is doing, let's split the train set manually, in the same what that the transformer is doing. Then, let's plot the distribution of the variables in each of the sub-dataframes." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A8 - moderate PSI')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAfOklEQVR4nO3de7hVdZ3H8ffHw0EcEC8IXkCBTJ9EMaqjaFD6jOOtSY9NpaLlJRPnKZsuYzOmM0oOXcwZayy70BjewEs6Kiml1XgpUxSUIiGVNPQgIjcFNBH0O3+stXGzOZd9Lmvf1uf1PPs5e6+19t6/xX5Yn/X7/dbvtxQRmJlZfm1T7QKYmVl1OQjMzHLOQWBmlnMOAjOznHMQmJnlnIPAzCznHARmvSRpiqTrq10Os55yEFhVSbpP0hpJ25Ys31bSDyUtl7Ra0s8kDa9WOatF0uGS2nr5/rckrZe0TtKTks4sWn+WpD+l65ZLmi1p+3Td1ZKm9sV+WG1zEFjVSBoFfAAI4PiS1Z8HDgUOBPYA1gDfrWT5sqZEJf4PvhARg4DBwL8CP5Y0RtJhwNeBSRGxPbAfcFMFymM1xkFg1XQa8DBwNXB6ybrRwN0RsTwiXic5QO3f0y9Kax5TJf0uPTv+maQhkmZIWivp0TSYCtu/P132Svr3/UXrRku6Pz2L/iWwS8l3HZJ+z8uSfi/p8JJyfE3Sg8BrwDsknSlpUfp5z0g6J912IPBzYI+0zOsl7SFpG0nnS/qzpFWSbpa0c1f/BpG4nSRUxwAHAQ9FxOPp+tURcU1ErOvhP7PVKQeBVdNpwIz0cbSkXYvWXQVMSA98fwOcSnJQ7I2TgU8Cw4G9gYeA6cDOwCLgYoD0oHoXcAUwBLgcuEvSkPRzZgLzSALgPygKsbT56i5gavq55wG3ShpaVI5PApOB7YElwEvAh0nO2M8Evi3pvRHxKnAs6Rl9+ngB+BxwAnAYb9eWruxq59MA+QiwI7AAmEPy7/5VSRNKm+csPxwEVhWSJgIjgZsjYh7wZ+CUok2eBp4HlgJrSZotLunl106PiD9HxCskofLniPhVRGwCfgq8J93u74GnI+K6iNgUETcAfwKOk7QXyZn0v0fEhoh4APhZ0Xd8ApgdEbMj4q2I+CUwF/hQ0TZXR8QT6WdvjIi70nJFRNwP3EPSZNaRfwQujIi2iNgATAE+JqlfB9vvIellYCVJ2H0yIp6MiN8A/wC8lyS8Vkm6XFJT1/+U1kgcBFYtpwP3RMTK9PVMtmweuhLYluSMfCDwv3RQI5B0QVHTyQ87+c7lRc//2s7rQenzPUjO1IstIalJ7AGsSc/Wi9cVjAQ+njYLvZwegCcCuxdt83xJ+Y+V9HDaKf4ySWhs0dxUYiRwW9HnLwLeBHbtYPsXImLHiNg5IsZFxI2FFRHx84g4jqT20gqcAXy6k++2BtTRGYRZZiRtB5wINEl6MV28LbCjpHdHxO+BcSRnvavT93wXuETSLkXhAUBEfJ2k07OvvEBysC22F/ALYBmwk6SBRWGwF0mHNyQH+esi4uxOPn/zlL9pc8ytJM1kd0TERkm3AyrdtsjzwKci4sHyd6lzEfEW8GtJ/wcc0Fefa/XBNQKrhhNIzmDHkBzwx5E0/fyG5IAI8ChwmqQdJDUDnyE5s11Z+mEZmA3sK+kUSf0knZSW9c6IWELS1PNVSf3TJq7jit57PUkT0tGSmiQNSC/hHNHBd/UnCcEVwCZJxwJHFa1fDgyRtEPRsh8CX5M0EkDSUEmt3d1JSa2STpa0U3oF08Ek/Q4Pd/ezrL45CKwaTidpr38uIl4sPIDvAaembd3nAa+T9BWsIGku+UglChcRq0g6b/8ZWAX8C/DhohA6BRgPrCZpc7+26L3PkzSxXJCW+3ngy3Twfy29QuefgJtJOn1PAWYVrf8TcAPwTNoUtAfw3+k290haR3LgHt+DXV0DnE3yb7yWJMQui4gZPfgsq2PyjWnMzPLNNQIzs5zLLAgk/UTSS5L+2MF6SbpC0mJJf5D03qzKYmZmHcuyRnA1cEwn648F9kkfk4EfZFgWMzPrQGZBkA60Wd3JJq3AtekgmodJLh3cvZPtzcwsA9UcRzCcLQfWtKXLlpVuKGkySa2BgQMHvu9d73pXRQpo+fHMimRIwDuGDqxySerMayvhtTXVLkU+vLEe+g+CXfbp0dvnzZu3MiKGtreuLgaURcQ0YBpAS0tLzJ07t8olsizNnPMcd8xfWtHv3LBsLWN2H8xN5xyazRfMnQ4Lbsnms6tpydPJ35ETq1uOvBj7MWg5s+vt2iGpdLT8ZtUMgqXAnkWvR6TLrM719kA+59mkRXH86C4n1OwzY3YfTOu4DG93sOAWeHEB7DY2u++ohpETe3VwstpQzSCYBZwr6UaSwTCvRMRWzUJWPwoB0NsD+fjRO9M6bjinjN+rL4uXjXLP9AshcOZd2ZfJrJsyCwJJNwCHA7soucPSxUAzQET8kGQY/4eAxSTzsvuUooaVc5ZfHAB1cyDvrXLP9Hcbm5w5m9WgzIIgIiZ1sT6Az2b1/dZz7R30yznLz1UAFGoCPtOveRs3bqStrY3XX3+92kWpiAEDBjBixAiam5vLfk9ddBZbZd0xfykL087Tglwe5Duz5LfJ30IbudWstrY2tt9+e0aNGoWkrt9QxyKCVatW0dbWxujRo8t+n4PAgC1rAQuzvoKmlrR30C8+yHfEnaR14/XXX89FCABIYsiQIaxYsaJb73MQ5Fx7HbyZX0GTte5cqtneQd8H+YaThxAo6Mm+OghyrtAMVLdNPz09oy/wQd/MQZAXHV31U5PNQD6jtwbT1NTE2LFvX1l2++23M2rUqHa3HTRoEOvXr69QyRIOggbUnat+arIZqDuDr3zQtzqw3XbbMX/+/GoXo0MOggYzc85zXHDbAmDLg35NNv10dObvSzKtwa1fv57W1lbWrFnDxo0bmTp1Kq2tW95tdNmyZZx00kmsXbuWTZs28YMf/IAPfOAD3HPPPVx88cVs2LCBvffem+nTpzNo0KBelcdB0ACKawCFM/+vf2Rs9Q/6XTXxdNSW78FXlpGv/uwJFr6wtk8/c8weg7n4uP073eavf/0r48aNA2D06NH89Kc/5bbbbmPw4MGsXLmSQw45hOOPP36Ljt6ZM2dy9NFHc+GFF/Lmm2/y2muvsXLlSqZOncqvfvUrBg4cyKWXXsrll1/ORRdd1Kt9cBDUudIaQM2c+c+dDnd+IXneUaetm3UsJ0qbhjZu3MgFF1zAAw88wDbbbMPSpUtZvnw5u+222+ZtDjroID71qU+xceNGTjjhBMaNG8f999/PwoULmTBhAgBvvPEGhx7a+/49B0EdqtkaQEFxCHz4Oz7QW83o6sy9UmbMmMGKFSuYN28ezc3NjBo1aquRzx/84Ad54IEHuOuuuzjjjDP40pe+xE477cSRRx7JDTfc0Kfl8T2L60yhBlDc+VtTIQBvNwc5BMza9corrzBs2DCam5u59957WbJk6xmilyxZwq677srZZ5/Npz/9aR577DEOOeQQHnzwQRYvXgzAq6++ylNPPdXr8rhGUONKrwCquRpAe/0ALy5Imn0cAmbtOvXUUznuuOMYO3YsLS0ttHezrfvuu4/LLruM5uZmBg0axLXXXsvQoUO5+uqrmTRpEhs2bABg6tSp7Lvvvr0qj5K53+pH3m5Mc9KPHtpq3p+a6QNYcEvHHb5u+7casWjRIvbbb79qF6Oi2ttnSfMioqW97V0jqEE1Oe9P6Zl/6aRrPuib1S0HQY1orwO4avP+lDNtgwPArGE4CKqsvUnfqn4JaHsje33gN2tYDoIqq/qkbx119npkr1luOAhqQFX7ANo7+/fIXrNccRDkic/+zawdDoK86GjKB5/9m2Vq1apVHHHEEQC8+OKLNDU1MXToUAAeeeQR+vfvX83iAQ6Cxld6vb9H+5pV1JAhQzbPMzRlyhQGDRrEeeedt3n9pk2b6NevuodiB0EVtDdOIDOFPgBf9WNWM8444wwGDBjA448/zoQJExg8ePAWAXHAAQdw5513MmrUKK6//nquuOIK3njjDcaPH8/3v/99mpqa+rQ8DoIKK50tNNNxAnOnJzWBkRPdB2AG8PPzkxOjvrTbWDj2m91+W1tbG7/73e9oampiypQp7W6zaNEibrrpJh588EGam5v5zGc+w4wZMzjttNN6WegtOQgqpHS8QKZzBZU2B7kPwKzmfPzjH+/yzP7Xv/418+bN46CDDgKS+xoMGzasz8viIKiQio4XcHOQWft6cOaelYEDB25+3q9fP956663NrwtTUkcEp59+Ot/4xjcyLYuDIGOFmkBF5gwq1AR8SahZXRk1ahR33nknAI899hjPPvssAEcccQStra188YtfZNiwYaxevZp169YxcuTIPv1+348gY8UhkOmcQYXLQ5f81peEmtWZj370o6xevZr999+f733ve5unlR4zZgxTp07lqKOO4sADD+TII49k2bJlff79noY6Yyf96CGA7GsCviOYWbs8DXXC01BXQWmTUGYcAmbWSw6CDJReIpppk5BvC2lmveQgyEBhsFjFbifp20KadSoikFTtYlRET5r73VmckfGjd67+7STNjAEDBrBq1aoeHSDrTUSwatUqBgwY0K33uUZgZg1txIgRtLW1sWLFimoXpSIGDBjAiBEjuvUeB0EfmznnOeY8u5rxo3eudlHMDGhubmb06NHVLkZNc9NQHyv0D1T8PsNmZj2UaY1A0jHAfwNNwP9ExDdL1u8FXAPsmG5zfkTMzrJMWSquDWTS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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot the variables distribution\n", "# in each of the dataset portions\n", "\n", "# create series to flag if an observation belongs to\n", "# the base or test dataframe.\n", "\n", "# Note how we use the cut_off identified by the\n", "# transformer:\n", "tmp = X_train.index <= transformer.cut_off_\n", "\n", "# plot\n", "sns.ecdfplot(data=X_train, x='A8', hue=tmp)\n", "plt.title('A8 - moderate PSI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We observe a difference in the cumulative distribution of A8 between dataframes." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A2 - low PSI')" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# For comparison, let's plot a variable with low PSI\n", "\n", "sns.ecdfplot(data=X_train, x='A2', hue=tmp)\n", "plt.title('A2 - low PSI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the cumulative distribution of A8 is different in both datasets and this is why it is flagged for removal. On the other hand, the cumulative distribution of A2 is not different in the sub-datasets.\n", "\n", "Now we can go ahead and drop the features from the train and test sets. We use the transform() method." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 15), (69, 15))" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print shape before dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 13), (69, 13))" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = transformer.transform(X_train)\n", "X_test = transformer.transform(X_test)\n", "\n", "# print shape **after** dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The datasets have now 2 variables less, those that had higher PSI values.\n", "\n", "## Split data based on categorical values\n", "\n", "In the previous example, we sorted the observations based on a numerical variable, the index, and then we assigned the top 60% of the observations to the base dataframe. \n", "\n", "Now, we will sort the observations based on a categorical variable, and assign the top 50% to the base dataframe.\n", "\n", "**Note** when splitting based on categorical variables the proportions achieved after the split may not match exactly the one specified.\n", "\n", "### When is this split useful?\n", "\n", "This way of splitting the data is useful when, for example, we have a variable with the customer's ID. The ID's normally increase in time, with smaller values corresponding to older customers and bigger ID values corresponding to newly acquired customers.\n", "\n", "**Our example**\n", "\n", "In our data, we have customers from different age groups. We want to know if the variable distribution in younger age groups differ from older age groups. This is a suitable case to split based on a categorical value without specifically specifying the cut_off.\n", "\n", "The transformer will sort the categories of the variable and then those with smaller category values will be in the base dataframe, and the remaining in the comparison dataset." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# First, we split the data into a train and a test set\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " data[vars_cat+vars_num],\n", " data['A16'],\n", " test_size=0.1,\n", " random_state=42,\n", ")" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# Now, we set up the transformer\n", "\n", "# Note that if we do not specify which variables to analyse, \n", "# the transformer will find the numerical variables automatically\n", "\n", "transformer = DropHighPSIFeatures(\n", " split_frac=0.5, # percentage of observations in base df\n", " split_col='A6', # the categorical variable with the age groups\n", " strategy = 'equal_frequency',\n", " bins=8, # the number of bins into which the observations should be sorted\n", " threshold=0.1,\n", " variables=None, # When None, finds numerical variables automatically\n", " missing_values='ignore',\n", ")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DropHighPSIFeatures(bins=8, missing_values='ignore', split_col='A6',\n", " threshold=0.1)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now we fit the transformer to the train set.\n", "\n", "# Here, the transformer will split the data, \n", "# determine the PSI of each feature and identify\n", "# those that will be removed.\n", "\n", "transformer.fit(X_train)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A2', 'A3', 'A8', 'A11', 'A14', 'A15']" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The transformer identified the numerical variables\n", "\n", "transformer.variables_" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'45-50'" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the age group under which observations will be\n", "# in the base df.\n", "\n", "transformer.cut_off_" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'A2': 0.060149328444548275,\n", " 'A3': 0.05206367411063228,\n", " 'A8': 0.07629885478413174,\n", " 'A11': 0.04522021624909011,\n", " 'A14': 0.09440327935837141,\n", " 'A15': 0.028555653550966335}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The PSI values determined for each feature\n", "\n", "transformer.psi_values_" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The variables that will be dropped.\n", "\n", "transformer.features_to_drop_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is no significant shift in the distribution of the variables between younger and older customers. Thus, no variables will be dropped.\n", "\n", "To understand what the DropHighPSIFeatures is doing, let's split the train set manually, in the same what that the transformer is doing. Then, let's plot the distribution of the variables in each of the sub-dataframes." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A8 - low PSI')" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgMElEQVR4nO3deZxU9Znv8c9j0whhkVUxINImOqalDaOtDQOjXhGXiYoGFcGJYFSSSUxMMskrRnMNOtxEszheJyaRGcWVFkNGIUqio6LghiwSic3VEBFoBGRxawyy+Nw/zqmmurqqu7q7Ttdyvu/Xq15dZ6mq51hynvrt5u6IiEh8HZDvAEREJL+UCEREYk6JQEQk5pQIRERiTolARCTmlAhERGJOiUCkjczsGTO7It9xiOSKEoGUjPAG/a6ZHZiy/0Az+42ZbTGzHWb2ezMbnK84W2NmU81sn5k1mNkHZrbSzM5OOn6tma0Nj9eb2ZykY0pS0mZKBFISzGwY8I+AA+emHL4aGAUcC3waeBf4j86Mrx1edPeeQB/gTuAhM+trZlOALwGnhcergafyF6aUAiUCKRWXAi8BdwNTUo5VAI+7+xZ33wXMAY7JxYea2QFm9kMzW2dm75jZvWZ2UHjsHjP71/D5YDNzM/t6uP2ZsHTS4r9Bd/8EuAvoDnwGOCG8lr+Gxze7+8xcXIvElxKBlIpLgQfCxxlmdkjSsTuB0Wb2aTP7FHAJ8Iccfe7U8PG/gCOAnsAvw2PPAqeEz08G3gROStpeHN7oMzKzLsAVQAPwF4Jkd6mZfc/Mqs2sLEfXITGmRCBFz8zGAIcDD7n7cuCvwOSkU/4CbAA2Ah8AnwNuzNHHXwLc4u5vunsD8APg4vAG/iwwJvzVfxLwU2B0+LqTw+OZjDSz94DNwCTgfHd/393vB74BnBG+/h0z+36OrkViSolASsEU4Al33xZuz6Zp9dDtwIFAf6AH8N9kKBGEDbEN4eM3WXz2p4F1SdvrgC7AIWH1zU5gBEH7xaPA22b2d7SeCF5y9z7uPsDdR7r7k4kD7v6Au59G0H7wVeDfzOyMLGIVSUuJQIqamXUHLgJONrPNZrYZ+DbweTP7fHjaCOBud9/h7h8TNBSfaGYDUt/P3X/s7j3Dx1ezCOFtgtJIwlBgL7Al3H4WuADo6u4bw+0pQF9gZduutlmse9z9t8CrwPCOvJfEmxKBFLvzgH1AJcENfwRB1c9ignYDgKUE9eoHmVk58DXg7aQSREfUAt82swoz6wn8GJjj7nvD488CVwGLwu1nwu3n3H1fWz8s7Fr6BTPrFTZUn0XQ8L2koxci8aVEIMVuCjDL3deHPWg2u/tmggbbS8K6+u8CuwjaCrYC/wScn6PPvwu4j+BGvzb8nG8kHX8W6MX+RPAc8Kmk7bb6ALgWWA+8R9Du8C/u/lw7308E08I0IiLxphKBiEjMRZYIzOyucIDNnzMcNzO7zczWmNmrZnZcVLGIiEhmUZYI7gbObOH4WcCR4WMa8OsIYxERkQwiSwTuvgjY0cIp44F7PfAS0MfMDo0qHhERSa9LHj97MMFoz4T6cN+m1BPNbBpBqYEePXocf/TRR3dKgCKt+mgbfPRu+1+/uwG69oQBR+Yupk60Y+du3vtoT77DiIWdu/fSo2sXjhjYo12vX758+TZ3H5juWD4TQdbCSbVmAlRXV/uyZcvyHJFIaNYXYPMqGFTV4mmz36tk3gcZbvY9BkKvQREEF71ta3fQG6ip6JfvUGJh/IjBTK4Z2q7Xmtm6TMfymQg2AoclbQ8J94kUl0FVcNljAMxesp55K5v/b7xkS1BLWmo3zJqKfh26OUlhyGcimA9cZWYPAjXA++7erFpIpBDNfqiWeas/hN2nQdcecMeLACxZm/6GrxumFLLIEoGZ1RJMwTvAzOqBHwHlAO7+G2ABwQjPNcBHwGVRxSIxs2wWrJrbppe0WHWTxpK/DQZ6U9N9Y1C1E9INX4pRZInA3Se1ctyBr0f1+RIT6W7668LZFg4f0+rLEwkguLET3NizUNN9I+M/14vJF01rU7jS+fbs2UN9fT27du3Kdyidolu3bgwZMoTy8vKsX1MUjcUSL5nq2dPavGd/9UyCjQ9+pe9uvQE2ue4++CX/hfaELAWsvr6eXr16MWzYMMws3+FEyt3Zvn079fX1VFRUZP06JQIpOPNWbqRu0wdUHto7/QkfboadW4Pnu3cGSaCVXjuZqCqn9O3atSsWSQDAzOjfvz9bt25t0+uUCCQybfpln6SufhuVXTYxp+u89Cc0pFT9VF0A1aPaGaXEQRySQEJ7rlWJQHIukQCa9KBJ/hXfisq97zPeX8h8wuFjwpu/+heI5IISgeTcvMXLqdvh1HTfxvjef2Fy17rmv+Jboxu9FJlHHnmE888/n9WrV5OY/WD9+vVcccUVbNiwATNjwYIFDBs2LL+BpqFEIO3SUrVP3Q6n0tYxZ+iT+3fqV7yUuNraWsaMGUNtbS033HADAJdeeinXXXcd48aNo6GhgQMOKMyZ/5UIJCupN/7Gap8Bu5tV+VTaTsYPeLtxtK1IqWtoaOC5555j4cKFnHPOOdxwww3U1dWxd+9exo0bB0DPnj3zHGVmSgSSldSePI29ber+BfakmWun6oI8RCmSH/PmzePMM8/kqKOOon///ixfvpwNGzbQp08fvvjFL7J27VpOO+00brrpJsrKyvIdbjNKBNJMumqftD156tg/4Zp+/UuM1dbWcvXVVwNw8cUXU1tby8iRI1m8eDGvvPIKQ4cOZeLEidx9991cfvnleY62OSWCmEt30282X86Hm6ncuyZ9T55BVfr1L7G2Y8cOnn76aVatWoWZsW/fPsyMCRMmMGLECI444ggAzjvvPF566SUlAik86QZv1QzYzfiyF4LePhD0+DkQOPtWNfaKpJg7dy5f+tKXuOOOOxr3nXzyyezevZv33nuPrVu3MnDgQJ5++mmqq6vzGGlmSgQxkamXTyIJzDn+/+2fsyfR1bNP2NVTPX5EMqqtreX73/9+k30TJkzgwQcf5Oc//zljx47F3Tn++OO58sor8xRly5QISlzawV1JKnt+xPiPnoRHZwY7Dh+jG79IGyxcuLDZvm9+85uNz1999dXODKddlAhKXKLqJ+OcOokVtnTzF4ktJYISlFwN1Fj185WkuXiSp25Wrx+R2FMiKAEZB3tV9KPy0N6MHxHMtd+YAJLn61evH5HYUyIoARkHe9UMDW/+M4I+/8kJQNVAIhJSIihys5esZ8naHdRU9Gta/QNBEnj0W8FzNQKLSAZKBEUuUSXUWP0DzauA1P9fRFqgRFACair6Ne0NtGquegKJFJCysjKqqvbPx/XII49knI66Z8+eNDQ0dFJkASWCUqWeQCIFo3v37qxcuTLfYWRUmJNjS4tmL1nPxDteZOIdL1K36YOmB5fN2l8lJCIFqaGhgbFjx3LcccdRVVXFvHnNl2XdtGkTJ510EiNGjGD48OEsXrwYgCeeeIJRo0Zx3HHHceGFF+ak9KASQZFI7iKatntoaruAuoSKNHPD71+j7u0PWj+xDSo/3ZsfnXNMi+f87W9/Y8SIEQBUVFTw29/+locffpjevXuzbds2Ro4cybnnnttkveHZs2dzxhlncN1117Fv3z4++ugjtm3bxowZM3jyySfp0aMHN998M7fccgvXX399h65BiaBIJHcRTTtKeJbaBUQKVWrV0J49e7j22mtZtGgRBxxwABs3bmTLli0MGjSo8ZwTTjiBL3/5y+zZs4fzzjuPESNG8Oyzz1JXV8fo0aMB2L17N6NGjUr9uDZTIigizUYIJySqgw4fo3YBkRa09su9szzwwANs3bqV5cuXU15ezrBhw9i1a1eTc0466SQWLVrEY489xtSpU/nOd75D3759GTduHLW1tTmNR20ERSAxViCjxHQRqg4SKQrvv/8+Bx98MOXl5SxcuJB169Y1O2fdunUccsghXHnllVxxxRWsWLGCkSNH8vzzz7NmzRoAdu7cyRtvvNHheFQiKHCzl6zn2odXASljBRKSSwOqDhIpCpdccgnnnHMOVVVVVFdXc/TRRzc755lnnuFnP/sZ5eXl9OzZk3vvvZeBAwdy9913M2nSJD7++GMAZsyYwVFHHdWheJQIClC6huEfn1/VfOZQUGlApAik9uwZMGAAL774YovnTpkyhSlTpjQ7fuqpp7J06dKcxqdEUIBabRhOpdKAiHSAEkGBarFhOFEKgP3TSIuItJMai4tJYhK55AFjmkZaRDpIJYI8S7eWcOpi8kDTmUQ1iZyI5JASQZ6lriUAtLyYjJKAiOSYEkEByNgeAJpJVEQip0SQJ4kqobTVQAkaMSxS9LZv387YsWMB2Lx5M2VlZQwcOBCAl19+ma5du+YzPCDiRGBmZwL/FygD/svdb0o5PhS4B+gTnnONuy+IMqZCkDxILNE9tAlNICdSMvr37984z9D06dPp2bMn3/3udxuP7927ly5d8vubPLJPN7My4HZgHFAPLDWz+e5el3TaD4GH3P3XZlYJLACGRRVToUg0Drc4SEzVQSIla+rUqXTr1o1XXnmF0aNH07t37yYJYvjw4Tz66KMMGzaM+++/n9tuu43du3dTU1PDr371K8rKynIaT5Rp6ERgjbu/CWBmDwLjCZZRT3AgUS9yEPB2hPHkXXJ1ULNVxVJpYRmR3PvDNcGPrFwaVAVn3dT6eSnq6+t54YUXKCsrY/r06WnPWb16NXPmzOH555+nvLycr33tazzwwANceumlHQy6qSgTwWBgQ9J2PVCTcs504Akz+wbQAzgt3RuZ2TRgGsDQoS3cPAtccptAxuog0CAxkRi48MILW/1l/9RTT7F8+XJOOOEEIFjX4OCDD855LPluLJ4E3O3uvzCzUcB9Zjbc3T9JPsndZwIzAaqrqz0PcXZYYgbRmop+TXsIpbYHHD5Gg8REotKOX+5R6dGjR+PzLl268Mkn+297iSmp3Z0pU6bwk5/8JNJYohxZvBE4LGl7SLgv2eXAQwDu/iLQDRgQYUx5k2gXaFYSSG4POPvWoDrossfULiASI8OGDWPFihUArFixgrVr1wIwduxY5s6dyzvvvAPAjh070k5Z3VFRJoKlwJFmVmFmXYGLgfkp56wHxgKY2ecIEsHWCGPKq4ztAon2AN38RWJpwoQJ7Nixg2OOOYZf/vKXjdNKV1ZWMmPGDE4//XSOPfZYxo0bx6ZNm3L++ZFVDbn7XjO7CnicoGvoXe7+mpndCCxz9/nAvwL/aWbfJmg4nuruRVn1IyLSmkyNwt27d+eJJ55Ie2zixIlMnDgxwqgibiMIxwQsSNl3fdLzOmB0lDHkS+ocQi0OHBMRySPNPhqBxICx5OUl0/YUEhEpAPnuNVSSWhwwpvUERDqdu2Nm+Q6jU7Sndl0lgohkbBhO9BJKUFdRkUh169aN7du3t+sGWWzcne3bt9OtW7c2vU4lgs6kSeREOt2QIUOor69n69aS7ZDYRLdu3RgyZEibXqNE0Jm00LxIpysvL6eioiLfYRQ0VQ11luTSgMYLiEgBUSLoLCoNiEiBUtVQ1BK9hBLTSKg0ICIFRiWCHEtMLtcokQTUO0hECpRKBDmUvPJYk8FjWltARAqYSgQ51GwgWaKBWESkgCkR5EjyegONSeDRbwUHVSUkIgVMiSBHmqw3kJwEzr5VDcQiUtCUCHKosTSQ6CqqJCAiRUCNxR2UvCB9k2mm1VVURIqESgQd1GxBejUQi0iRUYkgByoP7b1/QfpZGkEsIsVFJYJc0nxCIlKElAhyRd1FRaRIKRHkinoKiUiRUiLogGbzCqlKSESKkBqL2yHRZTSRBMb3fQvqwrYBEZEio0TQDokuozUV/Rjf9y0m1301OKC2AREpQqoaaqdEl9HJO+8PdqhtQESKlBJBGzVrFwC1DYhIUVMiaKMmk8uJiJQAJYI2aDbVtIhICVAiyFKz1ceWzYJZXwiWoRQRKWJKBFlqtvqY1iIWkRKh7qNt0GT1scScQlqLWESKnEoE7bFKM4yKSOlQImgvdRkVkRKhRCAiEnNKBCIiMRdpIjCzM83sdTNbY2bXZDjnIjOrM7PXzGx2lPGIiEhzkfUaMrMy4HZgHFAPLDWz+e5el3TOkcAPgNHu/q6ZHRxVPCIikl6UJYITgTXu/qa77wYeBMannHMlcLu7vwvg7u9EGE+7NZlfSIvTi0iJybpEYGb/AAxLfo2739vCSwYDG5K264GalHOOCt/7eaAMmO7uf0zz2dOAaQBDh3b+1A5N5hdaNSPYqa6jIlIiskoEZnYf8BlgJbAv3O1AS4kg288/EjgFGAIsMrMqd38v+SR3nwnMBKiurvYOfma7NA4mq0NdR0WkpGRbIqgGKt29LTfhjcBhSdtDwn3J6oEl7r4HWGtmbxAkhqVt+JzOkzyiWESkRGTbRvBnYFAb33spcKSZVZhZV+BiYH7KOY8QlAYwswEEVUVvtvFzItWkfUAjikWkBGVbIhgA1JnZy8DHiZ3ufm6mF7j7XjO7CnicoP7/Lnd/zcxuBJa5+/zw2OlmVkdQ5fQ9d9/ezmuJRGP7QPK6xKoWEpESkm0imN6eN3f3BcCClH3XJz134Dvho2DVVPRj8s5fBRsqDYhIickqEbj7s2Z2CHBCuOvlQu3qmSuzl6xvXKS+8tDewU6VBkSkBGXVRmBmFwEvAxcCFwFLzKykfxonJwEtSykipSzbqqHrgBMSpQAzGwg8CcyNKrB8Sl6Scs5XRgU761p+jYhIscq219ABKVVB29vw2qKjBepFJE6yLRH80cweB2rD7YmkNAKXGi1QLyJxkW1j8ffMbAIwOtw1090fji4sERHpLFnPNeTuvwN+F2EsIiKSBy0mAjN7zt3HmNmHBHMLNR4iGAbQO9LoREQkci02+Lr7mPBvL3fvnfToFaskoKmnRaSEZTuO4L5s9pWkZbPg0W8FzzWqWERKULZdQI9J3jCzLsDxuQ+nACUmmjv7Vo0qFpGS1GIiMLMfhO0Dx5rZB+HjQ2ALMK9TIiwEmlpCREpYa20EPwEOAu5NaR/o7+4/6JwQRUQkSq1WDbn7J+yfbE5EREpMtm0EK8wsFsmgyUI0IiIxkO2AshrgEjNbB+xk/ziCYyOLLE80z5CIxE22ieCMSKMoEMmzjk6uGao1ikUkFrKqGnL3dUAf4Jzw0SfcVzJmL1nPtQ+vApJKA1qjWERiINsBZVcDDwAHh4/7zewbUQbW2RJVQj8+v6rprKPqOioiJS7bqqHLgRp33wlgZjcDLwL/EVVg+aCpp0UkjrLtNWTAvqTtfeG+kqCeQiISZ9mWCGYRrFP8MEECGA/cGVlUnaxZT6Fls4L2gc2rYFBVHiMTEYletgvT3GJmzwBjCKajvszdX4kysM7WpFooOQmooVhESlzWC9OEjCARlEy1UEaDquCyx/IdhYhI5LLtNXQ9cA/QFxgAzDKzH0YZWGdR+4CIxF22JYJLgM+7+y4AM7sJWAnMiCiuTqORxCISd9n2Gnob6Ja0fSCwMffh5Ie6jYpInGVbIngfeM3M/oegjWAc8LKZ3Qbg7t+MKD4REYlYtong4fCR8EzuQxERkXzItvvoPWbWFTgq3PW6u++JLiwREeksWSUCMzuFoNfQWwRdRw8zsynuviiyyEREpFNkWzX0C+B0d38dwMyOAmopxQXsNfW0iMRMtr2GyhNJAMDd3wDKowkpj5bNgke/FTzXiGIRiYlsSwTLzey/gPvD7UuAZdGElCfJSeDsWzX1tIjERraJ4KvA14FEN9HFwK8iiShfEovQKAmISMy0WjVkZmXAn9z9Fnf/Yvj4d3f/OIvXnmlmr5vZGjO7poXzJpiZm1l1G+PvkGbTS2gRGhGJoVYTgbvvA143szYNvQ0TyO3AWUAlMMnMKtOc1wu4GljSlvfPBU0vISKSfWNxX4KRxU+Z2fzEo5XXnAiscfc33X038CDBOgap/g24GdiVddQ5pOklRCTusm0j+N/teO/BwIak7XqgJvkEMzsOOMzdHzOz72V6IzObBkwDGDo0NzftRLVQTUW/nLyfiEixajERmFk3gobizwKrgDvdfW8uPtjMDgBuAaa2dq67zwRmAlRXV3suPr9JtZDGDohIjLVWNXQPUE2QBM4iGFiWrY3AYUnbQ2g6Y2kvYDjwjJm9BYwE5ndGg3FyaWByzdD9PYY0dkBEYqi1qqFKd68CMLM7gZfb8N5LgSPNrIIgAVwMTE4cdPf3CRa5IXz/Z4Dvunvk4xPSNhKrx5CIxFRrJYLGieXaWiUUnn8V8DiwGnjI3V8zsxvN7Nw2R5pjaiQWEQm0ViL4vJl9ED43oHu4bYC7e++WXuzuC4AFKfuuz3DuKVlFLCIiOdViInD3ss4KJG/UUCwiMZftOILSpYZiEYk5JQJQQ7GIxJoSgYhIzCkRiIjEnBKBiEjMKRGIiMScEoGISMzFOxEkxhCIiMRYvBOBxhCIiMQ8EYDGEIhI7CkRiIjEXOwSQeOC9R9uVvuAiAgxTASNaxGUvRDsUPuAiMRctmsWl5Sain5M7loHfdQ+ICISuxKBiIg0pUQgIhJzSgQiIjEXz0SgHkMiIo3imQh2bg3+qseQiEhMEwFoRLGISCi+iUBERAAlAhGR2FMiEBGJOSUCEZGYUyIQEYk5JQIRkZiLVSJonIJaREQaxSoRNE5B3fsveY5ERKRwxG4a6sYpqEVEBIhZiUBERJpTIhARiTklAhGRmFMiEBGJuUgTgZmdaWavm9kaM7smzfHvmFmdmb1qZk+Z2eFRxiMiIs1FlgjMrAy4HTgLqAQmmVllymmvANXufiwwF/hpVPGIiEh6UZYITgTWuPub7r4beBAYn3yCuy9094/CzZeAIRHGIyIiaUSZCAYDG5K268N9mVwO/CHdATObZmbLzGzZ1q1bcxiiiIgURGOxmf0zUA38LN1xd5/p7tXuXj1w4MCOfZjWKxYRaSLKkcUbgcOStoeE+5ows9OA64CT3f3jCOMJaL1iEZEmoiwRLAWONLMKM+sKXAzMTz7BzP4euAM4193fiTCWprResYhIo8gSgbvvBa4CHgdWAw+5+2tmdqOZnRue9jOgJ/BbM1tpZvMzvJ2IiEQk0knn3H0BsCBl3/VJz0+L8vNFRKR1BdFY3Bm0FoGISHqxSQRai0BEJL1YrUegtQhERJqLTYlARETSUyIQEYk5JQIRkZhTIhARiTklAhGRmFMiEBGJOSUCEZGYUyIQEYk5JQIRkZiLVyLQojQiIs3EKxFoURoRkWbilQhAi9KIiKSIXyIQEZEmlAhERGJOiUBEJOaUCEREYk6JQEQk5pQIRERiTolARCTmlAhERGJOiUBEJOaUCEREYk6JQEQk5pQIRERiTolARCTmlAhERGJOiUBEJOaUCEREYk6JQEQk5pQIRERiTolARCTm4pMIPtwMu97PdxQiIgUn0kRgZmea2etmtsbMrklz/EAzmxMeX2JmwyILZufW4G/VBZF9hIhIMYosEZhZGXA7cBZQCUwys8qU0y4H3nX3zwL/DtwcVTwAdDsIqi+L9CNERIpNlCWCE4E17v6mu+8GHgTGp5wzHrgnfD4XGGtmFmFMIiKSokuE7z0Y2JC0XQ/UZDrH3fea2ftAf2Bb8klmNg2YFm42mNnr7YxpwEPTv7Kt9dOKzgBS/puVAF1T8SjF6yrFazo804EoE0HOuPtMYGZH38fMlrl7dQ5CKiileF26puJRitdVitfUkiirhjYChyVtDwn3pT3HzLoABwHbI4xJRERSRJkIlgJHmlmFmXUFLgbmp5wzH5gSPr8AeNrdPcKYREQkRWRVQ2Gd/1XA40AZcJe7v2ZmNwLL3H0+cCdwn5mtAXYQJIsodbh6qUCV4nXpmopHKV5XKV5TRqYf4CIi8RafkcUiIpKWEoGISMzFJhG0Nt1FMTKzt8xslZmtNLNl+Y6nvczsLjN7x8z+nLSvn5n9j5n9JfzbN58xtlWGa5puZhvD72ulmf1TPmNsKzM7zMwWmlmdmb1mZleH+4v9u8p0XUX9fbVFLNoIwuku3gDGEQxsWwpMcve6vAbWQWb2FlDt7kU98MXMTgIagHvdfXi476fADne/KUzcfd39+/mMsy0yXNN0oMHdf57P2NrLzA4FDnX3FWbWC1gOnAdMpbi/q0zXdRFF/H21RVxKBNlMdyF54u6LCHqNJUuefuQegn+YRSPDNRU1d9/k7ivC5x8CqwlmByj27yrTdcVGXBJBuukuSuGLduAJM1seTsNRSg5x903h883AIfkMJoeuMrNXw6qjoqpCSRbOFPz3wBJK6LtKuS4oke+rNXFJBKVqjLsfRzDD69fD6oiSEw4yLIU6zF8DnwFGAJuAX+Q1mnYys57A74BvufsHyceK+btKc10l8X1lIy6JIJvpLoqOu28M/74DPExQBVYqtoR1t4k63HfyHE+HufsWd9/n7p8A/0kRfl9mVk5ws3zA3f873F3031W66yqF7ytbcUkE2Ux3UVTMrEfYsIWZ9QBOB/7c8quKSvL0I1OAeXmMJScSN8vQ+RTZ9xVOEX8nsNrdb0k6VNTfVabrKvbvqy1i0WsIIOz6dSv7p7v4P/mNqGPM7AiCUgAEU4XMLtZrMrNa4BSCqX+3AD8CHgEeAoYC64CL3L1oGl8zXNMpBNUMDrwFfCWpbr3gmdkYYDGwCvgk3H0tQX16MX9Xma5rEkX8fbVFbBKBiIikF5eqIRERyUCJQEQk5pQIRERiTolARCTmlAhERGJOiUCknczsPDNzMzs6ad9PwxksV5vZbWEfdZGCpkQg0n6TgOfCv5jZPwCjgWOB4cAJwMl5i04kS0oEIu0QzkszBric/WttO9AN6AocCJQTDCYTKWhKBCLtMx74o7u/AWw3s+Pd/UVgIcEEZZuAx919dT6DFMmGEoFI+0wiWNeC8O8kM/ss8DmCSQ0HA6ea2T/mKT6RrHXJdwAixcbM+gGnAlVm5gTzVzlBNdBL7t4QnvcHYBTBPDYiBUslApG2uwC4z90Pd/dh7n4YsBb4FHCymXUJpzU+mWC1K5GCpkQg0naT2D/za8LvgEHAXwlmsfwT8Cd3/30nxybSZpp9VEQk5lQiEBGJOSUCEZGYUyIQEYk5JQIRkZhTIhARiTklAhGRmFMiEBGJuf8PfgVi2coInnMAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot the variables distribution\n", "# in each of the dataset portions\n", "\n", "# create series to flag if an observation belongs to\n", "# the base or comparison dataframe.\n", "\n", "# Note how we use the cut_off identified by the\n", "# transformer\n", "tmp = X_train['A6'] <= transformer.cut_off_\n", "\n", "# plot\n", "sns.ecdfplot(data=X_train, x='A8', hue=tmp)\n", "plt.title('A8 - low PSI')" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A15 - low PSI')" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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PvaxbdPsHH300Xzta19j8+bNnH766QwdOpTHHnuM2tpaRo4cCcCmTZs49thj27TWsgwFgOHdVjIhHoEhPyx1KWbWTlr6i7693H777axatYr58+dTWVnJoEGD2Lhx43Z9jjvuOB5//HHuu+8+zj33XC688EJ69+7NmDFjtrvkZ1sr72MKB3ovwcza37p169h3332prKxk1qxZLF++fIc+y5cvZ7/99uP888/n61//OgsWLGDEiBE89dRTLF26FIANGzawZMmSNq2tbPcUzMxK5eyzz+bUU09lyJAh1NTUcOihh+7Q59FHH+Waa66hsrKSHj16cOutt9KvXz9uvvlmxo8fz4cffgjAVVddxSGHHNJmtTkUzMxy1vAMob59+/L0008323fixIlMnDhxh8dPOOEE5s6d2/ZFpsp7+MjMzLbjUDAzs0zZhUI2EZ6Zme2g7EJhu4nwzMxsO2UXCgDD+25iwroppS7DzKzDKctQ8DUUzMwaV76npPqLa2bWDtasWcPo0aMBeOONN6ioqKBfv34AzJkzh65du5ayvB3kGgqSTgb+HagAfh4R32vw+EDgFqBX2ufiiLg/z5rMzNpTnz59snmPrrjiCnr06MFFF12UPb5lyxa6dOk4f5/nVomkCuAGYAxQB8yVNDMiCq9q88/AXRHxE0nVwP3AoLxqMjPrCM4991yqqqp49tlnGTlyJD179twuLA4//HDuvfdeBg0axC9/+Uuuv/56Nm3axPDhw/nxj39MRUVFbrXlGU/HAEsj4hUASXcAY4HCUAigZ3p/b+BPOdZjZuXuNxfDG4vadp0fGwKnfK/lfg3U1dXx+9//noqKCq644opG+7z44ovceeedPPXUU1RWVvKNb3yD22+/nXPOOWcXi25anqHQH3itYLkOGN6gzxXAQ5L+HugOfKaxFUmaBEwCGDhwYJsXambW3s4888wW/+J/+OGHmT9/PkcffTSQXJdh3333zbWuUg9kjQdujojvSzoWuE3S4RHxUWGniJgCTAGoqamJEtRpZp3BTvxFn5fu3btn97t06cJHH2372KufRjsimDhxIt/97nfbra48T0ldCRxQsDwgbSt0HnAXQEQ8DVQBfXOsycyswxk0aBALFiwAYMGCBbz66qsAjB49munTp/PWW28BsHbt2kan2W5LeYbCXOBgSYMldQXGATMb9FkBjAaQdBhJ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot another variable with low PSI\n", "\n", "sns.ecdfplot(data=X_train, x='A15', hue=tmp)\n", "plt.title('A15 - low PSI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see, the distributions of the variables in both dataframes is quite similar.\n", "\n", "Now, let's identify which observations were assigned to each sub-dataframe by the transformer." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['20-25', '25-30', '30-35', '40-45', '45-50', '35-40'], dtype=object)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The observations belonging to these age groups\n", "# were assigned to the base df.\n", "\n", "X_train[tmp]['A6'].unique()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The number of age groups in the base df\n", "\n", "X_train[tmp]['A6'].nunique()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4106280193236715" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Proportion of observations in the base df\n", "\n", "len(X_train[tmp]['A6']) / len(X_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we aimed for 50% of observations in the base reference, but based on this categorical variable, the closer we could get is 41%." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['60-65', '50-55', '70-75', '65-70', '75-80', '55-60', '85-90',\n", " 'Unknown', 'Missing'], dtype=object)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The observations belonging to these age groups\n", "# were assigned to the comparison df.\n", "\n", "X_train[~tmp]['A6'].unique()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The number of age groups in the comparison df\n", "\n", "X_train[~tmp]['A6'].nunique()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5893719806763285" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Proportion of observations in the comparison df\n", "\n", "len(X_train[~tmp]['A6']) / len(X_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we have more age groups in the comparison df, but these groups have fewer observations, so the proportion of observations in the base and test dfs is the closest possible to what we wanted: 50%.\n", "\n", "Now we can go ahead and drop the features from the train and test sets.\n", "\n", "In this case, we would be dropping None." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 15), (69, 15))" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print shape before dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 15), (69, 15))" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = transformer.transform(X_train)\n", "X_test = transformer.transform(X_test)\n", "\n", "# print shape **after** dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split data based on distinct values\n", "\n", "In the previous example, we split the data using a categorical variable as guide, but ultimately, the split was done based on proportion of observations.\n", "\n", "In the extreme example where 50% of our customers belong to the age group 20-25 and the remaining 50% belong to older age groups, we would have only 1 age group in the base dataframe and all the remaining in the comparison dataframe if we split as we did in our previous example. This may result in a biased comparison.\n", "\n", "If we want to ensure that we have 50% of the possible age groups in each base and comparison dataframe, we can do so with the parameter `split_distinct`." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "# First, we split the data into a train and a test set\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " data[vars_cat+vars_num],\n", " data['A16'],\n", " test_size=0.1,\n", " random_state=42,\n", ")" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "transformer = DropHighPSIFeatures(\n", " split_frac=0.5, # proportion of (unique) categories in the base df\n", " split_distinct=True, # we split based on unique categories\n", " split_col='A6', # the categorical variable guiding the split\n", " strategy = 'equal_frequency',\n", " bins=5,\n", " threshold=0.1,\n", " missing_values='ignore',\n", ")" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DropHighPSIFeatures(bins=5, missing_values='ignore', split_col='A6',\n", " split_distinct=True, threshold=0.1)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now we fit the transformer to the train set\n", "# Here, the transformer will split the data, \n", "# determine the PSI of each feature and identify\n", "# those that will be removed.\n", "\n", "transformer.fit(X_train)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'55-60'" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the age group under which, observations will be\n", "# in the base df.\n", "\n", "transformer.cut_off_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that this cut_off is different from the one we obtained previously." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'A2': 0.06851221025553841,\n", " 'A3': 0.05854546295321578,\n", " 'A8': 0.2065709907956407,\n", " 'A11': 0.06464123384006124,\n", " 'A14': 0.04151081580078244,\n", " 'A15': 0.02155244408205348}" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The PSI values determined for each feature\n", "\n", "transformer.psi_values_" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A8']" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The variables that will be dropped.\n", "\n", "transformer.features_to_drop_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand what the DropHighPSIFeatures is doing, let's split the train set manually, in the same what that the transformer is doing. Then, let's plot the distribution of the variables in each of the sub-dataframes." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A8 - high PSI')" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot the variables distribution\n", "# in each of the dataset portions\n", "\n", "# create series to flag if an observation belongs to\n", "# the base or comparison dataframe.\n", "\n", "# Note how we use the cut_off identified by the\n", "# transformer\n", "tmp = X_train['A6'] <= transformer.cut_off_\n", "\n", "# plot\n", "sns.ecdfplot(data=X_train, x='A8', hue=tmp)\n", "plt.title('A8 - high PSI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is a mild difference in the variable distribution." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A15 - low PSI')" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# For comparison, let's plot a variable with low PSI\n", "\n", "sns.ecdfplot(data=X_train, x='A15', hue=tmp)\n", "plt.title('A15 - low PSI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's identify which observations were assigned to each sub-dataframe by the transformer." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['20-25', '25-30', '30-35', '50-55', '40-45', '45-50', '55-60',\n", " '35-40'], dtype=object)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The observations belonging to these age groups\n", "# were assigned to the base df.\n", "\n", "X_train[tmp]['A6'].unique()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The number of age groups in the base df\n", "\n", "X_train[tmp]['A6'].nunique()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6473429951690821" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Proportion of observations in the base df\n", "\n", "len(X_train[tmp]['A6']) / len(X_train)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['60-65', '70-75', '65-70', '75-80', '85-90', 'Unknown', 'Missing'],\n", " dtype=object)" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The observations belonging to these age groups\n", "# were assigned to the comparison df.\n", "\n", "X_train[~tmp]['A6'].unique()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The number of age groups in the comparison df\n", "\n", "X_train[~tmp]['A6'].nunique()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3526570048309179" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Proportion of observations in the comparison df\n", "\n", "len(X_train[~tmp]['A6']) / len(X_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we have a similar proportion of age groups in the base and comparison dfs. But the proportion of observations is different.\n", "\n", "Now we can go ahead and drop the features from the train and test sets." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 15), (69, 15))" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print shape before dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 14), (69, 14))" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = transformer.transform(X_train)\n", "X_test = transformer.transform(X_test)\n", "\n", "# print shape **after** dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split based on specific categories\n", "\n", "In the previous example, the categories had an intrinsic order. What if, we want to split based on category values which do not have an intrinsic order?\n", "\n", "We can do so by specifying which category values should go to the base dataframe.\n", "\n", "This way of splitting the data is useful if we want to compare features across customers coming from different portfolios, or different sales channels." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "# First, we split the data into a train and a test set\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " data[vars_cat+vars_num],\n", " data['A16'],\n", " test_size=0.1,\n", " random_state=42,\n", ")" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "# Set up the transformer \n", "\n", "transformer = DropHighPSIFeatures(\n", " cut_off=['portfolio_2', 'portfolio_3'], # the categories that should be in the base df\n", " split_col='A13', # the categorical variable with the portfolios\n", " strategy = 'equal_width', # the intervals are equidistant\n", " bins=5, # the number of intervals into which to sort the numerical values\n", " threshold=0.1,\n", " variables=vars_num,\n", " missing_values='ignore',\n", ")" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DropHighPSIFeatures(bins=5, cut_off=['portfolio_2', 'portfolio_3'],\n", " missing_values='ignore', split_col='A13',\n", " strategy='equal_width', threshold=0.1,\n", " variables=['A2', 'A3', 'A8', 'A11', 'A14', 'A15'])" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now we fit the transformer to the train set\n", "# Here, the transformer will split the data, \n", "# determine the PSI of each feature and identify\n", "# those that will be removed.\n", "\n", "transformer.fit(X_train)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['portfolio_2', 'portfolio_3']" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We specified the cut_off, so we should see\n", "# the portfolios here\n", "\n", "transformer.cut_off_" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'A2': 0.1059045985405272,\n", " 'A3': 0.4547839756788118,\n", " 'A8': 0.2959469283080945,\n", " 'A11': 0.9635236290505808,\n", " 'A14': 0.2145456167378388,\n", " 'A15': 0.10929706991455773}" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The transformer stores the PSI values of the variables\n", "\n", "transformer.psi_values_" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A2', 'A3', 'A8', 'A11', 'A14', 'A15']" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The variables that will be dropped.\n", "\n", "transformer.features_to_drop_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like all variables will be dropped.\n", "\n", "To understand what the DropHighPSIFeatures is doing, let's split the train set manually, in the same what that the transformer is doing. Then, let's plot the distribution of the variables in each of the sub-dataframes." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A3 - high PSI')" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot the variables distribution\n", "# in each of the dataset portions\n", "\n", "# create series to flag if an observation belongs to\n", "# the base or comparison dataframe.\n", "\n", "# Note how we use the cut_off identified by the\n", "# transformer\n", "tmp = X_train['A13'].isin(transformer.cut_off_)\n", "\n", "sns.ecdfplot(data=X_train, x='A3', hue=tmp)\n", "plt.title('A3 - high PSI')" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A11 - high PSI')" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot another variable with high PSI\n", "\n", "sns.ecdfplot(data=X_train, x='A11', hue=tmp)\n", "plt.title('A11 - high PSI')" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A2 - high PSI')" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot a variable with lower PSI\n", "\n", "sns.ecdfplot(data=X_train, x='A2', hue=tmp)\n", "plt.title('A2 - high PSI')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can go ahead and drop the features from the train and test sets." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 15), (69, 15))" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print shape before dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 9), (69, 9))" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = transformer.transform(X_train)\n", "X_test = transformer.transform(X_test)\n", "\n", "# print shape **after** dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split based on Date\n", "\n", "If our data had a valid timestamp, we could want to compare the distributions before and after a time point." ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "min 2018-01-01\n", "max 2019-11-21\n", "Name: date, dtype: datetime64[ns]" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's find out which are the minimum\n", "# and maximum dates in our dataset\n", "\n", "data['date'].agg(['min', 'max'])" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "# Now, we split the data into a train and a test set\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " data[vars_cat+vars_num+['date']],\n", " data['A16'],\n", " test_size=0.1,\n", " random_state=42,\n", ")" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "# And we specify a transformer to split based\n", "# on dates\n", "\n", "transformer = DropHighPSIFeatures(\n", " cut_off = pd.to_datetime('2018-12-14'), # the cut_off date\n", " split_col='date', # the date variable\n", " strategy = 'equal_frequency',\n", " bins=8,\n", " threshold=0.1,\n", " missing_values='ignore',\n", ")" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DropHighPSIFeatures(bins=8, cut_off=Timestamp('2018-12-14 00:00:00'),\n", " missing_values='ignore', split_col='date', threshold=0.1)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Now we fit the transformer to the train set.\n", "\n", "# Here, the transformer will split the data, \n", "# determine the PSI of each feature and identify\n", "# those that will be removed.\n", "\n", "transformer.fit(X_train)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Timestamp('2018-12-14 00:00:00')" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We specified the cut_off, so we should see\n", "# our value here\n", "\n", "transformer.cut_off_" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'A2': 0.042897461606348365,\n", " 'A3': 0.12454277821334697,\n", " 'A8': 0.3103787266508977,\n", " 'A11': 0.18886985933386097,\n", " 'A14': 0.031337238449971605,\n", " 'A15': 0.05807864506797143}" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The transformer stores the PSI values of the variables\n", "\n", "transformer.psi_values_" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['A3', 'A8', 'A11']" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The variables that will be dropped.\n", "\n", "transformer.features_to_drop_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand what the DropHighPSIFeatures is doing, let's split the train set manually, in the same what that the transformer is doing. Then, let's plot the distribution of the variables in each of the sub-dataframes." ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'A3 - moderate PSI')" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot the variables distribution\n", "# in each of the dataset portions\n", "\n", "# create series to flag if an observation belongs to\n", "# the base or comparison dataframe.\n", "\n", "# Note how we use the cut_off identified by the\n", "# transformer\n", "tmp = X_train['date'] <= transformer.cut_off_\n", "\n", "# plot\n", "sns.ecdfplot(data=X_train, x='A3', hue=tmp)\n", "plt.title('A3 - moderate PSI')" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgxUlEQVR4nO3de3hU9b3v8ffXAIYGIioobBCTVjh2NIIQGq3o9ilVsUVSb0WwR7Ct2GPtabdH97HqcbNba+v2qcftrq3FKl5KFEuPhKqtVi0VL40kiEWjKIhgKKiA3EEufs8fa00cQi6Ty5pL1uf1PPNkZs2aWd+sJPPJ77fW77fM3RERkfg6KNsFiIhIdikIRERiTkEgIhJzCgIRkZhTEIiIxJyCQEQk5iILAjO718w+MLPXWnjezOwOM1tuZn83s1FR1SIiIi2LskVwHzC+lefPBoaFt+nAryKsRUREWhBZELj7c8DGVlapBB7wwN+AfmY2KKp6RESkeT2yuO3BwHspjxvCZWubrmhm0wlaDRQVFY0+9thjM1Kg5IAd62HHRwcs3rivN5v2HRz99n0fWAH0/Ez02xJpxfbdeynq1YPPDijq0Ovr6urWu/uA5p7LZhCkzd1nAjMBysvLvba2NssVSVuqalZTvWRNx99g6zrY/iHs2hw8Ljxkv6fX7xxMMVDRuxPbSFfRAOg7MPrtiLShcuRgplQM7dBrzWxVS89lMwjWAEelPB4SLpNcUzsLls5t9qmqTQmqtww7YHnNzsFAJz6oUwOgmQ/iCpJ/FF/t2PuLSKNsBsF84Eoze5jg73qzux/QLSQ5YOlcWLcUBpYd8FT1lmHUf9yfxMHr91te0XsNlcVvM6Vffce3W3YBlF/a8deLSFoiCwIzewg4HehvZg3AvwE9Adz9LuAJ4CvAcmAHoL/4HFZVOInq3ecdsLzet5A4upg5lx/4nIjkh8iCwN0nt/G8A9+NavvSRWpnUbWiF9ftPR3YSEXpYfs9nRhUTOXIwVkpTSQde/bsoaGhgV27dmW7lIwoLCxkyJAh9OzZM+3X5MXBYsmM/Q7wphysrfFvA3DzuWUdPlAlki0NDQ307duXkpISzCzb5UTK3dmwYQMNDQ2Ulpam/ToFgTQGQM3KYNhHRe81+x2srSjaTeWpoxUCkpd27doVixAAMDMOP/xwPvzww3a9TkEQc1U1q7nu0aUAVPTfTeWmB5jiz8LwsTpYK91GHEIgqSPfq4IgxlJD4OYjFzBl88zgN2LC7QoAkRhREMRQ066gm3vPZkq/zdBPrQCR9pgxYwZ9+vTh6quvbvb5efPmMXz4cBKJRIYrax8FQcw02xU0dDdc+niWKxPpfubNm8eECRNyPgh0PYIYadoVNGfbNKb0eDZoBYhIWn7yk58wfPhwxo4dy7JlywC4++67GTNmDCNGjOD8889nx44dvPjii8yfP59rrrmGkSNHsmLFClasWMH48eMZPXo0p556Km+++WaWv5uAWgQxsV8I9PgNUzY/C0erK0ikPerq6nj44YdZsmQJe/fuZdSoUYwePZrzzjuPyy67DIAbbriBe+65h+9973tMnDiRCRMmcMEFwT9b48aN46677mLYsGHU1NRwxRVX8Oyzz2bzWwIUBLFRvbAO6BWEQI9ndUBYpAMWLlzIueeey2c+E8xGO3HiRABee+01brjhBjZt2sS2bds466yzDnjttm3bePHFF7nwwgsbl3388ceZKbwNCoI4qJ0FG9ZTYTDlc7uh7HaFgEgXmjZtGvPmzWPEiBHcd999LFiw4IB1PvnkE/r168eSJUsyXl9bdIygG6uqWc2kX7/EpMf3UO9Hw+HHBAeFFQIiHXLaaacxb948du7cydatW/nDH/4AwNatWxk0aBB79uxh9uzZjev37duXrVu3AlBcXExpaSm/+93vgGAU8Kuvvpr5b6IZCoJurHphHfWr1sLu7SR6b6Ly1NHZLkkkr40aNYpJkyYxYsQIzj77bMaMGQPAj3/8YyoqKjjllFNIvXDWRRddxK233sqJJ57IihUrmD17Nvfccw8jRozguOOOo7q6Olvfyn4smPstf+jCNOmb9O8zYfd25hzztA4KS2y98cYbfP7zn892GRnV3PdsZnXuXt7c+jpG0N31KtIYARFplbqGRERiTi2CbqZxKumt66jf2Y9E703ZLklEcpyCoJupXlhH/UYn4StIGFR+fki2SxKRHKcg6EaqalZTs74XFQVvMWfYgvAAcasXihMRURB0B01nE63s/w8dIBaRtCkIuoHqJWuoX7vl09lE++3OdkkikqKgoICysrLGx/PmzaOkpKTZdfv06cO2bdsyVFlAQZDnqmpWU7MyuKj8nF53wLbngykkRCRn9O7dOyenlkjS6aN5Lnmx+cpD34VVzwczimrgmEhO27ZtG+PGjWPUqFGUlZU1O8J47dq1nHbaaYwcOZLjjz+ehQsXAvDUU09x8sknM2rUKC688MIuaT2oRdANVPTfzZT67wQPdG0BkRb9+x9ep/4fW7r0PRP/VMy/nXNcq+vs3LmTkSNHAjTON/Too49SXFzM+vXrOemkk5g4ceJ+1xuuqqrirLPO4vrrr2ffvn3s2LGD9evXc9NNN/H0009TVFTELbfcwm233caNN97Yqe9BQZDHGruFen8YLNDU0iI5qWnX0J49e7juuut47rnnOOigg1izZg3vv/8+AwcObFxnzJgxfPOb32TPnj187WtfY+TIkfz1r3+lvr6eU045BYDdu3dz8sknd7o+BUGeqnrkIa5bXAxAJQvUJSSShrb+c8+U2bNn8+GHH1JXV0fPnj0pKSlh165d+61z2mmn8dxzz/H4448zbdo0rrrqKg499FDOOOMMHnrooS6tR8cI8lT1G8HUtjcfuYApQzerS0gkj2zevJkjjjiCnj178pe//IVVq1YdsM6qVas48sgjueyyy/j2t7/N4sWLOemkk3jhhRdYvnw5ANu3b+ett97qdD1qEeST2lmwdG5wf/eXqei9hin/cmt2axKRdrv44os555xzKCsro7y8fL+pq5MWLFjArbfeSs+ePenTpw8PPPAAAwYM4L777mPy5MmNVze76aabGD58eKfqURDkk6VzYd1SqgonUbNvOBVFGi8gkg+antnTv39/XnrppVbXnTp1KlOnTj3g+S996UssWrSoS+tT11C+GVhG9WfOA9CFZkSkS6hFkEeqNiWo3jKMet9CRelhTKkYmu2SRKQbUIsgj1RvGUb9x/1JDCqmcuTgbJcjIt2EWgT5onYW7NpMohDmXH5etqsRkW5EQZDrkmcKrXoeuAGKBmS7IhHpZtQ1lOuSZwodMp0aT0DfgW2/RkSkHdQiyAcDy6jefR6wUccGRPLMhg0bGDduHADr1q2joKCAAQOClv3LL79Mr169slkeEHEQmNl44D+BAuA37v6zJs8PBe4H+oXrXOvuT0RZU77RmUIi+e3www9vnGdoxowZ9OnTh6uvvrrx+b1799KjR3b/J49s62ZWANwJnAE0AIvMbL6716esdgPwiLv/yswSwBNASVQ15aPGM4WO1plCIt3FtGnTKCws5JVXXuGUU06huLh4v4A4/vjj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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# For comparison, let's plot a variable with low PSI\n", "\n", "sns.ecdfplot(data=X_train, x='A14', hue=tmp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can go ahead and drop the features from the train and test sets." ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 16), (69, 16))" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print shape before dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((621, 13), (69, 13))" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = transformer.transform(X_train)\n", "X_test = transformer.transform(X_test)\n", "\n", "# print shape **after** dropping variables\n", "\n", "X_train.shape, X_test.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That is all!\n", "\n", "I hope I gave you a good idea about how we can use this transformer to select features based on the Population Stability Index." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "fenotebook", "language": "python", "name": "fenotebook" }, "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.8.2" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 2 }