Last active
April 4, 2018 08:50
-
-
Save ctivanovich/84dafcae92d8db94e86095ffe945e853 to your computer and use it in GitHub Desktop.
Machine Learning to identify suspects by financial data for Enron employees
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Student response addresses the most important characteristics of the dataset and uses these characteristics to inform their analysis. Important characteristics include:\n", | |
"\n", | |
"total number of data points\n", | |
"allocation across classes (POI/non-POI)\n", | |
"number of features used\n", | |
"are there features with many missing values? etc.\n", | |
"The rubric requires to address the most important characteristics of the dataset and to use these characteristics to inform the analysis. Please make sure your discussion considers:\n", | |
"\n", | |
"The total number of data points.\n", | |
"The allocation across classes (POI/non-POI).\n", | |
"The number of features used.\n", | |
"Optionally: The distribution of missing values in the features: How many missing values are there for each feature? How are you dealing with missing values? Please note that the Tester.py function automatically converts all missing values to 0." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "ImportError", | |
"evalue": "No module named 'sklearn.model_selection'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[1;31m--------------------------------------------------------------------------\u001b[0m", | |
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)", | |
"\u001b[1;32m<ipython-input-1-6607f6d17042>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 29\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mprecision_recall_fscore_support\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mprecision_score\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 30\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfeature_selection\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mSelectKBest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mchi2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSelectPercentile\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 31\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel_selection\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mGridSearchCV\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mKFold\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 32\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpreprocessing\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mMinMaxScaler\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 33\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcross_validation\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mStratifiedKFold\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;31mImportError\u001b[0m: No module named 'sklearn.model_selection'" | |
] | |
} | |
], | |
"source": [ | |
"#!/usr/bin/python\n", | |
"from IPython.core.display import HTML\n", | |
"HTML(\"\"\"\n", | |
"<style>\n", | |
".output_png {\n", | |
" display: table-cell;\n", | |
" text-align: center;\n", | |
" vertical-align: middle;\n", | |
"}\n", | |
"</style>\n", | |
"\"\"\")\n", | |
"\n", | |
"import warnings\n", | |
"warnings.filterwarnings('ignore')\n", | |
"\n", | |
"%matplotlib inline\n", | |
"import sys\n", | |
"import pickle\n", | |
"import seaborn as sns\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"sys.path.append(\"../tools/\")\n", | |
"\n", | |
"#utilities\n", | |
"from sklearn.decomposition import PCA\n", | |
"from sklearn.pipeline import Pipeline\n", | |
"from sklearn.metrics import precision_recall_fscore_support, precision_score\n", | |
"from sklearn.feature_selection import SelectKBest, chi2, SelectPercentile\n", | |
"from sklearn.model_selection import train_test_split, GridSearchCV, KFold\n", | |
"from sklearn.preprocessing import MinMaxScaler\n", | |
"from sklearn.cross_validation import StratifiedKFold\n", | |
"from sklearn.feature_selection import RFECV\n", | |
"\n", | |
"#classifiers\n", | |
"from sklearn.naive_bayes import GaussianNB\n", | |
"from sklearn.neighbors import KNeighborsClassifier\n", | |
"from sklearn.svm import SVC\n", | |
"from sklearn.tree import DecisionTreeClassifier\n", | |
"from sklearn.cluster import KMeans\n", | |
"from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n", | |
"from feature_format import featureFormat, targetFeatureSplit\n", | |
"from tester import dump_classifier_and_data, test_classifier\n", | |
"from poi_email_addresses import poiEmails\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Available Features\n", | |
"\n", | |
"financial features: ['salary', 'deferral_payments', 'total_payments', 'loan_advances', 'bonus', 'restricted_stock_deferred', 'deferred_income', 'total_stock_value', 'expenses', 'exercised_stock_options', 'other', 'long_term_incentive', 'restricted_stock', 'director_fees'] (all units are in US dollars)\n", | |
"\n", | |
"email features: ['to_messages', 'email_address', 'from_poi_to_this_person', 'from_messages', 'from_this_person_to_poi', 'shared_receipt_with_poi'] (units are generally number of emails messages; notable exception is ‘email_address’, which is a text string)\n", | |
"\n", | |
"POI label: [‘poi’] (boolean, represented as integer)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 249, | |
"metadata": { | |
"collapsed": true, | |
"scrolled": true | |
}, | |
"outputs": [], | |
"source": [ | |
"### Task 1: Select what features you'll use.\n", | |
"### features_list is a list of strings, each of which is a feature name.\n", | |
"### The first feature must be \"poi\".\n", | |
"features_list = ['poi', \n", | |
" 'salary', \n", | |
" 'deferral_payments', \n", | |
" 'total_payments', \n", | |
" 'loan_advances', \n", | |
" 'bonus', \n", | |
" 'restricted_stock_deferred', \n", | |
" 'deferred_income', \n", | |
" 'total_stock_value', \n", | |
" 'expenses', \n", | |
" 'exercised_stock_options', \n", | |
" 'other', \n", | |
" 'long_term_incentive', \n", | |
" 'restricted_stock', \n", | |
" 'director_fees',\n", | |
" 'from_messages', \n", | |
" 'to_messages', \n", | |
" 'from_this_person_to_poi', \n", | |
" 'from_poi_to_this_person', \n", | |
" 'shared_receipt_with_poi']\n", | |
"\n", | |
"# You will need to use more features\n", | |
"\n", | |
"### Load the dictionary containing the dataset\n", | |
"with open(\"final_project_dataset.pkl\", \"r\") as data_file:\n", | |
" data_dict = pickle.load(data_file)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 250, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The total number of NaN's in this data set of 20 features is 1282.\n" | |
] | |
} | |
], | |
"source": [ | |
"### Task 2: Remove outliers\n", | |
"### We drop the outliers we already know to exist from the course, like TOTAL, and others we've found by visual inspection\n", | |
"for outlier in [\"LOCKHART EUGENE E\", \"TOTAL\", \"THE TRAVEL AGENCY IN THE PARK\"]:\n", | |
" if outlier in data_dict:\n", | |
" data_dict.pop(outlier)\n", | |
"\n", | |
"### Conversion to pandas.dataframe for easy aggregation, cleaning, and detection of outliers\n", | |
"df = pd.DataFrame.from_dict(data_dict)\n", | |
"\n", | |
"### We keep only the features we've chosen\n", | |
"df = df.transpose()[features_list]\n", | |
"\n", | |
"### Seeing that all of the booleans and NaN's are actually strings, we convert them to appropriate\n", | |
"### objects\n", | |
"df.replace(\"NaN\", np.nan, inplace=True)\n", | |
"df.replace(\"False\", False, inplace=True)\n", | |
"df.replace(\"True\", True, inplace=True)\n", | |
"print \"The total number of NaN's in this data set of %d features is %d.\" \\\n", | |
"%(len(features_list), df.isnull().values.sum())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### More basic facets of the data set" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 251, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"The number of \"POIs\" and \"non-POIs\" are 18 and 125, respectively, out of 143 listed individuals.\n", | |
"\n", | |
"As for the distribution of NaNs across features that have them, we can see this in the following table:\n", | |
"salary 49.0\n", | |
"deferral_payments 105.0\n", | |
"total_payments 20.0\n", | |
"loan_advances 140.0\n", | |
"bonus 62.0\n", | |
"restricted_stock_deferred 126.0\n", | |
"deferred_income 95.0\n", | |
"total_stock_value 18.0\n", | |
"expenses 49.0\n", | |
"exercised_stock_options 42.0\n", | |
"other 52.0\n", | |
"long_term_incentive 78.0\n", | |
"restricted_stock 34.0\n", | |
"director_fees 127.0\n", | |
"from_messages 57.0\n", | |
"to_messages 57.0\n", | |
"from_this_person_to_poi 57.0\n", | |
"from_poi_to_this_person 57.0\n", | |
"shared_receipt_with_poi 57.0\n", | |
"Name: count, dtype: float64\n" | |
] | |
} | |
], | |
"source": [ | |
"print \"The number of \\\"POIs\\\" and \\\"non-POIs\\\" are %s and %s, respectively, out of %s listed individuals.\\n\" \\\n", | |
"%(sum(df[\"poi\"]==True), sum(df[\"poi\"]==False), df.shape[0])\n", | |
"\n", | |
"print \"As for the distribution of NaNs across features that have them, we can see this in the following table:\"\n", | |
"print df.shape[0]-df.describe().loc[\"count\"]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 252, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Here is the distribution of filled values (not NaNs) by POI status:\n", | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style>\n", | |
" .dataframe thead tr:only-child th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th>poi</th>\n", | |
" <th>False</th>\n", | |
" <th>True</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>salary</th>\n", | |
" <td>77</td>\n", | |
" <td>17</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>deferral_payments</th>\n", | |
" <td>33</td>\n", | |
" <td>5</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>total_payments</th>\n", | |
" <td>105</td>\n", | |
" <td>18</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>loan_advances</th>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>bonus</th>\n", | |
" <td>65</td>\n", | |
" <td>16</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>restricted_stock_deferred</th>\n", | |
" <td>17</td>\n", | |
" <td>0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>deferred_income</th>\n", | |
" <td>37</td>\n", | |
" <td>11</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>total_stock_value</th>\n", | |
" <td>107</td>\n", | |
" <td>18</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>expenses</th>\n", | |
" <td>76</td>\n", | |
" <td>18</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>exercised_stock_options</th>\n", | |
" <td>89</td>\n", | |
" <td>12</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>other</th>\n", | |
" <td>73</td>\n", | |
" <td>18</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>long_term_incentive</th>\n", | |
" <td>53</td>\n", | |
" <td>12</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>restricted_stock</th>\n", | |
" <td>92</td>\n", | |
" <td>17</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>director_fees</th>\n", | |
" <td>16</td>\n", | |
" <td>0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>from_messages</th>\n", | |
" <td>72</td>\n", | |
" <td>14</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>to_messages</th>\n", | |
" <td>72</td>\n", | |
" <td>14</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>from_this_person_to_poi</th>\n", | |
" <td>72</td>\n", | |
" <td>14</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>from_poi_to_this_person</th>\n", | |
" <td>72</td>\n", | |
" <td>14</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>shared_receipt_with_poi</th>\n", | |
" <td>72</td>\n", | |
" <td>14</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
"poi False True \n", | |
"salary 77 17\n", | |
"deferral_payments 33 5\n", | |
"total_payments 105 18\n", | |
"loan_advances 2 1\n", | |
"bonus 65 16\n", | |
"restricted_stock_deferred 17 0\n", | |
"deferred_income 37 11\n", | |
"total_stock_value 107 18\n", | |
"expenses 76 18\n", | |
"exercised_stock_options 89 12\n", | |
"other 73 18\n", | |
"long_term_incentive 53 12\n", | |
"restricted_stock 92 17\n", | |
"director_fees 16 0\n", | |
"from_messages 72 14\n", | |
"to_messages 72 14\n", | |
"from_this_person_to_poi 72 14\n", | |
"from_poi_to_this_person 72 14\n", | |
"shared_receipt_with_poi 72 14" | |
] | |
}, | |
"execution_count": 252, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"### Let's look at the distribution of values across the two classes\n", | |
"print \"Here is the distribution of filled values (not NaNs) by POI status:\\n\"\n", | |
"df.groupby(\"poi\").count().transpose()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"From the above, we see that there are features we can safely exclude as having no predictive power. These have either very few values in total (mostly NaNs), or else no values at all for actual POIs: _director fees_, _restricted stock deferred_, and _loan advances_. We may also exclude features that " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 253, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"What is this 'other' feature? Let's take a look:\n", | |
"\n", | |
"ALLEN PHILLIP K 152.0\n", | |
"BADUM JAMES P NaN\n", | |
"BANNANTINE JAMES M 864523.0\n", | |
"BAXTER JOHN C 2660303.0\n", | |
"BAY FRANKLIN R 69.0\n", | |
"Name: other, dtype: float64\n", | |
"\n", | |
"Looks like uncategorized income with a huge range.\n" | |
] | |
} | |
], | |
"source": [ | |
"to_drop = ['director_fees', 'restricted_stock_deferred', 'loan_advances']\n", | |
"for col in df.columns:\n", | |
" if col in to_drop:\n", | |
" df.drop(col, axis=1,inplace=True)\n", | |
"\n", | |
"### update the features list as well\n", | |
"for feature in to_drop:\n", | |
" if feature in features_list:\n", | |
" features_list.remove(feature)\n", | |
"print \"What is this 'other' feature? Let's take a look:\\n\"\n", | |
"print df.other.head()\n", | |
"print \"\\nLooks like uncategorized income with a huge range.\"" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 254, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"### We make a plotting function, which can further help with outlier detection\n", | |
"\n", | |
"def plot_features(df, features, logx=False, logy=False):\n", | |
" # initial plt figure settings\n", | |
" plt.figure(figsize = (9, 6))\n", | |
" #recasting features for indexing, to support tuple as input\n", | |
" features = list(features)\n", | |
" f1 = df[features[0]]\n", | |
" f2 = df[features[1]]\n", | |
" if logx:\n", | |
" plt.xscale(\"log\")\n", | |
" features[0] = features[0] + \" (log10)\"\n", | |
" if logy:\n", | |
" plt.yscale(\"log\")\n", | |
" features[1] = features[1] + \" (log10)\"\n", | |
" if len(features) == 2:\n", | |
" plt.scatter(x=f1, y=f2)\n", | |
" else:\n", | |
" f3 = df[features[2]]\n", | |
" for i in range(len(f3)):\n", | |
" if f3[i] == 0:\n", | |
" plt.scatter(x = f1[i], y = f2[i], color=\"b\")\n", | |
" else:\n", | |
" plt.scatter(x = f1[i], y = f2[i], marker='x')\n", | |
" \n", | |
" plt.xlabel(features[0])\n", | |
" plt.ylabel(features[1])\n", | |
"\n", | |
" plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 255, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nSPq6u9+bdVsAAEA55TIoGAAAIEtFXSl4IGyZgCIyszeY2ffN7Etmdvqo2wM0s+AKM/u8mb171O0B\nGsxsY/0QPN7RAAAFAUlEQVTPzavNbM9y749yllMXbJmAInJJT0k6XNKjI24L0OpshYkZ/yw+nyiQ\n+jp2e8zsbEm3Lff+wlZo2DIBRdXvZ9Pdv+/ub5V0maRP5N1ejJd+P5+SXi3pb939EkkfzLWxGCsD\nfDYbzpd03XL3L2ygEVsmoLj6/Ww2/FzSylxaiHHW7+fzUS2s5j6fVyMxlvr+s9PMjpH0c3d/Zrmb\nF7bLyd331FcYbvbLLRMkycwaWybc5+6X18/9vkLpFMhEv59NM3u7wv+sL1b4HxfITL+fT0nflPQF\nM3u9pL/JtbEYKwN8NiXpQoUgtKzCBpoO1kh6pOn4UYXfjF9y92tzbREQdPxsuvu3JH1rFI0C6rp9\nPg+IqjZGp+vf6+5e7fVGRe5yAgAA6ElsgYYtE1BUfDZRZHw+UVSpfTaLHmjYMgFFxWcTRcbnE0WV\n2WezsIGGLRNQVHw2UWR8PlFUWX822foAAABEr7AVGgAAgF4RaAAAQPQINAAAIHoEGgAAED0CDQAA\niB6BBgAARI9AAwAAokegATA0M7vGzM7J6N4fNrN3DfscM3u1mf3QzJ41s4+2fO8sM7vPzB4ws0ub\nzl9pZm8c7icAkIfYdtsGUAJmNlFfIXTZ90l6r6T1KTz2XxRWJH1byzMOk/RFSWdI+gdJc2b2bXe/\nT9IXJF0t6dYUng8gQ1RoACxhZkeY2f81szvN7C4z21I//z/M7O/q577c4dq27zGzW83sM2Z2m6T/\nbmY/qwcWmdmRzcdN3iTpdnd/oc1zzjCzO8zsJ2b2FTObrJ9/i5nda2ZzZvY5M7tRktz9n939dknP\nt9xqg6QH3X2fux+S9HVJZ9eveVjSr5rZy/v+TQSQKwINgHbOkrTf3de7+8mSvls//wV3f1393BFm\n9tY213Z7z6S7b3D3TyhUPRrf+z1JN7Sp2vy2pNtbH2Bmh0u6RtIWd/9NSZOS/kv9/JclbXb3UyVN\nS1puf5c1kh5pOn60fq7hzno7ABQYgQZAO3dL2mRmu8xso7s/VT9/hpn9yMzukvRGSSe2ubbbe77R\n9PWMpAvqX1+gEFBaHSWp1ub8qyX9zN0fqh9/VdLpkl4j6aF6ZUWSZrv+lL35J0mvSOE+ADJEoAGw\nhLs/KOkUhWBzhZldXq9+7JZ0Tr368hVJq5qv6+E9zzQ944eS1pnZGyQd5u4/bdOUA63PaH5cn+c7\n2S/p2Kbjo+vnGlbV2wGgwAg0AJYws6MkHXD36yRdqRBuVil03/yLmb1I0jvbXNrLe5r9qaTrJP1J\nh+/fK+lVbc7fL2mtmb2yfvxuSUn9/K+bWSOgnNfhvs2hZ07Sq8xsrZmtVOj++qum7x8v6e+X+TkA\njBiznAC0c5KkK83sBUkHJf1nd3/SzL4i6R5Jj0m6ren9Lkm9vKfF1yR9UmEgbjvfUQg9rc95zswu\nkPQX9YHEc5KucvdDZvZBSd8zs6fr512SzOzfSvqxpCMlvWBmH5b0Wnd/2swuknSzwj/yZtz93vo1\nKyQdV78OQIGZ+3Lj5QAgG2b2Tkn/0d3f0+U9N0j6r03jZZa756+4+zP1r3dLesDdPzdg+94mab27\n7xjkegD5oUIDYCTM7PMKs6nessxbL1MYHNxToJH0fjN7j6SVku6QdNXAjZQmJP3vIa4HkBMqNAAA\nIHoMCgYAANEj0AAAgOgRaAAAQPQINAAAIHoEGgAAED0CDQAAiN7/B+V2XiboX0tGAAAAAElFTkSu\nQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x15c89208>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1be0e668>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n/GKt8roedaqrtBbv5fqa6IrCfRc5GVgA/mW36BPA66cZ3BjUqC5GzUEoM4eh6vkS0qC8l+uprKDm\nBuALwHu7Rb8APDszXzTshUdlUKNZ4AqukmZJWUHN5zLz3PXKymRQo6ZzFoemYZj1jaapbvXV2sqa\n/XQ4Irb1XfQ5wOE1fl7SiJzFobL1dnfv5Wt2OsXx0tI0a7W6utVXkzfo7KdXAu/t5tYEcD/wy5Oq\nlCRncah8c3OwZ89j9wzr7/moUq7KIPXVbBmopyYzP5eZzwbOAZ6Vmedl5ucnWzVpttVpBVc1R//u\n7rt2HbsJahVX6l2rvpo96+3S/dq1XpyZ/37sNRqQOTWaFVX6ZKzmW21396rmeLkbfbNMdJdu4KRh\nTyxpPObnDWZUjrV2d6/iLt3uRq/lNrT4XpXYUyNJ47fabKKq9tQ4+6lZJjr7KSKujognrvH8T0TE\nC4a9uKSNWVyEQ4fgjjuKx8XFxz7XXyZt1Gq7u1c1x2uju9GvxP87zbFeTs1lwO8ADwO3AovAicDT\ngXOBm4DfzczSbwV7ajRregvxQfFpefPm4vt9+4pHF+lTGZqW4+UCl9VS1uJ7TweeAzyFYn2aO4Cb\nM3Nqa9UY1GiWrNT133PiiRCx/rCA3fTN5Ps6vKoOqc2yUhbfy8y7M/M9mbknM6/JzI9MM6CRqmwS\nXdkrLcTXMzcHxy37n7x8kT4XKWsm39fRuMBl8wy6onAltdvtsWxVLo3LpNbxWGkhvp6lJfiHfzi2\nbPkiff2LlLXbxeOePX6ir7tpvq9NyENxgcvq6HQ6tNvt0U+UmbX8KqouVcc3v5m5eXMmHP3avLko\nH4frrivOd+KJR8+9eXNR3ntuy5ajZStZWCheu7AwnjqpGkZ9Xx99dO3j5Xr328knr32/1cGg/3dU\nju7f9qFjA6d0q5Gmkcx46FDRQ/Pgg0fLtmyBm26CrVvHc41eu57wBPj2t49t33ptdpGyZhr1fe0N\nYe3ZU7yu01l7rZcm5qE0Lfm5zkbNqRm0V+Qs4GPAF7rH5wBXjxJNjfqFPTVaxbQ+RU66p2YUjz6a\neeGFmR//eHH88Y8Xx+t9Ile1jet9/fjHM5/85KKn58lPPnq+ldxyS/F/q/8+37KlKJdGRRk9NRHx\nCeC3gXdk5nndsi9k5g8PHU2NyJ4arWTanyJ700NPOKEYm5/W9NCVPnk6S6aZxvW+ttvF/km/9Vvw\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1be0e9b0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"##Outlier detection through visualizations\n", | |
"plot_features(df, (\"salary\", \"bonus\", \"poi\"), True, True)\n", | |
"plot_features(df, (\"exercised_stock_options\", \"total_stock_value\", \"poi\"), False, False)\n", | |
"plot_features(df, [\"other\", \"total_stock_value\", \"poi\"], True, True) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 256, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"#outlier removal with a threshold function\n", | |
"def remove_outliers(df, feature=None, q = 0.99):\n", | |
" q = df[feature].quantile(q)\n", | |
" return df[df[feature]< q]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Feature Selection and Scaling" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 257, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"###select, scale, and update my_dataset with selected features\n", | |
"\n", | |
"### First, scaler can't handle NaN's, so we must impute values for them\n", | |
"### We try to do this with Pandas' built-in functions\n", | |
"### NB: I first attempted this with the sklearn.preprocessing.Imputer class, but\n", | |
"### the output invariably ended up with conflicting lengths--values were being dropped, \n", | |
"### perhaps due to use of a pandas series object rather than a numpy array.\n", | |
"\n", | |
"\n", | |
"for feature in df.columns:\n", | |
" df[feature].fillna(0, inplace=True)\n", | |
"\n", | |
"scaler = MinMaxScaler()\n", | |
"\n", | |
"df_scaled = df.copy()\n", | |
"df_scaled[df.columns] = scaler.fit_transform(df[df.columns])\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 258, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Optimal number of features : 5\n", | |
"[ True False False False False False True True True False False False\n", | |
" False True False False]\n", | |
"AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None,\n", | |
" learning_rate=1.0, n_estimators=50, random_state=None)\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\nrkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1d326630>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Optimal number of features : 6\n", | |
"[False False True True False False False True True False True False\n", | |
" False False False True]\n", | |
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n", | |
" max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best')\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\nZQAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1b337b00>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Optimal number of features : 4\n", | |
"[ True False False True False True False True False False False False\n", | |
" False False False False]\n", | |
"RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", | |
" max_depth=None, max_features='auto', max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" n_estimators=10, n_jobs=1, oob_score=False, random_state=None,\n", | |
" verbose=0, warm_start=False)\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n/H98NOkSYrNnvwAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1d9e6ba8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"### convert df to dictionary with appropriate keys (names of people)\n", | |
"my_dataset = df_scaled.to_dict(orient = \"index\")\n", | |
"\n", | |
"### Extract features and labels from dataset for local testing\n", | |
"data = featureFormat(my_dataset, features_list, sort_keys = True)\n", | |
"\n", | |
"labels, features = targetFeatureSplit(data)\n", | |
"\n", | |
"for i in range(len(labels)):\n", | |
" labels[i] = int(labels[i])\n", | |
"\n", | |
"classifiers = [AdaBoostClassifier(), \n", | |
" DecisionTreeClassifier(class_weight=None),\n", | |
" RandomForestClassifier(class_weight=None)\n", | |
" ]\n", | |
"\n", | |
"for clf in classifiers:\n", | |
" rfecv = RFECV(estimator=clf, step=1, cv=StratifiedKFold(labels, 50),\n", | |
" scoring='precision')\n", | |
" rfecv.fit(features, labels)\n", | |
" print \"Optimal number of features : %d\" % rfecv.n_features_\n", | |
" print rfecv.support_\n", | |
" print type(clf)\n", | |
" # Plot number of features VS. cross-validation scores\n", | |
" plt.figure()\n", | |
" plt.xlabel(\"Number of features selected\")\n", | |
" plt.ylabel(\"Cross validation score (nb of correct classifications)\")\n", | |
" plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)\n", | |
" plt.show()\n", | |
" \n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We take a hint from the recursive feature selection applied above, and use KBest to extract the suggested number of features for each classifier." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 263, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"### We create a graphing function that can evalute the effect of k in KBest on basic fit score of classifiers\n", | |
"\n", | |
"def graph_k_accuracy(kvalues = 1, clfs = []):\n", | |
" for clf in clfs:\n", | |
" plt.figure()\n", | |
" plt.xlabel(\"Number of KBest Features Used\")\n", | |
" plt.ylabel(\"Accuracy of classifier\")\n", | |
" scores = []\n", | |
" for k in range(1, kvalues + 1):\n", | |
" kbest = SelectKBest(k=k)\n", | |
" scaled_K = kbest.fit_transform(features, labels)\n", | |
" features_train, features_test, labels_train, labels_test = \\\n", | |
" train_test_split(scaled_K, labels, test_size = 0.3)\n", | |
" scores.append(clf.fit(features_train, labels_train).score(features_test, labels_test))\n", | |
" plt.plot(range(1, kvalues + 1), scores)\n", | |
" plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 264, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# split data\n", | |
"features_train, features_test, labels_train, labels_test = \\\n", | |
" train_test_split(features, labels, test_size = 0.3, random_state = 42)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 268, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"GridSearchCV(cv=None, error_score='raise',\n", | |
" estimator=Pipeline(steps=[('skb', SelectKBest(k=10, score_func=<function f_classif at 0x000000000C5E5358>)), ('ada', AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None,\n", | |
" learning_rate=1.0, n_estimators=50, random_state=None))]),\n", | |
" fit_params={}, iid=True, n_jobs=1,\n", | |
" param_grid=[{'skb__k': [5, 8], 'ada__n_estimators': [10, 50], 'ada__learning_rate': [0.25, 1.0]}],\n", | |
" pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n", | |
" scoring=None, verbose=0)\n", | |
"\tAccuracy: 0.86633\tPrecision: 0.49553\tRecall: 0.13850\tF1: 0.21649\tF2: 0.16182\n", | |
"\tTotal predictions: 15000\tTrue positives: 277\tFalse positives: 282\tFalse negatives: 1723\tTrue negatives: 12718\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"### Task 4: Try a varity of classifiers\n", | |
"### Please name your classifier clf for easy export below.\n", | |
"### Note that if you want to do PCA or other multi-stage operations,\n", | |
"### you'll need to use Pipelines. For more info:\n", | |
"### http://scikit-learn.org/stable/modules/pipeline.htm\n", | |
"\n", | |
"###AdaBoost trial\n", | |
" \n", | |
"param_grid = [{'ada__n_estimators':[10, 50],\n", | |
" 'ada__learning_rate':[0.25,1.0],\n", | |
" 'skb__k': [5,8]\n", | |
" }]\n", | |
"\n", | |
"pipe = Pipeline(steps=[(\"skb\", SelectKBest()),(\"ada\", AdaBoostClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, param_grid)\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 269, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"GridSearchCV(cv=None, error_score='raise',\n", | |
" estimator=Pipeline(steps=[('skb', SelectKBest(k=10, score_func=<function f_classif at 0x000000000C5E5358>)), ('tree', DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n", | |
" max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best'))]),\n", | |
" fit_params={}, iid=True, n_jobs=1,\n", | |
" param_grid=[{'tree__max_depth': [100, 50, 25], 'skb__k': [4, 6], 'tree__max_leaf_nodes': [None, 10, 25, 50], 'tree__class_weight': ['balanced', None]}],\n", | |
" pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n", | |
" scoring=None, verbose=0)\n", | |
"\tAccuracy: 0.81013\tPrecision: 0.26600\tRecall: 0.24100\tF1: 0.25289\tF2: 0.24562\n", | |
"\tTotal predictions: 15000\tTrue positives: 482\tFalse positives: 1330\tFalse negatives: 1518\tTrue negatives: 11670\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"### DecisionTree trial\n", | |
"\n", | |
"tree_grid = [{'tree__class_weight' : ['balanced', None],\n", | |
" 'tree__max_depth' : [100, 50, 25],\n", | |
" 'tree__max_leaf_nodes' : [None, 10, 25, 50],\n", | |
" 'skb__k': [4,6]}]\n", | |
"\n", | |
"pipe = Pipeline(steps=[(\"skb\", SelectKBest()), (\"tree\", DecisionTreeClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, param_grid=tree_grid)\n", | |
"\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 284, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Pipeline(steps=[('skb', SelectKBest(k=6, score_func=<function f_classif at 0x000000000C5E5358>)), ('tree', DecisionTreeClassifier(class_weight='balanced', criterion='gini',\n", | |
" max_depth=50, max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best'))])\n", | |
"14.69 total_stock_value\n", | |
"13.71 exercised_stock_options\n", | |
"11.20 salary\n", | |
"11.13 bonus\n", | |
"6.58 restricted_stock\n", | |
"5.91 expenses\n", | |
"5.50 shared_receipt_with_poi\n", | |
"5.30 deferred_income\n", | |
"3.59 from_poi_to_this_person\n", | |
"2.77 total_payments\n", | |
"2.61 long_term_incentive\n", | |
"2.14 from_this_person_to_poi\n", | |
"0.68 to_messages\n", | |
"0.26 deferral_payments\n", | |
"0.17 from_messages\n", | |
"0.01 other\n" | |
] | |
} | |
], | |
"source": [ | |
"K_best = clf.best_estimator_.named_steps['skb']\n", | |
"print clf.best_estimator_\n", | |
"\n", | |
"features_scores = zip(K_best.scores_, features_list[1:])\n", | |
"features_scores = sorted(features_scores, key = lambda x: x[0], reverse=True)\n", | |
"for i, j in features_scores:\n", | |
" print '%.2f' %i, j\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 265, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"GridSearchCV(cv=None, error_score='raise',\n", | |
" estimator=Pipeline(steps=[('skb', SelectKBest(k=10, score_func=<function f_classif at 0x000000000C5E5358>)), ('forest', RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", | |
" max_depth=None, max_features='auto', max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-...mators=10, n_jobs=1, oob_score=False, random_state=None,\n", | |
" verbose=0, warm_start=False))]),\n", | |
" fit_params={}, iid=True, n_jobs=1,\n", | |
" param_grid=[{'forest__class_weight': [None, 'balanced'], 'skb__k': [4], 'forest__max_depth': [None], 'forest__criterion': ['gini', 'entropy']}],\n", | |
" pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n", | |
" scoring=None, verbose=0)\n", | |
"\tAccuracy: 0.85820\tPrecision: 0.42131\tRecall: 0.17000\tF1: 0.24225\tF2: 0.19303\n", | |
"\tTotal predictions: 15000\tTrue positives: 340\tFalse positives: 467\tFalse negatives: 1660\tTrue negatives: 12533\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"### RandomForest Trial\n", | |
"\n", | |
"### I choose k values reflecting the highest peaks in the above performance vs k-value graphs, and as\n", | |
"### the runtime on this is already enormous without testing for every possible k-value\n", | |
"forest_grid = [{'forest__class_weight' : [None, 'balanced'],\n", | |
" 'forest__criterion':['gini', 'entropy'], \n", | |
" 'forest__max_depth':[None],\n", | |
" 'skb__k': [4],\n", | |
" }]\n", | |
"\n", | |
"pipe = Pipeline(steps=[(\"skb\", SelectKBest()),(\"forest\", RandomForestClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, param_grid=forest_grid)\n", | |
"\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Classifier performance reevaluated, with the addition of some custom features\n", | |
"\n", | |
"Now, I add a few new features, and we test the performance of the classifiers with these additions. Hopefully, they are an improvement." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 285, | |
"metadata": { | |
"collapsed": true, | |
"scrolled": false | |
}, | |
"outputs": [], | |
"source": [ | |
"### Task 3: Create new feature(s)\n", | |
"\n", | |
"### As suggested in the quizzes, I will make a ratio of to/from POI : total emails.\n", | |
"### It stands to reason that POIs communicate together with greater relative frequency.\n", | |
"df_scaled[\"to_poi_ratio\"] = df_scaled[\"from_poi_to_this_person\"] / df_scaled[\"to_messages\"]\n", | |
"df_scaled[\"from_poi_ratio\"] = df_scaled[\"from_this_person_to_poi\"]/df_scaled['from_messages']\n", | |
"\n", | |
"###I add a similar feature, extending the logic to the email POIs were CC'ed on\n", | |
"df_scaled[\"receipt_with_poi_ratio\"] = df_scaled[\"shared_receipt_with_poi\"]/df_scaled['from_messages']\n", | |
"\n", | |
"#add our new features to the features list\n", | |
"features_list.append(\"to_poi_ratio\")\n", | |
"features_list.append(\"from_poi_ratio\")\n", | |
"features_list.append(\"receipt_with_poi_ratio\")\n", | |
"\n", | |
"#NaNs introduced, and targetFeatureSplit fails to replace them with 0's as advertised\n", | |
"df_scaled.fillna(0, inplace=True)\n", | |
"df_scaled.replace(np.inf, 0, inplace=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 286, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Optimal number of features : 9\n", | |
"[ True False False False True False True True True False True False\n", | |
" False True False False True True False] AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None,\n", | |
" learning_rate=1.0, n_estimators=50, random_state=None)\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1b1a17b8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Optimal number of features : 19\n", | |
"[ True True True True True True True True True True True True\n", | |
" True True True True True True True] DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n", | |
" max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best')\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\nc2x/LOltmEXst1/EL37RuPPNnx+x0UYRd9zRuHO2g8WLI4YPj/jNb97c9tJLEeuuG/G3vzUvrmqu\nvDLiYx+r/bhFiyKGDYuYNq3xMUVEzJgRsdZaEXPnFnP+emTfmzV91+YeGiR7fEnS1sBQYJ1GFlxm\nfTVvXvpF3MhqhZVXhp/+FA4/vO+trtrJeefB6qvD5z//5rahQ+G009JnsWRJ82LrTd5kd3dF9vyO\nSB3yxoxp/6rNvAXGuKyH93eA64BHgNMKi8qsDr/6FXzmM+mLrZE+/WnYcEM4++zGnrdVzZsH3/te\nmn+he0eyAw9MhWirDKlR7vHHYdKk1BGuHl/7Wpr6tNFzfl9zDcyZkzrmtTu3krIBoZHJ7koGUwK8\nlOj+yU8qvz55cmsmwOtJdnc3ciR8+cupYGyEVkt0l2t4KylJx/V2cES0xPAgLjDstttScnrSpOKG\nV/j2t+GJJ1KhNFDdc0/qJzBtGqy6as/7HXssvPJK35ouN1JPw5jXqtHDnp98chpYsBX/ZopoJbVq\nlcWsJZTqrosci+fkk+Huu9OX0kD0+uspP3H66b0XFgBjx8JNN6VhuFtB3p7d1TRy2PNHH01/lz3d\nqbWlWrPktS7A7sB04FHgxAqvbw7cAywEjivbvgFwOzAVmAIc1cs1GtVwwNrQs89GrL56asVTtKuv\njthyy9SqZqA555yIjo6Irq58+192WcR220W8/nqxceWx664Rl1/emHOddFLEscf27RxdXREjR0ac\ncUZjYioCdbSSyvulfwmwetn6GsD/5ThuCPAYsDGpKe6DwBbd9lkb+ADwP90KjHcAw7PnqwAzuh9b\ntm9BH6m1g1NPjfjKV/rnWl1dEbvtFvGTn/TP9frLs89GrL12xMMP5z+mqyviox+N+OUvi4srj8ce\nS7G/+mpjzvf4430/39VXR2y1VWv/sKinwMjbSmqbiHip7K7kRSDP9Kw7ADMj4qmIWAxcAYwq3yEi\nXoiI+4HXu21/NiIezJ7PB6YB6+eM1waJri644ILU8ao/SKmO+0c/gn/8o3+u2R9OOikle7faKv8x\nEvz852moi+efLy62ai68EL70pcYN6/Gud6Vhz6++ur7jFyxIOZ5zz23+8B+NlrfAGJI1qwUgmxcj\nz8CF6wOzy9bnUMeXvqR3AsOBe2s91ga2Rvbszmug9QAv79Fdq/e9r7k9wEs9uxv9g+Gww+pvOjwg\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1973c2b0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Optimal number of features : 9\n", | |
"[False False False True True True True True True False False False\n", | |
" False False True False False True True] RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", | |
" max_depth=None, max_features='auto', max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" n_estimators=10, n_jobs=1, oob_score=False, random_state=None,\n", | |
" verbose=0, warm_start=False)\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1dd745c0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"### we recreate the data dictionary with the new features included\n", | |
"my_dataset = df_scaled.to_dict(orient = \"index\")\n", | |
"\n", | |
"### Extract features and labels from dataset for local testing\n", | |
"data = featureFormat(my_dataset, features_list, sort_keys = True)\n", | |
"\n", | |
"labels, features = targetFeatureSplit(data)\n", | |
"\n", | |
"for i in range(len(labels)):\n", | |
" labels[i] = int(labels[i])\n", | |
"\n", | |
"classifiers = [AdaBoostClassifier(), \n", | |
" DecisionTreeClassifier(class_weight=None),\n", | |
" RandomForestClassifier(class_weight=None)\n", | |
" ]\n", | |
"\n", | |
"for clf in classifiers:\n", | |
" rfecv = RFECV(estimator=clf, step=1, cv=StratifiedKFold(labels, 50),\n", | |
" scoring='precision')\n", | |
" rfecv.fit(features, labels)\n", | |
" print \"Optimal number of features : %d\" % rfecv.n_features_\n", | |
" print rfecv.support_, clf\n", | |
" # features=features[:,rfecv.support_]\n", | |
" # Plot number of features VS. cross-validation scores\n", | |
" plt.figure()\n", | |
" plt.xlabel(\"Number of features selected\")\n", | |
" plt.ylabel(\"Cross validation score (nb of correct classifications)\")\n", | |
" plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)\n", | |
" plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 287, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"#resplit the data with new features included\n", | |
"features_train, features_test, labels_train, labels_test = \\\n", | |
" train_test_split(features, labels, test_size = 0.3, random_state = 42)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 288, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"GridSearchCV(cv=None, error_score='raise',\n", | |
" estimator=Pipeline(steps=[('skb', SelectKBest(k=10, score_func=<function f_classif at 0x000000000C5E5358>)), ('ada', AdaBoostClassifier(algorithm='SAMME.R', base_estimator=None,\n", | |
" learning_rate=1.0, n_estimators=50, random_state=None))]),\n", | |
" fit_params={}, iid=True, n_jobs=1,\n", | |
" param_grid=[{'skb__k': [6, 9, 14], 'ada__n_estimators': [10, 50], 'ada__learning_rate': [0.25, 1.0]}],\n", | |
" pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n", | |
" scoring=None, verbose=0)\n", | |
"\tAccuracy: 0.85973\tPrecision: 0.43580\tRecall: 0.17650\tF1: 0.25125\tF2: 0.20034\n", | |
"\tTotal predictions: 15000\tTrue positives: 353\tFalse positives: 457\tFalse negatives: 1647\tTrue negatives: 12543\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"### Task 4 Trial 2: Try a varity of classifiers\n", | |
"\n", | |
"###AdaBoost Re-Trial\n", | |
"ada_grid = [{'ada__n_estimators':[10, 50],\n", | |
" 'ada__learning_rate':[0.25,1.0],\n", | |
" 'skb__k': [6, 9, 14]\n", | |
" }]\n", | |
"\n", | |
"pipe = Pipeline(steps=[(\"skb\", SelectKBest()),(\"ada\", AdaBoostClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, ada_grid)\n", | |
"\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 295, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"GridSearchCV(cv=None, error_score='raise',\n", | |
" estimator=Pipeline(steps=[('skb', SelectKBest(k=10, score_func=<function f_classif at 0x000000000C5E5358>)), ('tree', DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n", | |
" max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best'))]),\n", | |
" fit_params={}, iid=True, n_jobs=1,\n", | |
" param_grid=[{'tree__max_depth': [50], 'skb__k': [8, 13, 19], 'tree__max_leaf_nodes': [None], 'tree__class_weight': [None, 'balanced']}],\n", | |
" pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n", | |
" scoring=None, verbose=0)\n", | |
"\tAccuracy: 0.82773\tPrecision: 0.33778\tRecall: 0.30400\tF1: 0.32000\tF2: 0.31020\n", | |
"\tTotal predictions: 15000\tTrue positives: 608\tFalse positives: 1192\tFalse negatives: 1392\tTrue negatives: 11808\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"### DT Re-Trial with new k value\n", | |
"tree_grid = [{'tree__class_weight' : [None, 'balanced'],\n", | |
" 'tree__max_depth' : [50],\n", | |
" 'tree__max_leaf_nodes' : [None],\n", | |
" 'skb__k': [8, 13, 19]}]\n", | |
"\n", | |
"pipe = Pipeline(steps=[(\"skb\", SelectKBest()), (\"tree\", DecisionTreeClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, tree_grid)\n", | |
"\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 296, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Pipeline(steps=[('skb', SelectKBest(k=8, score_func=<function f_classif at 0x000000000C5E5358>)), ('tree', DecisionTreeClassifier(class_weight='balanced', criterion='gini',\n", | |
" max_depth=50, max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best'))])\n", | |
"14.69 total_stock_value\n", | |
"13.71 exercised_stock_options\n", | |
"11.20 salary\n", | |
"11.13 bonus\n", | |
"8.24 from_poi_ratio\n", | |
"6.58 restricted_stock\n", | |
"5.91 expenses\n", | |
"5.50 shared_receipt_with_poi\n", | |
"5.30 deferred_income\n", | |
"3.59 from_poi_to_this_person\n", | |
"2.77 total_payments\n", | |
"2.61 long_term_incentive\n", | |
"2.43 receipt_with_poi_ratio\n", | |
"2.35 to_poi_ratio\n", | |
"2.14 from_this_person_to_poi\n", | |
"0.68 to_messages\n", | |
"0.26 deferral_payments\n", | |
"0.17 from_messages\n", | |
"0.01 other\n" | |
] | |
} | |
], | |
"source": [ | |
"K_best = clf.best_estimator_.named_steps['skb']\n", | |
"print clf.best_estimator_\n", | |
"\n", | |
"features_scores = zip(K_best.scores_, features_list[1:])\n", | |
"features_scores = sorted(features_scores, key = lambda x: x[0], reverse=True)\n", | |
"for i, j in features_scores:\n", | |
" print '%.2f' %i, j" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"### RandomForest Re-Trial with new k-value and new features\n", | |
"### We learn from the previous iteration some of the parameters that seem to work best\n", | |
"\n", | |
"forest_grid = [{'forest__class_weight' : [None],\n", | |
" 'forest__criterion':['gini'], \n", | |
" 'forest__max_depth':[None],\n", | |
" 'forest__n_estimators': [10],\n", | |
" 'skb__k': [9],\n", | |
" }]\n", | |
"\n", | |
"pipe = Pipeline(steps=[(\"skb\", SelectKBest()),(\"forest\", RandomForestClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, param_grid=forest_grid)\n", | |
"\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 312, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"GridSearchCV(cv=None, error_score='raise',\n", | |
" estimator=Pipeline(steps=[('skb', SelectKBest(k=10, score_func=<function f_classif at 0x000000000C5E5358>)), ('tree', DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n", | |
" max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best'))]),\n", | |
" fit_params={}, iid=True, n_jobs=1,\n", | |
" param_grid=[{'tree__max_depth': [50], 'skb__k': [19], 'tree__max_leaf_nodes': [None], 'tree__class_weight': ['balanced']}],\n", | |
" pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n", | |
" scoring=None, verbose=0)\n", | |
"\tAccuracy: 0.83773\tPrecision: 0.39139\tRecall: 0.39100\tF1: 0.39120\tF2: 0.39108\n", | |
"\tTotal predictions: 15000\tTrue positives: 782\tFalse positives: 1216\tFalse negatives: 1218\tTrue negatives: 11784\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"### Task 5: Tune your classifier to achieve better than .3 precision and recall \n", | |
"### using our testing script. Check the tester.py script in the final project\n", | |
"### folder for details on the evaluation method, especially the test_classifier\n", | |
"### function. Because of the small size of the dataset, the script uses\n", | |
"### stratified shuffle split cross validation. For more info: \n", | |
"### http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedShuffleSplit.html\n", | |
"\n", | |
"tree_grid = [{'tree__class_weight' : ['balanced'],\n", | |
" 'tree__max_depth' : [50],\n", | |
" 'tree__max_leaf_nodes' : [None],\n", | |
" 'skb__k': [19]\n", | |
" }]\n", | |
"\n", | |
"pipe = Pipeline(steps = [('skb', SelectKBest()), ('tree', DecisionTreeClassifier())])\n", | |
"\n", | |
"clf = GridSearchCV(pipe, param_grid = tree_grid)\n", | |
"\n", | |
"test_classifier(clf, my_dataset, features_list, folds = 1000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 308, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Pipeline(steps=[('skb', SelectKBest(k=8, score_func=<function f_classif at 0x000000000C5E5358>)), ('tree', DecisionTreeClassifier(class_weight='balanced', criterion='gini',\n", | |
" max_depth=50, max_features=None, max_leaf_nodes=None,\n", | |
" min_impurity_split=1e-07, min_samples_leaf=1,\n", | |
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n", | |
" presort=False, random_state=None, splitter='best'))])\n" | |
] | |
} | |
], | |
"source": [ | |
"print clf.best_estimator_" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 313, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"### Task 6: Dump your classifier, dataset, and features_list so anyone can\n", | |
"### check your results. You do not need to change anything below, but make sure\n", | |
"### that the version of poi_id.py that you submit can be run on its own and\n", | |
"### generates the necessary .pkl files for validating your results.\n", | |
"dump_classifier_and_data(clf, my_dataset, features_list)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python [default]", | |
"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.5.5" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment