{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"LogisticRegressionKoban.ipynb","provenance":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"QeAIy7xnSAa1"},"source":["#Logistic Regression Homework\n","\n","- Use the full dataset -- all columns. ✗ <font color='blue'> ☹️ Couldn't find the data on Google drive so I grabbed a different data set.</font>\n","\n","- Try our quick algorigthm and see if it's any good ✓ <font color='blue'>Not bad. With standardized regressors, we outperformed the toward data science post I borrowed (Accuracy 0.88 vs 0.74).</font>\n","\n","- Try SKLearn on the same data, see if you do any better ✓ <font color='blue'>Sklearn did a little better (Accuracy - 0.91 vs 0.88; F1 - 0.523 vs 0.34).</font>\n","\n","- Combine random walk with Logistic regression -- does it improve results? ✗ <font color='blue'> ☹️ I'm not sure what this is asking me to do. I tried the random walk to find optimal weights and it didn't seem to work too well.</font>\n","\n","- How do we optimize the learning rate? -- you can use gradient descent; balance oscillations with speed of convergeance\n","\n","**I added in scaling on the quantitative variables and WAY outpeformed the person who wrote this post - a post that has over 11 thousand claps. I also added a bettter model evaluation summary / confusion matrix. Last I properly evaluated my model against a true test set, not the synthetic data they came up with.**\n","\n","\n","The majority of my code is taken from this toward data science post https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8. The analysis interpretation is solely mine. I did my own interpretation and then read the post.\n","\n","\n","<font color='red'>**Question:** The comments on the article from medium tell the author she should have used the synthetically generated data to train the classifier and evaluated the model performance using the original test data. The synthetic data set is balanced (i.e. - has an equal number of positive and negative responses). The actual data has 88% positive and 11% negative cases. What is the correct way to do this? </font> "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ekM2kTaJR0of","executionInfo":{"status":"ok","timestamp":1613045322066,"user_tz":300,"elapsed":69995,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"a3bc8f02-a0ff-4eef-b630-0e4cc8d78b5a"},"source":["# Mount data drive\n","from google.colab import drive\n","drive.mount('/data/')\n","data_dir = '/data/My Drive/EMSE 6575/LogisticRegressionHomework'"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /data/\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"kK61vDLrT4Qy"},"source":["# Load libraries\n","import pandas as pd\n","import numpy as np\n","from sklearn import preprocessing\n","import matplotlib.pyplot as plt \n","plt.rc(\"font\", size=14)\n","from sklearn.linear_model import LogisticRegression\n","from sklearn.model_selection import train_test_split\n","import seaborn as sns\n","sns.set(style=\"white\")\n","sns.set(style=\"whitegrid\", color_codes=True)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":241},"id":"8Bq83sNIUPTa","executionInfo":{"status":"ok","timestamp":1613045325598,"user_tz":300,"elapsed":73516,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"3f080170-3f26-4f70-fdab-68558c357e48"},"source":["# Read the data - \n","# Data is marketing campaign data for a bank where the goal is to predict whether the client will subscribe to a term deposit.\n","data = pd.read_csv(data_dir + '/loan_data.csv', header = 0)\n","data = data.dropna()\n","print(data.shape)\n","data.head()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["(41188, 21)\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>age</th>\n"," <th>job</th>\n"," <th>marital</th>\n"," <th>education</th>\n"," <th>default</th>\n"," <th>housing</th>\n"," <th>loan</th>\n"," <th>contact</th>\n"," <th>month</th>\n"," <th>day_of_week</th>\n"," <th>duration</th>\n"," <th>campaign</th>\n"," <th>pdays</th>\n"," <th>previous</th>\n"," <th>outcome</th>\n"," <th>emp_var_rate</th>\n"," <th>cons_price_idx</th>\n"," <th>cons_conf_idx</th>\n"," <th>euribor3m</th>\n"," <th>nr_employed</th>\n"," <th>y</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>44</td>\n"," <td>blue-collar</td>\n"," <td>married</td>\n"," <td>basic.4y</td>\n"," <td>unknown</td>\n"," <td>yes</td>\n"," <td>no</td>\n"," <td>cellular</td>\n"," <td>aug</td>\n"," <td>thu</td>\n"," <td>210</td>\n"," <td>1</td>\n"," <td>999</td>\n"," <td>0</td>\n"," <td>nonexistent</td>\n"," <td>1.4</td>\n"," <td>93.444</td>\n"," <td>-36.1</td>\n"," <td>4.963</td>\n"," <td>5228.1</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>53</td>\n"," <td>technician</td>\n"," <td>married</td>\n"," <td>unknown</td>\n"," <td>no</td>\n"," <td>no</td>\n"," <td>no</td>\n"," <td>cellular</td>\n"," <td>nov</td>\n"," <td>fri</td>\n"," <td>138</td>\n"," <td>1</td>\n"," <td>999</td>\n"," <td>0</td>\n"," <td>nonexistent</td>\n"," <td>-0.1</td>\n"," <td>93.200</td>\n"," <td>-42.0</td>\n"," <td>4.021</td>\n"," <td>5195.8</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>28</td>\n"," <td>management</td>\n"," <td>single</td>\n"," <td>university.degree</td>\n"," <td>no</td>\n"," <td>yes</td>\n"," <td>no</td>\n"," <td>cellular</td>\n"," <td>jun</td>\n"," <td>thu</td>\n"," <td>339</td>\n"," <td>3</td>\n"," <td>6</td>\n"," <td>2</td>\n"," <td>success</td>\n"," <td>-1.7</td>\n"," <td>94.055</td>\n"," <td>-39.8</td>\n"," <td>0.729</td>\n"," <td>4991.6</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>39</td>\n"," <td>services</td>\n"," <td>married</td>\n"," <td>high.school</td>\n"," <td>no</td>\n"," <td>no</td>\n"," <td>no</td>\n"," <td>cellular</td>\n"," <td>apr</td>\n"," <td>fri</td>\n"," <td>185</td>\n"," <td>2</td>\n"," <td>999</td>\n"," <td>0</td>\n"," <td>nonexistent</td>\n"," <td>-1.8</td>\n"," <td>93.075</td>\n"," <td>-47.1</td>\n"," <td>1.405</td>\n"," <td>5099.1</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>55</td>\n"," <td>retired</td>\n"," <td>married</td>\n"," <td>basic.4y</td>\n"," <td>no</td>\n"," <td>yes</td>\n"," <td>no</td>\n"," <td>cellular</td>\n"," <td>aug</td>\n"," <td>fri</td>\n"," <td>137</td>\n"," <td>1</td>\n"," <td>3</td>\n"," <td>1</td>\n"," <td>success</td>\n"," <td>-2.9</td>\n"," <td>92.201</td>\n"," <td>-31.4</td>\n"," <td>0.869</td>\n"," <td>5076.2</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" age job marital ... euribor3m nr_employed y\n","0 44 blue-collar married ... 4.963 5228.1 0\n","1 53 technician married ... 4.021 5195.8 0\n","2 28 management single ... 0.729 4991.6 1\n","3 39 services married ... 1.405 5099.1 0\n","4 55 retired married ... 0.869 5076.2 1\n","\n","[5 rows x 21 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"9koIyv0PUkMm","executionInfo":{"status":"ok","timestamp":1613045325599,"user_tz":300,"elapsed":73509,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"da3b3490-1db7-4312-9473-3ac0fd571bcc"},"source":["# Relabel education categories so there are less values\n","data['education'] = np.where(data['education'] == 'basic.9y', 'Basic', data['education'])\n","data['education'] = np.where(data['education'] == 'basic.6y', 'Basic', data['education'])\n","data['education'] = np.where(data['education'] == 'basic.4y', 'Basic', data['education'])\n","data['education'].value_counts()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Basic 12513\n","university.degree 12168\n","high.school 9515\n","professional.course 5243\n","unknown 1731\n","illiterate 18\n","Name: education, dtype: int64"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":336},"id":"sHmuJ9zLXcx9","executionInfo":{"status":"ok","timestamp":1613045325710,"user_tz":300,"elapsed":73612,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"7107a875-e2b7-47fb-ffec-e845bc688911"},"source":["# Explore response variable to determine how many trues there are\n","print(data['y'].value_counts())\n","sns.countplot(x = 'y', data = data, palette = 'hls')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["0 36548\n","1 4640\n","Name: y, dtype: int64\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nuNfl3y9X7Hu","executionInfo":{"status":"ok","timestamp":1613045325711,"user_tz":300,"elapsed":73605,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"6b0d94de-97f4-4a17-87ee-8f94c6fbb86c"},"source":["# Determine if the prediciton classes are balanced\n","count_no_sub = len(data[data['y']==0])\n","count_sub = len(data[data['y']==1])\n","pct_of_no_sub = count_no_sub/(count_no_sub+count_sub)\n","print(\"percentage of no subscription is\", pct_of_no_sub*100)\n","pct_of_sub = count_sub/(count_no_sub+count_sub)\n","print(\"percentage of subscription\", pct_of_sub*100)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["percentage of no subscription is 88.73458288821988\n","percentage of subscription 11.265417111780131\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":142},"id":"tmkIozICYFGo","executionInfo":{"status":"ok","timestamp":1613045325711,"user_tz":300,"elapsed":73598,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"6053f5c2-3e95-481e-a51f-7156b2180f09"},"source":["# Examine if there are any obvious differences in the explanatory variables between classes\n","data.groupby('y').mean()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>age</th>\n"," <th>duration</th>\n"," <th>campaign</th>\n"," <th>pdays</th>\n"," <th>previous</th>\n"," <th>emp_var_rate</th>\n"," <th>cons_price_idx</th>\n"," <th>cons_conf_idx</th>\n"," <th>euribor3m</th>\n"," <th>nr_employed</th>\n"," </tr>\n"," <tr>\n"," <th>y</th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>39.911185</td>\n"," <td>220.844807</td>\n"," <td>2.633085</td>\n"," <td>984.113878</td>\n"," <td>0.132374</td>\n"," <td>0.248875</td>\n"," <td>93.603757</td>\n"," <td>-40.593097</td>\n"," <td>3.811491</td>\n"," <td>5176.166600</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>40.913147</td>\n"," <td>553.191164</td>\n"," <td>2.051724</td>\n"," <td>792.035560</td>\n"," <td>0.492672</td>\n"," <td>-1.233448</td>\n"," <td>93.354386</td>\n"," <td>-39.789784</td>\n"," <td>2.123135</td>\n"," <td>5095.115991</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" age duration campaign ... cons_conf_idx euribor3m nr_employed\n","y ... \n","0 39.911185 220.844807 2.633085 ... -40.593097 3.811491 5176.166600\n","1 40.913147 553.191164 2.051724 ... -39.789784 2.123135 5095.115991\n","\n","[2 rows x 10 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"RinwTz4RZHiE"},"source":["Looks like people who subscribed were on the phone longer (duraction was 553 compared to 220). The `pdays` mean doesn't seem like a good measure since 999 means the client was not previously contacted. However, we can tell people who said yes are contacted more frequently than people who said no and were more likely to have been contacted in the previous quarter (previous 0.49 is greater than 0.132). \n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":673},"id":"Ga7y0cCUaSJj","executionInfo":{"status":"ok","timestamp":1613045325813,"user_tz":300,"elapsed":73691,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"4f9f2b35-45b4-486b-c8dd-182ba9694765"},"source":["# Look at trends within categorical variables\n","print(data['job'].value_counts())\n","data.groupby('job').mean()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["admin. 10422\n","blue-collar 9254\n","technician 6743\n","services 3969\n","management 2924\n","retired 1720\n","entrepreneur 1456\n","self-employed 1421\n","housemaid 1060\n","unemployed 1014\n","student 875\n","unknown 330\n","Name: job, dtype: int64\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>age</th>\n"," <th>duration</th>\n"," <th>campaign</th>\n"," <th>pdays</th>\n"," <th>previous</th>\n"," <th>emp_var_rate</th>\n"," <th>cons_price_idx</th>\n"," <th>cons_conf_idx</th>\n"," <th>euribor3m</th>\n"," <th>nr_employed</th>\n"," <th>y</th>\n"," </tr>\n"," <tr>\n"," <th>job</th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>admin.</th>\n"," <td>38.187296</td>\n"," <td>254.312128</td>\n"," <td>2.623489</td>\n"," <td>954.319229</td>\n"," <td>0.189023</td>\n"," <td>0.015563</td>\n"," <td>93.534054</td>\n"," <td>-40.245433</td>\n"," <td>3.550274</td>\n"," <td>5164.125350</td>\n"," <td>0.129726</td>\n"," </tr>\n"," <tr>\n"," <th>blue-collar</th>\n"," <td>39.555760</td>\n"," <td>264.542360</td>\n"," <td>2.558461</td>\n"," <td>985.160363</td>\n"," <td>0.122542</td>\n"," <td>0.248995</td>\n"," <td>93.656656</td>\n"," <td>-41.375816</td>\n"," <td>3.771996</td>\n"," <td>5175.615150</td>\n"," <td>0.068943</td>\n"," </tr>\n"," <tr>\n"," <th>entrepreneur</th>\n"," <td>41.723214</td>\n"," <td>263.267857</td>\n"," <td>2.535714</td>\n"," <td>981.267170</td>\n"," <td>0.138736</td>\n"," <td>0.158723</td>\n"," <td>93.605372</td>\n"," <td>-41.283654</td>\n"," <td>3.791120</td>\n"," <td>5176.313530</td>\n"," <td>0.085165</td>\n"," </tr>\n"," <tr>\n"," <th>housemaid</th>\n"," <td>45.500000</td>\n"," <td>250.454717</td>\n"," <td>2.639623</td>\n"," <td>960.579245</td>\n"," <td>0.137736</td>\n"," <td>0.433396</td>\n"," <td>93.676576</td>\n"," <td>-39.495283</td>\n"," <td>4.009645</td>\n"," <td>5179.529623</td>\n"," <td>0.100000</td>\n"," </tr>\n"," <tr>\n"," <th>management</th>\n"," <td>42.362859</td>\n"," <td>257.058140</td>\n"," <td>2.476060</td>\n"," <td>962.647059</td>\n"," <td>0.185021</td>\n"," <td>-0.012688</td>\n"," <td>93.522755</td>\n"," <td>-40.489466</td>\n"," <td>3.611316</td>\n"," <td>5166.650513</td>\n"," <td>0.112175</td>\n"," </tr>\n"," <tr>\n"," <th>retired</th>\n"," <td>62.027326</td>\n"," <td>273.712209</td>\n"," <td>2.476744</td>\n"," <td>897.936047</td>\n"," <td>0.327326</td>\n"," <td>-0.698314</td>\n"," <td>93.430786</td>\n"," <td>-38.573081</td>\n"," <td>2.770066</td>\n"," <td>5122.262151</td>\n"," <td>0.252326</td>\n"," </tr>\n"," <tr>\n"," <th>self-employed</th>\n"," <td>39.949331</td>\n"," <td>264.142153</td>\n"," <td>2.660802</td>\n"," <td>976.621393</td>\n"," <td>0.143561</td>\n"," <td>0.094159</td>\n"," <td>93.559982</td>\n"," <td>-40.488107</td>\n"," <td>3.689376</td>\n"," <td>5170.674384</td>\n"," <td>0.104856</td>\n"," </tr>\n"," <tr>\n"," <th>services</th>\n"," <td>37.926430</td>\n"," <td>258.398085</td>\n"," <td>2.587805</td>\n"," <td>979.974049</td>\n"," <td>0.154951</td>\n"," <td>0.175359</td>\n"," <td>93.634659</td>\n"," <td>-41.290048</td>\n"," <td>3.699187</td>\n"," <td>5171.600126</td>\n"," <td>0.081381</td>\n"," </tr>\n"," <tr>\n"," <th>student</th>\n"," <td>25.894857</td>\n"," <td>283.683429</td>\n"," <td>2.104000</td>\n"," <td>840.217143</td>\n"," <td>0.524571</td>\n"," <td>-1.408000</td>\n"," <td>93.331613</td>\n"," <td>-40.187543</td>\n"," <td>1.884224</td>\n"," <td>5085.939086</td>\n"," <td>0.314286</td>\n"," </tr>\n"," <tr>\n"," <th>technician</th>\n"," <td>38.507638</td>\n"," <td>250.232241</td>\n"," <td>2.577339</td>\n"," <td>964.408127</td>\n"," <td>0.153789</td>\n"," <td>0.274566</td>\n"," <td>93.561471</td>\n"," <td>-39.927569</td>\n"," <td>3.820401</td>\n"," <td>5175.648391</td>\n"," <td>0.108260</td>\n"," </tr>\n"," <tr>\n"," <th>unemployed</th>\n"," <td>39.733728</td>\n"," <td>249.451677</td>\n"," <td>2.564103</td>\n"," <td>935.316568</td>\n"," <td>0.199211</td>\n"," <td>-0.111736</td>\n"," <td>93.563781</td>\n"," <td>-40.007594</td>\n"," <td>3.466583</td>\n"," <td>5157.156509</td>\n"," <td>0.142012</td>\n"," </tr>\n"," <tr>\n"," <th>unknown</th>\n"," <td>45.563636</td>\n"," <td>239.675758</td>\n"," <td>2.648485</td>\n"," <td>938.727273</td>\n"," <td>0.154545</td>\n"," <td>0.357879</td>\n"," <td>93.718942</td>\n"," <td>-38.797879</td>\n"," <td>3.949033</td>\n"," <td>5172.931818</td>\n"," <td>0.112121</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" age duration ... nr_employed y\n","job ... \n","admin. 38.187296 254.312128 ... 5164.125350 0.129726\n","blue-collar 39.555760 264.542360 ... 5175.615150 0.068943\n","entrepreneur 41.723214 263.267857 ... 5176.313530 0.085165\n","housemaid 45.500000 250.454717 ... 5179.529623 0.100000\n","management 42.362859 257.058140 ... 5166.650513 0.112175\n","retired 62.027326 273.712209 ... 5122.262151 0.252326\n","self-employed 39.949331 264.142153 ... 5170.674384 0.104856\n","services 37.926430 258.398085 ... 5171.600126 0.081381\n","student 25.894857 283.683429 ... 5085.939086 0.314286\n","technician 38.507638 250.232241 ... 5175.648391 0.108260\n","unemployed 39.733728 249.451677 ... 5157.156509 0.142012\n","unknown 45.563636 239.675758 ... 5172.931818 0.112121\n","\n","[12 rows x 11 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"rOzb1MPBaqzM"},"source":["Young students have the highest subscription rate (31.4%) followed by older retired people (25.2%). Howver, students make up only a small percentage of the sample - only 875 students in the data."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":289},"id":"sJMFAavxbZkE","executionInfo":{"status":"ok","timestamp":1613045325906,"user_tz":300,"elapsed":73778,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"70b7f7d4-bfba-4b4c-bcb0-c73f8b9b7114"},"source":["print(data['marital'].value_counts())\n","data.groupby('marital').mean()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["married 24928\n","single 11568\n","divorced 4612\n","unknown 80\n","Name: marital, dtype: int64\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>age</th>\n"," <th>duration</th>\n"," <th>campaign</th>\n"," <th>pdays</th>\n"," <th>previous</th>\n"," <th>emp_var_rate</th>\n"," <th>cons_price_idx</th>\n"," <th>cons_conf_idx</th>\n"," <th>euribor3m</th>\n"," <th>nr_employed</th>\n"," <th>y</th>\n"," </tr>\n"," <tr>\n"," <th>marital</th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>divorced</th>\n"," <td>44.899393</td>\n"," <td>253.790330</td>\n"," <td>2.61340</td>\n"," <td>968.639853</td>\n"," <td>0.168690</td>\n"," <td>0.163985</td>\n"," <td>93.606563</td>\n"," <td>-40.707069</td>\n"," <td>3.715603</td>\n"," <td>5170.878643</td>\n"," <td>0.103209</td>\n"," </tr>\n"," <tr>\n"," <th>married</th>\n"," <td>42.307165</td>\n"," <td>257.438623</td>\n"," <td>2.57281</td>\n"," <td>967.247673</td>\n"," <td>0.155608</td>\n"," <td>0.183625</td>\n"," <td>93.597367</td>\n"," <td>-40.270659</td>\n"," <td>3.745832</td>\n"," <td>5171.848772</td>\n"," <td>0.101573</td>\n"," </tr>\n"," <tr>\n"," <th>single</th>\n"," <td>33.158714</td>\n"," <td>261.524378</td>\n"," <td>2.53380</td>\n"," <td>949.909578</td>\n"," <td>0.211359</td>\n"," <td>-0.167989</td>\n"," <td>93.517300</td>\n"," <td>-40.918698</td>\n"," <td>3.317447</td>\n"," <td>5155.199265</td>\n"," <td>0.140041</td>\n"," </tr>\n"," <tr>\n"," <th>unknown</th>\n"," <td>40.275000</td>\n"," <td>312.725000</td>\n"," <td>3.18750</td>\n"," <td>937.100000</td>\n"," <td>0.275000</td>\n"," <td>-0.221250</td>\n"," <td>93.471250</td>\n"," <td>-40.820000</td>\n"," <td>3.313038</td>\n"," <td>5157.393750</td>\n"," <td>0.150000</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" age duration campaign ... euribor3m nr_employed y\n","marital ... \n","divorced 44.899393 253.790330 2.61340 ... 3.715603 5170.878643 0.103209\n","married 42.307165 257.438623 2.57281 ... 3.745832 5171.848772 0.101573\n","single 33.158714 261.524378 2.53380 ... 3.317447 5155.199265 0.140041\n","unknown 40.275000 312.725000 3.18750 ... 3.313038 5157.393750 0.150000\n","\n","[4 rows x 11 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"markdown","metadata":{"id":"TrZKJdxZbq7E"},"source":["Not much to speak of on this one, other than single people have a higher percentage of successful subscpription than divorced or married. Makes sense considering how many students sign up. The unknown category also has high percentages but only makes up 80 people in the data."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":385},"id":"pglCHck-cNPr","executionInfo":{"status":"ok","timestamp":1613045325907,"user_tz":300,"elapsed":73773,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"8e7ba066-08d3-4f94-c86b-d0895abd4b82"},"source":["print(data['education'].value_counts())\n","data.groupby('education').mean()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Basic 12513\n","university.degree 12168\n","high.school 9515\n","professional.course 5243\n","unknown 1731\n","illiterate 18\n","Name: education, dtype: int64\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>age</th>\n"," <th>duration</th>\n"," <th>campaign</th>\n"," <th>pdays</th>\n"," <th>previous</th>\n"," <th>emp_var_rate</th>\n"," <th>cons_price_idx</th>\n"," <th>cons_conf_idx</th>\n"," <th>euribor3m</th>\n"," <th>nr_employed</th>\n"," <th>y</th>\n"," </tr>\n"," <tr>\n"," <th>education</th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>Basic</th>\n"," <td>42.163910</td>\n"," <td>263.043874</td>\n"," <td>2.559498</td>\n"," <td>974.877967</td>\n"," <td>0.141053</td>\n"," <td>0.191329</td>\n"," <td>93.639933</td>\n"," <td>-40.927595</td>\n"," <td>3.729654</td>\n"," <td>5172.014113</td>\n"," <td>0.087029</td>\n"," </tr>\n"," <tr>\n"," <th>high.school</th>\n"," <td>37.998213</td>\n"," <td>260.886810</td>\n"," <td>2.568576</td>\n"," <td>964.358382</td>\n"," <td>0.185917</td>\n"," <td>0.032937</td>\n"," <td>93.584857</td>\n"," <td>-40.940641</td>\n"," <td>3.556157</td>\n"," <td>5164.994735</td>\n"," <td>0.108355</td>\n"," </tr>\n"," <tr>\n"," <th>illiterate</th>\n"," <td>48.500000</td>\n"," <td>276.777778</td>\n"," <td>2.277778</td>\n"," <td>943.833333</td>\n"," <td>0.111111</td>\n"," <td>-0.133333</td>\n"," <td>93.317333</td>\n"," <td>-39.950000</td>\n"," <td>3.516556</td>\n"," <td>5171.777778</td>\n"," <td>0.222222</td>\n"," </tr>\n"," <tr>\n"," <th>professional.course</th>\n"," <td>40.080107</td>\n"," <td>252.533855</td>\n"," <td>2.586115</td>\n"," <td>960.765974</td>\n"," <td>0.163075</td>\n"," <td>0.173012</td>\n"," <td>93.569864</td>\n"," <td>-40.124108</td>\n"," <td>3.710457</td>\n"," <td>5170.155979</td>\n"," <td>0.113485</td>\n"," </tr>\n"," <tr>\n"," <th>university.degree</th>\n"," <td>38.879191</td>\n"," <td>253.223373</td>\n"," <td>2.563527</td>\n"," <td>951.807692</td>\n"," <td>0.192390</td>\n"," <td>-0.028090</td>\n"," <td>93.493466</td>\n"," <td>-39.975805</td>\n"," <td>3.529663</td>\n"," <td>5163.226298</td>\n"," <td>0.137245</td>\n"," </tr>\n"," <tr>\n"," <th>unknown</th>\n"," <td>43.481225</td>\n"," <td>262.390526</td>\n"," <td>2.596187</td>\n"," <td>942.830734</td>\n"," <td>0.226459</td>\n"," <td>0.059099</td>\n"," <td>93.658615</td>\n"," <td>-39.877816</td>\n"," <td>3.571098</td>\n"," <td>5159.549509</td>\n"," <td>0.145003</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" age duration ... nr_employed y\n","education ... \n","Basic 42.163910 263.043874 ... 5172.014113 0.087029\n","high.school 37.998213 260.886810 ... 5164.994735 0.108355\n","illiterate 48.500000 276.777778 ... 5171.777778 0.222222\n","professional.course 40.080107 252.533855 ... 5170.155979 0.113485\n","university.degree 38.879191 253.223373 ... 5163.226298 0.137245\n","unknown 43.481225 262.390526 ... 5159.549509 0.145003\n","\n","[6 rows x 11 columns]"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"markdown","metadata":{"id":"gGvlAtazcrlY"},"source":["This one suffers the same issues with unbalance sampling like the job table. Illiterate people appear to have the highest subscription rate (22.2%), but only 18 people described themselves as illiterate. However, also looks like people with a university degree are more likely to be subscriber than other categories."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":386},"id":"IC4ZhEiadE3J","executionInfo":{"status":"ok","timestamp":1613045326393,"user_tz":300,"elapsed":74252,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"53d0bc68-2960-41ed-d42e-a7f4c78ef031"},"source":["%matplotlib inline\n","pd.crosstab(data.job,data.y).plot(kind='bar')\n","plt.title('Purchase Frequency for Job Title')\n","plt.xlabel('Job')\n","plt.ylabel('Frequency of Purchase')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Text(0, 0.5, 'Frequency of Purchase')"]},"metadata":{"tags":[]},"execution_count":11},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"ET5V-epUdSIh"},"source":["This is a good plot because you can visually see which categories have high subscription rates (i.e., the blue and orange bars are closer in height for student and retired), but you can also see they make up a very small percentage of th total subscriptions (i.e., admin is the top job category to generate subscriptions). It also shows that the percentage of subscriptions varies within job categories; hence, knowing the type of job should help us predict whether or not a person subscribes. In other words, if we randomly draw a student, they have a higher chance of being a subscriber than if we draw a blue-collar worker.\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":358},"id":"O8u85NtKhXK6","executionInfo":{"status":"ok","timestamp":1613045326767,"user_tz":300,"elapsed":74619,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"cbca20c1-f636-4500-8c3d-b81f977013de"},"source":["%matplotlib inline\n","pd.crosstab(data.marital,data.y).plot(kind='bar')\n","plt.title('Purchase Frequency for Marital Status')\n","plt.xlabel('Marital Status')\n","plt.ylabel('Proportion of Customers')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Text(0, 0.5, 'Proportion of Customers')"]},"metadata":{"tags":[]},"execution_count":12},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"4R6c3eypiAYx"},"source":["Same as I stated above. Single people has a slightly higher proportion of subscriptions within their category than others."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"FpH8uV0JiSYT","executionInfo":{"status":"ok","timestamp":1613045327093,"user_tz":300,"elapsed":74939,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"34a1bc56-47e5-4854-ef4a-21f4d6cbff2a"},"source":["%matplotlib inline\n","pd.crosstab(data.education,data.y).plot(kind='bar')\n","plt.title('Purchase Frequency for Education Status')\n","plt.xlabel('Education Status')\n","plt.ylabel('Proportion of Customers')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["Text(0, 0.5, 'Proportion of Customers')"]},"metadata":{"tags":[]},"execution_count":13},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"RNmu8tTSivvS"},"source":["No change from above. University degree seems to be predictive over other categories. However, comparisons across other categories like basic and high.school seem less useful.\n","\n","**In summary, the diagnostic plots make it seem like newly graduated, single people are more likely to sign up for a term subscription than other types of people**"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":519},"id":"3FXvyViNjn6F","executionInfo":{"status":"ok","timestamp":1613045327398,"user_tz":300,"elapsed":75237,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"84a25046-01d6-4f67-ba2d-d60096709d35"},"source":["print(data['month'].value_counts())\n","pd.crosstab(data.month,data.y).plot(kind='bar')\n","plt.title('Purchase Frequency by Month')\n","plt.xlabel('Month')\n","plt.ylabel('Proportion of Customers')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["may 13769\n","jul 7174\n","aug 6178\n","jun 5318\n","nov 4101\n","apr 2632\n","oct 718\n","sep 570\n","mar 546\n","dec 182\n","Name: month, dtype: int64\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":["Text(0, 0.5, 'Proportion of Customers')"]},"metadata":{"tags":[]},"execution_count":14},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"ataSEKBOjzfv"},"source":["Looks like march, september, and october tend to be more successful months in terms of percentages. No idea why this would be the case other than, the fiscal year starts on October 1st. But for model training, it seems like month is going to be very predictive. If we are predicting something in any of those months, it should have better odds at being a success."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"XccHngLOlHlv","executionInfo":{"status":"ok","timestamp":1613045327512,"user_tz":300,"elapsed":75345,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"1662b212-7503-4a82-96d8-690e2f6ee315"},"source":["# One-hot encode the categorical variables \n","cat_vars=['job','marital','education','default','housing','loan','contact','month','day_of_week','outcome']\n","for var in cat_vars:\n"," cat_list='var'+'_'+var\n"," cat_list = pd.get_dummies(data[var], prefix=var)\n"," data1=data.join(cat_list)\n"," data=data1\n","\n","cat_vars=['job','marital','education','default','housing','loan','contact','month','day_of_week','outcome']\n","data_vars=data.columns.values.tolist()\n","to_keep=[i for i in data_vars if i not in cat_vars]\n","\n","data_final=data[to_keep]\n","data_final.columns.values"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array(['age', 'duration', 'campaign', 'pdays', 'previous', 'emp_var_rate',\n"," 'cons_price_idx', 'cons_conf_idx', 'euribor3m', 'nr_employed', 'y',\n"," 'job_admin.', 'job_blue-collar', 'job_entrepreneur',\n"," 'job_housemaid', 'job_management', 'job_retired',\n"," 'job_self-employed', 'job_services', 'job_student',\n"," 'job_technician', 'job_unemployed', 'job_unknown',\n"," 'marital_divorced', 'marital_married', 'marital_single',\n"," 'marital_unknown', 'education_Basic', 'education_high.school',\n"," 'education_illiterate', 'education_professional.course',\n"," 'education_university.degree', 'education_unknown', 'default_no',\n"," 'default_unknown', 'default_yes', 'housing_no', 'housing_unknown',\n"," 'housing_yes', 'loan_no', 'loan_unknown', 'loan_yes',\n"," 'contact_cellular', 'contact_telephone', 'month_apr', 'month_aug',\n"," 'month_dec', 'month_jul', 'month_jun', 'month_mar', 'month_may',\n"," 'month_nov', 'month_oct', 'month_sep', 'day_of_week_fri',\n"," 'day_of_week_mon', 'day_of_week_thu', 'day_of_week_tue',\n"," 'day_of_week_wed', 'outcome_failure', 'outcome_nonexistent',\n"," 'outcome_success'], dtype=object)"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":419},"id":"iTl_bnxVcLNR","executionInfo":{"status":"ok","timestamp":1613045327513,"user_tz":300,"elapsed":75340,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"c52cba30-c3fe-46bd-f6a9-378b41b07438"},"source":["import sklearn.preprocessing\n","from sklearn.preprocessing import StandardScaler\n","from sklearn.preprocessing import MinMaxScaler\n","sc = StandardScaler()\n","\n","numeric_vars = ['age', 'duration', 'campaign', 'pdays', 'emp_var_rate', 'cons_price_idx', \n"," 'cons_conf_idx', 'euribor3m', 'nr_employed']\n","\n","#only standardize numerical features\n","features=data_final[numeric_vars]\n","features_standard=StandardScaler().fit_transform(features)# Gaussian Standardisation\n","temp=pd.DataFrame(features_standard,columns=numeric_vars)\n","temp"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>age</th>\n"," <th>duration</th>\n"," <th>campaign</th>\n"," <th>pdays</th>\n"," <th>emp_var_rate</th>\n"," <th>cons_price_idx</th>\n"," <th>cons_conf_idx</th>\n"," <th>euribor3m</th>\n"," <th>nr_employed</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>0.381527</td>\n"," <td>-0.186230</td>\n"," <td>-0.565922</td>\n"," <td>0.195414</td>\n"," <td>0.839061</td>\n"," <td>-0.227465</td>\n"," <td>0.951267</td>\n"," <td>0.773575</td>\n"," <td>0.845170</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>1.245157</td>\n"," <td>-0.463926</td>\n"," <td>-0.565922</td>\n"," <td>0.195414</td>\n"," <td>-0.115781</td>\n"," <td>-0.649003</td>\n"," <td>-0.323542</td>\n"," <td>0.230456</td>\n"," <td>0.398115</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>-1.153816</td>\n"," <td>0.311309</td>\n"," <td>0.156105</td>\n"," <td>-5.117342</td>\n"," <td>-1.134279</td>\n"," <td>0.828107</td>\n"," <td>0.151810</td>\n"," <td>-1.667578</td>\n"," <td>-2.428157</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>-0.098268</td>\n"," <td>-0.282652</td>\n"," <td>-0.204909</td>\n"," <td>0.195414</td>\n"," <td>-1.197935</td>\n"," <td>-0.864955</td>\n"," <td>-1.425496</td>\n"," <td>-1.277824</td>\n"," <td>-0.940281</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>1.437075</td>\n"," <td>-0.467783</td>\n"," <td>-0.565922</td>\n"," <td>-5.133393</td>\n"," <td>-1.898153</td>\n"," <td>-2.374889</td>\n"," <td>1.966794</td>\n"," <td>-1.586859</td>\n"," <td>-1.257233</td>\n"," </tr>\n"," <tr>\n"," <th>...</th>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," <td>...</td>\n"," </tr>\n"," <tr>\n"," <th>41183</th>\n"," <td>1.820911</td>\n"," <td>-0.139947</td>\n"," <td>-0.565922</td>\n"," <td>0.195414</td>\n"," <td>0.839061</td>\n"," <td>1.536429</td>\n"," <td>-0.280328</td>\n"," <td>0.717649</td>\n"," <td>0.845170</td>\n"," </tr>\n"," <tr>\n"," <th>41184</th>\n"," <td>-0.865939</td>\n"," <td>-0.240227</td>\n"," <td>-0.204909</td>\n"," <td>0.195414</td>\n"," <td>0.648092</td>\n"," <td>0.722722</td>\n"," <td>0.886447</td>\n"," <td>0.714190</td>\n"," <td>0.331680</td>\n"," </tr>\n"," <tr>\n"," <th>41185</th>\n"," <td>0.189609</td>\n"," <td>-0.757050</td>\n"," <td>0.156105</td>\n"," <td>0.195414</td>\n"," <td>0.648092</td>\n"," <td>0.722722</td>\n"," <td>0.886447</td>\n"," <td>0.712460</td>\n"," <td>0.331680</td>\n"," </tr>\n"," <tr>\n"," <th>41186</th>\n"," <td>0.765363</td>\n"," <td>-0.224799</td>\n"," <td>-0.204909</td>\n"," <td>0.195414</td>\n"," <td>-2.216433</td>\n"," <td>-1.977538</td>\n"," <td>2.939106</td>\n"," <td>-1.660082</td>\n"," <td>-2.069683</td>\n"," </tr>\n"," <tr>\n"," <th>41187</th>\n"," <td>-1.441693</td>\n"," <td>-0.564206</td>\n"," <td>0.517118</td>\n"," <td>0.195414</td>\n"," <td>0.648092</td>\n"," <td>0.722722</td>\n"," <td>0.886447</td>\n"," <td>0.713613</td>\n"," <td>0.331680</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>41188 rows × 9 columns</p>\n","</div>"],"text/plain":[" age duration campaign ... cons_conf_idx euribor3m nr_employed\n","0 0.381527 -0.186230 -0.565922 ... 0.951267 0.773575 0.845170\n","1 1.245157 -0.463926 -0.565922 ... -0.323542 0.230456 0.398115\n","2 -1.153816 0.311309 0.156105 ... 0.151810 -1.667578 -2.428157\n","3 -0.098268 -0.282652 -0.204909 ... -1.425496 -1.277824 -0.940281\n","4 1.437075 -0.467783 -0.565922 ... 1.966794 -1.586859 -1.257233\n","... ... ... ... ... ... ... ...\n","41183 1.820911 -0.139947 -0.565922 ... -0.280328 0.717649 0.845170\n","41184 -0.865939 -0.240227 -0.204909 ... 0.886447 0.714190 0.331680\n","41185 0.189609 -0.757050 0.156105 ... 0.886447 0.712460 0.331680\n","41186 0.765363 -0.224799 -0.204909 ... 2.939106 -1.660082 -2.069683\n","41187 -1.441693 -0.564206 0.517118 ... 0.886447 0.713613 0.331680\n","\n","[41188 rows x 9 columns]"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"code","metadata":{"id":"sGIIVNHcmPnK"},"source":["cat_data = data_final[['job_admin.', 'job_blue-collar', 'job_entrepreneur',\n"," 'job_housemaid', 'job_management', 'job_retired',\n"," 'job_self-employed', 'job_services', 'job_student',\n"," 'job_technician', 'job_unemployed', 'job_unknown',\n"," 'marital_divorced', 'marital_married', 'marital_single',\n"," 'marital_unknown', 'education_Basic', 'education_high.school',\n"," 'education_illiterate', 'education_professional.course',\n"," 'education_university.degree', 'education_unknown', 'default_no',\n"," 'default_unknown', 'default_yes', 'housing_no', 'housing_unknown',\n"," 'housing_yes', 'loan_no', 'loan_unknown', 'loan_yes',\n"," 'contact_cellular', 'contact_telephone', 'month_apr', 'month_aug',\n"," 'month_dec', 'month_jul', 'month_jun', 'month_mar', 'month_may',\n"," 'month_nov', 'month_oct', 'month_sep', 'day_of_week_fri',\n"," 'day_of_week_mon', 'day_of_week_thu', 'day_of_week_tue',\n"," 'day_of_week_wed', 'outcome_failure', 'outcome_nonexistent',\n"," 'outcome_success', 'y']]\n","data_final_after_standardizing = pd.concat([cat_data.reset_index(drop=True), temp], axis=1)\n","data_final = data_final_after_standardizing"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0Y_TrOuxmnma"},"source":["# SMOTE\n","\n","With our training data created, I’ll up-sample the no-subscription using the SMOTE algorithm(Synthetic Minority Oversampling Technique). At a high level, SMOTE:\n","\n","1. Works by creating synthetic samples from the minor class (no-subscription) instead of creating copies.\n","2. Randomly choosing one of the k-nearest-neighbors and using it to create a similar, but randomly tweaked, new observations."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Iq6CmxhhmnFX","executionInfo":{"status":"ok","timestamp":1613045328680,"user_tz":300,"elapsed":76495,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"f074f651-0905-4935-b28b-cd16483d82ad"},"source":["X = data_final.loc[:, data_final.columns != 'y']\n","y = data_final.loc[:, data_final.columns == 'y']\n","from imblearn.over_sampling import SMOTE\n","os = SMOTE(random_state=0)\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)\n","columns = X_train.columns\n","os_data_X,os_data_y=os.fit_sample(X_train, y_train)\n","os_data_X = pd.DataFrame(data=os_data_X,columns=columns )\n","os_data_y= pd.DataFrame(data=os_data_y,columns=['y'])\n","# we can Check the numbers of our data\n","print(\"length of oversampled data is \",len(os_data_X))\n","print(\"Number of no subscription in oversampled data\",len(os_data_y[os_data_y['y']==0]))\n","print(\"Number of subscription\",len(os_data_y[os_data_y['y']==1]))\n","print(\"Proportion of no subscription data in oversampled data is \",len(os_data_y[os_data_y['y']==0])/len(os_data_X))\n","print(\"Proportion of subscription data in oversampled data is \",len(os_data_y[os_data_y['y']==1])/len(os_data_X))"],"execution_count":null,"outputs":[{"output_type":"stream","text":["/usr/local/lib/python3.6/dist-packages/sklearn/externals/six.py:31: FutureWarning: The module is deprecated in version 0.21 and will be removed in version 0.23 since we've dropped support for Python 2.7. Please rely on the official version of six (https://pypi.org/project/six/).\n"," \"(https://pypi.org/project/six/).\", FutureWarning)\n","/usr/local/lib/python3.6/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.neighbors.base module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.\n"," warnings.warn(message, FutureWarning)\n","/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n"," y = column_or_1d(y, warn=True)\n","/usr/local/lib/python3.6/dist-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function safe_indexing is deprecated; safe_indexing is deprecated in version 0.22 and will be removed in version 0.24.\n"," warnings.warn(msg, category=FutureWarning)\n"],"name":"stderr"},{"output_type":"stream","text":["length of oversampled data is 51134\n","Number of no subscription in oversampled data 25567\n","Number of subscription 25567\n","Proportion of no subscription data in oversampled data is 0.5\n","Proportion of subscription data in oversampled data is 0.5\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"KaUugP4ke19g","executionInfo":{"status":"ok","timestamp":1613045328682,"user_tz":300,"elapsed":76492,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"60bbf716-fcfe-4f28-bb56-fb8c6791efae"},"source":["data_final['y'].value_counts()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0 36548\n","1 4640\n","Name: y, dtype: int64"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"VPBTRLXRe_6_","executionInfo":{"status":"ok","timestamp":1613045328682,"user_tz":300,"elapsed":76488,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"38583cd7-9865-4a8d-81c7-642167b7f570"},"source":["os_data_y['y'].value_counts()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["1 25567\n","0 25567\n","Name: y, dtype: int64"]},"metadata":{"tags":[]},"execution_count":20}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"FrT9knUlfLoB","executionInfo":{"status":"ok","timestamp":1613045328683,"user_tz":300,"elapsed":76485,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"f369b7f3-178e-49a1-8933-9f9ca1f3136c"},"source":["y_test['y'].value_counts()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0 10981\n","1 1376\n","Name: y, dtype: int64"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"markdown","metadata":{"id":"HU2KJhWTnMYv"},"source":["Now we have a perfect balanced data! You may have noticed that I over-sampled only on the training data, because by oversampling only on the training data, none of the information in the test data is being used to create synthetic observations, therefore, no information will bleed from test data into the model training."]},{"cell_type":"markdown","metadata":{"id":"_uJzUpvopVjk"},"source":["# Recursive Feature Elimination\n","\n","Recursive Feature Elimination (RFE) is based on the idea to repeatedly construct a model and choose either the best or worst performing feature, setting the feature aside and then repeating the process with the rest of the features. This process is applied until all features in the dataset are exhausted. The goal of RFE is to select features by recursively considering smaller and smaller sets of features."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"PjNuOpFapeqQ","executionInfo":{"status":"ok","timestamp":1613045372388,"user_tz":300,"elapsed":120186,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"10d592c4-cc04-4073-f4a5-63fa434c0ebc"},"source":["import warnings\n","warnings.filterwarnings('ignore')\n","\n","data_final_vars=data_final.columns.values.tolist()\n","y=['y']\n","X=[i for i in data_final_vars if i not in y]\n","from sklearn.feature_selection import RFE\n","from sklearn.linear_model import LogisticRegression\n","logreg = LogisticRegression()\n","rfe = RFE(logreg, 25)\n","rfe = rfe.fit(os_data_X, os_data_y.values.ravel())\n","print(rfe.support_)\n","print(rfe.ranking_)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["[False True False True False True True True True False False False\n"," False False False False False False True False False False False True\n"," False False True False False False True False True False True True\n"," False True True True True False True False False False False False\n"," True True True False True False False True True False True False]\n","[22 1 2 1 9 1 1 1 1 8 21 20 19 32 34 14 11 12 1 33 17 10 31 1\n"," 35 28 1 29 23 6 1 7 1 5 1 1 4 1 1 1 1 16 1 25 26 24 27 13\n"," 1 1 1 36 1 15 18 1 1 30 1 3]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"CVkoEkDSpyj1"},"source":["from itertools import compress\n","cols = list(compress(os_data_X.columns, rfe.support_))\n","X=os_data_X[cols]\n","y=os_data_y['y']"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"RfiR1uafr4Me","executionInfo":{"status":"ok","timestamp":1613045373574,"user_tz":300,"elapsed":121364,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"c8954fdb-e6bd-4a58-9bda-d4a837429527"},"source":["# Implement the model\n","import statsmodels.api as sm\n","logit_model=sm.Logit(y,X)\n","result=logit_model.fit()\n","print(result.summary2())"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Optimization terminated successfully.\n"," Current function value: 0.315088\n"," Iterations 7\n"," Results: Logit\n","=====================================================================\n","Model: Logit Pseudo R-squared: 0.545 \n","Dependent Variable: y AIC: 32273.4687\n","Date: 2021-02-11 12:09 BIC: 32494.5238\n","No. Observations: 51134 Log-Likelihood: -16112. \n","Df Model: 24 LL-Null: -35443. \n","Df Residuals: 51109 LLR p-value: 0.0000 \n","Converged: 1.0000 Scale: 1.0000 \n","No. Iterations: 7.0000 \n","---------------------------------------------------------------------\n"," Coef. Std.Err. z P>|z| [0.025 0.975]\n","---------------------------------------------------------------------\n","job_blue-collar -0.3431 0.0411 -8.3412 0.0000 -0.4238 -0.2625\n","job_housemaid -0.4216 0.1155 -3.6492 0.0003 -0.6480 -0.1951\n","job_retired 0.3941 0.0611 6.4492 0.0000 0.2744 0.5139\n","job_self-employed -0.5627 0.0908 -6.2009 0.0000 -0.7406 -0.3849\n","job_services -0.4321 0.0565 -7.6411 0.0000 -0.5429 -0.3212\n","job_student 0.4525 0.0822 5.5062 0.0000 0.2914 0.6135\n","education_illiterate 0.6605 0.6181 1.0685 0.2853 -0.5510 1.8720\n","default_unknown -0.5534 0.0468 -11.8187 0.0000 -0.6452 -0.4616\n","housing_unknown -0.5237 0.1124 -4.6570 0.0000 -0.7441 -0.3033\n","loan_yes -0.3626 0.0444 -8.1660 0.0000 -0.4497 -0.2756\n","contact_telephone -0.6316 0.0515 -12.2732 0.0000 -0.7325 -0.5308\n","month_aug 1.0900 0.0580 18.8032 0.0000 0.9764 1.2037\n","month_dec -0.6926 0.1547 -4.4757 0.0000 -0.9959 -0.3893\n","month_jun -0.7708 0.0579 -13.3160 0.0000 -0.8843 -0.6574\n","month_mar 2.1291 0.0907 23.4618 0.0000 1.9512 2.3069\n","month_may -0.8230 0.0453 -18.1828 0.0000 -0.9117 -0.7343\n","month_nov -0.7804 0.0591 -13.2009 0.0000 -0.8962 -0.6645\n","month_sep 0.3917 0.0927 4.2276 0.0000 0.2101 0.5734\n","outcome_failure -1.4407 0.0539 -26.7484 0.0000 -1.5463 -1.3351\n","outcome_nonexistent -0.8536 0.0336 -25.3834 0.0000 -0.9195 -0.7877\n","outcome_success 0.5635 0.0740 7.6188 0.0000 0.4185 0.7084\n","duration 1.9455 0.0196 99.0136 0.0000 1.9070 1.9840\n","emp_var_rate -3.7658 0.1032 -36.4927 0.0000 -3.9681 -3.5636\n","cons_price_idx 1.3606 0.0420 32.4203 0.0000 1.2784 1.4429\n","euribor3m 1.6083 0.0838 19.1874 0.0000 1.4440 1.7726\n","=====================================================================\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"333QHUW9YMW4"},"source":["Will remove variables that have coefficient estimates with p-value higher than 0.05. ['education_illiterate']"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"XLgpTKXhYo04","executionInfo":{"status":"ok","timestamp":1613045374115,"user_tz":300,"elapsed":121899,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"237f33fb-2229-43dc-e3d4-b2cba724ab2e"},"source":["remove_cols = ['education_illiterate']\n","new_cols = [x for x in cols if x not in remove_cols]\n","X=os_data_X[new_cols]\n","y=os_data_y['y']\n","logit_model=sm.Logit(y,X)\n","result=logit_model.fit()\n","print(result.summary2())"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Optimization terminated successfully.\n"," Current function value: 0.315100\n"," Iterations 7\n"," Results: Logit\n","====================================================================\n","Model: Logit Pseudo R-squared: 0.545 \n","Dependent Variable: y AIC: 32272.6253\n","Date: 2021-02-11 12:09 BIC: 32484.8382\n","No. Observations: 51134 Log-Likelihood: -16112. \n","Df Model: 23 LL-Null: -35443. \n","Df Residuals: 51110 LLR p-value: 0.0000 \n","Converged: 1.0000 Scale: 1.0000 \n","No. Iterations: 7.0000 \n","--------------------------------------------------------------------\n"," Coef. Std.Err. z P>|z| [0.025 0.975]\n","--------------------------------------------------------------------\n","job_blue-collar -0.3427 0.0411 -8.3317 0.0000 -0.4234 -0.2621\n","job_housemaid -0.4215 0.1155 -3.6481 0.0003 -0.6479 -0.1950\n","job_retired 0.3963 0.0611 6.4879 0.0000 0.2766 0.5160\n","job_self-employed -0.5593 0.0907 -6.1678 0.0000 -0.7371 -0.3816\n","job_services -0.4320 0.0565 -7.6395 0.0000 -0.5428 -0.3212\n","job_student 0.4523 0.0822 5.5047 0.0000 0.2913 0.6134\n","default_unknown -0.5531 0.0468 -11.8144 0.0000 -0.6449 -0.4614\n","housing_unknown -0.5243 0.1124 -4.6621 0.0000 -0.7446 -0.3039\n","loan_yes -0.3625 0.0444 -8.1651 0.0000 -0.4496 -0.2755\n","contact_telephone -0.6301 0.0514 -12.2506 0.0000 -0.7309 -0.5293\n","month_aug 1.0910 0.0580 18.8224 0.0000 0.9774 1.2047\n","month_dec -0.6937 0.1547 -4.4829 0.0000 -0.9970 -0.3904\n","month_jun -0.7708 0.0579 -13.3163 0.0000 -0.8843 -0.6574\n","month_mar 2.1281 0.0907 23.4535 0.0000 1.9503 2.3060\n","month_may -0.8236 0.0453 -18.1990 0.0000 -0.9123 -0.7349\n","month_nov -0.7788 0.0591 -13.1781 0.0000 -0.8946 -0.6629\n","month_sep 0.3916 0.0927 4.2260 0.0000 0.2100 0.5732\n","outcome_failure -1.4418 0.0539 -26.7739 0.0000 -1.5474 -1.3363\n","outcome_nonexistent -0.8541 0.0336 -25.3995 0.0000 -0.9200 -0.7882\n","outcome_success 0.5635 0.0740 7.6191 0.0000 0.4185 0.7085\n","duration 1.9455 0.0196 99.0139 0.0000 1.9070 1.9840\n","emp_var_rate -3.7642 0.1032 -36.4837 0.0000 -3.9664 -3.5620\n","cons_price_idx 1.3597 0.0420 32.4081 0.0000 1.2774 1.4419\n","euribor3m 1.6069 0.0838 19.1744 0.0000 1.4426 1.7711\n","====================================================================\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"BJRL96LRbBzy","executionInfo":{"status":"ok","timestamp":1613045374869,"user_tz":300,"elapsed":122647,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"88c56ded-d82a-48f5-bc1e-9e81cdeadbe6"},"source":["from sklearn.linear_model import LogisticRegression\n","from sklearn import metrics\n","logreg = LogisticRegression()\n","logreg.fit(X_train, y_train)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n"," intercept_scaling=1, l1_ratio=None, max_iter=100,\n"," multi_class='auto', n_jobs=None, penalty='l2',\n"," random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n"," warm_start=False)"]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"FhVLLvF_bOQd","executionInfo":{"status":"ok","timestamp":1613045374870,"user_tz":300,"elapsed":122643,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"ff67aeed-897d-41f0-96f0-8bc5070d507a"},"source":["y_pred = logreg.predict(X_test)\n","print('Accuracy of logistic regression classifier on test set: {:.2f}'.format(logreg.score(X_test, y_test)))\n","\n","cm = metrics.confusion_matrix(y_test, y_pred)\n","true_pos = cm[1,1]\n","true_neg = cm[0,0]\n","false_pos = cm[0,1]\n","false_neg = cm[1,0]\n","precision = true_pos/(true_pos + false_pos)\n","recall = true_pos/(true_pos + false_neg)\n","\n","print(\"When we check precision of our model against the test data set, \" + str(len(y_test)) + \" users\")\n","print(\"\")\n","print(\"Precision - We predicted a subscription \" + str(cm[1,1] + cm[0,1]) + \" times and were correct \" + str(cm[1,1]) + \" times: \" + str(cm[1,1]/(cm[1,1] + cm[0,1]))[0:5])\n","print(\"Recall - We predicted \" + str(cm[1,1]) + \" out of the \" + str(cm[1,1] + cm[1,0]) + \" subscriptions: \" + str(recall)[0:5])\n","print(\"\")\n","print(\"Our total accuracy was \" + str((cm[0,0] + cm[1,1])/len(y_test))[0:5])\n","print(\"Our F1 score was \" + str(2*(precision*recall)/(precision+recall))[0:5])"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Accuracy of logistic regression classifier on test set: 0.91\n","When we check precision of our model against the test data set, 12357 users\n","\n","Precision - We predicted a subscription 884 times and were correct 592 times: 0.669\n","Recall - We predicted 592 out of the 1376 subscriptions: 0.430\n","\n","Our total accuracy was 0.912\n","Our F1 score was 0.523\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"lRxm6RHDg40s","executionInfo":{"status":"ok","timestamp":1613045374872,"user_tz":300,"elapsed":122640,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"b8e9a1ec-8327-4b89-87a2-2f5d20bad72d"},"source":["metrics.precision_score(y_test, y_pred)\n","cm = metrics.confusion_matrix(y_test, y_pred)\n","\n","true_neg = str(cm[0,0]) + \"/\" + str(cm[0,0] + cm[1,0]) + \" (\" + str(cm[0,0]/(cm[0,0] + cm[1,0]))[0:5] + \")\"\n","false_pos = str(cm[0,1]) + \"/\" + str(cm[0,1] + cm[1,1]) + \" (\" + str(cm[0,1]/(cm[0,1] + cm[1,1]))[0:5] + \")\"\n","false_neg = str(cm[1,0]) + \"/\" + str(cm[1,0] + cm[0,0]) + \" (\" + str(cm[1,0]/(cm[1,0] + cm[0,0]))[0:5] + \")\"\n","true_pos = str(cm[1,1]) + \"/\" + str(cm[1,1] + cm[0,1]) + \" (\" + str(cm[1,1]/(cm[1,1] + cm[0,1]))[0:5] + \")\"\n","\n","conf_matrix = pd.DataFrame({'Not Subscription': [true_neg, false_neg],\n"," 'Subscription': [false_pos, true_pos],\n"," 'Support': [cm[0,0] + cm[0,1], cm[1,0] + cm[1,1]]},\n"," index = ['Not Subscription', 'Subscription'])\n","conf_matrix"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>Not Subscription</th>\n"," <th>Subscription</th>\n"," <th>Support</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>Not Subscription</th>\n"," <td>10689/11473 (0.931)</td>\n"," <td>292/884 (0.330)</td>\n"," <td>10981</td>\n"," </tr>\n"," <tr>\n"," <th>Subscription</th>\n"," <td>784/11473 (0.068)</td>\n"," <td>592/884 (0.669)</td>\n"," <td>1376</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" Not Subscription Subscription Support\n","Not Subscription 10689/11473 (0.931) 292/884 (0.330) 10981\n","Subscription 784/11473 (0.068) 592/884 (0.669) 1376"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"JOyi4aFHhLUZ","executionInfo":{"status":"ok","timestamp":1613045374873,"user_tz":300,"elapsed":122633,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"ca505367-002e-4884-9f64-d4c09fc06ad1"},"source":["print(metrics.classification_report(y_test,y_pred))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," 0 0.93 0.97 0.95 10981\n"," 1 0.67 0.43 0.52 1376\n","\n"," accuracy 0.91 12357\n"," macro avg 0.80 0.70 0.74 12357\n","weighted avg 0.90 0.91 0.90 12357\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":301},"id":"98A0zoEJiTta","executionInfo":{"status":"ok","timestamp":1613045375408,"user_tz":300,"elapsed":123163,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"b60226c7-b852-484c-8bd3-045afa82ca46"},"source":["from sklearn.metrics import roc_auc_score\n","from sklearn.metrics import roc_curve\n","logit_roc_auc = roc_auc_score(y_test, logreg.predict(X_test))\n","fpr, tpr, thresholds = roc_curve(y_test, logreg.predict_proba(X_test)[:,1])\n","plt.figure()\n","plt.plot(fpr, tpr, label='Logistic Regression (area = %0.2f)' % logit_roc_auc)\n","plt.plot([0, 1], [0, 1],'r--')\n","plt.xlim([0.0, 1.0])\n","plt.ylim([0.0, 1.05])\n","plt.xlabel('False Positive Rate')\n","plt.ylabel('True Positive Rate')\n","plt.title('Receiver operating characteristic')\n","plt.legend(loc=\"lower right\")\n","plt.savefig('Log_ROC')\n","plt.show()"],"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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9erVPP300xQXFwNw9913VyecIxk0aBA//vhj9ftPPvmEBQsWYLVaCQ8PZ9q0aaSkpGCxWHjwwQePGPunn35Ky5YtycrK4plnnqGiooIZM2ZUx3LzzTczbNgwCgoKuOOOOygoKADgxBNPZOrUqaxatYrp06djs9morKzk+uuv56yzzuLee+8lNTWVyy67jOLiYv73v/+xbt06AMaNG8fVV18NwOWXX05qaipr1qxh9+7djB49uvpiWtsHH3zAW2+9Vf3+qaeeYsWKFVgsFmJiYnj88cdp27Yt2dnZnHfeeUyYMIE///yTCy+8kNNOO41p06axe/duysvLGTt2LNddd91R9+MMX375Jd999x0AAwYMIDg4mHXr1tG7d+8jbrNkyRJOPPFE4uPjAVi2bBnjx4+nRQvzUYbx48ezbNkyBg4cSFBQEEOGDGHZsmVceOGFTom5Pj6XRNoluOaCXrZ7NzsXLaHTlVcQEBpK3xeekwcGneD7tO18s2K7S/Z9+qBkRgxIbtS2mzdvZsaMGSxatIiEhASef/55pk+fzvPPP8/7779PTk4On3/+OVarlcsvv5w2bdr8ax8LFixgxIgRXHvttQAcOHCAqKgoJk6cSElJCffccw9gdnmusn//fm666SZeeukl+vXrh9Vqpaio6Kix2mw2vvvuO8aMGQNAWloaX3zxBe+++y7BwcH89NNPTJ06lYULF/Lxxx8fNfa//vqLJUuWkJyczMGDB5k0aRJz5swhISGB3bt3c/7557N06VI+++wzkpOTmTdvXvV3A5g7dy5XXnklZ511FoZhUFhY+K94Z86cic1m47PPPqO4uJiLLrqIbt26MXSoOQRQbm4u7777LsXFxYwcOZLzzz+fjh07HraP3NxcSktLD7u4X3311dXn9MMPP2TGjBk899xz1ee1V69e1Z9PnjyZyZMnc+qpp1JRUcEVV1xBr169GDJkyFH3U9PixYt588036/w3ufbaa6v/Pars27cPwzBo1apV9bLExER27dp11CSyaNGiw0pyubm5DBo06LB9rFy5svr98ccfz08//SRJpLGCApxbpWSrrCTn06XsWPgBAPHDTiWyu5IE4uOWL1/O0KFDSUhIAGDixImMGzeu+rNx48YRGBhIYGAgY8eOJT09/V/7GDhwIM888wylpaUMHjyYE06o/3mhNWvW0LlzZ/r16wdA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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"Koh05QVOirnx"},"source":["# Now to test this with the code we made in class."]},{"cell_type":"code","metadata":{"id":"Lj-cavmyiqkF"},"source":["from numpy.random import rand, randint\n","from numpy import log, dot, e\n","epsilon = 0.00000000000000000000000000001\n","\n","def sigmoid(z): return (1 / (1 + e**(-z)))\n","\n","#### STARTING CONDITION -->> RANDOM\n","weights = rand(X_train.shape[1])\n","\n","#### BLACK BOX \n","def predict(X):\n"," z=sigmoid(dot(X,weights))\n"," return([1 if i > 0.5 else 0 for i in z])\n","\n","### COST FUNCTION ---> this is how good our whole algorithm is\n","def cost_function(X,y,weights):\n"," y_hat = sigmoid(dot(X,weights))\n"," pred_1 = y*log(y_hat+epsilon)\n"," pred_0 = (1-y)*log(1-y_hat+epsilon)\n"," mean = - sum(pred_1 + pred_0)/len(X)\n"," return(mean)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"5Jjk07T2jogA"},"source":["X = X_train[['job_admin.', 'job_blue-collar', 'job_entrepreneur', 'job_housemaid',\n"," 'job_management', 'job_retired', 'job_self-employed', 'job_services',\n"," 'job_student', 'job_technician', 'job_unemployed', 'job_unknown',\n"," 'marital_divorced', 'marital_married', 'marital_single',\n"," 'marital_unknown', 'education_Basic', 'education_high.school',\n"," 'education_illiterate', 'education_professional.course',\n"," 'education_university.degree', 'education_unknown', 'default_no',\n"," 'default_unknown', 'default_yes', 'housing_no', 'housing_unknown',\n"," 'housing_yes', 'loan_no', 'loan_unknown', 'loan_yes',\n"," 'contact_cellular', 'contact_telephone', 'month_apr', 'month_aug',\n"," 'month_dec', 'month_jul', 'month_jun', 'month_mar', 'month_may',\n"," 'month_nov', 'month_oct', 'month_sep', 'day_of_week_fri',\n"," 'day_of_week_mon', 'day_of_week_thu', 'day_of_week_tue',\n"," 'day_of_week_wed', 'outcome_failure', 'outcome_nonexistent',\n"," 'outcome_success', 'age', 'duration', 'campaign', 'pdays',\n"," 'emp_var_rate', 'cons_price_idx', 'cons_conf_idx', 'euribor3m',\n"," 'nr_employed']]\n","y = y_train['y']\n","yh=cost_function(X,y,weights)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"oAhyvQWzlfbh"},"source":["def random_walk(X,y):\n"," best_weights = []\n"," best_cost = 1000000000\n"," cost = []\n","\n"," for _ in range(25):\n"," weights = rand(X.shape[1])\n"," c = cost_function(X,y,weights) #<<<---- $$$$ cost\n"," if c < best_cost:\n"," best_cost=c\n"," best_weights=weights\n"," cost.append(c)\n","\n"," return(cost,best_weights)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":285},"id":"YIx3sPNMlisU","executionInfo":{"status":"ok","timestamp":1613045376366,"user_tz":300,"elapsed":124100,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"f5820632-0d11-4093-b758-ebbd7bd17f9f"},"source":["loss, weights = random_walk(X,y)\n","plt.plot(loss)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[<matplotlib.lines.Line2D at 0x7fd43064fa20>]"]},"metadata":{"tags":[]},"execution_count":34},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"2r49PViKlm8y"},"source":["def fit(X,y,epochs=25,lr=0.01):\n"," loss = []\n"," weights = rand(X.shape[1])\n"," n = len(X)\n"," for _ in range(epochs):\n"," y_hat = sigmoid(dot(X,weights))\n"," delta = lr* dot(X.T, y_hat-y)/n\n"," weights -= delta\n"," loss.append(cost_function(X,y,weights))\n","\n"," ### better stopping condition - derivative\n"," #if sum(delta)/len(delta) < 0.001:\n"," # break\n","\n"," return(loss,weights)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":285},"id":"SFCZlyPylsfA","executionInfo":{"status":"ok","timestamp":1613045382003,"user_tz":300,"elapsed":129730,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"f33c973e-6611-4dc9-931a-6b65e137508f"},"source":["loss,weights = fit(X,y,epochs = 150, lr=0.1)\n","plt.plot(loss)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[<matplotlib.lines.Line2D at 0x7fd4306a3518>]"]},"metadata":{"tags":[]},"execution_count":36},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":204},"id":"PaD15hYLmupA","executionInfo":{"status":"ok","timestamp":1613045382168,"user_tz":300,"elapsed":129891,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"df47a404-61b1-458d-c829-cc16abab743c"},"source":["prediction_df = pd.DataFrame({'prediction': predict(X), 'truth': y})\n","prediction_df['result'] = None\n","prediction_df.head()"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>prediction</th>\n"," <th>truth</th>\n"," <th>result</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>31880</th>\n"," <td>0</td>\n"," <td>0</td>\n"," <td>None</td>\n"," </tr>\n"," <tr>\n"," <th>38177</th>\n"," <td>0</td>\n"," <td>0</td>\n"," <td>None</td>\n"," </tr>\n"," <tr>\n"," <th>2459</th>\n"," <td>0</td>\n"," <td>0</td>\n"," <td>None</td>\n"," </tr>\n"," <tr>\n"," <th>756</th>\n"," <td>0</td>\n"," <td>0</td>\n"," <td>None</td>\n"," </tr>\n"," <tr>\n"," <th>11275</th>\n"," <td>0</td>\n"," <td>0</td>\n"," <td>None</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" prediction truth result\n","31880 0 0 None\n","38177 0 0 None\n","2459 0 0 None\n","756 0 0 None\n","11275 0 0 None"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5RTyj28lnD5L","executionInfo":{"status":"ok","timestamp":1613045382170,"user_tz":300,"elapsed":129890,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"be24897b-bdcc-4144-f3a2-632b98d90778"},"source":["prediction_df['result'][(prediction_df['prediction'] == 0) & (prediction_df['truth'] == 0)] = \"true_neg\"\n","prediction_df['result'][(prediction_df['prediction'] == 0) & (prediction_df['truth'] == 1)] = \"false_neg\"\n","prediction_df['result'][(prediction_df['prediction'] == 1) & (prediction_df['truth'] == 0)] = \"false_pos\"\n","prediction_df['result'][(prediction_df['prediction'] == 1) & (prediction_df['truth'] == 1)] = \"true_pos\"\n","results = prediction_df['result'].value_counts()\n","results"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["true_neg 24640\n","false_neg 2071\n","true_pos 1193\n","false_pos 927\n","Name: result, dtype: int64"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gRoRQbQCmep6","executionInfo":{"status":"ok","timestamp":1613045382170,"user_tz":300,"elapsed":129887,"user":{"displayName":"Donald Koban","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgIl_q-klTdMSVMcpQ2RqU9YBN_aDPqg2-7Pd4=s64","userId":"12205738029019728376"}},"outputId":"245b9634-866f-461b-f0e6-a25319ab33b4"},"source":["\n","true_pos = results[3]\n","true_neg = results[0]\n","false_pos = results[1]\n","false_neg = results[2]\n","precision = true_pos/(true_pos + false_pos)\n","recall = true_pos/(true_pos + false_neg)\n","\n","print(\"When we check precision of our model against the test data set, \" + str(len(y)) + \" users\")\n","print(\"\")\n","print(\"Precision - We predicted a subscription \" + str(true_pos + false_pos) + \" times and were correct \" + str(true_pos) + \" times: \" + str(true_pos/(true_pos + false_pos))[0:5])\n","print(\"Recall - We predicted \" + str(true_pos) + \" out of the \" + str(true_pos + false_neg) + \" subscriptions: \" + str(recall)[0:5])\n","print(\"\")\n","print(\"Our total accuracy was \" + str((true_pos + true_neg)/len(y))[0:5])\n","print(\"Our F1 score was \" + str(2*(precision*recall)/(precision+recall))[0:5])"],"execution_count":null,"outputs":[{"output_type":"stream","text":["When we check precision of our model against the test data set, 28831 users\n","\n","Precision - We predicted a subscription 2998 times and were correct 927 times: 0.309\n","Recall - We predicted 927 out of the 2120 subscriptions: 0.437\n","\n","Our total accuracy was 0.886\n","Our F1 score was 0.362\n"],"name":"stdout"}]}]}