Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save specifics/8d96a8026b89c892d6ace8f119c2afc7 to your computer and use it in GitHub Desktop.
Save specifics/8d96a8026b89c892d6ace8f119c2afc7 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# A wild dataset has appeared! Now what?\n",
"\n",
"Original: http://kldavenport.com/a-wild-dataset-has-appeared-now-what/\n",
"\n",
"Where do we start when we stumble across a dataset we don’t know much about? Lets say one where we don’t necessarily understand the underlying generative process for some or all of the variables. Lets assume for now we’re sure there aren’t one off interventions or level shifts in the data, and we don’t know anything about the distribution of the features, trends, seasonality, model parameters, variance, etc.\n",
"\n",
"I tend to start with the simplest, most interpretable models first, regardless if the problem requires classification, regression, or causality modeling. This allows me to assess how difficult the problem is before wasting time applying a complex solution.\n",
"\n",
"The IPython notebook below will outline exploratory analysis in terms of:\n",
"\n",
"1. Histograms and Aggregation\n",
"1. Correlation Structure\n",
"1. Dimensional Reduction\n",
"\n",
"Note this isn’t meant to be an exhaustive effort to enumerate all types of imputation and pre-processing, but a quick examination of some best practices."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import time\n",
"import csv\n",
"import pickle\n",
"import random\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import pylab as pyl\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.font_manager import FontProperties\n",
"from functools import wraps\n",
"from scipy import interp\n",
"\n",
"from sklearn import datasets\n",
"from sklearn import neighbors\n",
"from sklearn import preprocessing\n",
"from sklearn import svm\n",
"from sklearn import tree\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.ensemble import AdaBoostClassifier\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn.metrics import auc\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.metrics import roc_curve\n",
"\n",
"# !!! NOTE: sklearn 0.20 deprecation\n",
"# from sklearn import cross_validation\n",
"# from sklearn.cross_validation import train_test_split\n",
"# from sklearn.learning_curve import learning_curve\n",
"from sklearn.model_selection import cross_val_predict # ??? see documentation\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.model_selection import learning_curve\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<!-- just to make a markdown table pretty -->\n",
"<style>table {float:left}</style>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%html\n",
"<!-- just to make a markdown table pretty -->\n",
"<style>table {float:left}</style>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Our Example Data\n",
"[This data](https://archive.ics.uci.edu/ml/datasets/Bank+Marketing) is from phonecall-based direct marketing campaigns of a Purtuguese banking institution. The output is whether a customer signed up for the financial product.\n",
"\n",
"### Why might this dataset be interesting?\n",
"There are progressively more platforms to reach customers such as social media, broadcast media, and physical advertisements. Due to the many input streams and the advancement of comparison shopping, conventional marketing campaigns have a reduced effect on the general public. Competition and budget constraints demand that marketing teams invest on highly refined and directed campaigns that maximize their Return On Investment. Modern campaigns can be created with the use of advanced analytics.\n",
"\n",
"This is a particularly interesting dataset as it seeks to optimize an older and conventional business medium, where as recent optimization involves mobile applications or ad-sponsored streaming media. The data contains many interpretable social and economic features, thus it will be interesting to see if the stratifying effects of these nominal, ordinal, and numeric variables are intuitive.\n",
"\n",
"In the interest of time I won't step through our analysis and rationale of every single feature like I did in my [Lending Club Data Analysis Blog Post](http://kldavenport.com/lending-club-data-analysis-revisted-with-python/), but we will explore a few. Our pre-processing includes dropping predictors with no power, dummy encoding, and standardization. This is a binary classification problem. What our data will end up like after pre-processing:\n",
"\n",
"State|Observations|Features\n",
":---|:---:|:---:\n",
"Original|25,211|20\n",
"Pre-processed|4,119|63"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Head of data\n",
"age 39\n",
"job services\n",
"marital single\n",
"education high.school\n",
"default no\n",
"housing no\n",
"loan no\n",
"contact telephone\n",
"month may\n",
"day_of_week fri\n",
"duration 346\n",
"campaign 4\n",
"pdays 999\n",
"previous 0\n",
"poutcome nonexistent\n",
"emp.var.rate 1.1\n",
"cons.price.idx 93.994\n",
"cons.conf.idx -36.4\n",
"euribor3m 4.855\n",
"nr.employed 5191\n",
"y no\n",
"Name: 1, dtype: object\n"
]
}
],
"source": [
"path = 'S:\\\\Documents\\\\Python\\\\UCI bank data\\\\bank-additional.csv'\n",
"data = pd.read_csv(path, sep='\\;', engine='python')\n",
"\n",
"# Strip double quotes from columns and string data objects\n",
"data.columns = data.columns.str.strip('\\\"')\n",
"data_obj = data.select_dtypes(['object'])\n",
"data[data_obj.columns] = data_obj.apply(lambda x: x.str.strip('\\\"'))\n",
"\n",
"# Data was already randomized by author\n",
"data_labels = pd.Series([0 if x == 'no' else 1 for x in data.iloc[:,-1]])\n",
"\n",
"print('Head of data')\n",
"print(data.iloc[1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exploratory Analysis\n",
"The typical things I do in order are as follows:\n",
"\n",
"### 1. Histograms and Aggregation/Facets/Pivots\n",
"An easy place to start is to examine histograms (or scatterplots) of the features to discover characteristics such as sparsity, few unique values, distribution (i.e. is it heavy tailed or normally distributed?).\n",
"\n",
"Some plots are pretty intuitive like this facetgrid which shows density plots of the respondant age faceted by outcome label (yes/no) and if they were contacted by cell or land line. We can expect a larger count of older respondents for land lines."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\User\\Anaconda3\\lib\\site-packages\\statsmodels\\nonparametric\\kdetools.py:20: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future\n",
" y = X[:m/2+1] + np.r_[0,X[m/2+1:],0]*1j\n"
]
},
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x1dceadbadd8>"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1dceb20edd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"g = sns.FacetGrid(data, row='\\\"contact\\\"', col='\\\"y\\\"', margin_titles=True)\n",
"g.map(sns.distplot, '\\\"age\\\"')\n",
"\n",
"# !!! BUG (17 FEB 2018): \\Anaconda3\\lib\\site-packages\\statsmodels\\nonparametric\\kdetools.py:20:\n",
"# VisibleDeprecationWarning:\n",
"# using a non-integer number instead of an integer will result in an error in the future\n",
"# y = X[:m/2+1] + np.r_[0,X[m/2+1:],0]*1j"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Taking a look at the distribution of the ages in the dataset, it looks probably there wasn't a concerted effort to target a specific age class. The plot of the general workforce population might be similar."
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x39551e0588>"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x39551e03c8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data.age.hist(alpha=.6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Feature-Target Distributions\n",
"These class histograms conditioned on feature values help us identify features with predictive power. Is there a telling difference between the age distribution? Between respondents of different outcomes?\n",
"\n",
"Note that the histogram is expressed in densities and not in frequencies here for plotting purposes. We can tell very quickly that older respondents signed up for the solicited product more often in this sample. A box-plot could tell the same story."
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x39569bec50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.kdeplot(data.query(\"y =='no'\").age, shade=True, alpha=.2, label='No', color='salmon')\n",
"sns.kdeplot(data.query(\"y == 'yes'\").age, shade=True, alpha=.2, label='Yes', color='dodgerblue')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's examine our outcome variable pivoted by poutcome which describes the outcome of the previous marketing campaign/contact ('failure', 'nonexistent', 'success')."
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"poutcome y \n",
"failure no 387\n",
" yes 67\n",
"nonexistent no 3231\n",
" yes 292\n",
"success no 50\n",
" yes 92\n",
"dtype: int64"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gb = data.groupby(by=[\"poutcome\", \"y\"])\n",
"gbs = gb.size()\n",
"gbs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Respondents that were a success before, were a success again at 10x the rate of previous failures."
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.1731266149870801, 0.090374497059733827, 1.8400000000000001)"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gbs[1]/gbs[0], gbs[3]/gbs[2], gbs[5]/gbs[4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Imbalanced Data\n",
"If we examine the table above we see a severe distortion of outcomes which may distort the performance of the algorithms we choose to deploy. Test accuracy is not robust in this situation as most models will tend to fit the majority class better (more observations) which may indirectly bring up the overall accuracy. If we care more about recall than precision, that is more success identifying respondents that will sign up for the banking product versus our general ability to classify 'Yes' vs. 'No' respondents, we might want to use the ROC (Receiver Operating Characteristic) curve and AUC (Area Under Curve) as a performance measurement. More on this in other general posts, but to drive intuition I'll give an example: In this dataset 90% of the responses are 'No'. So if we created a naive model that always predicted 'No', we'd have ridiculously high accuracy.\n",
"\n",
"Another way to address this heavy biased data set is to create a new one with resampling such as sampling with replacement from the group with less data until the number equals to the larger group and vice versa.\n",
"\n",
"[UnbalancedDataset](https://github.com/fmfn/UnbalancedDataset) is a python package offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Missing Data\n",
"Although not necessary to produce a plot for, tabular views of the data can help us discover variables that may need imputation. For a quick look at data imputation methods in Pandas look [here](http://pandas.pydata.org/pandas-docs/stable/missing_data.html). We can go from simple imputation like columnwise mean filling, or polynomial approximation for time series, to linear regression (using what we know about other variables), to complex meta-methods (ignoring our class and using ML algos to predict the missing data)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. Correlation Structure\n",
"\n",
"#### Feature-Target Correlation\n",
"Here we can use correlation measures like mutual information, pearson's correlation coefficient, or chi-squared, based on the type of feature and class we are examining (categorical or numeric).\n",
"\n",
"Below we use [Mutual Information](https://en.wikipedia.org/wiki/Mutual_information). There are many methods more advanced the typical mutual information measure we used here which uses Kullback-Leibler divergence. For example there are versions based on quadratic divergence measures which don't require prior assumptions about class densities (assumption of independence). In this example we see a similar importance for `poutcome` as we did before with our simple aggregation table."
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('poutcome', 0.065588174584947229),\n",
" ('contact', 0.015942130648990707),\n",
" ('duration', 0.014903466092107978),\n",
" ('job', 0.0031061135042555533),\n",
" ('campaign', 0.0014604719710313056),\n",
" ('education', 0.001115402984779626),\n",
" ('marital', 0.00089582277178158959),\n",
" ('loan', -0.0001831814300340035)]"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn import metrics\n",
"f_list = ['education', 'job', 'marital', 'contact', 'campaign', 'duration', 'loan', 'poutcome']\n",
"sorted([(feature, metrics.adjusted_mutual_info_score(data[feature], data['y'])) for feature in f_list],\n",
" key=lambda x: x[1], reverse=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### How many features do we have really?\n",
"Here we can use PCA or another dimensionality reduction tool to examine structure. Sometimes this allows us to quickly discover the true dimensionality of the data: do we really have 500 features or is it really only 50? If using PCA I like to take a look at the sorted Eigenvalues and examine if their values tend to decay slowly or rapidly. If I notice a fast drop off I can identify that there is a lot of structure in fewer features. In the case where the drop off is slower, I might have a harder time finding structure in the data.\n",
"\n",
"More concretely what we're doing is:\n",
"\n",
"1. Obtaining Eigenvectors and Eigenvalues from the covariance or correlation matrix.\n",
"1. Sorting Eigenvalues in descending order to choose the _k_ Eigenvectors which correspond to the _k_ largest Eigenvalues, where _k_ is the number of dimensio of the new feature subspace (_k_ ≤ _d_)\n",
"1. Construct the projection matrix _W_ from the selected _k_ Eigenvectors.\n",
"1. Transform the original dataset _X_ via _W_ to obtain a _k_-dimensional feature subspace _Y_.\n",
"\n",
"_Note: Eigen decomposition of the covariance or correlation matrix may be more intuitive; however, most PCA implementations perform Singular Vector Decomposition (SVD) to improve computational efficiency._\n",
"\n",
"For a simple intuition to PCA, see an excellent tutorial [here](http://sebastianraschka.com/Articles/2015_pca_in_3_steps.html).\n",
"\n",
"Let's finish pre-processing our data to get a completely numerical representation of the feature space."
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [],
"source": [
"# Boiler Plate pre-processing\n",
"\n",
"test_size = .33\n",
"pp_data = data.copy()\n",
"\n",
"# Scale numeric data\n",
"dts_cols = [0, 10, 11, 12, 13, 15, 16, 17, 18, 19]\n",
"data_to_scale = pp_data.iloc[:, dts_cols].astype(np.float) # Change int to float\n",
"scaler = preprocessing.StandardScaler().fit(data_to_scale)\n",
"\n",
"# Creat dummy encoding for categorical data\n",
"dtde_cols = [1, 2, 3, 4, 5 ,6 ,7 ,8, 9, 14]\n",
"data_to_de = pp_data.iloc[:, dtde_cols]\n",
"de_data = pd.get_dummies(data_to_de)\n",
"pp_data.drop(pp_data.columns[dtde_cols], axis=1, inplace=True)\n",
"pp_data = pp_data.merge(de_data, how='inner', left_index=True, right_index=True, copy=False)\n",
"\n",
"pp_data.drop('y', 1, inplace=True)\n",
"\n",
"X = pp_data.values\n",
"y = data_labels.values\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=42)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now back to where we were. We can see the features that contribute most to our two principal components. Interestingly enough nothing that we've done so far hints to the warning the dataset provides about the strength of the duration variable:\n",
"\n",
"_\"duration: last contact duration, in seconds (numeric). Important note: this attribute highly affects the output target (e.g., if duration=0 then y='no'). Yet, the duration is not known before a call is performed. Also, after the end of the call y is obviously known. Thus, this input should only be included for benchmark purposes and should be discarded if the intention is to have a realistic predictive model.\"_\n",
"\n",
"If we stopped here with out examination we might not discover the flaw in using this feature until we got to our model training and tuning."
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"duration 9.961344e-01\n",
"pdays 8.512781e-02\n",
"nr.employed 2.156171e-02\n",
"age 2.142687e-03\n",
"cons.conf.idx 2.064959e-03\n",
"previous 1.682033e-03\n",
"poutcome_success 8.782385e-04\n",
"campaign 7.606639e-04\n",
"euribor3m 3.896015e-04\n",
"contact_cellular 3.225492e-04\n",
"emp.var.rate 3.162639e-04\n",
"default_no 1.948607e-04\n",
"month_sep 1.285243e-04\n",
"education_university.degree 1.117608e-04\n",
"marital_single 1.102782e-04\n",
"job_admin. 1.035887e-04\n",
"poutcome_nonexistent 7.669886e-05\n",
"contact_telephone 7.018831e-05\n",
"job_retired 6.859717e-05\n",
"month_mar 6.259399e-05\n",
"housing_yes 6.214680e-05\n",
"month_oct 5.643129e-05\n",
"month_nov 5.361441e-05\n",
"month_jul 4.836645e-05\n",
"education_professional.course 4.412741e-05\n",
"default_unknown 4.107699e-05\n",
"poutcome_failure 3.893284e-05\n",
"job_services 3.770445e-05\n",
"job_student 3.526423e-05\n",
"day_of_week_mon 3.356039e-05\n",
" ... \n",
"month_apr 2.841782e-05\n",
"month_jun 2.584746e-05\n",
"job_unemployed 2.534885e-05\n",
"education_unknown 2.370555e-05\n",
"housing_no 2.294300e-05\n",
"cons.price.idx 2.245548e-05\n",
"job_management 1.727934e-05\n",
"education_basic.9y 1.720611e-05\n",
"education_high.school 1.629076e-05\n",
"month_aug 1.377216e-05\n",
"day_of_week_thu 1.305150e-05\n",
"job_housemaid 1.191911e-05\n",
"job_technician 1.029635e-05\n",
"job_blue-collar 9.668320e-06\n",
"loan_yes 9.309068e-06\n",
"marital_divorced 8.775010e-06\n",
"marital_married 8.446365e-06\n",
"job_entrepreneur 5.834773e-06\n",
"month_may 5.386342e-06\n",
"day_of_week_fri 4.110405e-06\n",
"education_basic.4y 3.788333e-06\n",
"job_unknown 3.269203e-06\n",
"marital_unknown 3.107744e-06\n",
"job_self-employed 1.474219e-06\n",
"day_of_week_wed 1.278265e-06\n",
"housing_unknown 2.900903e-07\n",
"loan_unknown 2.900903e-07\n",
"default_yes 1.938336e-07\n",
"education_basic.6y 1.545816e-07\n",
"education_illiterate 8.704808e-08\n",
"Length: 63, dtype: float64"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pca = PCA(n_components=2)\n",
"pca.fit_transform(pp_data)\n",
"\n",
"pca_df = pd.DataFrame(pca.components_, columns=pp_data.columns, index=['PC-1','PC-2'])\n",
"\n",
"np.abs(pca_df.max(axis=0)).sort_values(ascending=False) # regardless of sign"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),\n",
" <a list of 8 Text xticklabel objects>)"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ni+Q+6uRuZpZVnyT3VHN3h6qZWR59kdxdljEzy6svkvuSsswCd6iameXQH8m9WlvGK0OameXRH8l9\nsBrn7jXdzcyy6Ci5S9pb0t2S5ko6apzHPyXpTkm3SrpU0sYrE4RXhTQzy2vC5C5pEDgJ2AfYCjhY\n0lZjTrsJmBkR2wI/AI5fmSC8KqSZWV6dtNx3BOZGxD0RMR84Czig/YSIuDwinqruXgtstFJBDIjh\nQXmGqplZJp0k9w2BB9ruz6uOLc+HgB+P94CkwyXNkTTn4YcfXuax0aFBl2XMzDLpJLlrnGMx7onS\ne4GZwAnjPR4Rp0bEzIiYOXXq1GUeGxkacFnGzCyToQ7OmQdMa7u/EfDg2JMkvRE4Gtg9Ip5d2UBG\nhwZcljEzy6STlvsNwGaSNpE0AhwEzGo/QdKrgK8D+0fEQ6sSSErubrmbmeUwYXKPiIXAx4CLgbuA\nsyPiDknHSdq/Ou0EYE3gHEk3S5q1nMstl8syZmb5dFKWISJmA7PHHDum7fYbJxuIO1TNzPLpixmq\n4Jq7mVlOfZPcXZYxM8unb5K7O1TNzPLpo+Q+6Ja7mVkmfZPcR9xyNzPLpm+S++jQgDfrMDPLpH+S\n+/CAN+swM8ukb5L7yOCgN+swM8ukb5L76LBr7mZmufRPch9KZZmIcRecNDOzldA3yX1kyFvtmZnl\n0jfJfXSo2iTbyd3MbNL6KLl7H1Uzs1z6JrkvLct4rLuZ2WT1TXIfdc3dzCybvkvuLsuYmU1eHyX3\n1KH61PyFhSMxM6u/vknuW22wNkMD4qLbf1c6FDOz2uub5P7StVdjr23W4/s3PODWu5nZJPVNcgc4\nbJcZ/OmZhZx/029Kh2JmVmt9ldxfvfGL2HqDtTnjmvu8DIGZ2ST0VXKXxKG7zOCXv/8zP/v1I6XD\nMTOrrb5K7gD7bbcB66wxwunX3Fc6FDOz2uq75L7a8CAH7ziNS+/6PQ/88anS4ZiZ1VLfJXeA9+60\nMZI489r7S4diZlZLfZnc15+yOntvvR5nXf8/HhZpZrYK+jK5Axy6axoW+cObHiwdiplZ7fRtcp+5\n8YvYav21+fY193pYpJnZSurb5C6JQ3ethkXe42GRZmYro2+TO8D+223Ai9cY4ZPfv5lr5v6hdDhm\nZrXRUXKXtLekuyXNlXTUOI+PSvp+9fh1kmbkCG614UHO+OCOrDE6xCGnXccXZt/lJYHNzDowYXKX\n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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x3956864710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"np.abs(pca_df.max(axis=0)).sort_values(ascending=False).plot()\n",
"plt.xticks(rotation='vertical')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Numeric Correlation\n",
"We have a lot of dummy encoded variables so I'm expecting the outcome of a straight numerical correlation won't be too telling. We usually examine our dataframes correlation matrix and drop highly correlated/redundant data to address multicollinearity."
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"contact_telephone contact_cellular -1.000000\n",
"default_unknown default_no -0.999227\n",
"housing_yes housing_no -0.949959\n",
"poutcome_success pdays -0.940565\n",
"loan_yes loan_no -0.915086\n",
"poutcome_nonexistent poutcome_failure -0.855705\n",
" previous -0.854241\n",
"marital_single marital_married -0.778335\n",
"previous pdays -0.587941\n",
"contact_cellular cons.price.idx -0.574452\n",
"contact_telephone cons.price.idx 0.574452\n",
"euribor3m cons.price.idx 0.657159\n",
"poutcome_failure previous 0.661990\n",
"cons.price.idx emp.var.rate 0.755155\n",
"nr.employed emp.var.rate 0.897173\n",
" euribor3m 0.942589\n",
"euribor3m emp.var.rate 0.970308\n",
"loan_unknown housing_unknown 1.000000\n",
"dtype: float64"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cor = pp_data.corr()\n",
"cor.loc[:,:] = np.tril(cor, k=-1) # below main lower triangle of an array\n",
"cor = cor.stack()\n",
"(cor[(cor > 0.55) | (cor < -0.55)]).sort_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Dimensional Reduction\n",
"If low dimensional structure, there are off the shelf sets of non-linear dimensionality reductions tools such as T-SNE, Isomap, LOE, variants of PCA or variants of multidimensional scaling with some interesting additional non-linearity. Sometimes these can help us find out manifold or cluster structure and can be helpful for identifying important variations."
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.manifold import TSNE\n",
"\n",
"t_X = pp_data.iloc[:,:10].values # let's only use the standard scaled data\n",
"\n",
"# performs t-SNE embedding\n",
"tsne = TSNE(n_components=2, init='random', random_state=0)\n",
"Y = tsne.fit_transform(t_X)"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x3957e26a20>"
]
},
"execution_count": 120,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvWl0JNd5pvnciMjIfcG+FApA7XsV\nlxJJkSIpkdRmSyLdkmzZ1uL2otM+027P6Tkz7Z4f82N+uc+ZMzM+Z3rarbHkVsvaaMqWKFmiJIoS\nRVJcqopr7QsKhaWwA5nIPSPi3vmRWShUFZYEKjcU4uEhwcwMZNxMRLxx47vf935CKYWLi4uLy52P\nVu8BuLi4uLjUBlfwXVxcXDYJruC7uLi4bBJcwXdxcXHZJLiC7+Li4rJJcAXfxcXFZZPgCr6Li4vL\nJsEVfBcXF5dNgiv4Li4uLpsEo94DWExra6vq7++v9zBcXFxcNhQnTpyYVkq1rbZdQwl+f38/x48f\nr/cwXFxcXDYUQogr5WznhnRcXFxcNgmu4Lu4uLhsElzBd3FxcdkkuILv4uLisklwBd/FxcVlk9BQ\nWTouLpuVguPw3twEQ6l5Qh6TA7FWfIYHv27gNzxL/o5Sigvzs7w5M07Gtuj2h3igvYeY11fj0bts\nFFzBd3GpM/OFPN++dJK0Yy08997c5ML/GwgippcOX5Co6cPQNVq9ASzp8NL4EJoQ5Byb04lpTiem\nCegGR5o6iHl9jGVTxEwfe2OtBJa5cLhsHlzBd3GpI3O5LP/t4jus1GjURjFbyDFbyC08F9AN8o6D\nRN3yuxnH5tXpUQTg0w00BG/PjnMg1oapG/SFojR7/dX4OC4Njiv4Li51wnJs/v7iO+v63Yxjr7qN\nArLXtnPglckRADxCsDPSQpc/hKEJmr0B2vxBPJq7pHen4wq+i0ud+MnIpbrs11KKM4lpziSmAdCB\niOnjQ1199Ieb6jIml9rgXtJdXOrEaCZZ7yEA4AAZ2+KFsSukrUK9h+NSRVzBd3GpExHDW+8hLJCX\nDpbjMJSer/dQXKqIG9JxcakCBdvmF1cHGUzFcZC0ef28r62HkOFhJp+lxRfgvrYufjhysd5DXSDt\nWKBWWj522ei4gu/iUmGylsVXzr+Js0g8R7NpRofO3bCdqPXAyuC50Uu8MDbItnCUx7q24XNTOe8o\n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\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x3957dd1d68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(Y[:, 0], Y[:, 1], c=y, cmap=plt.cm.Set3, s=30, alpha=.8)\n",
"# plt.axis('tight')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I haven't used T-SNE in any meaningful way for years, but some key things to note are if we get a representation where regions overlap less compared to a standard post 2-dimension PCA plot. This might suggest that this dataset can be separated more effectively by non-linear methods that may focus on the local structure. We might find that 2-dimensions isn't enough to accurately represent the internal structure of the data (we might want to look at some 3-D plots)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion\n",
"Thanks for reading! I might have spent more time on making the header image in photoshop than on the code :)\n",
"\n",
"Let me know via email or twitter if you have any sections you'd like me to expand on. Hope to see you at [PyCon 2016 in Oregon](https://us.pycon.org/2016/)!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment