{"cells":[{"metadata":{},"cell_type":"markdown","source":"\n# **A Reference Guide to Feature Engineering Methods**\n\n\nHello friends,\n\n\n**Feature Engineering** is the heart of any machine learning model. The success of any machine learning model depends on application of various feature engineering techniques. So, in this kernel, I will discuss various **Feature Engineering** techniques that will help us to properly extract, prepare and engineer features from our dataset.\n\nSo, let's get started."},{"metadata":{},"cell_type":"markdown","source":"- This kernel is based on Soledad Galli's course - [Feature Engineering for Machine Learning](https://www.udemy.com/course/feature-engineering-for-machine-learning/) and her article - [Feature Engineering for Machine Learning ; A Comprehensive Overview](https://www.trainindata.com/post/feature-engineering-comprehensive-overview).\n\n- She had done a fabulous job in her above course wherein she had put all the major feature engineering techniques together at one place. I have adapted code and instructions from her course and article in this kernel. I like to congratulate her for her excellent work."},{"metadata":{},"cell_type":"markdown","source":"**I hope you find this kernel useful and your UPVOTES would be very much appreciated**"},{"metadata":{},"cell_type":"markdown","source":"\n## Table of Contents\n\n\n1.\t[Introduction to Feature Engineering](#1)\n2.\t[Overview of Feature Engineering techniques](#2)\n3.\t[Missing data imputation](#3)\n - 3.1\t[Complete Case Analysis](#3.1)\n - 3.2\t[Mean/Median/Mode imputation](#3.2)\n - 3.3\t[Random Sample imputation](#3.3)\n - 3.4\t[Replacement by arbitrary value](#3.4)\n - 3.5\t[End of distribution imputation](#3.5)\n - 3.6\t[Missing value indicator](#3.6)\n4.\t[Categorical encoding](#4) \n - 4.1\t[One-Hot Encoding (OHE)](#4.1)\n - 4.2\t[Ordinal Encoding](#4.2)\n - 4.3\t[Count and Frequency Encoding](#4.3)\n - 4.4\t[Target/Mean Encoding](#4.4)\n - 4.5\t[Weight of evidence](#4.5)\n5.\t[Variable Transformation](#5)\n - 5.1\t[Logarithmic Transformation](#5.1)\n - 5.2\t[Reciprocal Transformation](#5.2)\n - 5.3\t[Square-root Transformation](#5.3)\n - 5.4\t[Exponential Transformation](#5.4)\n - 5.5\t[Box-Cox Transformation](#5.5)\n6.\t[Discretization](#6)\n - 6.1 [Equal width discretization with pandas cut function](#6.1)\n - 6.2 [Equal frequency discretization with pandas qcut function](#6.2)\n - 6.3 [Domain knowledge discretization](#6.3)\n7. [Outlier Engineering](#7)\n - 7.1 [Outlier removal](#7.1)\n - 7.2 [Treating outliers as missing values](#7.2)\n - 7.3 [Discretization](#7.3)\n - 7.4 [Top/bottom/zero coding](#7.4)\n8. [Data and Time Engineering](#8)\n9. [References](#9)\n\n\n\n\n\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"# **1. Introduction to Feature Engineering** \n\n[Table of Contents](#0.1)\n\n\nIn terms of Wikipedia website :\n\n**Feature engineering is the process of using domain knowledge to extract features from raw data via data mining techniques. These features can be used to improve the performance of machine learning algorithms. Feature engineering can be considered as applied machine learning itself**\n\nSource : https://en.wikipedia.org/wiki/Feature_engineering\n\n\nAnother important definition of Feature Engineering is as follows:-\n\n**Coming up with features is difficult, time-consuming, requires expert knowledge. \"Applied machine learning\" is basically feature engineering.**\n\n— Andrew Ng, Machine Learning and AI via Brain simulations\n\n\n- So, feature engineering is the process of creating useful features in a machine learning model. We can see that the success of any machine-learning model depends on the application of various feature engineering techniques."},{"metadata":{},"cell_type":"markdown","source":"# **2. Overview of Feature Engineering techniques** \n\n[Table of Contents](#0.1)\n\n\n- **Feature engineering** is a very broad term that consists of different techniques to process data. These techniques help us to process our raw data into processed data ready to be fed into a machine learning algorithm. These techniques include filling missing values, encode categorical variables, variable transformation, create new variables from existing ones and others.\n\n \n- In this section, I will list the main feature engineering techniques to process the data. In the following sections, I will describe each technique and its applications. \n\n\n- The feature engineering techniques that we will discuss in this kernel are as follows:-\n\n\n1. Missing data imputation\n2. Categorical encoding\n3. Variable transformation\n4. Discretization\n6. Outlier engineering\n7. Date and time engineering"},{"metadata":{},"cell_type":"markdown","source":"# **3. Missing data imputation** \n\n[Table of Contents](#0.1)\n\n\n- Missing data, or Missing values, occur when no data / no value is stored for a certain observation within a variable.\n\n- Missing data are a common occurrence and can have a significant effect on the conclusions that can be drawn from the data. Incomplete data is an unavoidable problem in dealing with most data sources.\n\n\n- **Imputation** is the act of replacing missing data with statistical estimates of the missing values. The goal of any imputation technique is to produce a complete dataset that can be used to train machine learning models.\n\n \n- There are multiple techniques for missing data imputation. These are as follows:-\n\n 1. Complete case analysis\n\n 2. Mean / Median / Mode imputation\n\n 3. Random Sample Imputation\n\n 4. Replacement by Arbitrary Value\n\n 5. End of Distribution Imputation\n\n 6. Missing Value Indicator\n \n 7. Multivariate imputation"},{"metadata":{},"cell_type":"markdown","source":"## **Missing Data Mechanisms**\n\n- There are 3 mechanisms that lead to missing data, 2 of them involve missing data randomly or almost-randomly, and the third one involves a systematic loss of data.\n\n#### **Missing Completely at Random, MCAR**\n\n- A variable is missing completely at random (MCAR) if the probability of being missing is the same for all the observations. When data is MCAR, there is absolutely no relationship between the data missing and any other values, observed or missing, within the dataset. In other words, those missing data points are a random subset of the data. There is nothing systematic going on that makes some data more likely to be missing than other.\n\n- If values for observations are missing completely at random, then disregarding those cases would not bias the inferences made.\n\n#### **Missing at Random, MAR**\n\n- MAR occurs when there is a systematic relationship between the propensity of missing values and the observed data. In other words, the probability an observation being missing depends only on available information (other variables in the dataset). For example, if men are more likely to disclose their weight than women, weight is MAR. The weight information will be missing at random for those men and women that decided not to disclose their weight, but as men are more prone to disclose it, there will be more missing values for women than for men.\n\n- In a situation like the above, if we decide to proceed with the variable with missing values (in this case weight), we might benefit from including gender to control the bias in weight for the missing observations.\n\n#### **Missing Not at Random, MNAR**\n\n- Missing of values is not at random (MNAR) if their being missing depends on information not recorded in the dataset. In other words, there is a mechanism or a reason why missing values are introduced in the dataset."},{"metadata":{},"cell_type":"markdown","source":"## **3.1 Complete Case Analysis (CCA) ** \n\n[Table of Contents](#0.1)\n\n\n- **Complete case analysis** implies analysing only those observations in the dataset that contain values in all the variables. In other words, in complete case analysis we remove all observations with missing values. This procedure is suitable when there are few observations with missing data in the dataset. \n\n- **So complete-case analysis (CCA)**, also called list-wise deletion of cases, consists in simply discarding observations where values in any of the variables are missing. Complete Case Analysis means literally analysing only those observations for which there is information in all of the variables (Xs).\n\n- But, if the dataset contains missing data across multiple variables, or some variables contain a high proportion of missing observations, we can easily remove a big chunk of the dataset, and this is undesirable. \n\n- CCA can be applied to both categorical and numerical variables.\n\n- In practice, CCA may be an acceptable method when the amount of missing information is small. In many real life datasets, the amount of missing data is never small, and therefore CCA is typically never an option."},{"metadata":{},"cell_type":"markdown","source":"## **CCA on Titanic dataset**\n\n- Now, I will demonstrate the application of CCA on titanic dataset."},{"metadata":{"trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt # for data visualization\nimport seaborn as sns # for statistical data visualization\nimport pylab \nimport scipy.stats as stats\nimport datetime\n%matplotlib inline\n\npd.set_option('display.max_columns', None)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n for filename in filenames:\n print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.","execution_count":1,"outputs":[{"output_type":"stream","text":"/kaggle/input/titanic/gender_submission.csv\n/kaggle/input/titanic/test.csv\n/kaggle/input/titanic/train.csv\n/kaggle/input/lending-club-loan-data/LCDataDictionary.xlsx\n/kaggle/input/lending-club-loan-data/loan.csv\n/kaggle/input/lending-club-loan-data/database.sqlite\n/kaggle/input/mercedesbenz-greener-manufacturing/test.csv\n/kaggle/input/mercedesbenz-greener-manufacturing/train.csv\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# ignore warnings\n\nimport warnings\nwarnings.filterwarnings('ignore')","execution_count":2,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# load the dataset\ntitanic = pd.read_csv('/kaggle/input/titanic/train.csv')","execution_count":3,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\ndata1 = titanic.copy()","execution_count":4,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":" # check the percentage of missing values per variable\n\ndata1.isnull().mean()","execution_count":5,"outputs":[{"output_type":"execute_result","execution_count":5,"data":{"text/plain":"PassengerId 0.000000\nSurvived 0.000000\nPclass 0.000000\nName 0.000000\nSex 0.000000\nAge 0.198653\nSibSp 0.000000\nParch 0.000000\nTicket 0.000000\nFare 0.000000\nCabin 0.771044\nEmbarked 0.002245\ndtype: float64"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"- Now, if we chose to remove all the missing observations, we would end up with a very small dataset, given that Cabin is missing for 77% of the observations. "},{"metadata":{"trusted":true},"cell_type":"code","source":"# check how many observations we would drop\nprint('total passengers with values in all variables: ', data1.dropna().shape[0])\nprint('total passengers in the Titanic: ', data1.shape[0])\nprint('percentage of data without missing values: ', data1.dropna().shape[0]/ np.float(data1.shape[0]))","execution_count":6,"outputs":[{"output_type":"stream","text":"total passengers with values in all variables: 183\ntotal passengers in the Titanic: 891\npercentage of data without missing values: 0.2053872053872054\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"- So, we have complete information for only 20% of our observations in the Titanic dataset. Thus, CCA would not be an option for this dataset."},{"metadata":{},"cell_type":"markdown","source":"- So, in datasets with many variables that contain missing data, CCA will typically not be an option as it will produce a reduced dataset with complete observations. However, if only a subset of the variables from the dataset will be used, we could evaluate variable by variable, whether we choose to discard values with NA, or to replace them with other methods."},{"metadata":{"trusted":true},"cell_type":"markdown","source":"## **3.2 Mean / Median / Mode Imputation** \n\n[Table of Contents](#0.1)\n\n- We can replace missing values with the mean, median or mode of the variable. Mean / median / mode imputation is widely adopted in organisations and data competitions. Although in practice this technique is used in almost every situation, the procedure is suitable if data is missing at random and in small proportions. If there are a lot of missing observations, however, we will distort the distribution of the variable, as well as its relationship with other variables in the dataset. Distortion in the variable distribution may affect the performance of linear models. \n\n- Mean/median imputation consists of replacing all occurrences of missing values (NA) within a variable by the mean (if the variable has a Gaussian distribution) or median (if the variable has a skewed distribution).\n\n- For categorical variables, replacement by the mode, is also known as replacement by the most frequent category.\n\n- Mean/median imputation has the assumption that the data are missing completely at random (MCAR). If this is the case, we can think of replacing the NA with the most frequent occurrence of the variable, which is the mean if the variable has a Gaussian distribution, or the median otherwise.\n\n- The rationale is to replace the population of missing values with the most frequent value, since this is the most likely occurrence.\n\n- When replacing NA with the mean or median, the variance of the variable will be distorted if the number of NA is big respect to the total number of observations (since the imputed values do not differ from the mean or from each other). Therefore leading to underestimation of the variance.\n\n- In addition, estimates of covariance and correlations with other variables in the dataset may also be affected. This is because we may be destroying intrinsic correlations since the mean/median that now replace NA will not preserve the relation with the remaining variables."},{"metadata":{},"cell_type":"markdown","source":"## **Mean / Median / Mode Imputation on Titanic dataset**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\ndata2 = titanic.copy()","execution_count":7,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# check the percentage of NA values in dataset\n\ndata2.isnull().mean()","execution_count":8,"outputs":[{"output_type":"execute_result","execution_count":8,"data":{"text/plain":"PassengerId 0.000000\nSurvived 0.000000\nPclass 0.000000\nName 0.000000\nSex 0.000000\nAge 0.198653\nSibSp 0.000000\nParch 0.000000\nTicket 0.000000\nFare 0.000000\nCabin 0.771044\nEmbarked 0.002245\ndtype: float64"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Important Note**\n\n- Imputation should be done over the training set, and then propagated to the test set. This means that the mean/median to be used to fill missing values both in train and test set, should be extracted from the train set only. And this is to avoid overfitting.\n\n- In the titanic dataset, we can see that `Age` contains 19.8653%, `Cabin` contains 77.10% and `Embarked` contains 0.22% of missing values. "},{"metadata":{},"cell_type":"markdown","source":"### **Imputation of Age variable**\n\n- `Age` is a continuous variable. First, we will check the distribution of `age` variable."},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot the distribution of age to find out if they are Gaussian or skewed.\n\nplt.figure(figsize=(12,8))\nfig = data2.Age.hist(bins=10)\nfig.set_ylabel('Number of passengers')\nfig.set_xlabel('Age')","execution_count":9,"outputs":[{"output_type":"execute_result","execution_count":9,"data":{"text/plain":"Text(0.5, 0, 'Age')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"- We can see that the `age` distribution is skewed. So, we will use the median imputation."},{"metadata":{"trusted":true},"cell_type":"code","source":"# separate dataset into training and testing set\n\nfrom sklearn.model_selection import train_test_split\n\nX_train, X_test, y_train, y_test = train_test_split(data2, data2.Survived, test_size=0.3, \n random_state=0)\nX_train.shape, X_test.shape","execution_count":10,"outputs":[{"output_type":"execute_result","execution_count":10,"data":{"text/plain":"((623, 12), (268, 12))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# calculate median of Age\nmedian = X_train.Age.median()\nmedian","execution_count":11,"outputs":[{"output_type":"execute_result","execution_count":11,"data":{"text/plain":"29.0"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# impute missing values in age in train and test set\n\nfor df in [X_train, X_test]:\n df['Age'].fillna(median, inplace=True)","execution_count":12,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### **Check for missing values in `age` variable**"},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train['Age'].isnull().sum()","execution_count":13,"outputs":[{"output_type":"execute_result","execution_count":13,"data":{"text/plain":"0"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_test['Age'].isnull().sum()","execution_count":14,"outputs":[{"output_type":"execute_result","execution_count":14,"data":{"text/plain":"0"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"- We can see that there are no missing values in `age` variable in the train and test set."},{"metadata":{},"cell_type":"markdown","source":"- We can follow along same lines and fill missing values in `Cabin` and `Embarked` with the most frequent value.\n\n- **Mean/Median/Mode imputation** is the most common method to impute missing values."},{"metadata":{},"cell_type":"markdown","source":"## **3.3 Random Sample imputation** \n\n[Table of Contents](#0.1)\n\n- Random sample imputation refers to randomly selecting values from the variable to replace the missing data. This technique preserves the variable distribution, and is well suited for data missing at random. But, we need to account for randomness by adequately setting a seed. Otherwise, the same missing observation could be replaced by different values in different code runs, and therefore lead to a different model predictions. This is not desirable when using our models within an organisation.\n\n- Replacing of NA by random sampling for categorical variables is exactly the same as for numerical variables.\n\n- Random sampling consist of taking a random observation from the pool of available observations of the variable, that is, from the pool of available categories, and using that randomly extracted value to fill the NA. In Random Sampling one takes as many random observations as missing values are present in the variable.\n\n- By random sampling observations of the present categories, we guarantee that the frequency of the different categories/labels within the variable is preserved.\n\n### Assumptions\n\n- Random sample imputation has the assumption that the data are missing completely at random (MCAR). If this is the case, it makes sense to substitute the missing values, by values extracted from the original variable distribution/ category frequency.\n "},{"metadata":{},"cell_type":"markdown","source":"## **Random Sample imputation on Titanic dataset**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\n\ndata3 = titanic.copy()","execution_count":15,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# check the percentage of NA values\n\ndata3.isnull().mean()","execution_count":16,"outputs":[{"output_type":"execute_result","execution_count":16,"data":{"text/plain":"PassengerId 0.000000\nSurvived 0.000000\nPclass 0.000000\nName 0.000000\nSex 0.000000\nAge 0.198653\nSibSp 0.000000\nParch 0.000000\nTicket 0.000000\nFare 0.000000\nCabin 0.771044\nEmbarked 0.002245\ndtype: float64"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Important Note**\n\nImputation should be done over the training set, and then propagated to the test set. This means that the random sample to be used to fill missing values both in train and test set, should be extracted from the train set."},{"metadata":{"trusted":true},"cell_type":"code","source":"# separate dataset into training and testing set\n\nX_train, X_test, y_train, y_test = train_test_split(data3, data3.Survived, test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":17,"outputs":[{"output_type":"execute_result","execution_count":17,"data":{"text/plain":"((623, 12), (268, 12))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# write a function to create 3 variables from Age:\n\ndef impute_na(df, variable, median):\n \n df[variable+'_median'] = df[variable].fillna(median)\n df[variable+'_zero'] = df[variable].fillna(0)\n \n # random sampling\n df[variable+'_random'] = df[variable]\n \n # extract the random sample to fill the na\n random_sample = X_train[variable].dropna().sample(df[variable].isnull().sum(), random_state=0)\n \n # pandas needs to have the same index in order to merge datasets\n random_sample.index = df[df[variable].isnull()].index\n df.loc[df[variable].isnull(), variable+'_random'] = random_sample\n \n # fill with random-sample\n df[variable+'_random_sample'] = df[variable].fillna(random_sample)","execution_count":18,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"impute_na(X_train, 'Age', median)","execution_count":19,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"impute_na(X_test, 'Age', median)","execution_count":20,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## **3.4 Replacement by Arbitrary Value** \n\n[Table of Contents](#0.1)\n\n- Replacement by an arbitrary value, as its names indicates, refers to replacing missing data by any, arbitrarily determined value, but the same value for all missing data. Replacement by an arbitrary value is suitable if data is not missing at random, or if there is a huge proportion of missing values. If all values are positive, a typical replacement is -1. Alternatively, replacing by 999 or -999 are common practice. We need to anticipate that these arbitrary values are not a common occurrence in the variable. Replacement by arbitrary values however may not be suited for linear models, as it most likely will distort the distribution of the variables, and therefore model assumptions may not be met.\n\n \n- For categorical variables, this is the equivalent of replacing missing observations with the label “Missing” which is a widely adopted procedure.\n\n- Replacing the NA by artitrary values should be used when there are reasons to believe that the NA are not missing at random. In situations like this, we would not like to replace with the median or the mean, and therefore make the NA look like the majority of our observations.\n\n- Instead, we want to flag them. We want to capture the missingness somehow."},{"metadata":{},"cell_type":"markdown","source":"## **Replacement by Arbitrary Value on Titanic dataset**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\n\ndata4 = titanic.copy()","execution_count":21,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's separate into training and testing set\n\nX_train, X_test, y_train, y_test = train_test_split(data4, data4.Survived, test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":22,"outputs":[{"output_type":"execute_result","execution_count":22,"data":{"text/plain":"((623, 12), (268, 12))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"def impute_na(df, variable):\n df[variable+'_zero'] = df[variable].fillna(0)\n df[variable+'_hundred']= df[variable].fillna(100)","execution_count":23,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# replace NA with the median value in the training and test set\nimpute_na(X_train, 'Age')\nimpute_na(X_test, 'Age')\n","execution_count":24,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"- The arbitrary value has to be determined for each variable specifically. For example, for this dataset, the choice of replacing NA in age by 0 or 100 are valid, because none of those values are frequent in the original distribution of the variable, and they lie at the tails of the distribution.\n\n- However, if we were to replace NA in fare, those values are not good any more, because we can see that fare can take values of up to 500. So we might want to consider using 500 or 1000 to replace NA instead of 100.\n\n- We can see that this is totally arbitrary. But, it is used in the industry. Typical values chosen by companies are -9999 or 9999, or similar."},{"metadata":{},"cell_type":"markdown","source":"## **3.5 End of Distribution Imputation** \n\n[Table of Contents](#0.1)\n\n- End of tail imputation involves replacing missing values by a value at the far end of the tail of the variable distribution. This technique is similar in essence to imputing by an arbitrary value. However, by placing the value at the end of the distribution, we need not look at each variable distribution individually, as the algorithm does it automatically for us. This imputation technique tends to work well with tree-based algorithms, but it may affect the performance of linear models, as it distorts the variable distribution.\n\n- On occasions, one has reasons to suspect that missing values are not missing at random. And if the value is missing, there has to be a reason for it. Therefore, we would like to capture this information.\n\n- Adding an additional variable indicating missingness may help with this task. However, the values are still missing in the original variable, and they need to be replaced if we plan to use the variable in machine learning.\n\n- So, we will replace the NA, by values that are at the far end of the distribution of the variable.\n\n- The rationale is that if the value is missing, it has to be for a reason, therefore, we would not like to replace missing values for the mean and make that observation look like the majority of our observations. Instead, we want to flag that observation as different, and therefore we assign a value that is at the tail of the distribution, where observations are rarely represented in the population."},{"metadata":{},"cell_type":"markdown","source":"## **End of Distribution Imputation on Titanic dataset**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\n\ndata5 = titanic.copy()","execution_count":25,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's separate into training and testing set\n\nX_train, X_test, y_train, y_test = train_test_split(data5, data5.Survived, test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":26,"outputs":[{"output_type":"execute_result","execution_count":26,"data":{"text/plain":"((623, 12), (268, 12))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize=(12,8))\nX_train.Age.hist(bins=50)","execution_count":27,"outputs":[{"output_type":"execute_result","execution_count":27,"data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# at far end of the distribution\nX_train.Age.mean()+3*X_train.Age.std()","execution_count":28,"outputs":[{"output_type":"execute_result","execution_count":28,"data":{"text/plain":"73.43632005918366"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# we can see that there are a few outliers for Age\n# according to its distribution, these outliers will be masked when we replace NA by values at the far end \n\nplt.figure(figsize=(12,8))\nsns.boxplot('Age', data=data5)","execution_count":29,"outputs":[{"output_type":"execute_result","execution_count":29,"data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"def impute_na(df, variable, median, extreme):\n df[variable+'_far_end'] = df[variable].fillna(extreme)\n df[variable].fillna(median, inplace=True)","execution_count":30,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's replace the NA with the median value in the training and testing sets\nimpute_na(X_train, 'Age', X_train.Age.median(), X_train.Age.mean()+3*X_train.Age.std())\nimpute_na(X_test, 'Age', X_train.Age.median(), X_train.Age.mean()+3*X_train.Age.std())","execution_count":31,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## **3.6 Missing Value Indicator** \n\n[Table of Contents](#0.1)\n\n- The missing indicator technique involves adding a binary variable to indicate whether the value is missing for a certain observation. This variable takes the value 1 if the observation is missing, or 0 otherwise. One thing to notice is that we still need to replace the missing values in the original variable, which we tend to do with mean or median imputation. By using these 2 techniques together, if the missing value has predictive power, it will be captured by the missing indicator, and if it doesn’t it will be masked by the mean / median imputation. \n\n- These 2 techniques in combination tend to work well with linear models. But, adding a missing indicator expands the feature space and, as multiple variables tend to have missing values for the same observations, many of these newly created binary variables could be identical or highly correlated."},{"metadata":{},"cell_type":"markdown","source":"## **Missing Value Indicator on Titanic dataset**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\n\ndata6 = titanic.copy()","execution_count":32,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's separate into training and testing set\n\nX_train, X_test, y_train, y_test = train_test_split(data6, data6.Survived, test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":33,"outputs":[{"output_type":"execute_result","execution_count":33,"data":{"text/plain":"((623, 12), (268, 12))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# create variable indicating missingness\n\nX_train['Age_NA'] = np.where(X_train['Age'].isnull(), 1, 0)\nX_test['Age_NA'] = np.where(X_test['Age'].isnull(), 1, 0)\n\nX_train.head()","execution_count":34,"outputs":[{"output_type":"execute_result","execution_count":34,"data":{"text/plain":" PassengerId Survived Pclass Name \\\n857 858 1 1 Daly, Mr. Peter Denis \n52 53 1 1 Harper, Mrs. Henry Sleeper (Myna Haxtun) \n386 387 0 3 Goodwin, Master. Sidney Leonard \n124 125 0 1 White, Mr. Percival Wayland \n578 579 0 3 Caram, Mrs. Joseph (Maria Elias) \n\n Sex Age SibSp Parch Ticket Fare Cabin Embarked Age_NA \n857 male 51.0 0 0 113055 26.5500 E17 S 0 \n52 female 49.0 1 0 PC 17572 76.7292 D33 C 0 \n386 male 1.0 5 2 CA 2144 46.9000 NaN S 0 \n124 male 54.0 0 1 35281 77.2875 D26 S 0 \n578 female NaN 1 0 2689 14.4583 NaN C 1 ","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
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedAge_NA
85785811Daly, Mr. Peter Denismale51.00011305526.5500E17S0
525311Harper, Mrs. Henry Sleeper (Myna Haxtun)female49.010PC 1757276.7292D33C0
38638703Goodwin, Master. Sidney Leonardmale1.052CA 214446.9000NaNS0
12412501White, Mr. Percival Waylandmale54.0013528177.2875D26S0
57857903Caram, Mrs. Joseph (Maria Elias)femaleNaN10268914.4583NaNC1
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# we can see that mean and median are similar. So I will replace with the median\n\nX_train.Age.mean(), X_train.Age.median()","execution_count":35,"outputs":[{"output_type":"execute_result","execution_count":35,"data":{"text/plain":"(29.915338645418327, 29.0)"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's replace the NA with the median value in the training set\nX_train['Age'].fillna(X_train.Age.median(), inplace=True)\nX_test['Age'].fillna(X_train.Age.median(), inplace=True)\n\nX_train.head(10)","execution_count":36,"outputs":[{"output_type":"execute_result","execution_count":36,"data":{"text/plain":" PassengerId Survived Pclass Name \\\n857 858 1 1 Daly, Mr. Peter Denis \n52 53 1 1 Harper, Mrs. Henry Sleeper (Myna Haxtun) \n386 387 0 3 Goodwin, Master. Sidney Leonard \n124 125 0 1 White, Mr. Percival Wayland \n578 579 0 3 Caram, Mrs. Joseph (Maria Elias) \n549 550 1 2 Davies, Master. John Morgan Jr \n118 119 0 1 Baxter, Mr. Quigg Edmond \n12 13 0 3 Saundercock, Mr. William Henry \n157 158 0 3 Corn, Mr. Harry \n127 128 1 3 Madsen, Mr. Fridtjof Arne \n\n Sex Age SibSp Parch Ticket Fare Cabin Embarked \\\n857 male 51.0 0 0 113055 26.5500 E17 S \n52 female 49.0 1 0 PC 17572 76.7292 D33 C \n386 male 1.0 5 2 CA 2144 46.9000 NaN S \n124 male 54.0 0 1 35281 77.2875 D26 S \n578 female 29.0 1 0 2689 14.4583 NaN C \n549 male 8.0 1 1 C.A. 33112 36.7500 NaN S \n118 male 24.0 0 1 PC 17558 247.5208 B58 B60 C \n12 male 20.0 0 0 A/5. 2151 8.0500 NaN S \n157 male 30.0 0 0 SOTON/OQ 392090 8.0500 NaN S \n127 male 24.0 0 0 C 17369 7.1417 NaN S \n\n Age_NA \n857 0 \n52 0 \n386 0 \n124 0 \n578 1 \n549 0 \n118 0 \n12 0 \n157 0 \n127 0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedAge_NA
85785811Daly, Mr. Peter Denismale51.00011305526.5500E17S0
525311Harper, Mrs. Henry Sleeper (Myna Haxtun)female49.010PC 1757276.7292D33C0
38638703Goodwin, Master. Sidney Leonardmale1.052CA 214446.9000NaNS0
12412501White, Mr. Percival Waylandmale54.0013528177.2875D26S0
57857903Caram, Mrs. Joseph (Maria Elias)female29.010268914.4583NaNC1
54955012Davies, Master. John Morgan Jrmale8.011C.A. 3311236.7500NaNS0
11811901Baxter, Mr. Quigg Edmondmale24.001PC 17558247.5208B58 B60C0
121303Saundercock, Mr. William Henrymale20.000A/5. 21518.0500NaNS0
15715803Corn, Mr. Harrymale30.000SOTON/OQ 3920908.0500NaNS0
12712813Madsen, Mr. Fridtjof Arnemale24.000C 173697.1417NaNS0
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"- We can see that another variable `Age_NA` is created to capture the missingness."},{"metadata":{},"cell_type":"markdown","source":"## **Conclusion - When to use each imputation method**\n\n\n- If missing values are less than 5% of the variable, then go for mean/median imputation or random sample replacement. Impute by most frequent category if missing values are more than 5% of the variable. Do mean/median imputation+adding an additional binary variable to capture missingness add a 'Missing' label in categorical variables.\n\n- If the number of NA in a variable is small, they are unlikely to have a strong impact on the variable / target that you are trying to predict. Therefore, treating them specially, will most certainly add noise to the variables. Therefore, it is more useful to replace by mean/random sample to preserve the variable distribution.\n\n- If the variable / target you are trying to predict is however highly unbalanced, then it might be the case that this small number of NA are indeed informative. \n\n#### Exceptions\n\n- If we suspect that NAs are not missing at random and do not want to attribute the most common occurrence to NA, and if we don't want to increase the feature space by adding an additional variable to indicate missingness - in these cases, replace by a value at the far end of the distribution or an arbitrary value."},{"metadata":{},"cell_type":"markdown","source":"# **4. Categorical Encoding** \n\n[Table of Contents](#0.1)\n\n\n- Categorical data is data that takes only a limited number of values.\n\n- For example, if you people responded to a survey about which what brand of car they owned, the result would be categorical (because the answers would be things like Honda, Toyota, Ford, None, etc.). Responses fall into a fixed set of categories.\n\n- You will get an error if you try to plug these variables into most machine learning models in Python without \"encoding\" them first. Here we'll show the most popular method for encoding categorical variables.\n\n\n- Categorical variable encoding is a broad term for collective techniques used to transform the strings or labels of categorical variables into numbers. There are multiple techniques under this method:\n\n 1. One-Hot encoding (OHE)\n \n 2. Ordinal encoding\n\n 3. Count and Frequency encoding\n\n 4. Target encoding / Mean encoding\n\n 5. Weight of Evidence\n\n 6. Rare label encoding"},{"metadata":{},"cell_type":"markdown","source":"## **4.1 One-Hot Encoding (OHE) ** \n\n[Table of Contents](#0.1)\n \n\n- OHE is the standard approach to encode categorical data.\n\n- One hot encoding (OHE) creates a binary variable for each one of the different categories present in a variable. These binary variables take 1 if the observation shows a certain category or 0 otherwise. OHE is suitable for linear models. But, OHE expands the feature space quite dramatically if the categorical variables are highly cardinal, or if there are many categorical variables. In addition, many of the derived dummy variables could be highly correlated.\n\n- OHE, consists of replacing the categorical variable by different boolean variables, which take value 0 or 1, to indicate whether or not a certain category / label of the variable was present for that observation. Each one of the boolean variables are also known as dummy variables or binary variables.\n\n- For example, from the categorical variable \"Gender\", with labels 'female' and 'male', we can generate the boolean variable \"female\", which takes 1 if the person is female or 0 otherwise. We can also generate the variable male, which takes 1 if the person is \"male\" and 0 otherwise."},{"metadata":{"trusted":true},"cell_type":"code","source":"# make a copy of titanic dataset\n\ndata7 = titanic.copy()","execution_count":37,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data7['Sex'].head()","execution_count":38,"outputs":[{"output_type":"execute_result","execution_count":38,"data":{"text/plain":"0 male\n1 female\n2 female\n3 female\n4 male\nName: Sex, dtype: object"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# one hot encoding\n\npd.get_dummies(data7['Sex']).head()","execution_count":39,"outputs":[{"output_type":"execute_result","execution_count":39,"data":{"text/plain":" female male\n0 0 1\n1 1 0\n2 1 0\n3 1 0\n4 0 1","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
femalemale
001
110
210
310
401
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# for better visualisation\npd.concat([data7['Sex'], pd.get_dummies(data7['Sex'])], axis=1).head()","execution_count":40,"outputs":[{"output_type":"execute_result","execution_count":40,"data":{"text/plain":" Sex female male\n0 male 0 1\n1 female 1 0\n2 female 1 0\n3 female 1 0\n4 male 0 1","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
Sexfemalemale
0male01
1female10
2female10
3female10
4male01
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"- We can see that we only need 1 of the 2 dummy variables to represent the original categorical variable `Sex`. Any of the 2 will do the job, and it doesn't matter which one we select, since they are equivalent. Therefore, to encode a categorical variable with 2 labels, we need only 1 dummy variable.\n\n- To extend this concept, to encode categorical variable with k labels, we need k-1 dummy variables. We can achieve this task as follows :-"},{"metadata":{"trusted":true},"cell_type":"code","source":"# obtaining k-1 labels\npd.get_dummies(data7['Sex'], drop_first=True).head()","execution_count":41,"outputs":[{"output_type":"execute_result","execution_count":41,"data":{"text/plain":" male\n0 1\n1 0\n2 0\n3 0\n4 1","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
male
01
10
20
30
41
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Let's now look at an example with more than 2 labels\n\ndata7['Embarked'].head()","execution_count":42,"outputs":[{"output_type":"execute_result","execution_count":42,"data":{"text/plain":"0 S\n1 C\n2 S\n3 S\n4 S\nName: Embarked, dtype: object"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# check the number of different labels\ndata7.Embarked.unique()","execution_count":43,"outputs":[{"output_type":"execute_result","execution_count":43,"data":{"text/plain":"array(['S', 'C', 'Q', nan], dtype=object)"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# get whole set of dummy variables\n\npd.get_dummies(data7['Embarked']).head()","execution_count":44,"outputs":[{"output_type":"execute_result","execution_count":44,"data":{"text/plain":" C Q S\n0 0 0 1\n1 1 0 0\n2 0 0 1\n3 0 0 1\n4 0 0 1","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
CQS
0001
1100
2001
3001
4001
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# get k-1 dummy variables\n\npd.get_dummies(data7['Embarked'], drop_first=True).head()","execution_count":45,"outputs":[{"output_type":"execute_result","execution_count":45,"data":{"text/plain":" Q S\n0 0 1\n1 0 0\n2 0 1\n3 0 1\n4 0 1","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
QS
001
100
201
301
401
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"- Scikt-Learn API provides a class for [one-hot encoding](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html). \n\n- Also, I will introduce you to a wide range of encoding options from the [Category Encoders package](https://contrib.scikit-learn.org/categorical-encoding/) for use with scikit-learn in Python. \n\n- Both of the above options can also be used for One-Hot Encoding."},{"metadata":{},"cell_type":"markdown","source":"## **Important Note regarding OHE**\n\n- Scikit-learn's [one hot encoder class](https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder) only takes numerical categorical values. So, any value of string type should be label encoded first before one hot encoded.\n\n- In the titanic example, the gender of the passengers has to be label encoded first before being one-hot encoded using Scikit-learn's one hot encoder class."},{"metadata":{},"cell_type":"markdown","source":"## **4.2 Ordinal encoding** \n\n[Table of Contents](#0.1)\n\n\n- Categorical variable which categories can be meaningfully ordered are called ordinal. For example:\n\n - Student's grade in an exam (A, B, C or Fail).\n - Days of the week can be ordinal with Monday = 1, and Sunday = 7.\n - Educational level, with the categories: Elementary school, High school, College graduate, PhD ranked from 1 to 4.\n \n- When the categorical variable is ordinal, the most straightforward approach is to replace the labels by some ordinal number.\n\n- In ordinal encoding we replace the categories by digits, either arbitrarily or in an informed manner. If we encode categories arbitrarily, we assign an integer per category from 1 to n, where n is the number of unique categories. If instead, we assign the integers in an informed manner, we observe the target distribution: we order the categories from 1 to n, assigning 1 to the category for which the observations show the highest mean of target value, and n to the category with the lowest target mean value."},{"metadata":{},"cell_type":"markdown","source":"- We can use [Category Encoders Package](https://contrib.scikit-learn.org/categorical-encoding/) to perform ordinal encoding. Please consult the documentation for more information.\n"},{"metadata":{},"cell_type":"markdown","source":"## **4.3 Count and Frequency Encoding** \n\n[Table of Contents](#0.1)\n\n\n- In count encoding we replace the categories by the count of the observations that show that category in the dataset. Similarly, we can replace the category by the frequency -or percentage- of observations in the dataset. That is, if 10 of our 100 observations show the colour blue, we would replace blue by 10 if doing count encoding, or by 0.1 if replacing by the frequency. These techniques capture the representation of each label in a dataset, but the encoding may not necessarily be predictive of the outcome. \n\n- This approach is heavily used in Kaggle competitions, wherein we replace each label of the categorical variable by the count, this is the amount of times each label appears in the dataset. Or the frequency, this is the percentage of observations within that category. The two methods are equivalent."},{"metadata":{"trusted":true},"cell_type":"code","source":"#import dataset\ndf_train = pd.read_csv('/kaggle/input/mercedesbenz-greener-manufacturing/train.csv')\n \n\ndf_test = pd.read_csv('/kaggle/input/mercedesbenz-greener-manufacturing/test.csv') \n ","execution_count":46,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train.head()","execution_count":47,"outputs":[{"output_type":"execute_result","execution_count":47,"data":{"text/plain":" ID y X0 X1 X2 X3 X4 X5 X6 X8 X10 X11 X12 X13 X14 X15 X16 \\\n0 0 130.81 k v at a d u j o 0 0 0 1 0 0 0 \n1 6 88.53 k t av e d y l o 0 0 0 0 0 0 0 \n2 7 76.26 az w n c d x j x 0 0 0 0 0 0 0 \n3 9 80.62 az t n f d x l e 0 0 0 0 0 0 0 \n4 13 78.02 az v n f d h d n 0 0 0 0 0 0 0 \n\n X17 X18 X19 X20 X21 X22 X23 X24 X26 X27 X28 X29 X30 X31 X32 \\\n0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 \n1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 \n2 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 \n3 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 \n4 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 \n\n X33 X34 X35 X36 X37 X38 X39 X40 X41 X42 X43 X44 X45 X46 X47 \\\n0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 \n1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 \n2 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 \n3 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 \n4 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 \n\n X48 X49 X50 X51 X52 X53 X54 X55 X56 X57 X58 X59 X60 X61 X62 \\\n0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 \n1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 \n2 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 \n3 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 \n4 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 \n\n X63 X64 X65 X66 X67 X68 X69 X70 X71 X73 X74 X75 X76 X77 X78 \\\n0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 \n1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 \n2 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 \n3 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 \n4 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 \n\n X79 X80 X81 X82 X83 X84 X85 X86 X87 X88 X89 X90 X91 X92 X93 \\\n0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 \n1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 \n2 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 \n3 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 \n4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 \n\n X94 X95 X96 X97 X98 X99 X100 X101 X102 X103 X104 X105 X106 \\\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n1 0 0 1 0 1 0 1 1 0 0 0 0 0 \n2 0 0 1 0 1 0 0 1 0 0 0 0 0 \n3 0 0 1 0 1 0 0 1 0 0 0 0 0 \n4 0 0 1 0 1 0 0 1 0 0 0 0 0 \n\n X107 X108 X109 X110 X111 X112 X113 X114 X115 X116 X117 X118 \\\n0 0 0 0 0 1 0 0 1 0 1 0 1 \n1 0 0 0 0 1 0 0 0 0 0 0 1 \n2 0 0 0 0 1 0 0 0 0 0 0 0 \n3 0 1 0 0 1 0 0 1 0 0 0 0 \n4 0 1 0 0 1 0 0 1 0 0 0 0 \n\n X119 X120 X122 X123 X124 X125 X126 X127 X128 X129 X130 X131 \\\n0 1 1 0 0 0 0 0 0 1 0 0 1 \n1 1 1 0 0 0 0 0 1 1 0 0 0 \n2 0 1 0 0 0 0 0 0 1 0 0 0 \n3 0 1 0 0 0 0 0 0 1 0 0 0 \n4 0 1 0 0 0 0 0 0 1 0 0 0 \n\n X132 X133 X134 X135 X136 X137 X138 X139 X140 X141 X142 X143 \\\n0 0 0 0 0 1 1 0 0 0 0 1 0 \n1 1 0 0 0 1 0 0 0 0 0 1 0 \n2 1 0 0 0 0 1 0 0 0 0 0 0 \n3 1 0 0 0 0 0 0 0 0 0 1 0 \n4 1 0 0 0 0 0 0 0 0 0 0 0 \n\n X144 X145 X146 X147 X148 X150 X151 X152 X153 X154 X155 X156 \\\n0 1 0 0 0 0 1 0 0 0 0 0 1 \n1 1 0 0 0 0 1 0 0 0 0 0 1 \n2 1 0 0 0 1 1 0 0 0 0 0 0 \n3 1 0 0 0 1 1 0 0 0 0 0 0 \n4 1 0 0 0 1 1 0 0 0 0 0 0 \n\n X157 X158 X159 X160 X161 X162 X163 X164 X165 X166 X167 X168 \\\n0 0 0 0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 1 0 0 0 \n2 1 1 0 0 0 1 1 0 0 0 0 0 \n3 1 0 0 0 0 1 0 0 0 1 0 0 \n4 1 1 0 0 0 1 0 0 0 1 0 0 \n\n X169 X170 X171 X172 X173 X174 X175 X176 X177 X178 X179 X180 \\\n0 0 1 0 0 0 0 0 0 0 0 1 0 \n1 0 0 0 0 0 0 0 0 0 1 0 0 \n2 1 0 0 0 0 0 0 0 0 0 1 0 \n3 0 0 0 0 0 1 0 0 0 0 1 0 \n4 0 0 0 0 0 0 0 0 0 0 1 0 \n\n X181 X182 X183 X184 X185 X186 X187 X189 X190 X191 X192 X194 \\\n0 0 0 0 1 0 0 1 1 0 0 0 1 \n1 0 0 0 0 0 0 1 1 0 0 0 1 \n2 0 0 0 0 0 0 0 0 0 0 0 1 \n3 0 0 0 0 0 0 0 0 0 0 0 1 \n4 0 0 0 0 0 0 0 0 0 0 0 1 \n\n X195 X196 X197 X198 X199 X200 X201 X202 X203 X204 X205 X206 \\\n0 0 0 0 0 0 0 0 0 0 1 0 0 \n1 0 0 0 0 0 0 0 0 0 0 1 0 \n2 0 0 0 0 0 0 0 0 0 0 1 1 \n3 0 0 0 0 0 0 0 0 0 0 1 0 \n4 0 0 0 0 0 0 0 0 0 0 1 0 \n\n X207 X208 X209 X210 X211 X212 X213 X214 X215 X216 X217 X218 \\\n0 0 0 1 0 0 0 0 0 0 0 0 0 \n1 0 0 1 0 0 0 0 0 0 0 0 0 \n2 0 0 1 0 0 0 0 0 0 0 0 1 \n3 0 0 1 0 0 0 0 0 0 0 0 1 \n4 0 0 1 0 0 0 0 0 0 0 0 1 \n\n X219 X220 X221 X222 X223 X224 X225 X226 X227 X228 X229 X230 \\\n0 0 1 0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 0 0 1 0 \n2 1 1 0 0 1 1 0 0 0 1 0 0 \n3 0 1 0 0 1 0 0 0 0 0 1 0 \n4 0 1 0 0 1 0 0 0 0 0 1 0 \n\n X231 X232 X233 X234 X235 X236 X237 X238 X239 X240 X241 X242 \\\n0 0 0 0 1 0 0 1 0 0 0 0 0 \n1 0 0 0 0 0 0 0 1 0 0 0 0 \n2 0 1 0 0 0 0 0 0 0 0 1 0 \n3 0 1 0 0 0 0 0 0 0 0 1 0 \n4 0 1 0 0 0 0 0 0 0 0 0 0 \n\n X243 X244 X245 X246 X247 X248 X249 X250 X251 X252 X253 X254 \\\n0 0 0 0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 1 0 0 0 0 \n2 0 1 0 1 0 0 0 1 0 1 0 0 \n3 0 1 0 1 0 0 0 1 0 1 0 0 \n4 0 0 0 1 0 0 0 1 0 1 0 0 \n\n X255 X256 X257 X258 X259 X260 X261 X262 X263 X264 X265 X266 \\\n0 0 0 0 0 0 0 0 1 1 0 0 1 \n1 0 0 0 0 0 0 0 0 1 0 1 0 \n2 0 1 0 0 0 0 0 0 0 0 0 0 \n3 0 1 0 0 0 0 0 0 0 0 0 0 \n4 0 1 0 0 0 0 0 0 0 0 0 0 \n\n X267 X268 X269 X270 X271 X272 X273 X274 X275 X276 X277 X278 \\\n0 0 0 0 0 0 0 1 0 1 0 0 0 \n1 0 0 0 0 0 0 1 0 1 0 0 0 \n2 0 0 0 0 0 1 1 1 0 1 0 0 \n3 0 0 0 0 0 1 1 0 0 1 0 0 \n4 0 0 0 0 0 1 1 0 0 1 0 0 \n\n X279 X280 X281 X282 X283 X284 X285 X286 X287 X288 X289 X290 \\\n0 0 0 0 0 0 0 1 0 0 0 0 0 \n1 0 0 0 0 0 0 1 0 0 0 0 0 \n2 1 0 0 0 0 0 0 1 0 0 0 0 \n3 1 0 0 0 0 0 0 1 0 0 0 0 \n4 1 0 0 0 0 0 0 1 0 0 0 0 \n\n X291 X292 X293 X294 X295 X296 X297 X298 X299 X300 X301 X302 \\\n0 0 0 0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 0 0 0 0 \n2 0 0 0 0 0 0 0 0 0 0 0 0 \n3 1 0 0 0 0 0 0 0 0 0 0 0 \n4 0 0 0 0 0 0 0 0 0 0 0 0 \n\n X304 X305 X306 X307 X308 X309 X310 X311 X312 X313 X314 X315 \\\n0 0 0 1 0 0 0 0 0 0 0 0 0 \n1 1 0 0 0 0 0 0 1 0 0 0 0 \n2 1 0 0 0 0 0 0 0 0 0 0 0 \n3 1 0 0 0 0 0 0 0 0 0 0 0 \n4 1 0 0 0 0 0 0 0 0 0 0 0 \n\n X316 X317 X318 X319 X320 X321 X322 X323 X324 X325 X326 X327 \\\n0 1 0 0 0 0 0 0 0 1 0 0 1 \n1 1 0 0 0 0 0 0 0 0 0 0 0 \n2 0 0 0 0 0 0 0 0 1 0 0 0 \n3 0 0 0 0 0 0 0 0 0 0 0 0 \n4 0 0 0 0 0 0 0 0 0 0 0 0 \n\n X328 X329 X330 X331 X332 X333 X334 X335 X336 X337 X338 X339 \\\n0 0 1 0 0 0 0 1 0 0 0 0 0 \n1 0 1 0 0 0 0 0 0 1 1 0 0 \n2 1 0 0 0 0 0 1 0 0 0 0 0 \n3 1 0 0 0 0 0 0 0 0 0 0 0 \n4 1 0 0 0 0 0 1 0 0 0 0 0 \n\n X340 X341 X342 X343 X344 X345 X346 X347 X348 X349 X350 X351 \\\n0 0 0 0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 1 0 0 0 \n2 0 0 0 0 0 0 0 0 1 0 1 0 \n3 0 0 0 0 0 0 0 0 1 0 1 0 \n4 0 0 0 0 0 0 0 0 1 0 1 0 \n\n X352 X353 X354 X355 X356 X357 X358 X359 X360 X361 X362 X363 \\\n0 0 0 1 0 0 0 0 0 0 1 0 0 \n1 0 0 0 0 0 0 0 0 0 1 0 1 \n2 0 0 1 0 0 0 1 0 0 1 0 1 \n3 0 0 0 0 0 0 1 0 0 1 0 1 \n4 0 0 0 0 0 0 1 0 0 1 0 1 \n\n X364 X365 X366 X367 X368 X369 X370 X371 X372 X373 X374 X375 \\\n0 0 0 0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 0 0 0 1 \n2 0 0 0 0 0 0 0 0 0 0 0 0 \n3 0 0 0 0 0 0 0 0 1 0 0 0 \n4 0 0 0 0 0 0 0 1 0 0 0 0 \n\n X376 X377 X378 X379 X380 X382 X383 X384 X385 \n0 0 1 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 0 \n2 0 0 0 0 0 1 0 0 0 \n3 0 0 0 0 0 0 0 0 0 \n4 0 0 0 0 0 0 0 0 0 ","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
IDyX0X1X2X3X4X5X6X8X10X11X12X13X14X15X16X17X18X19X20X21X22X23X24X26X27X28X29X30X31X32X33X34X35X36X37X38X39X40X41X42X43X44X45X46X47X48X49X50X51X52X53X54X55X56X57X58X59X60X61X62X63X64X65X66X67X68X69X70X71X73X74X75X76X77X78X79X80X81X82X83X84X85X86X87X88X89X90X91X92X93X94X95X96X97X98X99X100X101X102X103X104X105X106X107X108X109X110X111X112X113X114X115X116X117X118X119X120X122X123X124X125X126X127X128X129X130X131X132X133X134X135X136X137X138X139X140X141X142X143X144X145X146X147X148X150X151X152X153X154X155X156X157X158X159X160X161X162X163X164X165X166X167X168X169X170X171X172X173X174X175X176X177X178X179X180X181X182X183X184X185X186X187X189X190X191X192X194X195X196X197X198X199X200X201X202X203X204X205X206X207X208X209X210X211X212X213X214X215X216X217X218X219X220X221X222X223X224X225X226X227X228X229X230X231X232X233X234X235X236X237X238X239X240X241X242X243X244X245X246X247X248X249X250X251X252X253X254X255X256X257X258X259X260X261X262X263X264X265X266X267X268X269X270X271X272X273X274X275X276X277X278X279X280X281X282X283X284X285X286X287X288X289X290X291X292X293X294X295X296X297X298X299X300X301X302X304X305X306X307X308X309X310X311X312X313X314X315X316X317X318X319X320X321X322X323X324X325X326X327X328X329X330X331X332X333X334X335X336X337X338X339X340X341X342X343X344X345X346X347X348X349X350X351X352X353X354X355X356X357X358X359X360X361X362X363X364X365X366X367X368X369X370X371X372X373X374X375X376X377X378X379X380X382X383X384X385
00130.81kvatadujo00010000100100000000100010100000000100000000000100000000010100100000000001000000000000000000000000010010101110000001001000011000010100001000001000000000000010000000010000100110001000000000100001000000000010000000000000100100000000000000000000000011001000000101000000000100000000000000000001000000000100000001001010000100000000000000000001000000100000000000000010000000
1688.53ktavedylo00000000100000001000100010100000000000001000000000100000000100100000100001000000000010101100000000010000001110000011000100010000010100001000001000000001000000000000100000000110001000000000010001000000000000000000010000000010000000000010000000000001010000000101000000000100000000000000000100000010000100000000000010000001100000000001000000000000101000000000001000000000
2776.26azwncdxjx00000001000000001110100010100000100100001001000100100000010110111000100011000000000010100100000000010000000010000001000100001000000100011000000110001100000100000000010000000000001000000000011001000000001110011000100010000000010010100010100010000000000000001110100100000010000000000000000100000000000000000001000100000100000000000001010001000100101000000000000000001000
3980.62aztnfdxle00000000000000001110100010100000100100000001000000100000000110101000100010000000000010100100000010010010000010000001000100000000010100011000000100001000100000001000010000000000001000000000010001000000001010010000010010000000010010100010100010000000000000001100100100000010000100000000000100000000000000000000000100000000000000000001010000000100101000000001000000000000
41378.02azvnfdhdn00000000000000001110100010100000100100001001000000100000000100101000100000000000000010100100000010010010000010000001000100000000000100011000000110001000100000000000010000000000001000000000010001000000001010010000010010000000000000100010100010000000000000001100100100000010000000000000000100000000000000000000000100000100000000000001010000000100101000000010000000000000
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's have a look at how many labels\n\nfor col in df_train.columns[3:9]:\n print(col, ': ', len(df_train[col].unique()), ' labels')","execution_count":48,"outputs":[{"output_type":"stream","text":"X1 : 27 labels\nX2 : 44 labels\nX3 : 7 labels\nX4 : 4 labels\nX5 : 29 labels\nX6 : 12 labels\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"When doing count transformation of categorical variables, it is important to calculate the count (or frequency = count/total observations) over the training set, and then use those numbers to replace the labels in the test set."},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(df_train[['X1', 'X2', 'X3', 'X4', 'X5', 'X6']], df_train.y,\n test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":49,"outputs":[{"output_type":"execute_result","execution_count":49,"data":{"text/plain":"((2946, 6), (1263, 6))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's obtain the counts for each one of the labels in variable X2\n# let's capture this in a dictionary that we can use to re-map the labels\n\nX_train.X2.value_counts().to_dict()","execution_count":50,"outputs":[{"output_type":"execute_result","execution_count":50,"data":{"text/plain":"{'as': 1155,\n 'ae': 342,\n 'ai': 289,\n 'm': 284,\n 'ak': 188,\n 'r': 101,\n 'n': 97,\n 's': 63,\n 'e': 61,\n 'f': 59,\n 'aq': 46,\n 'ay': 40,\n 'a': 34,\n 't': 17,\n 'k': 16,\n 'i': 15,\n 'ag': 15,\n 'z': 14,\n 'd': 12,\n 'b': 12,\n 'ac': 10,\n 'ao': 10,\n 'g': 10,\n 'y': 8,\n 'x': 8,\n 'at': 5,\n 'ap': 5,\n 'h': 4,\n 'q': 3,\n 'ah': 3,\n 'al': 3,\n 'an': 3,\n 'au': 3,\n 'av': 2,\n 'aw': 2,\n 'aa': 1,\n 'l': 1,\n 'p': 1,\n 'c': 1,\n 'af': 1,\n 'o': 1,\n 'am': 1}"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# lets look at X_train so we can compare then the variable re-coding\n\nX_train.head()","execution_count":51,"outputs":[{"output_type":"execute_result","execution_count":51,"data":{"text/plain":" X1 X2 X3 X4 X5 X6\n3059 aa ai c d q g\n3014 b m c d q i\n3368 o f f d s l\n2772 aa as d d p j\n3383 v e c d s g","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
X1X2X3X4X5X6
3059aaaicdqg
3014bmcdqi
3368offdsl
2772aaasddpj
3383vecdsg
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# now let's replace each label in X2 by its count\n\n# first we make a dictionary that maps each label to the counts\nX_frequency_map = X_train.X2.value_counts().to_dict()\n\n# and now we replace X2 labels both in train and test set with the same map\nX_train.X2 = X_train.X2.map(X_frequency_map)\nX_test.X2 = X_test.X2.map(X_frequency_map)\n\nX_train.head()","execution_count":52,"outputs":[{"output_type":"execute_result","execution_count":52,"data":{"text/plain":" X1 X2 X3 X4 X5 X6\n3059 aa 289 c d q g\n3014 b 284 c d q i\n3368 o 59 f d s l\n2772 aa 1155 d d p j\n3383 v 61 c d s g","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
X1X2X3X4X5X6
3059aa289cdqg
3014b284cdqi
3368o59fdsl
2772aa1155ddpj
3383v61cdsg
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"Where in the original dataset, for the observation 1 in the variable 2 before it was 'ai', now it was replaced by the count 289. And so on for the rest of the categories."},{"metadata":{},"cell_type":"markdown","source":"## **4.4 Target / Mean Encoding** \n\n[Table of Contents](#0.1)\n\n\n- In target encoding, also called mean encoding, we replace each category of a variable, by the mean value of the target for the observations that show a certain category. For example, we have the categorical variable “city”, and we want to predict if the customer will buy a TV provided we send a letter. If 30 percent of the people in the city “London” buy the TV, we would replace London by 0.3.\n\n\n- This technique has 3 advantages:\n\n 1. it does not expand the feature space,\n\n 2. it captures some information regarding the target at the time of encoding the category, and\n\n 3. it creates a monotonic relationship between the variable and the target. \n \n\n- Monotonic relationships between variable and target tend to improve linear model performance.\n\n "},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's load again the titanic dataset\n\ndata = pd.read_csv('/kaggle/input/titanic/train.csv', usecols=['Cabin', 'Survived'])\ndata.head()","execution_count":53,"outputs":[{"output_type":"execute_result","execution_count":53,"data":{"text/plain":" Survived Cabin\n0 0 NaN\n1 1 C85\n2 1 NaN\n3 1 C123\n4 0 NaN","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
SurvivedCabin
00NaN
11C85
21NaN
31C123
40NaN
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's fill NA values with an additional label\n\ndata.Cabin.fillna('Missing', inplace=True)\ndata.head()","execution_count":54,"outputs":[{"output_type":"execute_result","execution_count":54,"data":{"text/plain":" Survived Cabin\n0 0 Missing\n1 1 C85\n2 1 Missing\n3 1 C123\n4 0 Missing","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
SurvivedCabin
00Missing
11C85
21Missing
31C123
40Missing
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# check number of different labels in Cabin\n\nlen(data.Cabin.unique())","execution_count":55,"outputs":[{"output_type":"execute_result","execution_count":55,"data":{"text/plain":"148"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Now we extract the first letter of the cabin\n\ndata['Cabin'] = data['Cabin'].astype(str).str[0]\ndata.head()","execution_count":56,"outputs":[{"output_type":"execute_result","execution_count":56,"data":{"text/plain":" Survived Cabin\n0 0 M\n1 1 C\n2 1 M\n3 1 C\n4 0 M","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
SurvivedCabin
00M
11C
21M
31C
40M
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# check the labels\ndata.Cabin.unique()","execution_count":57,"outputs":[{"output_type":"execute_result","execution_count":57,"data":{"text/plain":"array(['M', 'C', 'E', 'G', 'D', 'A', 'B', 'F', 'T'], dtype=object)"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Important**\n\n- The risk factor should be calculated per label considering only on the training set, and then expanded it to the test set."},{"metadata":{"trusted":true},"cell_type":"code","source":"# Let's separate into training and testing set\n\nX_train, X_test, y_train, y_test = train_test_split(data[['Cabin', 'Survived']], data.Survived, test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":58,"outputs":[{"output_type":"execute_result","execution_count":58,"data":{"text/plain":"((623, 2), (268, 2))"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's calculate the target frequency for each label\n\nX_train.groupby(['Cabin'])['Survived'].mean()","execution_count":59,"outputs":[{"output_type":"execute_result","execution_count":59,"data":{"text/plain":"Cabin\nA 0.428571\nB 0.774194\nC 0.571429\nD 0.692308\nE 0.740741\nF 0.666667\nG 0.500000\nM 0.303609\nT 0.000000\nName: Survived, dtype: float64"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# and now let's do the same but capturing the result in a dictionary\n\nordered_labels = X_train.groupby(['Cabin'])['Survived'].mean().to_dict()\nordered_labels","execution_count":60,"outputs":[{"output_type":"execute_result","execution_count":60,"data":{"text/plain":"{'A': 0.42857142857142855,\n 'B': 0.7741935483870968,\n 'C': 0.5714285714285714,\n 'D': 0.6923076923076923,\n 'E': 0.7407407407407407,\n 'F': 0.6666666666666666,\n 'G': 0.5,\n 'M': 0.3036093418259023,\n 'T': 0.0}"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# replace the labels with the 'risk' (target frequency)\n# note that we calculated the frequencies based on the training set only\n\nX_train['Cabin_ordered'] = X_train.Cabin.map(ordered_labels)\nX_test['Cabin_ordered'] = X_test.Cabin.map(ordered_labels)","execution_count":61,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# view results\n\nX_train.head()","execution_count":62,"outputs":[{"output_type":"execute_result","execution_count":62,"data":{"text/plain":" Cabin Survived Cabin_ordered\n857 E 1 0.740741\n52 D 1 0.692308\n386 M 0 0.303609\n124 D 0 0.692308\n578 M 0 0.303609","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
CabinSurvivedCabin_ordered
857E10.740741
52D10.692308
386M00.303609
124D00.692308
578M00.303609
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot the original variable\n\nfig = plt.figure(figsize=(8,6))\nfig = X_train.groupby(['Cabin'])['Survived'].mean().plot()\nfig.set_title('Normal relationship between variable and target')\nfig.set_ylabel('Survived')","execution_count":63,"outputs":[{"output_type":"execute_result","execution_count":63,"data":{"text/plain":"Text(0, 0.5, 'Survived')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot the transformed result: the monotonic variable\n\nfig = plt.figure(figsize=(8,6))\nfig = X_train.groupby(['Cabin_ordered'])['Survived'].mean().plot()\nfig.set_title('Monotonic relationship between variable and target')\nfig.set_ylabel('Survived')","execution_count":64,"outputs":[{"output_type":"execute_result","execution_count":64,"data":{"text/plain":"Text(0, 0.5, 'Survived')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"## **4.5 Weight of evidence** \n\n[Table of Contents](#0.1)\n\n\n- Weight of evidence (WOE) is a technique used to encode categorical variables for classification. WOE is the natural logarithm of the probability of the target being 1 divided the probability of the target being 0. WOE has the property that its value will be 0 if the phenomenon is random; it will be bigger than 0 if the probability of the target being 0 is bigger, and it will be smaller than 0 when the probability of the target being 1 is greater.\n\n- WOE transformation creates a nice visual representation of the variable, because by looking at the WOE encoded variable, we can see, category by category, whether it favours the outcome of 0, or of 1. In addition, WOE creates a monotonic relationship between variable and target, and leaves all the variables within the same value range."},{"metadata":{"trusted":true},"cell_type":"code","source":"# preview X_train\n\nX_train.head()","execution_count":65,"outputs":[{"output_type":"execute_result","execution_count":65,"data":{"text/plain":" Cabin Survived Cabin_ordered\n857 E 1 0.740741\n52 D 1 0.692308\n386 M 0 0.303609\n124 D 0 0.692308\n578 M 0 0.303609","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
CabinSurvivedCabin_ordered
857E10.740741
52D10.692308
386M00.303609
124D00.692308
578M00.303609
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# now we calculate the probability of target=1 \nX_train.groupby(['Cabin'])['Survived'].mean()","execution_count":66,"outputs":[{"output_type":"execute_result","execution_count":66,"data":{"text/plain":"Cabin\nA 0.428571\nB 0.774194\nC 0.571429\nD 0.692308\nE 0.740741\nF 0.666667\nG 0.500000\nM 0.303609\nT 0.000000\nName: Survived, dtype: float64"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's make a dataframe with the above calculation\n\nprob_df = X_train.groupby(['Cabin'])['Survived'].mean()\nprob_df = pd.DataFrame(prob_df)\nprob_df","execution_count":67,"outputs":[{"output_type":"execute_result","execution_count":67,"data":{"text/plain":" Survived\nCabin \nA 0.428571\nB 0.774194\nC 0.571429\nD 0.692308\nE 0.740741\nF 0.666667\nG 0.500000\nM 0.303609\nT 0.000000","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
Survived
Cabin
A0.428571
B0.774194
C0.571429
D0.692308
E0.740741
F0.666667
G0.500000
M0.303609
T0.000000
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# and now the probability of target = 0 \n# and we add it to the dataframe\n\nprob_df = X_train.groupby(['Cabin'])['Survived'].mean()\nprob_df = pd.DataFrame(prob_df)\nprob_df['Died'] = 1-prob_df.Survived\nprob_df","execution_count":68,"outputs":[{"output_type":"execute_result","execution_count":68,"data":{"text/plain":" Survived Died\nCabin \nA 0.428571 0.571429\nB 0.774194 0.225806\nC 0.571429 0.428571\nD 0.692308 0.307692\nE 0.740741 0.259259\nF 0.666667 0.333333\nG 0.500000 0.500000\nM 0.303609 0.696391\nT 0.000000 1.000000","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
SurvivedDied
Cabin
A0.4285710.571429
B0.7741940.225806
C0.5714290.428571
D0.6923080.307692
E0.7407410.259259
F0.6666670.333333
G0.5000000.500000
M0.3036090.696391
T0.0000001.000000
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# since the log of zero is not defined, let's set this number to something small and non-zero\n\nprob_df.loc[prob_df.Survived == 0, 'Survived'] = 0.00001\nprob_df","execution_count":69,"outputs":[{"output_type":"execute_result","execution_count":69,"data":{"text/plain":" Survived Died\nCabin \nA 0.428571 0.571429\nB 0.774194 0.225806\nC 0.571429 0.428571\nD 0.692308 0.307692\nE 0.740741 0.259259\nF 0.666667 0.333333\nG 0.500000 0.500000\nM 0.303609 0.696391\nT 0.000010 1.000000","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
SurvivedDied
Cabin
A0.4285710.571429
B0.7741940.225806
C0.5714290.428571
D0.6923080.307692
E0.7407410.259259
F0.6666670.333333
G0.5000000.500000
M0.3036090.696391
T0.0000101.000000
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# now we calculate the WoE\n\nprob_df['WoE'] = np.log(prob_df.Survived/prob_df.Died)\nprob_df","execution_count":70,"outputs":[{"output_type":"execute_result","execution_count":70,"data":{"text/plain":" Survived Died WoE\nCabin \nA 0.428571 0.571429 -0.287682\nB 0.774194 0.225806 1.232144\nC 0.571429 0.428571 0.287682\nD 0.692308 0.307692 0.810930\nE 0.740741 0.259259 1.049822\nF 0.666667 0.333333 0.693147\nG 0.500000 0.500000 0.000000\nM 0.303609 0.696391 -0.830169\nT 0.000010 1.000000 -11.512925","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
SurvivedDiedWoE
Cabin
A0.4285710.571429-0.287682
B0.7741940.2258061.232144
C0.5714290.4285710.287682
D0.6923080.3076920.810930
E0.7407410.2592591.049822
F0.6666670.3333330.693147
G0.5000000.5000000.000000
M0.3036090.696391-0.830169
T0.0000101.000000-11.512925
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# and we create a dictionary to re-map the variable\n\nprob_df['WoE'].to_dict()","execution_count":71,"outputs":[{"output_type":"execute_result","execution_count":71,"data":{"text/plain":"{'A': -0.2876820724517809,\n 'B': 1.232143681292632,\n 'C': 0.28768207245178085,\n 'D': 0.8109302162163288,\n 'E': 1.0498221244986774,\n 'F': 0.6931471805599452,\n 'G': 0.0,\n 'M': -0.8301689781242366,\n 'T': -11.512925464970229}"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# and we make a dictionary to map the orignal variable to the WoE\n# same as above but we capture the dictionary in a variable\n\nordered_labels = prob_df['WoE'].to_dict()","execution_count":72,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# replace the labels with the WoE\n\nX_train['Cabin_ordered'] = X_train.Cabin.map(ordered_labels)\nX_test['Cabin_ordered'] = X_test.Cabin.map(ordered_labels)","execution_count":73,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# check the results\n\nX_train.head()","execution_count":74,"outputs":[{"output_type":"execute_result","execution_count":74,"data":{"text/plain":" Cabin Survived Cabin_ordered\n857 E 1 1.049822\n52 D 1 0.810930\n386 M 0 -0.830169\n124 D 0 0.810930\n578 M 0 -0.830169","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
CabinSurvivedCabin_ordered
857E11.049822
52D10.810930
386M0-0.830169
124D00.810930
578M0-0.830169
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot the original variable\n\nfig = plt.figure(figsize=(8,6))\nfig = X_train.groupby(['Cabin'])['Survived'].mean().plot()\nfig.set_title('Normal relationship between variable and target')\nfig.set_ylabel('Survived')","execution_count":75,"outputs":[{"output_type":"execute_result","execution_count":75,"data":{"text/plain":"Text(0, 0.5, 'Survived')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot the transformed result: the monotonic variable\n\nfig = plt.figure(figsize=(8,6))\nfig = X_train.groupby(['Cabin_ordered'])['Survived'].mean().plot()\nfig.set_title('Monotonic relationship between variable and target')\nfig.set_ylabel('Survived')","execution_count":76,"outputs":[{"output_type":"execute_result","execution_count":76,"data":{"text/plain":"Text(0, 0.5, 'Survived')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"iVBORw0KGgoAAAANSUhEUgAAAfUAAAGECAYAAAAvNrl1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8XOV59//PJcnyIi+yLWlky/tumc1gDITFgC1hSAIJIcGQpKFZaNMQkmZpQpqHUvKkSdPn15Y+oU9DEpqQNDEESOOkTpBZDYRFtjGL5BVvkmxt3jdZy1y/P86xGSYjW7I1Gmnm+369/PLMnGWuOTOa75xz7nPf5u6IiIhI/5eV6gJERESkZyjURURE0oRCXUREJE0o1EVERNKEQl1ERCRNKNRFRETShEJd+hQzqzKzK3vheZ41s0+f5rITzOyQmWX3dF0xz3GPmf38JNNPezuZmZvZtNMuLoOY2TfM7EddnPcnZva/TzK9T2z3vlKHJIdCvZ8zs21m1mpmBXGPrw3/eCcl+flPGj7d5e5z3P3ZnlpfTwi38aLj9919h7sPdfeOVNWUqu2UaYHg7v/g7qf1468/OpMfuz30/D36fZKJFOrpYStwy/E7ZnY2MDh15aSWmeWkugbp//Q56j5ts9RTqKeHnwF/FnP/E8BDsTOY2Qgze8jMmsxsu5l908yywmm3mdkLZvZ/zGyvmW01s2tjlh1rZsvMbI+ZbTazz4SPLwa+AdwcHo5+/WTzh9PuMbNHwloOhoeR58VMP7FXbGbZ4eHPt8N5V5vZ+PgXb2aTwj3IT5nZDuDp8PGLzeyPZrbPzF7v7HC1mU01s6fNbLeZNZvZf5lZfjjtZ8AE4Lfha/ybmOfL6YHX+zUzqwunbTCzhTGl5XZxO91jZo+a2cPhvGvM7NxErzXGdWa2JXy9/3T8sxCu75Nmti78LDxhZhPDx1eGs7weboubzew5M/tQOP2ycLtcF95fZGZrT7XecNosM1sRbsMNZvaRmGk/MbP7zex/wtf3iplN7eS9/IOZ3RH32OtmdmN4+z4zqzGzA+Hn6fK49+pRM/u5mR0AbrO4PUcz+5WZ1ZvZfjNbaWZz4kooCF/HwXDbTCQBMxtowd/bDjNrMLP/MLOEP8RP9vkMp28zs6+Y2RthXQ+b2aCY6V81s11mttPMPpnoOcL5vg1cDnw/fH+/f5rbbLCZ/TR8n9dZ8DdTG7PMWDN7zILvoq1mdmf4eMLvE+kmd9e/fvwP2AYsAjYAs4FsoAaYCDgwKZzvIeA3wDBgErAR+FQ47TagDfhMuPxngZ2AhdOfA/4dGAScBzQBC8Np9wA/j6vpVPO3ANeFz/Ud4OX41xPe/irwJjATMOBcYHSCbTApfK0PAXkERylKgN3h82QBZeH9wnCZZ4FPh7enhdMHAoXASuBfE9UU93w5Z/J6w9dVA4yNWe/U09hO94Tv303AAOArBEdvBnTymXHgGWAUwQ+WjTHb4gPAZoLPUg7wTeCPcctOi7l/L/B/w9vfAN4G/jFm2n2nWm/4ntUAfx5OOx9oBuaE038C7AHmh9P/C1jayWv7M+DFmPulwD5gYHj/Y8DocD1fBuqBQXHb8QMEn5nBxH2+gU8S/A0NBP4VWBsz7SfAQeCKcPp9wAuJtl247LLwPRgG/Bb4TievqSufz1eBseH61gF/GU5bDDQAZ4Xb+Rfx72Hccz17/LMQ81h3t9l3Cf4mRgLjgDeA2nD+LGA1cDeQC0wBtgDXdPZ9on/dzIRUF6B/Z/gGvhPq3yT44l8MrAj/AJ0gKLKBY0BpzHJ/ATwb3r4N2BwzbUi4bDEwHugAhsVM/w7wk/B2/JdeV+Z/MmZaKXA0/vWEtzcAN3RhG0wK650S89jXgJ/FzfcE8Inw9p98ecXM9wHgtUQ1xT1fzpm8XoIv68bw/RsQV0N3ttM9vDvws4BdwOWdvD4HFsfc/yvgqfD27wl/7MWs6wgwMWbZ2FBfCLwR3v4D8Gne+dHyHHDjqdYL3Aw8H1fjD4C/C2//BPhRzLTrgPWdvLZhwOGYer8NPHiSz85e4NyY7bgywfuQMGSA/HB7jIipc2nM9KHhZ2N87LYj+IF6mPAHXDjtEmBrF//mE30+PxZz/3vAf4S3HwS+GzNtRvx7GLfuZ+nk76Ib2+xESIf3P807oX4RsCNu/ruA/zzV9ta/rv3T4ff08TPgVoKAfihuWgHBr+LtMY9tJ9ibPa7++A13PxLeHErw63+Pux88ybKxujJ/fcztI8AgS3wubjzBnl9X1cTcngh82IJD7/vMbB9wGTAmfiEzKzKzpRYcBj8A/Jxgm3XFab9ed98MfJHgi6wxrGHsqZbrpI4Tr93do0BtWFtnYrfV9ph5JwL3xWyzPQQh1Nn7/RIww8wiBEcpHgLGW9Bwcz7BXuWp1jsRuCjuvfoowY/K4+K3xdBExYTvw/8AS8KHlhDs2QNgZl8ODwnvD59nBO9+r2O3y7tYcDrouxacDjpAEKZ0try7HwpfZ/z7UEjww3l1zOv9Q/h4ouftyuezs+0zlj99r7vlNLZZ/HPG/12OjXuvvwFEuluXJKZQTxPuvp3gkOt1wONxk5sJDpFNjHlsAlDXhVXvBEaZ2bBOlvVuzt8dNUDCc6ediK2lhmBPPT/mX567fzfBct8Jlz3H3YcTHG60TtYb74xer7v/wt0v453TJf/YleUSONHWwILz4+PC2k45P0G9x+etAf4ibrsNdvc/dlL/EYLDqV8A3nL3VuCPwJeAt929uQvrrQGei5s21N0/2+2tEPglcIuZXUJwOPgZgPBc8NeAjwAj3T0f2E/X3+tbgRsIjqyMIDhiQ9zyse/DUILD4fHvQzNwlOD0wvHXO8LdE/5Q4dSfz5PZxZ++1yfzrtd/mttsF8Hn77jY568hOCIR+14Pc/frOlmXdJNCPb18Crja3Q/HPujBpVePAN82s2Fh450vEfziPyl3ryH4kv6OmQ0ys3PC5zm+99MATAqDpCvzd8ePgG+Z2XQLnGNmo7u47M+B95vZNeEe1iAzu9LMxiWYdxhwCNhnZiUE5/JjNRCc+/sTZ/J6zWymmV1tZgMJzp8fJThcezouMLMbwz35LxKcbnn5JPN/1cxGWtDw8AvAw+Hj/wHcZWEDMAsaWH44ZrlE2+I54I7wfwgO4cbeP9V6f0ewt/9xMxsQ/rvQzGZ3+dW/23KCH0n3Ag+HRy4geJ/bCdo85JjZ3cDwbqx3GMF23U2wp/0PCea5zoIGg7nAt4BXws/ICWE9PwT+xcyKAMysxMyuOcnznuzzeTKPEDReKzWzIcDfnWL++Pf3dLbZIwTv9ciw3tiGi68CByxoIDo4/Ns8y8wujHn+E98n0n3acGnE3d9291WdTP48wXm8LcALBA1mHuziqm8h2CvZCfya4FzninDar8L/d5vZmi7M3x3/TPAFUQEcAH5MFy/VC79IbyA4tNdEsIfwVRJ/5v+eoHHWfoJDt/FHOr4DfDM8XPiVBMuf7usdSNCoqJng8GlRWO/p+A3Buem9wMcJzmW3nWL+1cBagtf8YwB3/zXB0YKl4aHet4BrY5a7B/hpuC2Ot1B/juDLf2Un90+63vCQeTnBofKdBNviHwm2T7e5+zGC93ARwef8uCcIzu1vJDgM3cJJDrcn8FC4XB1QTeIfTb8gCM49wAUEpxES+RpBw8GXw+3xJEHDyURO9fnslLv/nqBR3tPh8z19ikXuA26yoOX6v3F62+xegtM/Wwle16MEP4aO72C8n+BUzVaCz/6PCI58QOLvE+mG462bRaSfMrN7CBo+fSzVtYjEM7PPAkvcfUGqa8kE2lMXEZEeY2ZjzOxSM8sys5kEl8H9OtV1ZQr1/iMiIj0pl+CSxMkEfQQsJejHQXqBDr+LiIikCR1+FxERSRMKdRERkTTR786pFxQU+KRJk1JdhoiISK9YvXp1s7sn7HEwXlJD3YJRd+4j6Hv8R/G9eZnZBOCnBH0oZwNfd/flJ1vnpEmTWLWqs0uxRURE0ouZdbl736QdfjezbOB+gg4mSgm6bSyNm+2bwCPuPpeg4wm1kBQRETlNyTynPp9g5K8tYX/QSwl6+IrlvNPl4AhO3le1iIiInEQyD7+X8O7uBGsJht2LdQ9QYWafJxjrd1ES6xEREUlrydxTTzSKUPxF8bcQjDs9jmB0sZ8l6sjfzG43s1VmtqqpqSkJpYqIiPR/yQz1Wt495F6ioSA/RTBgB+7+EjCIBONYu/sD7j7P3ecVFnapAaCIiEjGSWaoVwLTzWxyOAzhEmBZ3Dw7gIUA4TCLgwhG1BIREZFuSlqou3s7wTi6TwDrCFq5V5nZvWZ2fTjbl4HPmNnrwC+B21z91oqIiJyWpF6nHl5zvjzusbtjblcDlyazBhERkUyhbmJFRETShEJdREQkTSjURURE0oRCXUREpI+KRrvXdlyhLiIi0kctf2tXt+ZXqIuIiPRB0ajzb09t6tYyCnUREZE+6Pdv1bOx4VC3llGoi4iI9DHRqHPfUxuZWpjXreUU6iIiIn3MH6qCvfQ7F07v1nIKdRERkT4kGnXue3ITUwvzeN85Y7u1rEJdRESkD/lDVT0bGg5y58LpZGclGsW8cwp1ERGRPuJ4i/cpp7GXDgp1ERGRPuOJqnrW1x/kC6exlw4KdRERkT4haPF++nvpoFAXERHpEyqqg730O68+vb10UKiLiIikXDTq/OuTm5hSkMf7zz29vXRQqIuIiKRcRXUD6+sP8vmF0057Lx0U6iIiIinl7tz/zGYmF+Tx/tM8l36cQl1ERCSFXtm6hzfr9vOZy6eQk31msaxQFxERSaEfrtzC6Lxcbjy/5IzXpVAXERFJkc2Nh3hqfSMfu3gigwZkn/H6FOoiIiIp8uMXtjIwJ4uPXzKxR9anUBcREUmB5kPHeGxNLTeeP46CoQN7ZJ0KdRERkRT42UvbaW2P8unLJ/fYOhXqIiIivaylrYOfvbydRbOLmFo4tMfWq1AXERHpZY+tqWXP4VY+c/mUHl2vQl1ERKQXRaPOj5/fyjnjRjB/8qgeXbdCXUREpBc9tb6RLc2H+czlUzA7/S5hE1Goi4iI9KIfrtxCSf5grj2ruMfXndRQN7PFZrbBzDab2dcTTP8XM1sb/ttoZvuSWY+IiEgqra3Zx6vb9vDJyyafcZewieT0+BpDZpYN3A+UAbVApZktc/fq4/O4+1/HzP95YG6y6hEREUm1Hz6/hWGDcrj5wvFJWX8y99TnA5vdfYu7twJLgRtOMv8twC+TWI+IiEjK1Ow5wu/f3MWt8ycwdGBy9qmTGeolQE3M/drwsT9hZhOBycDTSaxHREQkZf7zxW1kmXHbpZOS9hzJDPVETfq8k3mXAI+6e0fCFZndbmarzGxVU1NTjxUoIiLSG/YfbePhyh28/9yxjBkxOGnPk8xQrwViTxqMA3Z2Mu8STnLo3d0fcPd57j6vsLCwB0sUERFJvl++uoPDrR092iVsIskM9UpguplNNrNcguBeFj+Tmc0ERgIvJbEWERGRlGjriPKTF7dx6bTRzBk7IqnPlbRQd/d24A7gCWAd8Ii7V5nZvWZ2fcystwBL3b2zQ/MiIiL91hNV9dQfaOFTlyV3Lx2SeEkbgLsvB5bHPXZ33P17klmDiIhIKj30x+1MGDWEBTOKkv5c6lFOREQkSdbtOsCr2/bwsYsnkJ3Vs13CJqJQFxERSZKHXtrOwJwsPjIvOZ3NxFOoi4iIJMH+o23892t13HDeWPKH5PbKcyrURUREkuDR1bUcbevgzy6Z1GvPqVAXERHpYdGo8/OXt3P+hHzOKknuZWyxFOoiIiI97PnNzWxtPswn3jOpV59XoS4iItLDfvbSNgqG5rI4CWOmn4xCXUREpAfV7DnCU+sbuWX+BAbmZPfqcyvURUREetCvVtcCsGT+hF5/boW6iIhID+mIOr9aVcMV0wspyU/eaGydUaiLiIj0kJWbmti1v4WbL+ydzmbiKdRFRER6yCOVNYzKy2XR7EhKnl+hLiIi0gOaDx1jRXUDHzq/hNyc1MSrQl1ERKQHPL6mlvaop+zQOyjURUREzpi783BlDRdMHMm0omEpq0OhLiIicoZWb9/L202HU7qXDgp1ERGRM7a0soa83Gzee/aYlNahUBcRETkDB1va+J83dnH9eWPJG5iT0loU6iIiImfgt6/v4mhbBzdf2Ps9yMVTqIuIiJyBhyt3MDMyjHPH9d4Qq51RqIuIiJymdbsO8Hrtfm6+cDxmlupyFOoiIiKn6+HKGnKzs/jg3JJUlwIo1EVERE5LS1sHv36tjvI5EUbm5aa6HEChLiIicloqqhvYf7SNJX2ggdxxCnUREZHT8HDlDsaNHMx7po5OdSknKNRFRES6acfuI7y4eTcfmTeerKzUN5A7TqEuIiLSTb9aXUOWwU0XjEt1Ke+iUBcREemG9o4ov1pVy4IZhYzNH5zqct5FoS4iItINKzc1UX+gJeWDtySiUBcREemGhytrKBiay9WzIqku5U8kNdTNbLGZbTCzzWb29U7m+YiZVZtZlZn9Ipn1iIiInInGgy08ta6RD50/jtycvrdfnLThZMwsG7gfKANqgUozW+bu1THzTAfuAi51971mVpSsekRERM7U42vqaI86H57X9w69Q3L31OcDm919i7u3AkuBG+Lm+Qxwv7vvBXD3xiTWIyIictrcnUcqa7hw0kimFQ1NdTkJJTPUS4CamPu14WOxZgAzzOxFM3vZzBYnWpGZ3W5mq8xsVVNTU5LKFRER6Vzltr1saT7cJ4ZY7UwyQz3R1fgedz8HmA5cCdwC/MjM8v9kIfcH3H2eu88rLCzs8UJFREROZWnlDoYOzOG6s4tTXUqnkhnqtUDsSYdxwM4E8/zG3dvcfSuwgSDkRURE+owDLW0sf3MX1583liG5SWuOdsaSGeqVwHQzm2xmucASYFncPP8NXAVgZgUEh+O3JLEmERGRblu2dictbVGW9MFr02MlLdTdvR24A3gCWAc84u5VZnavmV0fzvYEsNvMqoFngK+6++5k1SQiInI6Hq6sYfaY4ZxdMiLVpZxUUo8huPtyYHncY3fH3HbgS+E/ERGRPqdq537erNvPPe8vxazvDN6SSN+7cl5ERKQPeaSyhtycLD4wN/4Crr5HoS4iItKJlrYOfv1aHdeeVUz+kNxUl3NKCnUREZFO/OGteg60tHNzH+1BLp5CXUREpBMPV9YwYdQQLp4yOtWldIlCXUREJIHtuw/z0pbd3HzheLKy+nYDueMU6iIiIgk8urqWLIMPnT8u1aV0mUJdREQkTjTqPL6mjkunFVA8YlCqy+kyhbqIiEicV7ftoW7fUW66oP/spYNCXURE5E88trqWvNxsykv77uAtiSjURUREYhxt7WD5m7u47uwxDM7NTnU53aJQFxERiVFRXc/h1g4+1M8OvYNCXURE5F0eXV1LSf5g5k8alepSuk2hLiIiEqrf38KLm5u58fySfnNteiyFuoiISOg3a+uIOtzYj65Nj6VQFxERAdydx9bUcv6EfCYX5KW6nNOiUBcREQGqdh5gY8OhfruXDgp1ERERAB5bU0tudhbvO2dMqks5bQp1ERHJeG0dUZat3cmi0qJ+MW56ZxTqIiKS8Z7b0MTuw63cOLf/HnoHhbqIiAiPv1bL6LxcFswsTHUpZ0ShLiIiGW3/kTaerG7k+vPGMiC7f8di/65eRETkDP32jZ20dkT71bjpnVGoi4hIRnt8TS0zIkOZM3Z4qks5Ywp1ERHJWFubD7Nmxz5uPH8cZv2vW9h4CnUREclYj6+pJcvgg3NLUl1Kj1Coi4hIRopGncfX1HHptAIiwwelupweoVAXEZGM9Oq2PdTtO5oWDeSOU6iLiEhGemx1LXm52VwzpzjVpfQYhbqIiGSco60dLH9zF9edPYbBudmpLqfHJDXUzWyxmW0ws81m9vUE028zsyYzWxv++3Qy6xEREQGoqK7ncGtHvx6RLZGcZK3YzLKB+4EyoBaoNLNl7l4dN+vD7n5HsuoQERGJ9+jqWkryB3PR5FGpLqVHJXNPfT6w2d23uHsrsBS4IYnPJyIickr1+1t4cXMzN55fQlZW/782PVYyQ70EqIm5Xxs+Fu9DZvaGmT1qZuOTWI+IiAi/WVtH1NPn2vRYyQz1RD9/PO7+b4FJ7n4O8CTw04QrMrvdzFaZ2aqmpqYeLlNERDKFu/PYmlrmTshnSuHQVJfT45IZ6rVA7J73OGBn7Azuvtvdj4V3fwhckGhF7v6Au89z93mFhf17WDwREUmdqp0H2NhwKK2uTY+VzFCvBKab2WQzywWWAMtiZzCzMTF3rwfWJbEeERHJcI+tqSU3O4v3nTPm1DP3Q0lr/e7u7WZ2B/AEkA086O5VZnYvsMrdlwF3mtn1QDuwB7gtWfWIiEhma+uIsmztThbOLiJ/SG6qy0mKpIU6gLsvB5bHPXZ3zO27gLuSWYOIiAjAcxua2H24NW0PvYN6lBMRkQzx+Gu1jMrLZcHM9G2bpVAXEZG0t/9IG09WN3L9uWMZkJ2+0Ze+r0xERCT0uzd30toR5aYL0vfQOyjURUQkAzy2upYZkaHMGTs81aUklUJdRETS2tbmw6zZsY8bzx+HWXp1CxtPoS4iImnt12tqyTL4wHnp1y1sPIW6iIikrWjUeWxNHZdOK6B4xKBUl5N0CnUREUlbr27bQ92+o2l9bXoshbqIiKStx9fUkpebTfmcSKpL6RUKdRERSUtHWztY/mY91509hiG5Se1Atc9QqIuISFqqqK7n0LF2bsyQQ++gUBcRkTT12Jo6SvIHc9HkUakupdco1EVEJO00HGjhhU1N3Hh+CVlZ6X1teiyFuoiIpJ3frK0j6vDBuel/bXoshbqIiKQVd+ex1XXMnZDPlMKhqS6nVynURUQkrVTtPMCGhoMZc216LIW6iIiklcfX1JGbncX7zhmT6lJ6nUJdRETSRltHlGWv17FwdhH5Q3JTXU6vU6iLiEjaWLmxieZDrRl1bXqsk3axY2YHAe9surun98C0IiLSrzy+po5ReblcObMw1aWkxElD3d2HAZjZvUA98DPAgI8Cw5JenYiISBftP9LGinUN3Dp/AgOyM/NAdFdf9TXu/u/uftDdD7j7/wM+lMzCREREuuN3b+6ktT2aka3ej+tqqHeY2UfNLNvMsszso0BHMgsTERHpjocra5hVPIyzSjL3zHBXQ/1W4CNAQ/jvw+FjIiIiKfdW3X7eqN3PLfMnYJY53cLG69JYdO6+DbghuaWIiIicnqWVOxiYk8UHzsusbmHjdWlP3cxmmNlTZvZWeP8cM/tmcksTERE5tSOt7fz3azt57zljGDFkQKrLSamuHn7/IXAX0Abg7m8AS5JVlIiISFf97vVdHDrWzi3zJ6S6lJTraqgPcfdX4x5r7+liREREuuuXlTuYVjSUeRNHprqUlOtqqDeb2VTCjmjM7CZgV9KqEhER6YJ1uw7w2o59Gd9A7riuhvrngB8As8ysDvgi8JenWsjMFpvZBjPbbGZfP8l8N5mZm9m8LtYjIiLC0ld3kJudxY0ZNm56Z7rU+h3Y7u6LzCwPyHL3g6dawMyygfuBMqAWqDSzZe5eHTffMOBO4JXulS4iIpnsaGsHv36tjmvPLmZkXuYN3pJIV/fUt5rZA8DFwKEuLjMf2OzuW9y9FVhK4svivgV8D2jp4npFRERY/uYuDrSogVysrob6TOBJgsPwW83s+2Z22SmWKQFqYu7Xho+dYGZzgfHu/rsu1iEiIgIE16ZPKcjjosmjUl1Kn9GlUHf3o+7+iLvfCMwFhgPPnWKxRC0WToz4ZmZZwL8AXz7V85vZ7Wa2ysxWNTU1daVkERFJY5saDlK5bS9L5o9XA7kYXR7GxswWmNm/A2uAQQTdxp5MLTA+5v44YGfM/WHAWcCzZraN4ND+skSN5dz9AXef5+7zCgszczg9ERF5xy9frWFAtmX04C2JdKmhnJltBdYCjwBfdffDXVisEphuZpOBOoLOak70F+/u+4GCmOd4FviKu6/qcvUiIpJxWto6ePy1WsrnFDN66MBUl9OndLX1+7nufqA7K3b3djO7A3gCyAYedPeqcGz2Ve6+rJu1ioiI8ERVPfuOtHGrGsj9iZOGupn9jbt/D/i2mXn8dHe/82TLu/tyYHncY3d3Mu+Vp6xWREQy3i9e2cGEUUO4ZMroVJfS55xqT31d+L8OiYuISMptaTrEK1v38DeLZ5KVpQZy8U4a6u7+2/DmG+7+Wi/UIyIi0qmllTXkZBk3XaAGcol0tfX7P5vZejP7lpnNSWpFIiIiCRxr7+DR1bUsmh2haNigVJfTJ3X1OvWrgCuBJuABM3tT46mLiEhvWlHdwJ7DrdxykRrIdabL16m7e727/xvBQC5rgYQN3kRERJLhl6/uoCR/MJdPKzj1zBmqS6FuZrPN7B4zewv4PvBHgs5kREREkm777sO8uHk3Sy4crwZyJ9HV69T/E/glUO7uO081s4iISE9aWllDdpbx4XnjTz1zBjtlqIdDqL7t7vf1Qj0iIiLv0tYR5Verarl6VhHFI9RA7mROefjd3TuA0WamwWpFRKTXPbWugeZDx7hlvvbST6Wrh9+3Ay+a2TLgRL/v7v7PSalKREQk9ItXaxgzYhALZhSlupQ+r6uhvjP8l0UwupqIiEjS1ew5wvObmrjz6ulkq4HcKXUp1N3975NdiIiISLxHVtVgwEcu1KH3rujq0KvPAIkGdLm6xysSEREB2juiPFxZw5UziyjJH5zqcvqFrh5+/0rM7UHAh4D2ni9HREQk8PT6RhoPHmOJ9tK7rKuH31fHPfSimT2XhHpERESA4Nr0omEDuXqWGsh1VVcPv4+KuZsFzAOKk1KRiIhkvLp9R3l2QyOfu2oaOdld7tE843X18Ptq3jmn3g5sAz6VjIJEREQeqazBgY+oB7luOWmom9mFQI27Tw7vf4LgfPo2oDrp1YmISMbpiDqPrKrh8umFjB81JNXl9CunOqbxA6AVwMyuAL4D/BTYDzyQ3NJERCQTPbexkV37W7hFDeS67VSH37PdfU94+2bgAXd/DHjMzNYmtzQREclEv3ilhoKHTThuAAAeuklEQVShA1lUGkl1Kf3OqfbUs83sePAvBJ6OmdbV8/EiIiJdUr+/hWc2NPLheeMYoAZy3XaqYP4l8JyZNQNHgecBzGwawSF4ERGRHvOrVTV0RF3Xpp+mk4a6u3/bzJ4CxgAV7n68BXwW8PlkFyciIpkjGnWWVtZw6bTRTBydl+py+qVTHkJ395cTPLYxOeWIiEimen5zM3X7jnLXdbNSXUq/pRMWIiLSJ/zylR2MysulTA3kTptCXUREUq7xYAtPrmvgpgvGMTAnO9Xl9FsKdRERSblHV9fSrgZyZ0yhLiIiKRWNOktfreGiyaOYUjg01eX0awp1ERFJqZe27GbHniPcetGEVJfS7ynURUQkpX7x6g7yhwzgmjka/PNMJTXUzWyxmW0ws81m9vUE0//SzN40s7Vm9oKZlSazHhER6Vt2HzpGRVU9N84dx6ABaiB3ppLW1auZZQP3A2VALVBpZsvcPXZ0t1+4+3+E818P/DOwOFk1iYhI37Cl6RArqhtY9vpO2jqcW+argVxPSGb/7fOBze6+BcDMlgI3EDNkq7sfiJk/j3fGbBcRkTQSjTqv1+6jorqBFdUNbG48BMBZJcP53x84i+mRYSmuMD0kM9RLgJqY+7XARfEzmdnngC8BucDViVZkZrcDtwNMmKCGFCIi/cGx9g5eens3FdUNPFndQOPBY2RnGRdPGcXHL57IotIIJfmDU11mWklmqFuCx/5kT9zd7wfuN7NbgW8Cn0gwzwOE47fPmzdPe/MiIn3U/qNtPLuhkYrqBp7b0MShY+3k5WazYGYh5aXFXDWziBFDBqS6zLSVzFCvBWJPkowDdp5k/qXA/0tiPSIikgQ79x3lyXUNVFQ18PKW3bRHnYKhA3n/uWMpL41wydTRagTXS5IZ6pXAdDObDNQBS4BbY2cws+nuvim8+15gEyIi0qe5OxsaDrKiqoGK6gberAtG4p5SmMenL59CWWmEuePzycpKdMBWkilpoe7u7WZ2B/AEkA086O5VZnYvsMrdlwF3mNkioA3YS4JD7yIiknrtHVFWb997oqHbjj1HMIO54/P52uJZlJVGmFak3uBSzd4ZIr1/mDdvnq9atSrVZYiIpL2jrR2s3NTEiuoGnlrXwN4jbeRmZ3HptNGUzylm4ewiioYNSnWZac/MVrv7vK7Mm8zD7yIi0s/sPnSMp9Y3sqK6gec3NdHSFmX4oByunlVE+ZxirphRyNCBio6+Su+MiEiG2777MCuqg4Zuq7bvIeowdsQgllw4gbLSCPMnj2JAtnoV7w8U6iIiGcbdebNuPxVVwfnxDQ0HAZhVPIw7rp5OeWmEOWOHY6aGbv2NQl1EJAO0tkd5ZetuKqoaeHJdA7v2t5BlMH/yKP7X+0opL40wftSQVJcpZ0ihLiKSpg62tPHshqCh2zPrGzl4rJ3BA7K5YkYBXymfydWzihiZl5vqMqUHKdRFRNJIw4GW4Px4dQMvvd1MW4czOi+Xa88upry0mMumF6gjmDSmUBcR6cfcnc2Nh6gIg/z1mn0ATBo9hD+/dDJlpRHOnzCSbHUEkxEU6iIi/UxH1HltxzsdwWxtPgzAuePz+eo1MykPO4JRQ7fMo1AXEekHWto6eGFTMyuqg4Zuuw+3MiDbuGRqAZ+8bDJlsyMUj1BHMJlOoS4i0kftPdzK02FHMM9tbOJoWwfDBuZw5awiyksjLJhZyPBBGvFM3qFQFxHpQ2r2HAkbutVTuW0vHVGnePggbrpgHGWlES6eMprcHHUEI4kp1EVEUsjdqdp54ESL9XW7DgAwIzKUzy6YSllphLNLRmjEM+kShbqISC9r64hSuXXPiYZudfuOYgYXThzF3143m7LSCJMK8lJdpvRDCnURkV5w+Fg7z218Z8SzAy3tDMzJ4vLphXxh4XSunl1EwdCBqS5T+jmFuohIkjQebOGpdUFDtxc2N9PaHmXkkAGUlRZTPifC5dMLGJKrr2HpOfo0iYj0oLebDoUjntXzWs0+3GH8qMF8/OKJlJVGmDdxJDka8UySRKEuInIGolFnbe2+cMSzet5uCjqCOatkOH+9aAZlpRFmFQ9TRzDSKxTqIiLddKy9gz++/c6IZ00Hj5GTZVw8ZTR/dskkFpVGKMkfnOoyJQMp1EVEumD/kTae2RCcH392QyOHWzvIy83myplFlM+JcOWMIkYMUUcwkloKdRGRTuzcd5QV4WVnL2/ZTXvUKRw2kOvPK6F8ToT3TB3NwByNeCZ9h0JdRCTk7qyvP3iiR7e36oKOYKYW5vHpy6dQPifCeePy1RGM9FkKdRHJaO0dUVZt3xs0dFtXT82eoCOYuePz+fq1sygrjTC1cGiqyxTpEoW6iGScI63trNwYjHj29PoG9h5pIzcni8umFfBXV05j4ewiioZpxDPpfxTqIpIRdh86xlPrGqmobuD5TU0ca48yfFAOC2dHKC+NcMWMQvIG6itR+jd9gkUkbW1rPnzi/Pjq7XuJOpTkD+aW+RMoL41w4eRRDFBHMJJGFOoikjaiUefNuv0ngnxjwyEAZo8Zzuevnk5ZaYQ5Y4erIxhJWwp1EenXWtujvLxlNxXV9TxZ3Uj9gRays4z5k0Zx9/smUFYaYfyoIakuU6RXKNRFpN852NLGsxuaqKhu4Nn1jRw81s7gAdksmFFIWWmEq2cVMTIvN9VlivQ6hbqI9Av1+1tYsS7oCOalt5tp63BG5+Vy3dljKJ8T4dJpBQwaoI5gJLMlNdTNbDFwH5AN/Mjdvxs3/UvAp4F2oAn4pLtvT2ZNItI/uDubGt8Z8ez12v0ATBo9hD+/dDLlpRHmThhJtjqCETkhaaFuZtnA/UAZUAtUmtkyd6+Ome01YJ67HzGzzwLfA25OVk0i0rd1RJ01O/ZSUVXPiuoGtu0+AsC54/P56jUzKS+NMK1oqBq6iXQimXvq84HN7r4FwMyWAjcAJ0Ld3Z+Jmf9l4GNJrEdE+qCWtg5e2NRMRXU9T61rZPfhVgZkG5dMLeDTl0+hrDRCZLg6ghHpimSGeglQE3O/FrjoJPN/Cvh9oglmdjtwO8CECRN6qj4RSZG9h1t5an0jK6rrWbmxmaNtHQwbmMNVs4ooK41w5cxChg3SiGci3ZXMUE90fMwTzmj2MWAesCDRdHd/AHgAYN68eQnXISJ9W82eI1RUN7Ciup7KbXvpiDrFwwdx0wXjKJ8T4aLJo8nNUUcwImcimaFeC4yPuT8O2Bk/k5ktAv4WWODux5JYj4j0InenaucBKsKGbuvrDwIwMzKMv7pyKmWlEc4uGaHz4yI9KJmhXglMN7PJQB2wBLg1dgYzmwv8AFjs7o1JrEVEekFbR5RXt+450dBt5/4WsgzmTRzFN987m7LSCBNH56W6TJG0lbRQd/d2M7sDeILgkrYH3b3KzO4FVrn7MuCfgKHAr8Jf6zvc/fpk1SQiPe/QsXZWbmyioqqep9c3cqClnYE5WVw+vZAvls1g4awiRg8dmOoyRTJCUq9Td/flwPK4x+6Oub0omc8vIsnReLCFJ6uDhm4vbt5Na0eUkUMGUD6nmLLSCJdPL2BIrvq2Eult+qsTkS7ZfLwjmOp61tbswx0mjBrCxy+ZSHlphAsmjiRHI56JpJRCXUQSikad12r2nQjyLU2HATi7ZARfWjSDsjkRZkaGqaGbSB+iUBeRE1raOnjp7WDEsxXVjTQfOkZOlnHxlNHc9p5JLJodYWz+4FSXKSKdUKiLZLj9R9p4ekMwUMqzG5o40tpBXm42V84qorw0wpUzixgxWB3BiPQHCnWRDFS37ygrqupZsa6BV7bsoT3qFA4byAfmllBeGuGSqaMZmKMRz0T6G4W6SAZwd9btOnji/HjVzgMATCsaymeumEJ5aYRzx+WTpRHPRPo1hbpImmrviFK5bW94fryB2r1HMYPzJ4zkrmtnUVYaYUrh0FSXKSI9SKEukkaOtLazcmMw4tnT6xvZd6SN3JwsLptWwB1XTWPh7AiFw9QRjEi6UqiL9HPNh47x1Lqgodvzm5o51h5lxOABLAxHPLtiRiF5A/WnLpIJ9Jcu0g9tbT7Miup6KqoaWL1jL+5Qkj+YW+ZPoLw0woWTRzFAHcGIZByFukg/EI06b9TtPxHkmxoPAVA6Zjh3Xj2d8jkRSscMV0cwIhlOoS7SR7W2R3lpy24qqup5cl0DDQeOkZ1lzJ80ilsvmsCi2RHGjxqS6jJFpA9RqIv0IQda2nh2QzDi2XMbmjh4rJ3BA7JZMKOQ8jkRrp5VRP6Q3FSXKSJ9lEJdJMV27T/Kk9UNVFQ38PKW3bR1OAVDc3nvOWMoK41w6bQCBg1QRzAicmoKdZFe5u5sbDgUnB+vbuCN2v0ATC7I45OXTqZ8ToTzxo8kWx3BiEg3KdRFekFH1Fm9fS8VYdes23cfAeC88fl89ZqZXDMnwtTCoWroJiJnRKEukiQtbR08v6mZiqp6nlrfyJ7DrQzINt4ztYDbr5jCotkRIsMHpbpMEUkjCnWRHrTncCtPr2+koqqelZuaaGmLMmxQDlfNLKJ8ToQFMwoZNkgjnolIcijURc7Qjt1HTvSvXrltD1GH4uGD+Mi88ZSVRrho8mhyc9QRjIgkn0JdpJvcnbfqDpxo6La+/iAAs4qH8bmrplFeWsxZJeoIRkR6n0JdpAvaOqK8smUPFdX1PFndwM79LWQZzJs0im++dzZlpREmjs5LdZkikuEU6iKdOHSsnec2NFFRXc8z6xs50NLOoAFZXD69kL8um8HVs4oYPVQjnolI36FQF4nReKCFFeGIZ3/cvJvWjigjhwzgmjnFlJVGuHx6IYNz1RGMiPRNCnXJeJsbD1ERDpSytmYfABNGDeHPLplIWWmECyaOJEcjnolIP6BQl4wTjTqv1eylorqBFVUNbGk+DMA540bw5bIZlM8pZkZEHcGISP+jUJeM0NLWwR/fbqaiqoEn1zXSfOgYOVnGJVNHc9ulk1g0O8LY/MGpLlNE5Iwo1CVt7T/SxtMbGqioauC5jU0cae1g6MAcFswspLw0wpUzixgxWB3BiEj6UKhLWqnde4QV1UFDt1e27qEj6hQNG8gH55ZQVhrhkqmjGZijhm4ikp4U6tKvuTvVuw6wojrYI6/edQCAaUVD+YsrplA+p5hzSkaQpRHPRCQDJDXUzWwxcB+QDfzI3b8bN/0K4F+Bc4Al7v5oMuuR9NDeEeXVbXtOBHndvqOYwQUTRnLXtbMoK40wpXBoqssUEel1SQt1M8sG7gfKgFqg0syWuXt1zGw7gNuArySrDkkPR1rbWbmxiYqqBp7e0Mi+I23k5mRx+bQC7lw4jatnRSgcpo5gRCSzJXNPfT6w2d23AJjZUuAG4ESou/u2cFo0iXVIP9V08BhPhR3BPL+5mdb2KCMGD2DhrGDEs8unF5I3UGeQRESOS+Y3YglQE3O/Frgoic8naWBr82EqqoIRz1bv2Is7lOQP5qMXTaCsNML8SaPUEYyISCeSGeqJWib5aa3I7HbgdoAJEyacSU3Sx0Sjzuu1+4Lz49UNbG48BEDpmOF8YeF0ykojlI7RiGciIl2RzFCvBcbH3B8H7DydFbn7A8ADAPPmzTutHwbSdxxr7+Clt3dTUd3Ak9UNNB48RnaWcdHkUSf2yMeNHJLqMkVE+p1khnolMN3MJgN1wBLg1iQ+n/Rh+4+28eyGRiqqG3huQxOHjrUzJDebBTMKKZ8T4aqZReQPyU11mSIi/VrSQt3d283sDuAJgkvaHnT3KjO7F1jl7svM7ELg18BI4P1m9vfuPidZNUnv2rX/6ImOYF56ezftUadgaC7vO2cM5XMivGdqAYMGqCMYEZGektSmw+6+HFge99jdMbcrCQ7LSxpwdzY0HGRFVXB+/M26/QBMKcjjU5dPprw0wnnjR5KtjmBERJJC1wPJGemIOquOdwRT3cCOPUcAOG98Pn+zeCblpcVMK1JHMCIivUGhLt12tLWD5zc1UVHdwNPrG9lzuJXc7CzeM200f7FgCmWzIxQNH5TqMkVEMo5CXbpkz+FWnloX7I0/v6mJlrYowwblcPWsIspLi7liRgHDBmnEMxGRVFKoS6e27z584rD6qm17iDqMGTGIj8wbT3lpMfMnjyI3Rx3BiIj0FQp1OcHdebNu/4mBUjY0HARgVvEw7rhqGmWlxZxVoo5gRET6KoV6hmttj/LK1t0nLj3btb+FLIN5k0bxzffOpry0mAmj1RGMiEh/oFDPQAdb2nguHPHsmQ2NHGxpZ9CALK6YXsiXymawcHaEUXnqCEZEpL9RqGeIhgMt7+oIprUjyqi8XBbPKaZ8TjGXTStgcK46ghER6c8U6mnK3Xm76RBPVAVBvrZmHwATRw/hE++ZSFlpMRdMVEcwIiLpRKGeRjqizms79p5osb61+TAA54wbwVfKZ1BWWsyMyFA1dBMRSVMK9X6upa2DFzc3s6K6gSfXNdB8qJWcLOOSqaP55KWTWFQaYcyIwakuU0REeoFCvR/ad6SVp9c3UlHVwMpNTRxp7WDowByunFlIWWmEK2cWMWKwOoIREck0CvV+ombPkRMN3V7dtoeOqBMZPpAPzi2hfE4xF08ZxcAcNXQTEclkCvU+yt2p2nngxPnxdbsOADC9aCh/uWAKZaXFnFMygiw1dBMRkZBCvQ9p64hSuXUPFeEeed2+o5jBBRNG8o3rZlFWWszkgrxUlykiIn2UQj3FDh9rZ+XGd0Y823+0jdycLK6YXsCdC6dx9awIhcMGprpMERHpBxTqKdB08NiJEc9e2NxMa3uU/CEDWDj7nRHPhuTqrRERke5RcvSSLU2HThxWX7NjL+4wbuRgPnrRBMpLi7lw0khysjXimYiInD6FepJEo87rtfuoqG6goqqet5uCjmDmjB3OFxfOoKw0wuwxw9QRjIiI9BiFeg861t7BH98ORjx7srqBxoPHyM4yLpo8io9fPJFFpRHGjdSIZyIikhwK9TO0/2gbz24IOoJ5dkMjh1s7GJKbfaIjmKtmFpE/RCOeiYhI8inUT8POfUdPdATz8pbdtEedgqEDuf68sZSXFnPJ1NEMGqCOYEREpHcp1LvA3dnQcJCKqgYqqut5qy7oCGZKQR6funwy5aXFzB2fr45gREQkpRTqnWjviLJq+/ERz+qp2XMUgLkT8vna4lmUlUaYVjQ0xVWKiIi8Q6Ee42hrBys3NbGiuoGn1jWw90gbudlZXDptNJ9dMI1Fs4soGj4o1WWKiIgklPGhvvvQMZ4KRzx7YXMTLW1Rhg3KYeGsIspKi1kws5ChAzN+M4mISD+QkWm1rfnwiYZuq7bvIeowZsQgbp43nvI5xcyfPIoB6ghGRET6mYwIdXfnzbr9Jxq6bWw4BMCs4mHccdU0yucUM2fscHUEIyIi/Vrahnpre5SXt+w+sUdef6CFLIMLJ43if72vlPLSCONHqSMYERFJH2kV6gdb2nh2QzDi2bPrGzl4rJ1BA7JYMKOQr5TO5OpZRYzKU0cwIiKSnpIa6ma2GLgPyAZ+5O7fjZs+EHgIuADYDdzs7tu68xwNB1rCy84aeOntZto6nFF5uVx7djFlpcVcNq2AwbnqCEZERNJf0kLdzLKB+4EyoBaoNLNl7l4dM9ungL3uPs3MlgD/CNx8qnVvajgYDJRS3cDrNfsAmDh6CLe9ZxLlc4o5f8JIstURjIiIZJhk7qnPBza7+xYAM1sK3ADEhvoNwD3h7UeB75uZubt3ttINDQcp+5eVAJw7bgRfvWYmZaURphcNVUM3ERHJaMkM9RKgJuZ+LXBRZ/O4e7uZ7QdGA82xM5nZ7cDtAEPHTOFbHziLstkRikeoIxgREZHjknkxdqLd5vg98K7Mg7s/4O7z3H3ezLEj+fjFExXoIiIicZIZ6rXA+Jj744Cdnc1jZjnACGBPEmsSERFJW8kM9UpguplNNrNcYAmwLG6eZcAnwts3AU+f7Hy6iIiIdC5p59TDc+R3AE8QXNL2oLtXmdm9wCp3Xwb8GPiZmW0m2ENfkqx6RERE0l1Sr1N39+XA8rjH7o653QJ8OJk1iIiIZAqNWiIiIpImFOoiIiJpQqEuIiKSJhTqIiIiaUKhLiIikiYU6iIiImlCoS4iIpImFOoiIiJpQqEuIiKSJqy/dbVuZk3A9lTX0cMKiBtuVgBtl85ouySm7ZKYtkti/Wm7THT3wq7M2O9CPR2Z2Sp3n5fqOvoabZfEtF0S03ZJTNslsXTdLjr8LiIikiYU6iIiImlCod43PJDqAvoobZfEtF0S03ZJTNslsbTcLjqnLiIikia0py4iIpImFOopZGYfNrMqM4ua2by4aXeZ2WYz22Bm16SqxlQzs/PM7GUzW2tmq8xsfqpr6ivM7PPh56PKzL6X6nr6EjP7ipm5mRWkupa+wMz+yczWm9kbZvZrM8tPdU2pZGaLw7+dzWb29VTX05MU6qn1FnAjsDL2QTMrBZYAc4DFwL+bWXbvl9cnfA/4e3c/D7g7vJ/xzOwq4AbgHHefA/yfFJfUZ5jZeKAM2JHqWvqQFcBZ7n4OsBG4K8X1pEz4XXo/cC1QCtwSfuemBYV6Crn7OnffkGDSDcBSdz/m7luBzUCm7qE6MDy8PQLYmcJa+pLPAt9192MA7t6Y4nr6kn8B/obgsyOAu1e4e3t492VgXCrrSbH5wGZ33+LurcBSgu/ctKBQ75tKgJqY+7XhY5noi8A/mVkNwd5oxu5hxJkBXG5mr5jZc2Z2YaoL6gvM7Hqgzt1fT3Utfdgngd+nuogUSuvv15xUF5DuzOxJoDjBpL919990tliCx9J2r+Nk2whYCPy1uz9mZh8Bfgws6s36UuUU2yUHGAlcDFwIPGJmUzwDLmc5xXb5BlDeuxX1DV35rjGzvwXagf/qzdr6mLT+flWoJ5m7n04A1QLjY+6PI40PO59sG5nZQ8AXwru/An7UK0X1AafYLp8FHg9D/FUzixL0Zd3UW/WlSmfbxczOBiYDr5sZBH83a8xsvrvX92KJKXGq7xoz+wTwPmBhJvz4O4m0/n7V4fe+aRmwxMwGmtlkYDrwaoprSpWdwILw9tXAphTW0pf8N8H2wMxmALn0n8EpksLd33T3Inef5O6TCL68z8+EQD8VM1sMfA243t2PpLqeFKsEppvZZDPLJWiUvCzFNfUY7amnkJl9EPi/QCHwP2a21t2vcfcqM3sEqCY4VPY5d+9IZa0p9BngPjPLAVqA21NcT1/xIPCgmb0FtAKfyPC9Lzm57wMDgRXhUYyX3f0vU1tSarh7u5ndATwBZAMPuntVisvqMepRTkREJE3o8LuIiEiaUKiLiIikCYW6iIhImlCoi4iIpAmFuoiISJpQqIuIiKQJhbpIH2ZmxWa21MzeNrNqM1sedjaTaN5J4XXriab9qDdHojKzbckY9vRkr1FE1PmMSJ9lQS8hvwZ+6u5LwsfOAyIEw2d2mbt/uucrDJhZTswIYKe7juwM7mBJpMdoT12k77oKaHP3/zj+gLuvBV4zs6fMbI2ZvWlmscNG5pjZT83sDTN71MyGAJjZs2Y2L7x9yMy+bWavm9nLZhbprAAzmxg+1xvh/xPCx39iZv9sZs8A/2hmo82swsxeM7MfEDNohpl9zMxeNbO1ZvaDcDzr43Xca2avAJeY2QXhiHOrzewJMxsTzndBWOtLwOd6aNuKpCWFukjfdRawOsHjLcAH3f18guD//8K9eoCZwAPufg5wAPirBMvnEXQTei6wkqAr3s58H3goXN9/Af8WM20GsMjdvwz8HfCCu88l6Ef7ePjPBm4GLnX384AO4KMxdbzl7hcBrxB0mXyTu19A0A3ut8P5/hO4090vOUmdIoIOv4v0Rwb8g5ldAUQJxoI+vrdd4+4vhrd/DtxJMA59rFbgd+Ht1UDZSZ7rEuDG8PbPgO/FTPtVzCHzK47P5+7/Y2Z7w8cXAhcAleHvjsFAYzitA3gsvD2T4EfM8b7Js4FdZjYCyHf352JquPYk9YpkNIW6SN9VBdyU4PGPEgwCdIG7t5nZNmBQOC1+MIdEgzu0xQz+0kH3vgdi13e4C89lBG0C7kowrSXmR4EBVfF742aW38l6RSQBHX4X6bueBgaa2YnD42b/f3t3qxJREIBh+P2CF+CCgsW9AKsWEcGgYBQ0GES8Ab0ADRoMXoB4EXaDYhExiajgXzWaNAmWY9hZWGQ3bZHhfdo588NM+s4Mc5jMAG3gowT6QnnumkzSDcZ14HrIMdzQuZoSOh8Tg/q7KuUkWQZGy/tLYDXJeClrJWn3af8GjHXHnmQkyVTTNJ/AV5K5njFIGsBQl/6psppeARbLL21PwD5wBkwnuaUTcq89zV6AzSSPQAs4GXIY28BW6W8D2BlQ7wCYT3IHLAHvZQ7PwB5wXvq4ACb6zPWHzq7EUZIH4B6YLcVbwHE5KPc95Hykqnn1qiRJlXClLklSJTwoJ4kku8Dan9enTdMc9qsv6X9y+12SpEq4/S5JUiUMdUmSKmGoS5JUCUNdkqRKGOqSJFXiF5wuWrWJ8PvyAAAAAElFTkSuQmCC\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"We can see in the above plot, there is now a monotonic relationship between the variable Cabin and probability of survival. The higher the Cabin number, the more likely the person was to survive."},{"metadata":{"trusted":true},"cell_type":"markdown","source":"# **5. Variable Transformation** \n\n[Table of Contents](#0.1)\n\n\n- Some machine learning models like linear and logistic regression assume that the variables are normally distributed. Others benefit from **Gaussian-like** distributions, as in such distributions the observations of X available to predict Y vary across a greater range of values. Thus, Gaussian distributed variables may boost the machine learning algorithm performance.\n\n- If a variable is not normally distributed, sometimes it is possible to find a mathematical transformation so that the transformed variable is Gaussian. Typically used mathematical transformations are:\n\n \n 1. Logarithm transformation - log(x)\n\n 2. Reciprocal transformation - 1 / x\n\n 3. Square root transformation - sqrt(x)\n\n 4. Exponential transformation - exp(x)\n\n 5. Box-Cox transformation \n \n- Now, let's demonstrate the above transformations on the titanic dataset."},{"metadata":{"trusted":true},"cell_type":"code","source":"# load the numerical variables of the Titanic Dataset\n\ndata = pd.read_csv('/kaggle/input/titanic/train.csv', usecols = ['Age', 'Fare', 'Survived'])\ndata.head()","execution_count":77,"outputs":[{"output_type":"execute_result","execution_count":77,"data":{"text/plain":" Survived Age Fare\n0 0 22.0 7.2500\n1 1 38.0 71.2833\n2 1 26.0 7.9250\n3 1 35.0 53.1000\n4 0 35.0 8.0500","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
SurvivedAgeFare
0022.07.2500
1138.071.2833
2126.07.9250
3135.053.1000
4035.08.0500
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Fill missing data with random sample**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# first I will fill the missing data of the variable age, with a random sample of the variable\n\ndef impute_na(data, variable):\n # function to fill na with a random sample\n df = data.copy()\n \n # random sampling\n df[variable+'_random'] = df[variable]\n \n # extract the random sample to fill the na\n random_sample = df[variable].dropna().sample(df[variable].isnull().sum(), random_state=0)\n \n # pandas needs to have the same index in order to merge datasets\n random_sample.index = df[df[variable].isnull()].index\n df.loc[df[variable].isnull(), variable+'_random'] = random_sample\n \n return df[variable+'_random']","execution_count":78,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# fill na\ndata['Age'] = impute_na(data, 'Age')","execution_count":79,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## **Age**\n\n\n### **Original distribution**\n\n\n- We can visualise the distribution of the `Age` variable, by plotting a histogram and the Q-Q plot."},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot the histograms to have a quick look at the distributions\n# we can plot Q-Q plots to visualise if the variable is normally distributed\n\ndef diagnostic_plots(df, variable):\n # function to plot a histogram and a Q-Q plot\n # side by side, for a certain variable\n \n plt.figure(figsize=(15,6))\n plt.subplot(1, 2, 1)\n df[variable].hist()\n\n plt.subplot(1, 2, 2)\n stats.probplot(df[variable], dist=\"norm\", plot=pylab)\n\n plt.show()\n \ndiagnostic_plots(data, 'Age')","execution_count":80,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"- The variable `Age` is almost normally distributed, except for some observations on the lower value tail of the distribution. Note the slight skew to the left in the histogram, and the deviation from the straight line towards the lower values in the Q-Q- plot. \n\n- In the following cells, I will apply the above mentioned transformations and compare the distributions of the transformed `Age` variable."},{"metadata":{},"cell_type":"markdown","source":"## **5.1 Logarithmic transformation** \n\n[Table of Contents](#0.1)"},{"metadata":{"trusted":true},"cell_type":"code","source":"### Logarithmic transformation\ndata['Age_log'] = np.log(data.Age)\n\ndiagnostic_plots(data, 'Age_log')","execution_count":81,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"- The logarithmic transformation, did not produce a Gaussian like distribution for Age."},{"metadata":{},"cell_type":"markdown","source":"## **5.2 Reciprocal transformation** \n\n[Table of Contents](#0.1)"},{"metadata":{"trusted":true},"cell_type":"code","source":"### Reciprocal transformation\ndata['Age_reciprocal'] = 1 / data.Age\n\ndiagnostic_plots(data, 'Age_reciprocal')","execution_count":82,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"The reciprocal transformation was also not useful to transform Age into a variable normally distributed."},{"metadata":{},"cell_type":"markdown","source":"## **5.3 Square root transformation** \n\n[Table of Contents](#0.1)"},{"metadata":{"trusted":true},"cell_type":"code","source":"data['Age_sqr'] =data.Age**(1/2)\n\ndiagnostic_plots(data, 'Age_sqr')","execution_count":83,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"The square root transformation is a bit more succesful that the previous two transformations. However, the variable is still not Gaussian, and this does not represent an improvement towards normality respect the original distribution of Age."},{"metadata":{},"cell_type":"markdown","source":"## **5.4 Exponential Transformation** \n\n[Table of Contents](#0.1)"},{"metadata":{"trusted":true},"cell_type":"code","source":"data['Age_exp'] = data.Age**(1/1.2) \n\ndiagnostic_plots(data, 'Age_exp')","execution_count":84,"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"The exponential transformation is the best of all the transformations above, at the time of generating a variable that is normally distributed. Comparing the histogram and Q-Q plot of the exponentially transformed Age with the original distribution, we can say that the transformed variable follows more closely a Gaussian distribution."},{"metadata":{},"cell_type":"markdown","source":"## **5.5 BoxCox transformation** \n\n[Table of Contents](#0.1)\n\n\n- The Box-Cox transformation is defined as: \n\n T(Y)=(Y exp(λ)−1)/λ\n\n- where Y is the response variable and λ is the transformation parameter. λ varies from -5 to 5. In the transformation, all values of λ are considered and the optimal value for a given variable is selected.\n\n- Briefly, for each λ (the transformation tests several λs), the correlation coefficient of the Probability Plot (Q-Q plot below, correlation between ordered values and theoretical quantiles) is calculated. \n\n- The value of λ corresponding to the maximum correlation on the plot is then the optimal choice for λ.\n\n- In python, we can evaluate and obtain the best λ with the stats.boxcox function from the package scipy.\n\n- We can proceed as follows -"},{"metadata":{"trusted":true},"cell_type":"code","source":"data['Age_boxcox'], param = stats.boxcox(data.Age) \n\nprint('Optimal λ: ', param)\n\ndiagnostic_plots(data, 'Age_boxcox')","execution_count":85,"outputs":[{"output_type":"stream","text":"Optimal λ: 0.7648522500282625\n","name":"stdout"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"The Box Cox transformation was as good as the exponential transformation we performed above to make Age look more Gaussian. Whether we decide to proceed with the original variable or the transformed variable, will depend of the purpose of the exercise."},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"markdown","source":"# **6. Discretization** \n\n[Table of Contents](#0.1)\n\n\n- **Discretisation** is the process of transforming continuous variables into discrete variables by creating a set of contiguous intervals that spans the range of the variable's values.\n\n### Discretisation helps handle outliers and highly skewed variables\n\n- **Discretisation** helps handle outliers by placing these values into the lower or higher intervals together with the remaining inlier values of the distribution. Thus, these outlier observations no longer differ from the rest of the values at the tails of the distribution, as they are now all together in the same interval / bucket. In addition, by creating appropriate bins or intervals, discretisation can help spread the values of a skewed variable across a set of bins with equal number of observations.\n\n- There are several approaches to transform continuous variables into discrete ones. This process is also known as **binning**, with each bin being each interval. \n\n- **Discretisation** refers to sorting the values of the variable into bins or intervals, also called buckets. There are multiple ways to discretise variables:\n \n\n 1. Equal width discretisation\n\n 2. Equal Frequency discretisation\n \n 3. Domain knowledge discretisation\n\n 4. Discretisation using decision trees"},{"metadata":{},"cell_type":"markdown","source":"## **Discretising data with pandas cut and qcut functions**\n\n- When dealing with continuous numeric data, it is often helpful to bin the data into multiple buckets for further analysis. Pandas supports these approaches using the **cut** and **qcut** functions.\n\n- **cut** command creates equispaced bins but frequency of samples is unequal in each bin.\n\n- **qcut** command creates unequal size bins but frequency of samples is equal in each bin.\n\n- The following diagram illustrates the point :-"},{"metadata":{},"cell_type":"markdown","source":"![Discretising data with pandas cut and qcut](https://i.stack.imgur.com/pObHa.png)"},{"metadata":{},"cell_type":"markdown","source":"## **6.1 Equal width discretisation with pandas cut function** \n\n[Table of Contents](#0.1)\n\n\n- Equal width binning divides the scope of possible values into N bins of the same width.The width is determined by the range of values in the variable and the number of bins we wish to use to divide the variable.\n\n width = (max value - min value) / N\n\n- For example if the values of the variable vary between 0 and 100, we create 5 bins like this: width = (100-0) / 5 = 20. The bins thus are 0-20, 20-40, 40-60, 80-100. The first and final bins (0-20 and 80-100) can be expanded to accommodate outliers (that is, values under 0 or greater than 100 would be placed in those bins as well).\n\n- There is no rule of thumb to define N. Typically, we would not want more than 10.\n\n- Source : https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.cut.html\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"# define x\nx = np.array([24, 7, 2, 25, 22, 29])\nx ","execution_count":86,"outputs":[{"output_type":"execute_result","execution_count":86,"data":{"text/plain":"array([24, 7, 2, 25, 22, 29])"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# equal width discretisation with cut \npd.cut(x, bins = 3, labels = [\"bad\", \"medium\", \"good\"]).value_counts() #Bins size has equal interval of 9 ","execution_count":87,"outputs":[{"output_type":"execute_result","execution_count":87,"data":{"text/plain":"bad 2\nmedium 0\ngood 4\ndtype: int64"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"## **6.2 Equal frequency discretisation with pandas qcut function** \n\n[Table of Contents](#0.1)\n\n- Equal frequency binning divides the scope of possible values of the variable into N bins, where each bin carries the same amount of observations. This is particularly useful for skewed variables as it spreads the observations over the different bins equally. Typically, we find the interval boundaries by determining the quantiles.\n\n- Equal frequency discretisation using quantiles consists of dividing the continuous variable into N quantiles, N to be defined by the user. There is no rule of thumb to define N. However, if we think of the discrete variable as a categorical variable, where each bin is a category, we would like to keep N (the number of categories) low (typically no more than 10).\n\n- Source : https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.qcut.html"},{"metadata":{"trusted":true},"cell_type":"code","source":"# define x\nx = np.array([24, 7, 2, 25, 22, 29])\nx ","execution_count":88,"outputs":[{"output_type":"execute_result","execution_count":88,"data":{"text/plain":"array([24, 7, 2, 25, 22, 29])"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# equal frequency discretisation with qcut \npd.qcut(x, q = 3, labels = [\"bad\", \"medium\", \"good\"]).value_counts() #Equal frequency of 2 in each bins","execution_count":89,"outputs":[{"output_type":"execute_result","execution_count":89,"data":{"text/plain":"bad 2\nmedium 2\ngood 2\ndtype: int64"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"## **6.3 Domain knowledge discretisation** \n\n[Table of Contents](#0.1)\n\n- Frequently, when engineering variables in a business setting, the business experts determine the intervals in which they think the variable should be divided so that it makes sense for the business. These intervals may be defined both arbitrarily or following some criteria of use to the business. Typical examples are the discretisation of variables like Age and Income. \n\n- Income for example is usually capped at a certain maximum value, and all incomes above that value fall into the last bucket. As per Age, it is usually divided in certain groups according to the business need, for example division into 0-21 (for under-aged), 20-30 (for young adults), 30-40, 40-60, and > 60 (for retired or close to) are frequent."},{"metadata":{"trusted":true},"cell_type":"code","source":"# load the numerical variables of the Titanic Dataset\ndata = pd.read_csv('/kaggle/input/titanic/train.csv', usecols = ['Age', 'Survived'])\ndata.head()","execution_count":90,"outputs":[{"output_type":"execute_result","execution_count":90,"data":{"text/plain":" Survived Age\n0 0 22.0\n1 1 38.0\n2 1 26.0\n3 1 35.0\n4 0 35.0","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
SurvivedAge
0022.0
1138.0
2126.0
3135.0
4035.0
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"The variable Age contains missing data, that I will fill by extracting a random sample of the variable."},{"metadata":{"trusted":true},"cell_type":"code","source":"def impute_na(data, variable):\n df = data.copy()\n \n # random sampling\n df[variable+'_random'] = df[variable]\n \n # extract the random sample to fill the na\n random_sample = data[variable].dropna().sample(df[variable].isnull().sum(), random_state=0)\n \n # pandas needs to have the same index in order to merge datasets\n random_sample.index = df[df[variable].isnull()].index\n df.loc[df[variable].isnull(), variable+'_random'] = random_sample\n \n return df[variable+'_random']","execution_count":91,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's fill the missing data\ndata['Age'] = impute_na(data, 'Age')","execution_count":92,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data['Age'].isnull().sum()","execution_count":93,"outputs":[{"output_type":"execute_result","execution_count":93,"data":{"text/plain":"0"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's divide age into the buckets \n\n# bucket boundaries\nbuckets = [0,20,40,60,100]\n\n# bucket labels\nlabels = ['0-20', '20-40', '40-60', '>60']\n\n# discretisation\npd.cut(data.Age, bins = buckets, labels = labels, include_lowest=True).value_counts()","execution_count":94,"outputs":[{"output_type":"execute_result","execution_count":94,"data":{"text/plain":"20-40 486\n0-20 221\n40-60 156\n>60 28\nName: Age, dtype: int64"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# create two new columns after discretisation\n\ndata['Age_buckets_labels'] = pd.cut(data.Age, bins=buckets, labels = labels, include_lowest=True)\ndata['Age_buckets'] = pd.cut(data.Age, bins=buckets, include_lowest=True)\n\ndata.head()","execution_count":95,"outputs":[{"output_type":"execute_result","execution_count":95,"data":{"text/plain":" Survived Age Age_buckets_labels Age_buckets\n0 0 22.0 20-40 (20.0, 40.0]\n1 1 38.0 20-40 (20.0, 40.0]\n2 1 26.0 20-40 (20.0, 40.0]\n3 1 35.0 20-40 (20.0, 40.0]\n4 0 35.0 20-40 (20.0, 40.0]","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
SurvivedAgeAge_buckets_labelsAge_buckets
0022.020-40(20.0, 40.0]
1138.020-40(20.0, 40.0]
2126.020-40(20.0, 40.0]
3135.020-40(20.0, 40.0]
4035.020-40(20.0, 40.0]
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"data.tail()","execution_count":96,"outputs":[{"output_type":"execute_result","execution_count":96,"data":{"text/plain":" Survived Age Age_buckets_labels Age_buckets\n886 0 27.0 20-40 (20.0, 40.0]\n887 1 19.0 0-20 (-0.001, 20.0]\n888 0 15.0 0-20 (-0.001, 20.0]\n889 1 26.0 20-40 (20.0, 40.0]\n890 0 32.0 20-40 (20.0, 40.0]","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
SurvivedAgeAge_buckets_labelsAge_buckets
886027.020-40(20.0, 40.0]
887119.00-20(-0.001, 20.0]
888015.00-20(-0.001, 20.0]
889126.020-40(20.0, 40.0]
890032.020-40(20.0, 40.0]
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"- We can observe the buckets into which each Age observation was placed. For example, age 27 was placed into the 20-40 bucket."},{"metadata":{"trusted":true},"cell_type":"code","source":"# number of passengers per age bucket\n\nplt.figure(figsize=(12,8))\ndata.groupby('Age_buckets_labels')['Age'].count().plot.bar()","execution_count":97,"outputs":[{"output_type":"execute_result","execution_count":97,"data":{"text/plain":""},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"- We can see that there are different passengers in each age bucket label."},{"metadata":{},"cell_type":"markdown","source":"# **7. Outlier Engineering** \n\n[Table of Contents](#0.1)\n\n\n- Outliers are values that are unusually high or unusually low respect to the rest of the observations of the variable. There are a few techniques for outlier handling:\n\n 1. Outlier removal\n\n 2. Treating outliers as missing values\n\n 3. Discretisation\n\n 4. Top / bottom / zero coding\n "},{"metadata":{},"cell_type":"markdown","source":"### **Identifying outliers**\n\n#### **Extreme Value Analysis**\n\n- The most basic form of outlier detection is Extreme Value Analysis of 1-dimensional data. The key for this method is to determine the statistical tails of the underlying distribution of the variable, and then finding the values that sit at the very end of the tails.\n\n- In the typical scenario, the distribution of the variable is Gaussian and thus outliers will lie outside the mean plus or minus 3 times the standard deviation of the variable.\n\n- If the variable is not normally distributed, a general approach is to calculate the quantiles, and then the interquantile range (IQR), as follows:\n\n- IQR = 75th quantile - 25th quantile\n\n- An outlier will sit outside the following upper and lower boundaries:\n\n- Upper boundary = 75th quantile + (IQR * 1.5)\n\n- Lower boundary = 25th quantile - (IQR * 1.5)\n\nor for extreme cases:\n\n- Upper boundary = 75th quantile + (IQR * 3)\n\n- Lower boundary = 25th quantile - (IQR * 3)"},{"metadata":{},"cell_type":"markdown","source":"## **7.1 Outlier removal** \n\n[Table of Contents](#0.1)\n\n\n- Outlier removal refers to removing outlier observations from the dataset. Outliers, by nature are not abundant, so this procedure should not distort the dataset dramatically. But if there are outliers across multiple variables, we may end up removing a big portion of the dataset."},{"metadata":{},"cell_type":"markdown","source":"## **7.2 Treating outliers as missing values** \n\n[Table of Contents](#0.1)\n\n- We can treat outliers as missing information, and carry on any of the imputation methods described earlier in this kernel.\n\n "},{"metadata":{},"cell_type":"markdown","source":"## **7.3 Discretisation** \n\n[Table of Contents](#0.1)\n\n- Discretisation handles outliers automatically, as outliers are sorted into the terminal bins, together with the other higher or lower value observations. The best approaches are equal frequency and tree based discretisation."},{"metadata":{},"cell_type":"markdown","source":"## **7.4 Top /bottom / zero coding** \n\n[Table of Contents](#0.1)\n\n- Top or bottom coding are also known as **Winsorisation** or **outlier capping**. The procedure involves capping the maximum and minimum values at a predefined value. This predefined value can be arbitrary, or it can be derived from the variable distribution.\n\n- If the variable is normally distributed we can cap the maximum and minimum values at the mean plus or minus 3 times the standard deviation. If the variable is skewed, we can use the inter-quantile range proximity rule or cap at the top and bottom percentiles.\n\n- This is demonstrated using the titanic dataset below:-\n\n \n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"# load the numerical variables of the Titanic Dataset\ndata = pd.read_csv('/kaggle/input/titanic/train.csv', usecols = ['Pclass', 'Age', 'SibSp', 'Parch', 'Fare', 'Survived'])\ndata.head()","execution_count":98,"outputs":[{"output_type":"execute_result","execution_count":98,"data":{"text/plain":" Survived Pclass Age SibSp Parch Fare\n0 0 3 22.0 1 0 7.2500\n1 1 1 38.0 1 0 71.2833\n2 1 3 26.0 0 0 7.9250\n3 1 1 35.0 1 0 53.1000\n4 0 3 35.0 0 0 8.0500","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
SurvivedPclassAgeSibSpParchFare
00322.0107.2500
11138.01071.2833
21326.0007.9250
31135.01053.1000
40335.0008.0500
\n
"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Top-coding important**\n\nTop-coding and bottom-coding, as any other feature pre-processing step, should be determined over the training set, and then transferred onto the test set. This means that we should find the upper and lower bounds in the training set only, and use those bands to cap the values in the test set."},{"metadata":{"trusted":true},"cell_type":"code","source":"# divide dataset into train and test set\nX_train, X_test, y_train, y_test = train_test_split(data, data.Survived,\n test_size=0.3,\n random_state=0)\nX_train.shape, X_test.shape","execution_count":99,"outputs":[{"output_type":"execute_result","execution_count":99,"data":{"text/plain":"((623, 6), (268, 6))"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Outliers in continuous variables**\n\n- We can see that `Age` and `Fare` are continuous variables. So, first I will cap the outliers in those variables."},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's make boxplots to visualise outliers in the continuous variables \n# Age and Fare\n\nplt.figure(figsize=(15,6))\nplt.subplot(1, 2, 1)\nfig = data.boxplot(column='Age')\nfig.set_title('')\nfig.set_ylabel('Age')\n\nplt.subplot(1, 2, 2)\nfig = data.boxplot(column='Fare')\nfig.set_title('')\nfig.set_ylabel('Fare')","execution_count":100,"outputs":[{"output_type":"execute_result","execution_count":100,"data":{"text/plain":"Text(0, 0.5, 'Fare')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"- Both Age and Fare contain outliers. Let's find which valuers are the outliers."},{"metadata":{"trusted":true},"cell_type":"code","source":"# first we plot the distributions to find out if they are Gaussian or skewed.\n# Depending on the distribution, we will use the normal assumption or the interquantile\n# range to find outliers\n\nplt.figure(figsize=(15,6))\nplt.subplot(1, 2, 1)\nfig = data.Age.hist(bins=20)\nfig.set_ylabel('Number of passengers')\nfig.set_xlabel('Age')\n\nplt.subplot(1, 2, 2)\nfig = data.Fare.hist(bins=20)\nfig.set_ylabel('Number of passengers')\nfig.set_xlabel('Fare')","execution_count":101,"outputs":[{"output_type":"execute_result","execution_count":101,"data":{"text/plain":"Text(0.5, 0, 'Fare')"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{},"cell_type":"markdown","source":"Age is quite Gaussian and Fare is skewed, so I will use the Gaussian assumption for Age, and the interquantile range for Fare."},{"metadata":{"trusted":true},"cell_type":"code","source":"# find outliers\n\n# Age\nUpper_boundary = data.Age.mean() + 3* data.Age.std()\nLower_boundary = data.Age.mean() - 3* data.Age.std()\nprint('Age outliers are values < {lowerboundary} or > {upperboundary}'.format(lowerboundary=Lower_boundary, upperboundary=Upper_boundary))\n\n# Fare\nIQR = data.Fare.quantile(0.75) - data.Fare.quantile(0.25)\nLower_fence = data.Fare.quantile(0.25) - (IQR * 3)\nUpper_fence = data.Fare.quantile(0.75) + (IQR * 3)\nprint('Fare outliers are values < {lowerboundary} or > {upperboundary}'.format(lowerboundary=Lower_fence, upperboundary=Upper_fence))","execution_count":102,"outputs":[{"output_type":"stream","text":"Age outliers are values < -13.88037434994331 or > 73.27860964406095\nFare outliers are values < -61.358399999999996 or > 100.2688\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"### **Age**\n\n- For Age variable the outliers lie only on the right of the distribution. Therefore we only need to introduce top-coding."},{"metadata":{"trusted":true},"cell_type":"code","source":"# view the statistical summary of Age\ndata.Age.describe()","execution_count":103,"outputs":[{"output_type":"execute_result","execution_count":103,"data":{"text/plain":"count 714.000000\nmean 29.699118\nstd 14.526497\nmin 0.420000\n25% 20.125000\n50% 28.000000\n75% 38.000000\nmax 80.000000\nName: Age, dtype: float64"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Assuming normality\n\nUpper_boundary = X_train.Age.mean() + 3* X_train.Age.std()\nUpper_boundary","execution_count":104,"outputs":[{"output_type":"execute_result","execution_count":104,"data":{"text/plain":"73.43632005918366"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# top-coding the Age variable\n\nX_train.loc[X_train.Age>73, 'Age'] = 73\nX_test.loc[X_test.Age>73, 'Age'] = 73\n\nX_train.Age.max(), X_test.Age.max()","execution_count":105,"outputs":[{"output_type":"execute_result","execution_count":105,"data":{"text/plain":"(73.0, 70.5)"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### **Fare**\n\n- The outliers, according to the above plot, lie all at the right side of the distribution. This is, some people paid extremely high prices for their tickets. Therefore, in this variable, only extremely high values will affect the performance of our machine learning models, and we need to do therefore top-coding. "},{"metadata":{"trusted":true},"cell_type":"code","source":"# view statistical properties of Fare\n\nX_train.Fare.describe()","execution_count":106,"outputs":[{"output_type":"execute_result","execution_count":106,"data":{"text/plain":"count 623.000000\nmean 32.458273\nstd 48.257658\nmin 0.000000\n25% 7.925000\n50% 15.000000\n75% 31.387500\nmax 512.329200\nName: Fare, dtype: float64"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# top coding: upper boundary for outliers according to interquantile proximity rule\n\nIQR = data.Fare.quantile(0.75) - data.Fare.quantile(0.25)\n\nUpper_fence = X_train.Fare.quantile(0.75) + (IQR * 3)\n\nUpper_fence","execution_count":107,"outputs":[{"output_type":"execute_result","execution_count":107,"data":{"text/plain":"100.6563"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"The upper boundary, above which every value is considered an outlier is a cost of 100 dollars for the Fare."},{"metadata":{"trusted":true},"cell_type":"code","source":"# top-coding: capping the variable Fare at 100\nX_train.loc[X_train.Fare>100, 'Fare'] = 100\nX_test.loc[X_test.Fare>100, 'Fare'] = 100\nX_train.Fare.max(), X_test.Fare.max()","execution_count":108,"outputs":[{"output_type":"execute_result","execution_count":108,"data":{"text/plain":"(100.0, 100.0)"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"Thus we deal with outliers from a machine learning perspective."},{"metadata":{},"cell_type":"markdown","source":"# **8. Date and Time Engineering** \n\n[Table of Contents](#0.1)\n\n\nDate variables are special type of categorical variable. By their own nature, date variables will contain a multitude of different labels, each one corresponding to a specific date and sometimes time. Date variables, when preprocessed properly can highly enrich a dataset. For example, from a date variable we can extract:\n\n- Month\n- Quarter\n- Semester\n- Day (number)\n- Day of the week\n- Is Weekend?\n- Hr\n- Time differences in years, months, days, hrs, etc.\n\n\nIt is important to understand that date variables should not be used as the categorical variables we have been working so far when building a machine learning model. Not only because they have a multitude of categories, but also because when we actually use the model to score a new observation, this observation will most likely be in the future, an therefore its date label, will be different than the ones contained in the training set and therefore the ones used to train the machine learning algorithm.\n\n\n- I will use the lending club dataset for demonstration -"},{"metadata":{"trusted":true},"cell_type":"code","source":"# let's load the Lending Club dataset with selected columns and rows\n\nuse_cols = ['issue_d', 'last_pymnt_d']\ndata = pd.read_csv('/kaggle/input/lending-club-loan-data/loan.csv', usecols=use_cols, nrows=10000)\ndata.head()","execution_count":109,"outputs":[{"output_type":"execute_result","execution_count":109,"data":{"text/plain":" issue_d last_pymnt_d\n0 Dec-2018 Feb-2019\n1 Dec-2018 Feb-2019\n2 Dec-2018 Feb-2019\n3 Dec-2018 Feb-2019\n4 Dec-2018 Feb-2019","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
issue_dlast_pymnt_d
0Dec-2018Feb-2019
1Dec-2018Feb-2019
2Dec-2018Feb-2019
3Dec-2018Feb-2019
4Dec-2018Feb-2019
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# now let's parse the dates, currently coded as strings, into datetime format\n\ndata['issue_dt'] = pd.to_datetime(data.issue_d)\ndata['last_pymnt_dt'] = pd.to_datetime(data.last_pymnt_d)\n\ndata[['issue_d','issue_dt','last_pymnt_d', 'last_pymnt_dt']].head()","execution_count":110,"outputs":[{"output_type":"execute_result","execution_count":110,"data":{"text/plain":" issue_d issue_dt last_pymnt_d last_pymnt_dt\n0 Dec-2018 2018-12-01 Feb-2019 2019-02-01\n1 Dec-2018 2018-12-01 Feb-2019 2019-02-01\n2 Dec-2018 2018-12-01 Feb-2019 2019-02-01\n3 Dec-2018 2018-12-01 Feb-2019 2019-02-01\n4 Dec-2018 2018-12-01 Feb-2019 2019-02-01","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
issue_dissue_dtlast_pymnt_dlast_pymnt_dt
0Dec-20182018-12-01Feb-20192019-02-01
1Dec-20182018-12-01Feb-20192019-02-01
2Dec-20182018-12-01Feb-20192019-02-01
3Dec-20182018-12-01Feb-20192019-02-01
4Dec-20182018-12-01Feb-20192019-02-01
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Extracting Month from date\n\ndata['issue_dt_month'] = data['issue_dt'].dt.month\n\ndata[['issue_dt', 'issue_dt_month']].head()","execution_count":111,"outputs":[{"output_type":"execute_result","execution_count":111,"data":{"text/plain":" issue_dt issue_dt_month\n0 2018-12-01 12\n1 2018-12-01 12\n2 2018-12-01 12\n3 2018-12-01 12\n4 2018-12-01 12","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
issue_dtissue_dt_month
02018-12-0112
12018-12-0112
22018-12-0112
32018-12-0112
42018-12-0112
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"data[['issue_dt', 'issue_dt_month']].tail()","execution_count":112,"outputs":[{"output_type":"execute_result","execution_count":112,"data":{"text/plain":" issue_dt issue_dt_month\n9995 2018-12-01 12\n9996 2018-12-01 12\n9997 2018-12-01 12\n9998 2018-12-01 12\n9999 2018-12-01 12","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
issue_dtissue_dt_month
99952018-12-0112
99962018-12-0112
99972018-12-0112
99982018-12-0112
99992018-12-0112
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Extract quarter from date variable\n\ndata['issue_dt_quarter'] = data['issue_dt'].dt.quarter\n\ndata[['issue_dt', 'issue_dt_quarter']].head()","execution_count":113,"outputs":[{"output_type":"execute_result","execution_count":113,"data":{"text/plain":" issue_dt issue_dt_quarter\n0 2018-12-01 4\n1 2018-12-01 4\n2 2018-12-01 4\n3 2018-12-01 4\n4 2018-12-01 4","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
issue_dtissue_dt_quarter
02018-12-014
12018-12-014
22018-12-014
32018-12-014
42018-12-014
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"data[['issue_dt', 'issue_dt_quarter']].tail()","execution_count":114,"outputs":[{"output_type":"execute_result","execution_count":114,"data":{"text/plain":" issue_dt issue_dt_quarter\n9995 2018-12-01 4\n9996 2018-12-01 4\n9997 2018-12-01 4\n9998 2018-12-01 4\n9999 2018-12-01 4","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
issue_dtissue_dt_quarter
99952018-12-014
99962018-12-014
99972018-12-014
99982018-12-014
99992018-12-014
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# We could also extract semester\n\ndata['issue_dt_semester'] = np.where(data.issue_dt_quarter.isin([1,2]),1,2)\ndata.head()","execution_count":115,"outputs":[{"output_type":"execute_result","execution_count":115,"data":{"text/plain":" issue_d last_pymnt_d issue_dt last_pymnt_dt issue_dt_month \\\n0 Dec-2018 Feb-2019 2018-12-01 2019-02-01 12 \n1 Dec-2018 Feb-2019 2018-12-01 2019-02-01 12 \n2 Dec-2018 Feb-2019 2018-12-01 2019-02-01 12 \n3 Dec-2018 Feb-2019 2018-12-01 2019-02-01 12 \n4 Dec-2018 Feb-2019 2018-12-01 2019-02-01 12 \n\n issue_dt_quarter issue_dt_semester \n0 4 2 \n1 4 2 \n2 4 2 \n3 4 2 \n4 4 2 ","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
issue_dlast_pymnt_dissue_dtlast_pymnt_dtissue_dt_monthissue_dt_quarterissue_dt_semester
0Dec-2018Feb-20192018-12-012019-02-011242
1Dec-2018Feb-20192018-12-012019-02-011242
2Dec-2018Feb-20192018-12-012019-02-011242
3Dec-2018Feb-20192018-12-012019-02-011242
4Dec-2018Feb-20192018-12-012019-02-011242
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# day - numeric from 1-31\n\ndata['issue_dt_day'] = data['issue_dt'].dt.day\n\ndata[['issue_dt', 'issue_dt_day']].head()","execution_count":116,"outputs":[{"output_type":"execute_result","execution_count":116,"data":{"text/plain":" issue_dt issue_dt_day\n0 2018-12-01 1\n1 2018-12-01 1\n2 2018-12-01 1\n3 2018-12-01 1\n4 2018-12-01 1","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
issue_dtissue_dt_day
02018-12-011
12018-12-011
22018-12-011
32018-12-011
42018-12-011
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# day of the week - from 0 to 6\n\ndata['issue_dt_dayofweek'] = data['issue_dt'].dt.dayofweek\n\ndata[['issue_dt', 'issue_dt_dayofweek']].head()","execution_count":117,"outputs":[{"output_type":"execute_result","execution_count":117,"data":{"text/plain":" issue_dt issue_dt_dayofweek\n0 2018-12-01 5\n1 2018-12-01 5\n2 2018-12-01 5\n3 2018-12-01 5\n4 2018-12-01 5","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
issue_dtissue_dt_dayofweek
02018-12-015
12018-12-015
22018-12-015
32018-12-015
42018-12-015
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"data[['issue_dt', 'issue_dt_dayofweek']].tail()","execution_count":118,"outputs":[{"output_type":"execute_result","execution_count":118,"data":{"text/plain":" issue_dt issue_dt_dayofweek\n9995 2018-12-01 5\n9996 2018-12-01 5\n9997 2018-12-01 5\n9998 2018-12-01 5\n9999 2018-12-01 5","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
issue_dtissue_dt_dayofweek
99952018-12-015
99962018-12-015
99972018-12-015
99982018-12-015
99992018-12-015
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# day of the week - name\n\ndata['issue_dt_dayofweek'] = data['issue_dt'].dt.weekday_name\n\ndata[['issue_dt', 'issue_dt_dayofweek']].head()","execution_count":119,"outputs":[{"output_type":"execute_result","execution_count":119,"data":{"text/plain":" issue_dt issue_dt_dayofweek\n0 2018-12-01 Saturday\n1 2018-12-01 Saturday\n2 2018-12-01 Saturday\n3 2018-12-01 Saturday\n4 2018-12-01 Saturday","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
issue_dtissue_dt_dayofweek
02018-12-01Saturday
12018-12-01Saturday
22018-12-01Saturday
32018-12-01Saturday
42018-12-01Saturday
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"data[['issue_dt', 'issue_dt_dayofweek']].tail()","execution_count":120,"outputs":[{"output_type":"execute_result","execution_count":120,"data":{"text/plain":" issue_dt issue_dt_dayofweek\n9995 2018-12-01 Saturday\n9996 2018-12-01 Saturday\n9997 2018-12-01 Saturday\n9998 2018-12-01 Saturday\n9999 2018-12-01 Saturday","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
issue_dtissue_dt_dayofweek
99952018-12-01Saturday
99962018-12-01Saturday
99972018-12-01Saturday
99982018-12-01Saturday
99992018-12-01Saturday
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# was the application done on the weekend?\n\ndata['issue_dt_is_weekend'] = np.where(data['issue_dt_dayofweek'].isin(['Sunday', 'Saturday']), 1,0)\ndata[['issue_dt', 'issue_dt_dayofweek','issue_dt_is_weekend']].head()","execution_count":121,"outputs":[{"output_type":"execute_result","execution_count":121,"data":{"text/plain":" issue_dt issue_dt_dayofweek issue_dt_is_weekend\n0 2018-12-01 Saturday 1\n1 2018-12-01 Saturday 1\n2 2018-12-01 Saturday 1\n3 2018-12-01 Saturday 1\n4 2018-12-01 Saturday 1","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
issue_dtissue_dt_dayofweekissue_dt_is_weekend
02018-12-01Saturday1
12018-12-01Saturday1
22018-12-01Saturday1
32018-12-01Saturday1
42018-12-01Saturday1
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"data[data.issue_dt_is_weekend==1][['issue_dt', 'issue_dt_dayofweek','issue_dt_is_weekend']].head()","execution_count":122,"outputs":[{"output_type":"execute_result","execution_count":122,"data":{"text/plain":" issue_dt issue_dt_dayofweek issue_dt_is_weekend\n0 2018-12-01 Saturday 1\n1 2018-12-01 Saturday 1\n2 2018-12-01 Saturday 1\n3 2018-12-01 Saturday 1\n4 2018-12-01 Saturday 1","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
issue_dtissue_dt_dayofweekissue_dt_is_weekend
02018-12-01Saturday1
12018-12-01Saturday1
22018-12-01Saturday1
32018-12-01Saturday1
42018-12-01Saturday1
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# extract year \n\ndata['issue_dt_year'] = data['issue_dt'].dt.year\n\ndata[['issue_dt', 'issue_dt_year']].head()","execution_count":123,"outputs":[{"output_type":"execute_result","execution_count":123,"data":{"text/plain":" issue_dt issue_dt_year\n0 2018-12-01 2018\n1 2018-12-01 2018\n2 2018-12-01 2018\n3 2018-12-01 2018\n4 2018-12-01 2018","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
issue_dtissue_dt_year
02018-12-012018
12018-12-012018
22018-12-012018
32018-12-012018
42018-12-012018
\n
"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# extract the date difference between 2 dates\n\ndata['issue_dt'] - data['last_pymnt_dt']","execution_count":124,"outputs":[{"output_type":"execute_result","execution_count":124,"data":{"text/plain":"0 -62 days\n1 -62 days\n2 -62 days\n3 -62 days\n4 -62 days\n ... \n9995 -62 days\n9996 -62 days\n9997 -62 days\n9998 -62 days\n9999 -62 days\nLength: 10000, dtype: timedelta64[ns]"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"# **9. References** \n\n[Table of Contents](#0.1)\n\n\nThis kernel is based on -\n\n1. Soledad Galli's course - [Feature Engineering for Machine Learning](https://www.udemy.com/course/feature-engineering-for-machine-learning/) , and \n\n2. Her article - [Feature Engineering for Machine Learning ; A Comprehensive Overview](https://www.trainindata.com/post/feature-engineering-comprehensive-overview).\n\n"},{"metadata":{},"cell_type":"markdown","source":"[Go to Top](#0)"}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":4}