Skip to content

Instantly share code, notes, and snippets.

@ArturTan
Created July 10, 2018 16:08
Show Gist options
  • Save ArturTan/59cf912d00e44a3913cc052574fcc8fb to your computer and use it in GitHub Desktop.
Save ArturTan/59cf912d00e44a3913cc052574fcc8fb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
" # Main task: <i>Find person of interest [POI] in ENRON dataset</i> by ARTUR TANONA\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"toc": true
},
"source": [
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
"<div class=\"toc\" style=\"margin-top: 1em;\"><ul class=\"toc-item\"><li><span><a href=\"#Main-task:-Find-person-of-interest-[POI]-in-ENRON-dataset-by-ARTUR-TANONA\" data-toc-modified-id=\"Main-task:-Find-person-of-interest-[POI]-in-ENRON-dataset-by-ARTUR-TANONA-1\">Main task: <i>Find person of interest [POI] in ENRON dataset</i> by ARTUR TANONA</a></span></li><li><span><a href=\"#Short-summary\" data-toc-modified-id=\"Short-summary-2\">Short summary</a></span></li><li><span><a href=\"#Task-1:-Select-what-features-you'll-use-\" data-toc-modified-id=\"Task-1:-Select-what-features-you'll-use--3\">Task 1: Select what features you'll use <a class=\"anchor\" id=\"first-bullet\"></a></a></span><ul class=\"toc-item\"><li><span><a href=\"#SUBTASK:-Unpacking-data\" data-toc-modified-id=\"SUBTASK:-Unpacking-data-3.1\"><strong>SUBTASK</strong>: Unpacking data</a></span></li><li><span><a href=\"#SUBTASK:-Checking-with-cerberus-that-data-are-consistent\" data-toc-modified-id=\"SUBTASK:-Checking-with-cerberus-that-data-are-consistent-3.2\"><strong>SUBTASK</strong>: Checking with cerberus that data are consistent</a></span></li><li><span><a href=\"#SUBTASK:-Convert-each-feature-to-the-pandas-dataframe-and-eliminating-&quot;TOTAL&quot;.-Then-saving-data-to-the-new-dataset-to-better-perform.\" data-toc-modified-id=\"SUBTASK:-Convert-each-feature-to-the-pandas-dataframe-and-eliminating-&quot;TOTAL&quot;.-Then-saving-data-to-the-new-dataset-to-better-perform.-3.3\"><strong>SUBTASK</strong>: Convert each feature to the pandas dataframe and eliminating \"TOTAL\". Then saving data to the new dataset to better perform.</a></span></li><li><span><a href=\"#SUBTASK:-Getting-financial-features.\" data-toc-modified-id=\"SUBTASK:-Getting-financial-features.-3.4\"><strong>SUBTASK</strong>: Getting financial features.</a></span></li><li><span><a href=\"#SUBTASK:-Checking-NANs.-\" data-toc-modified-id=\"SUBTASK:-Checking-NANs.--3.5\"><strong>SUBTASK</strong>: Checking NANs. <br></a></span></li><li><span><a href=\"#SUBTASK:-Checking-deferred-restricted-stock-deferred\" data-toc-modified-id=\"SUBTASK:-Checking-deferred-restricted-stock-deferred-3.6\"><strong>SUBTASK</strong>: Checking deferred restricted stock deferred</a></span></li><li><span><a href=\"#SUBTASK:-Checking-deferred-income\" data-toc-modified-id=\"SUBTASK:-Checking-deferred-income-3.7\"><strong>SUBTASK</strong>: Checking deferred income</a></span></li><li><span><a href=\"#SUBTASK:-Checking-long-term-incentives\" data-toc-modified-id=\"SUBTASK:-Checking-long-term-incentives-3.8\"><strong>SUBTASK</strong>: Checking long term incentives</a></span></li><li><span><a href=\"#SUBTASK:-Checking-director-fees\" data-toc-modified-id=\"SUBTASK:-Checking-director-fees-3.9\"><strong>SUBTASK</strong>: Checking director fees</a></span></li><li><span><a href=\"#SUBTASK:-Checking-deferral-payments\" data-toc-modified-id=\"SUBTASK:-Checking-deferral-payments-3.10\"><strong>SUBTASK</strong>: Checking deferral payments</a></span></li><li><span><a href=\"#Summary\" data-toc-modified-id=\"Summary-3.11\">Summary</a></span></li></ul></li><li><span><a href=\"#Task-2:-Remove-outliers\" data-toc-modified-id=\"Task-2:-Remove-outliers-4\">Task 2: Remove outliers</a></span><ul class=\"toc-item\"><li><span><a href=\"#SUBTASK:-checking-&quot;Salary&quot;\" data-toc-modified-id=\"SUBTASK:-checking-&quot;Salary&quot;-4.1\">SUBTASK: checking \"Salary\"</a></span></li><li><span><a href=\"#Influence-of-removing-outliers-at-salary\" data-toc-modified-id=\"Influence-of-removing-outliers-at-salary-4.2\">Influence of removing outliers at salary</a></span></li><li><span><a href=\"#Removing-other-outliers\" data-toc-modified-id=\"Removing-other-outliers-4.3\">Removing other outliers</a></span></li><li><span><a href=\"#SUBTASK-Removing-outliers-at-exercised-stock-options\" data-toc-modified-id=\"SUBTASK-Removing-outliers-at-exercised-stock-options-4.4\"><strong>SUBTASK</strong> Removing outliers at exercised stock options</a></span></li></ul></li><li><span><a href=\"#Task-3:-Create-new-feature(s)\" data-toc-modified-id=\"Task-3:-Create-new-feature(s)-5\">Task 3: Create new feature(s)</a></span></li><li><span><a href=\"#Task-4:-Try-a-variety-of-classifiers\" data-toc-modified-id=\"Task-4:-Try-a-variety-of-classifiers-6\">Task 4: Try a variety of classifiers</a></span><ul class=\"toc-item\"><li><span><a href=\"#SUBSTASK:-Precision/Recall-explanation\" data-toc-modified-id=\"SUBSTASK:-Precision/Recall-explanation-6.1\">SUBSTASK: Precision/Recall explanation</a></span></li></ul></li><li><span><a href=\"#Task-5:-Tune-your-classifier-to-achieve-better-than-.3-precision-and-recall\" data-toc-modified-id=\"Task-5:-Tune-your-classifier-to-achieve-better-than-.3-precision-and-recall-7\">Task 5: Tune your classifier to achieve better than .3 precision and recall</a></span><ul class=\"toc-item\"><li><span><a href=\"#DecisionTreeClassifier\" data-toc-modified-id=\"DecisionTreeClassifier-7.1\">DecisionTreeClassifier</a></span></li><li><span><a href=\"#Founding-DecisionTreeRegressor's-best-score\" data-toc-modified-id=\"Founding-DecisionTreeRegressor's-best-score-7.2\">Founding DecisionTreeRegressor's best score</a></span></li><li><span><a href=\"#Founding-DecisionTreeRegressor's-best-score\" data-toc-modified-id=\"Founding-DecisionTreeRegressor's-best-score-7.3\">Founding DecisionTreeRegressor's best score</a></span></li></ul></li><li><span><a href=\"#Task-6:-Dump-your-classifier\" data-toc-modified-id=\"Task-6:-Dump-your-classifier-8\">Task 6: Dump your classifier</a></span><ul class=\"toc-item\"><li><span><a href=\"#SUBTASK:-summary-of-results-and-interpretation-of-my-metrics\" data-toc-modified-id=\"SUBTASK:-summary-of-results-and-interpretation-of-my-metrics-8.1\">SUBTASK: summary of results and interpretation of my metrics</a></span></li><li><span><a href=\"#Training-DecisionTreeClassifier\" data-toc-modified-id=\"Training-DecisionTreeClassifier-8.2\">Training DecisionTreeClassifier</a></span></li><li><span><a href=\"#SUBTASK:-Training-DecisionTreeRegressor\" data-toc-modified-id=\"SUBTASK:-Training-DecisionTreeRegressor-8.3\">SUBTASK: Training DecisionTreeRegressor</a></span></li><li><span><a href=\"#SUBTASK:-Feature-importance-for-DecisionTreeRegressor-and-Decision-Tree-Classifier\" data-toc-modified-id=\"SUBTASK:-Feature-importance-for-DecisionTreeRegressor-and-Decision-Tree-Classifier-8.4\">SUBTASK: Feature importance for DecisionTreeRegressor and Decision Tree Classifier</a></span></li><li><span><a href=\"#SUBTASK:-Experimenting-with-AdaBoostClassifier\" data-toc-modified-id=\"SUBTASK:-Experimenting-with-AdaBoostClassifier-8.5\">SUBTASK: Experimenting with AdaBoostClassifier</a></span></li><li><span><a href=\"#SUBTASK:-Experimenting-with-AdaBoostRegressor\" data-toc-modified-id=\"SUBTASK:-Experimenting-with-AdaBoostRegressor-8.6\">SUBTASK: Experimenting with AdaBoostRegressor</a></span></li><li><span><a href=\"#Tuning-learning-rate-algorithm\" data-toc-modified-id=\"Tuning-learning-rate-algorithm-8.7\">Tuning learning rate algorithm</a></span></li></ul></li><li><span><a href=\"#Appendix-1-Checking-salary-/-total-payment-ratio\" data-toc-modified-id=\"Appendix-1-Checking-salary-/-total-payment-ratio-9\">Appendix 1 Checking salary / total payment ratio</a></span><ul class=\"toc-item\"><li><span><a href=\"#SUBTASK:-Experimenting-with-AdaBoostRegressor\" data-toc-modified-id=\"SUBTASK:-Experimenting-with-AdaBoostRegressor-9.1\">SUBTASK: Experimenting with AdaBoostRegressor</a></span></li><li><span><a href=\"#Tuning-learning-rate-algorithm\" data-toc-modified-id=\"Tuning-learning-rate-algorithm-9.2\">Tuning learning rate algorithm</a></span></li><li><span><a href=\"#SUBTASK:-Feature-importance-for-DecisionTreeRegressor\" data-toc-modified-id=\"SUBTASK:-Feature-importance-for-DecisionTreeRegressor-9.3\">SUBTASK: Feature importance for DecisionTreeRegressor</a></span></li></ul></li><li><span><a href=\"#Sources\" data-toc-modified-id=\"Sources-10\">Sources</a></span></li></ul></div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Short summary"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Legend:<br>\n",
"&nbsp;&nbsp;&nbsp;&nbsp;__SUBTASK__: a small task necessary to perform other steps;<br>\n",
" &nbsp;&nbsp;&nbsp;&nbsp;__RESULTS__: results that I have found thanks to solving the small subtask"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"No. of question|Fragment of question | Where to find | SUBTASK\n",
":-:|:-|:-|:-:|-\n",
"1|<i>Summarize for us the goal of this project and how machine learning is useful in trying to accomplish it. As part of your answer, give some background on the dataset and how it can be used to answer the project question.</i>|Task 1: Select what features you'll use.|Introduction to the task\n",
"1|Were there any outliers in the data when you got it, and how did you handle those? [relevant rubric items: “data exploration”, “outlier investigation”]|Task 2: Remove outliers|All subtasks in task\n",
"2|What features did you end up using in your POI identifier, and what selection process did you use to pick them? |Task 3: Create new feature(s)|Short summary\n",
"2|Did you have to do any scaling? Why or why not? |Task 4: Try a variety of classifiers|Preparing data through scaling it and eliminating NANs with Imputer.\n",
"2|As part of the assignment, you should attempt to engineer your own feature that does not come ready-made in the dataset -- explain what feature you tried to make, and the rationale behind it. (You do not necessarily have to use it in the final analysis, only engineer and test it.) |Task 3: Create new feature(s)|The entire task\n",
"2|In your feature selection step, if you used an algorithm like a decision tree, please also give the feature importances of the features that you use, and if you used an automated feature selection function like SelectKBest, please report the feature scores and reasons for your choice of parameter values. [relevant rubric items: “create new features”, “intelligently select features”, “properly scale features”]| Task 6: Dump your classifier|SUBTASK: Feature importance for DecisionTreeRegressor<br><br>SUBTASK: Feature importance for DecisionTreeClassifier\n",
"3|What algorithm did you end up using? |Task 6: Dump your classifier|Entire task\n",
"3|What other one(s) did you try?|Task 4: Try a variety of classifiers, Task 6: Dump your classifier|Entire tasks\n",
"3|How did model performance differ between algorithms|Task 4: Try a variety of classifiers, Task 6: Dump your classifier|Entire tasks\n",
"4|What does it mean to tune the parameters of an algorithm, and what can happen if you don’t do this well? |Task 5: Tune your classifier to achieve better than .3 precision and recall|Short summary\n",
"4|How did you tune the parameters of your particular algorithm? |Task 5: Tune your classifier to achieve better than .3 precision and recall|Entire task\n",
"4|What parameters did you tune? (Some algorithms do not have parameters that you need to tune -- if this is the case for the one you picked, identify and briefly explain how you would have done it for the model that was not your final choice or a different model that does utilize parameter tuning, e.g. a decision tree classifier). [relevant rubric items: “discuss parameter tuning”, “tune the algorithm”]|Task 5: Tune your classifier to achieve better than .3 precision and recall|Entire task\n",
"5|What is validation, and what’s a classic mistake you can make if you do it wrong? |Task 5: Tune your classifier to achieve better than .3 precision and recall|SUBTASK: Explaining validation\n",
"5|How did you validate your analysis? [relevant rubric items: “discuss validation”, “validation strategy”]|Task 6: Dump your classifier|SUBTASK: interpretation of my metrics\n",
"6|Give at least 2 evaluation metrics and your average performance for each of them. |Task 6: Dump your classifier|SUBTASK: interpretation of my metrics\n",
"6|Explain an interpretation of your metrics that says something human-understandable about your algorithm’s performance. [relevant rubric item: “usage of evaluation metrics”]|Task 6: Dump your classifier|SUBTASK: interpretation of my metrics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 1: Select what features you'll use <a class=\"anchor\" id=\"first-bullet\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Description of task__: <i>Summarize for us the goal of this project and how machine learning is useful in trying to accomplish it. As part of your answer, give some background on the dataset and how it can be used to answer the project question.</i>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"According to Wikipedia: <i> ENRON Corporation was an American energy, commodities, and services company based in Houston, Texas. It was founded in 1985 as the result of a merger between Houston Natural Gas and InterNorth, both relatively small regional companies (...) At the end of 2001, it was revealed that its reported financial condition was sustained by institutionalized, systematic, and creatively planned accounting fraud, known since as the ENRON scandal. ENRON has since become a well-known example of willful corporate fraud and corruption. </i><br>\n",
"\n",
"ENRON dataset contains financial and email data of persons who were workers of ENRON at that time. It include also information on who is the person of interest (person who was found guilty or had immunity against its testimony). \n",
"\n",
"__Hypothesis__ is following: we could imply that some financial features could indicate who should be verified as the person of interest. Those results as the algorithm could be then tested to other companies who are in risk of fraud made by its employees or executives. \n",
"\n",
"__We will use only financial data__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Why?__: Features in the ENRON dataset could be divide on two types: \n",
"1. Email features ('to_messages','from_poi_to_this_person', 'from_messages', 'from_this_person_to_poi')\n",
"2. 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', 'shared_receipt_with_poi')\n",
"\n",
"The latter ones are irrelevant as regards as the finding the fraud, because:\n",
"1. \"<i>From_messages\"</i> / <i>\"to_messages\"</i> are the numbers of emails sent / received and they cannot be related to the fraud. \n",
"2. <i>\"from_poi_to_this_person'</i>, <i>\"from_poi_to_this_person'</i> show that dataset \"knew\" that someone is POI. Normally, when we want to find fraud in the organization, we cannot \"presume\" that somebody has received mail from the POI, because to do so we should know before who is the POI. These feature could be only useful when we want to check the content of emails\n",
"\n",
"Therefore, I choose financial feature in order to find a proof of being the POI. Moreover, for similar reasons to the above I excluded <i>'shared_receipt_with_poi'</i> because this feature presumes that dataset knows who is the POI."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Unpacking data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import sys\n",
"import pickle\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"import numpy as np\n",
"import re\n",
"\n",
"from sklearn.preprocessing import Imputer, StandardScaler\n",
"from sklearn.model_selection import train_test_split \n",
"from sklearn.metrics import confusion_matrix \n",
"from sklearn.model_selection import StratifiedKFold\n",
"from prettytable import PrettyTable\n",
"from sklearn.linear_model import SGDClassifier, LogisticRegression, BayesianRidge\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.naive_bayes import GaussianNB\n",
"from sklearn.svm import SVC\n",
"from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor, export_graphviz\n",
"from sklearn.cross_validation import StratifiedShuffleSplit\n",
"from sklearn.ensemble import AdaBoostClassifier, AdaBoostRegressor\n",
"from tester_customized import dump_classifier_and_data\n",
"from tester_customized import main as tester\n",
"from cerberus import Validator\n",
"from subprocess import check_call\n",
"\n",
"os.chdir(\"data\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"sys.path.append(\"../tools/\")\n",
"\n",
"## features_list is a list of strings, each of which is a feature name.\n",
"## The first feature must be \"poi\".\n",
" # You will need to use more features\n",
"features_list = ['salary', 'deferral_payments', 'total_payments', \n",
" 'loan_advances', 'bonus', 'restricted_stock_deferred', \n",
" 'deferred_income', 'total_stock_value', 'expenses', \n",
" 'exercised_stock_options', 'other', 'long_term_incentive', \n",
" 'restricted_stock', 'director_fees','to_messages', \n",
" 'from_poi_to_this_person', 'from_messages', \n",
" 'from_this_person_to_poi', 'shared_receipt_with_poi'] \n",
"\n",
"## Load the dictionary containing the dataset\n",
"with open(\"final_project_dataset.pkl\", \"rb\") as data_file:\n",
" data_dict = pickle.load(data_file)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Checking with cerberus that data are consistent \n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"schema = {'total_stock_value':{'type': 'integer'},\n",
" 'exercised_stock_options':{'type': 'integer'},\n",
" 'restricted_stock':{'type': 'integer'},\n",
" 'director_fees':{'type': 'integer'},\n",
" 'other':{'type': 'integer'},\n",
" 'poi':{'type': 'boolean'},\n",
" 'from_poi_to_this_person':{'type': 'integer'},\n",
" 'bonus':{'type': 'integer'},\n",
" 'deferred_income':{'type': 'integer'},\n",
" 'expenses':{'type': 'integer'},\n",
" 'long_term_incentive':{'type': 'integer'},\n",
" 'from_messages':{'type': 'integer'},\n",
" 'from_this_person_to_poi':{'type': 'integer'},\n",
" 'shared_receipt_with_poi':{'type': 'integer'},\n",
" 'salary':{'type': 'integer'},\n",
" 'loan_advances':{'type': 'integer'},\n",
" 'total_payments':{'type': 'integer'},\n",
" 'to_messages':{'type': 'integer'},\n",
" 'deferral_payments':{'type': 'integer'},\n",
" 'email_address':{'type': 'string'},\n",
" 'restricted_stock_deferred':{'type': 'integer'}}\n",
" \n",
"v = Validator(schema)\n",
"v.validate(data_dict['YEAGER F SCOTT'])\n",
"\n",
"for j in data_dict.keys():\n",
" v = Validator(schema)\n",
" v.validate(data_dict[j])\n",
" for i in v.errors:\n",
" if data_dict[j][i] != \"NaN\":\n",
" print(i, data_dict[j][i])\n",
" raise ValueError"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Results - our dataset is consistent; most pieces of the data are integers. Only email address is string and feature of interest (being POI) is boolean."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Convert each feature to the pandas dataframe and eliminating \"TOTAL\". Then saving data to the new dataset to better perform."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data_dict.pop('TOTAL') # This feature is accumulation of the other ones. \n",
"df = pd.DataFrame.from_dict(data_dict, orient='index')\n",
"df.to_csv('data_dict.csv')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [
{
"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></th>\n",
" <th>restricted_stock</th>\n",
" <th>long_term_incentive</th>\n",
" <th>bonus</th>\n",
" <th>from_poi_to_this_person</th>\n",
" <th>poi</th>\n",
" <th>deferral_payments</th>\n",
" <th>shared_receipt_with_poi</th>\n",
" <th>other</th>\n",
" <th>loan_advances</th>\n",
" <th>deferred_income</th>\n",
" <th>...</th>\n",
" <th>from_messages</th>\n",
" <th>total_payments</th>\n",
" <th>salary</th>\n",
" <th>expenses</th>\n",
" <th>to_messages</th>\n",
" <th>from_this_person_to_poi</th>\n",
" <th>exercised_stock_options</th>\n",
" <th>email_address</th>\n",
" <th>director_fees</th>\n",
" <th>total_stock_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>ALLEN PHILLIP K</th>\n",
" <td>126027</td>\n",
" <td>304805</td>\n",
" <td>4175000</td>\n",
" <td>47</td>\n",
" <td>False</td>\n",
" <td>2869717</td>\n",
" <td>1407</td>\n",
" <td>152</td>\n",
" <td>NaN</td>\n",
" <td>-3081055</td>\n",
" <td>...</td>\n",
" <td>2195</td>\n",
" <td>4484442</td>\n",
" <td>201955</td>\n",
" <td>13868</td>\n",
" <td>2902</td>\n",
" <td>65</td>\n",
" <td>1729541</td>\n",
" <td>phillip.allen@enron.com</td>\n",
" <td>NaN</td>\n",
" <td>1729541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BADUM JAMES P</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>False</td>\n",
" <td>178980</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>182466</td>\n",
" <td>NaN</td>\n",
" <td>3486</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>257817</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>257817</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BANNANTINE JAMES M</th>\n",
" <td>1757552</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>39</td>\n",
" <td>False</td>\n",
" <td>NaN</td>\n",
" <td>465</td>\n",
" <td>864523</td>\n",
" <td>NaN</td>\n",
" <td>-5104</td>\n",
" <td>...</td>\n",
" <td>29</td>\n",
" <td>916197</td>\n",
" <td>477</td>\n",
" <td>56301</td>\n",
" <td>566</td>\n",
" <td>0</td>\n",
" <td>4046157</td>\n",
" <td>james.bannantine@enron.com</td>\n",
" <td>NaN</td>\n",
" <td>5243487</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BAXTER JOHN C</th>\n",
" <td>3942714</td>\n",
" <td>1586055</td>\n",
" <td>1200000</td>\n",
" <td>NaN</td>\n",
" <td>False</td>\n",
" <td>1295738</td>\n",
" <td>NaN</td>\n",
" <td>2660303</td>\n",
" <td>NaN</td>\n",
" <td>-1386055</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>5634343</td>\n",
" <td>267102</td>\n",
" <td>11200</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>6680544</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>10623258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BAY FRANKLIN R</th>\n",
" <td>145796</td>\n",
" <td>NaN</td>\n",
" <td>400000</td>\n",
" <td>NaN</td>\n",
" <td>False</td>\n",
" <td>260455</td>\n",
" <td>NaN</td>\n",
" <td>69</td>\n",
" <td>NaN</td>\n",
" <td>-201641</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>827696</td>\n",
" <td>239671</td>\n",
" <td>129142</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>frank.bay@enron.com</td>\n",
" <td>NaN</td>\n",
" <td>63014</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" restricted_stock long_term_incentive bonus \\\n",
"ALLEN PHILLIP K 126027 304805 4175000 \n",
"BADUM JAMES P NaN NaN NaN \n",
"BANNANTINE JAMES M 1757552 NaN NaN \n",
"BAXTER JOHN C 3942714 1586055 1200000 \n",
"BAY FRANKLIN R 145796 NaN 400000 \n",
"\n",
" from_poi_to_this_person poi deferral_payments \\\n",
"ALLEN PHILLIP K 47 False 2869717 \n",
"BADUM JAMES P NaN False 178980 \n",
"BANNANTINE JAMES M 39 False NaN \n",
"BAXTER JOHN C NaN False 1295738 \n",
"BAY FRANKLIN R NaN False 260455 \n",
"\n",
" shared_receipt_with_poi other loan_advances \\\n",
"ALLEN PHILLIP K 1407 152 NaN \n",
"BADUM JAMES P NaN NaN NaN \n",
"BANNANTINE JAMES M 465 864523 NaN \n",
"BAXTER JOHN C NaN 2660303 NaN \n",
"BAY FRANKLIN R NaN 69 NaN \n",
"\n",
" deferred_income ... from_messages \\\n",
"ALLEN PHILLIP K -3081055 ... 2195 \n",
"BADUM JAMES P NaN ... NaN \n",
"BANNANTINE JAMES M -5104 ... 29 \n",
"BAXTER JOHN C -1386055 ... NaN \n",
"BAY FRANKLIN R -201641 ... NaN \n",
"\n",
" total_payments salary expenses to_messages \\\n",
"ALLEN PHILLIP K 4484442 201955 13868 2902 \n",
"BADUM JAMES P 182466 NaN 3486 NaN \n",
"BANNANTINE JAMES M 916197 477 56301 566 \n",
"BAXTER JOHN C 5634343 267102 11200 NaN \n",
"BAY FRANKLIN R 827696 239671 129142 NaN \n",
"\n",
" from_this_person_to_poi exercised_stock_options \\\n",
"ALLEN PHILLIP K 65 1729541 \n",
"BADUM JAMES P NaN 257817 \n",
"BANNANTINE JAMES M 0 4046157 \n",
"BAXTER JOHN C NaN 6680544 \n",
"BAY FRANKLIN R NaN NaN \n",
"\n",
" email_address director_fees total_stock_value \n",
"ALLEN PHILLIP K phillip.allen@enron.com NaN 1729541 \n",
"BADUM JAMES P NaN NaN 257817 \n",
"BANNANTINE JAMES M james.bannantine@enron.com NaN 5243487 \n",
"BAXTER JOHN C NaN NaN 10623258 \n",
"BAY FRANKLIN R frank.bay@enron.com NaN 63014 \n",
"\n",
"[5 rows x 21 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Getting financial features. \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"df = pd.read_csv('data_dict.csv')\n",
"financial_features = ['Unnamed: 0', 'salary', 'deferral_payments', 'total_payments', \n",
" 'loan_advances', 'bonus', 'restricted_stock_deferred', \n",
" 'deferred_income', 'total_stock_value', 'expenses', \n",
" 'exercised_stock_options', 'other', 'long_term_incentive', \n",
" 'restricted_stock', 'director_fees', 'poi']\n",
"financial_data = df[financial_features]\n",
"financial_data = financial_data.rename(columns={'Unnamed: 0':'Name'})\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><b>Summary</b></center>\n",
"\n",
"\n",
"Features|Number\n",
"-:|:-\n",
"Number of persons| 146\n",
"Number of features of person| 21<br>\n",
"POIs| 18<br>\n",
"NonPOIs (innocent)| 128"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\t\n",
"## __SUBTASK__: Checking NANs. <br>\n",
"__Why?__: There are some NANs in the data that could influence on the final result of my inquiries.\n",
"\n",
"I divide those on two types: regarding POIS and nonPOIS \n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"poi = financial_data[financial_data.poi]\n",
"non_poi = financial_data[financial_data.poi == 0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I will check three values in order to eliminate lacking data for each column: <br>\n",
"a. total number of NANS;<br>\n",
"b. number of NANs among POI;<br>\n",
"c. number of NANs among nonPOIs.<br>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAEUCAYAAAAsgyAxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8zVf+x/HXvcmNNVQ0lhDVZrT21JrqaokGja2l1ohW\nbSOiy9hCithqhqRFa8oYqQTdxBI0Bk0pg5KEFKmqwYS0qMQSS5ab7+8PD/fXjL0Vce99Px+PPCb5\nLud8zv30kfk4Od/vMRmGYSAiIiIi4qTMxR2AiIiIiEhxUkEsIiIiIk5NBbGIiIiIODUVxCIiIiLi\n1FQQi4iIiIhTU0EsIiIiIk5NBbGIyD3wxBNP0LZtW9q1a0dAQACvvPIK27dvL+6wWLduHdnZ2Xd1\nz969e3nhhRcYMmTIdeeCgoJo3749+fn5hY4/8cQT113bs2dPOnXqdN3xJ554grCwsELHdu7cSVBQ\n0F3FeTNxcXH079//nrR1N5544gnatWtn+woODradW7t2LYGBgQQEBDB8+HAuXLgAwNdff82LL75I\n165dOXbsmO369PR0evbsidVqve/jEHFGKohFRO6RmJgYEhISWL9+PWFhYYwYMYLMzMxijWn27Nl3\nXRBv3bqV5s2b8/e///2G53NycliyZMkt2/jxxx9xd3fHy8uLlJSU687v2rWLAwcO3FVc9iAhIcH2\n9cknnwCQkZHB5MmTmT9/PuvXr6datWpERUUBEBUVRUxMDG+88QbR0dG2dqZOncro0aNxcXEpjmGI\nOB0VxCIiRaBJkybUqFHDVgxu3LiRjh070qZNG15//XVboTxnzhzGjx9Pt27diI6OxjAMpk+fTuvW\nrQkICOAf//gHAIZhMHfuXAICAmjVqhVTpkyxzR4GBQWxaNEievXqxXPPPcfbb7+NYRiMHTuWI0eO\nEBQUxO7du6+LcfHixXTo0IF27doxdOhQMjMzSUhIYPHixSQmJjJw4MAbji00NJR//OMfZGVl3XT8\nK1asoF27dgQGBrJy5crrzr/99ttMmzbthveePHmS4OBgOnTogL+/v614/F+bNm2iY8eOBAQE8PLL\nL5OWlmY7Z7VaGTlyJP7+/nTt2pX//Oc/AJw9e5YRI0YQEBBAhw4dmD9/PgAjRozgn//8p+3+tLQ0\nnn32WQoKCkhKSuKVV16hbdu2vPrqq6Snp9903DeLs0WLFnh5eQHQrVs3EhISAMjOzqZy5crUqVPH\nNkO8ceNGPDw8aNSo0V31IyK/nwpiEZEikp+fj5ubG+np6YwaNYpZs2axadMm/Pz8mDhxou26zZs3\nM3/+fPr378/q1atJTU1l/fr1LF++nNjYWFJTU1m1ahUJCQl8+eWXbNiwgfT0dJYtW2Zr4+uvv2bR\nokWsX7+eHTt2kJyczPTp04GrM9dNmzYtFNuePXtYuHChbVbby8uLWbNm0a5dO/r27UtAQAALFiy4\n4biqVq3KK6+8wpw5c2543mq1smHDBgICAmjTpg1btmwhNze30DXt27fHMAxbYfhb0dHRNGvWjHXr\n1hEfH096ejqnTp267rMdM2YMkydPZv369bRu3ZoZM2bYzicnJ9O7d282btzI888/z6xZswCIjIyk\nfPnyrF+/nqVLl7Js2TJ2795NQEAAX3/9te3+DRs20K5dOy5dusTQoUN5++232bBhA/369WPEiBE3\nHDfAX/7yFzp06ECfPn1ITk4G4OjRo9SoUcN2TY0aNThz5gznzp3DZDIBUFBQgNls5sqVK3z00Ue8\n+uqrhISEEBISctcFuIjcPRXEIiJFYPPmzfz66680btyYLVu20Lx5cx5//HHg6trar7/+2jbD6+vr\ni4eHBwBbtmwhICAAi8VC2bJlWbduHQ0aNCAxMZFXXnkFd3d3XF1d6d69O//6179s/bVr146SJUtS\nunRpatasyc8//3zL+L755hsCAgKoWLEiAN27d2fbtm13PL5BgwaRmJjIoUOHrju3detWGjRoQNmy\nZSlVqhTNmzcnMTHxuuvCwsKYOXMmOTk5hY5XrFiRrVu3snv3btzc3IiMjKRSpUqFrnF1deXf//43\nTz75JABNmzYtVDg+8sgjthnW9u3bs2fPHuBqXnr37g3AQw89RNu2bdm2bRstW7bkwIEDnD17Fvj/\ngjgpKYnKlSvzzDPPABAYGMh///tfMjIyrhvPq6++yhtvvMG6devo06cPQ4cO5fz581y+fBk3Nzfb\ndW5ubphMJi5fvkylSpU4cuQI3333HfXq1WPevHm8+uqrxMTE8Prrr/PGG2/c9B8eInLvuBZ3ACIi\njiIoKAgXFxcMw6BatWosWLCAMmXKcOHCBXbv3k27du1s15YtW9ZWfJUvX952PCsri3Llytl+Ll26\nNAAXLlxg4cKFfPbZZ8DVWdhrRfS19q5xcXG57cNYmZmZhYrMcuXKcebMmTsea+nSpQkNDeW9995j\n4cKFhc7FxcWxZcsW26y01Wrl3LlzBAQEFLquXr16NGvWjEWLFhVaHtC/f38KCgqYNGkSp06dok+f\nPgwfPtw2m3pNTEwMK1asIDc3l9zc3ELn//ezOXfunG3cv/18y5Urx6lTpyhdujRPP/0033zzDU2a\nNOH8+fM0adKENWvWkJ6eXih3bm5uZGZm2pZAXDN58mTb9x06dGDevHmkpKRQunTpQjPkOTk5GIZB\n6dKlGT16NG+++SYVKlRg+PDhzJw5kyVLlhAdHU39+vUxDIN9+/bdJhsi8kepIBYRuUdiYmKoUqXK\ndccrVarE008/zezZs2/bRoUKFQqtzf31118pWbIklSpVonXr1vTt2/eexPrwww/bCnK4urb24Ycf\nvqs2unTpQmxsbKHZ33PnzvHdd9+xc+dO26xofn4+L7zwApmZmYUKVYC33nqLl19+merVq9uOubq6\nMmjQIAYNGsSRI0cYOHAgTZo0sc3SwtUlEQsWLOCLL76gevXqbNu2jfDw8EJxXHP+/HkeeuihQuO+\nVsz+dtwBAQFs2LCBrKwsAgICMJlMVKpUiccee4y4uLhbfhYXL17k5MmTPPbYY7ZjVqsVV1dXHn30\nUXbt2mU7fvToUTw9PSlXrhyNGjVi1apVAAwcOJCxY8diNpsxDAO4unZcb5oQKXpaMiEiUsSeffZZ\ndu/ebfuTfmpqKlOmTLnhta1bt2bt2rXk5uZy6dIlevfuzY8//kibNm1YtWoVly9fBuDTTz9lxYoV\nt+3b1dWV8+fPX3e8ZcuWtuLvWnsvvPDCXY3LZDIRFhbGe++9Zzu2du1annrqqUJLBFxdXXn22WdZ\ns2bNdW1UqlSJPn36FFoW8O6779qWb9SoUYOHH374utnhzMxMKlasiJeXF5cvX2bFihVcunTJVkge\nOXLENrO6fv16mjRpYhv3tVn2zMxMNmzYQMuWLQFo1aoVKSkpbNy4kfbt2wNXl7OcPn2avXv3Aldf\nhzZy5EhbP9f88ssv9OzZ0/Zg3NatW8nKysLX1xd/f3+2b99ue7AvOjqawMDAQvdfW8fdsGFDAHx8\nfEhNTWXv3r03fKWdiNxbmiEWESlilSpVYvLkyQwbNoy8vDzKlClz3Xt4r+nQoQMHDx7kxRdfpESJ\nEnTr1o3GjRtjGAaHDh2ia9euwNVCcerUqbftu127dvTs2ZMpU6bQoUMH2/GGDRsyaNAg+vTpQ0FB\nAXXq1Cn0oN+datKkCXXq1OHo0aMArFy5stD7d69p27YtH330Ef369bvu3Ouvv84XX3xh+7lnz568\n++67TJ48GcMwaN26NS1atCh0z3PPPcfSpUvx9/encuXKhIWFsXfvXkJDQ2nVqhV+fn7ExMSQkpKC\nu7s777//PgBvvvkmEydOpF27dpjNZgYNGmQrQsuWLUu9evU4ePCgbW1yyZIlmT17NpMnT+bixYtY\nLBZGjBhxXYHu4+NDWFgYQ4cOpaCggPLly/PRRx9RtmxZypYty4QJExg2bBhWq5W6desyfvx4272X\nLl3i448/LvTatT//+c+MHDkSs9nMzJkz7yIjIvJ7mIz//WeuiIiIiIgT0ZIJEREREXFqKohFRERE\nxKmpIBYRERERp6aCWEREREScmgpiEREREXFqeu2aE8vPt5KVdam4w5DfqUKF0sqfHXPU/Hk0qQ9A\nZpLj7q7mqLlzFsqf/fqjufP0dL/pOc0QOzFXV5fiDkH+AOXPvil/9ku5s2/Kn/0qytypIBYRERER\np6aCWEREREScmgpiEREREXFqKohFRERExKmpIBYRERERp6aCWEREREScmgpiEREREXFqKohFRERE\nxKmpIBYRERERp6aCWEREREScmgpiB7VlyxaWLl1a3GGIiIiIPPBcizsAKRrPP/98cYcgIiIiYhdU\nENuZuLg4vv32W7Kzs/nll1/o378/1atXJyoqCldXVypXrsz06dNZs2YNhw4dYvTo0cUdsoiIiMgD\nTQWxHfrpp59YsWIF58+fp3PnzpQuXZro6GiqVq1KREQE8fHxmEym4g5TRERExC6oILZDzZo1w9XV\nFQ8PD9zd3TEMg6pVqwLg5+fHrl27qFu37h215enpXpShShFT/uybQ+bPfPUf4w45tt9w9PE5OuXP\nfhVV7lQQ26GCggLb9yaTidzcXNvPeXl5dzU7fPr0hXsam9w/np7uyp8dc9T8eRQYAGQ64NiucdTc\nOQvlz3790dzdqpjWWybs0J49e7BarWRmZnLx4kUsFgsZGRkAfPfdd9SvX7+YIxQRERGxH5ohtkPV\nqlVjxIgRHDt2jDfffJPq1avzzjvv4Orqire3Ny+99BKrV68u7jBFRERE7IIKYjtUo0aN694esWzZ\nskI/v/zyy/czJBERERG7pSUTIiIiIuLUNENsZzTzKyIiInJvaYZYRERERJyaZoidWMd3VhV3CHbn\n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\nTv023msxu7i4FBrftXg++OADKlWqdNv7b6RWrVqcOnWKn3/+mQsXLvDoo49isVgYMmQIgYGBdx23\niIiIiDMr9teu1a1blz179pCfn09+fj579+6lTp06N7zW29ub/fv3YxgGhw8fJiMj45Ztm0wmrFYr\n9erVY+fOnVy+fBnDMJgyZQpXrlwpiuFcp379+uzYsQOADz74gH//+9/4+vqyceNGALZv337LpQ1m\ns5n8/Pzrjrds2ZKoqChat24NgK+vL5s2bQLgzJkzREZG3uuhiIiIiDikYp8hrlatGn5+fvTt2xfD\nMOjevftNl0I0aNCAmjVr0r17d+rWrYuPj891s6q/1bx5c3r37s3ixYvp168fffr0wcXFBX9/f0qW\nLFlUQyokNDSUsWPHsnTpUqpWrUpISAg+Pj6EhYWxdu1aTCYT06dPv+n9devWZebMmVSpUqXQ8bZt\n29KzZ09Wr14NQPv27dmxYwc9e/bEarUSEhJSpOMSERERcRQm42Z/l38A5ebmsm7dOrp06cKlS5do\n3749mzZt+l3LGwS4wyUnIiIPuvu5dbPWoNo35c9+OfQa4rvh5ubG999/z+LFizGbzYwYMYLNmzcT\nHR193bX9+vWjbdu296zviRMncvjw4euOL1iw4L7NNt9zhqFfCnZMv9Ttm6Pmz6NJfQAyk/YVcyQi\nInfOrmaI5d5zxP9DdhaOWlA5C0fNnzMUxI6aO2eh/NmvopwhLvaH6kREREREipNdLZmQe8xkwrO4\nY5A/RPmzb46cP89K5Yo7hCL1oObufq6lFnEkmiEWEREREaemglhEREREnJpDFMQXL160bVBxI0OG\nDLFt23yvJSYmMmbMmJuej4uLY8OGDUXSt4iIiIj8cU6xhjgpKYldu3YVS98vv/xysfQrIiIiInfG\nbgvi7Oxshg8fTk5ODk2aNAFg9+7dREZG4urqStWqVZk8eTKRkZFcunSJN954g48//pjw8HDS09PJ\nz88nNDSUFi1aEBQURK1atQCoUKEC6enpHD9+nJiYGGbPns3u3buxWq307duXwMBADh48yOjRoylf\nvjw1atS4ZZxz5syhQoUK1KpViyVLlmAymfjPf/5DQEAAISEhHDhwgEmTJmEymWjUqBGjR4/m4MGD\nREREYDabKVOmDO+99x4HDx5k8eLFuLi4cODAAYYMGcK3335LWloao0aNwt/fn3/961/885//xNXV\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d5648780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dict_of_nans = {}\n",
"for i in financial_features[1:]:\n",
" dict_of_nans[i] = [financial_data[i].isnull().sum()/145*100, poi[i].isnull().sum(), non_poi[i].isnull().sum()]\n",
" \n",
" \n",
"s = pd.DataFrame.from_dict(dict_of_nans)\n",
"s.index = ['Number of NANs', 'NANs in POI', 'Nans in nonPOI']\n",
"\n",
"\n",
"s = s.sort_values(by=\"Number of NANs\", axis=1, ascending=False)\n",
"\n",
"plt.rcParams['figure.figsize'] = [10.0, 4.0]\n",
"fig, ax = plt.subplots()\n",
"\n",
"ax.barh(range(len(s.loc['Number of NANs'])),s.loc['Number of NANs'])\n",
"ax.barh(range(len(s.loc['Number of NANs'])),\n",
" s.loc['Number of NANs'][:6].values.tolist() + 9*[0], color='red')\n",
"ax.set_yticks(range(15))\n",
"ax.set_yticklabels(s.columns)\n",
"ax.axvline(50, color='red')\n",
"\n",
"plt.title('Percent of NANs above 50%')\n",
"fig.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the next stage we will use following features:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bonus\n",
"other\n",
"expenses\n",
"salary\n",
"exercised_stock_options\n",
"restricted_stock\n",
"total_payments\n",
"total_stock_value\n",
"poi\n"
]
}
],
"source": [
"for i in s.columns:\n",
" if s[i].get_value('Number of NANs') < 50:\n",
" print(i)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"base = {i:dict(eval('financial_data.{}.describe()'.format(i))) \n",
" for i in financial_data.columns[1:] if i not in [\"email_address\", 'poi']}\n",
"base = pd.DataFrame.from_dict(base)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, the lacking data could be still useful. We will check those who are arbitrary level of data incompleteness - 10-50%, i.e.: "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"deferral_payments\n",
"restricted_stock_deferred\n",
"deferred_income\n",
"long_term_incentive\n",
"director_fees\n"
]
}
],
"source": [
"for i in financial_features[1:]:\n",
" if 50 >= financial_data[i].notnull().sum()/145*100 >= 10:\n",
" print(i)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Checking deferred restricted stock deferred"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d56eccc0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# create function of plotting particular \n",
"# data against poi/nonpoi division \n",
"\n",
"def scatter_column(data, column, x_range=0):\n",
" \n",
" plt.rcParams['figure.figsize'] = [6.0, 1.0]\n",
" plt.scatter(data[column][data.poi==1], \n",
" data.poi[data.poi==1], \n",
" c='r')\n",
" plt.scatter(data[column][data.poi==0], \n",
" data.poi[data.poi==0], \n",
" c='b')\n",
" if x_range:\n",
" plt.xlim(x_range)\n",
" plt.yticks([0,1])\n",
" plt.ylim((-0.1,1.1))\n",
" plt.xticks(rotation='vertical')\n",
" fig.tight_layout()\n",
" plt.show()\n",
" \n",
"scatter_column(financial_data, 'restricted_stock_deferred')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__RESULTS__: It would be hard to estimate whether the person is POI referring to this data, because stocks refer only to the nonPOIs. There are also a lot of nonPOIs whose stocks are also NANs.\n",
"\n",
"\n",
"\n",
"So we eliminate deferred restricted stock data from our scope of interest. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Checking deferred income"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d56a89b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter_column(financial_data,'deferred_income')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are persons who have deferred income (it is minus value because \"deferred\" means \"postponed\" in the books; therefore deferred income cannot exceed value of 0). We could convert those values to the binary format, i.e.:\n",
" 1. if deferred_income < 0 - 1\n",
" 2. else: - 0"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"financial_data[(financial_data.deferred_income >= 0)]\n",
"financial_data.deferred_income = np.where(financial_data.deferred_income < 0, 1, 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__RESULTS__: Deferred income should be included as a feature to our algorithm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Checking long term incentives"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d55da208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter_column(financial_data,'long_term_incentive')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d3384438>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_range = [0, 3000000]\n",
"scatter_column(financial_data,'long_term_incentive', x_range=x_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Results__: Even cutting outliers above cannot create a strict rule in our division (above 3M).<br> __Thus we will eliminate this feature from our scope of interest.__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Checking director fees"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d551bdd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter_column(financial_data,'director_fees')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Results__: We could assume that only the above shown persons receive director fees, however any fraud is hard to achieve if any director was involved in that fraud.<br>\n",
"<br>\n",
"To make a million-dollar-fraud in the firm with thousands of employees you need to:<br>\n",
"a. keep discret what results in a small number of involved persons;<br>\n",
"b. you need enough people to execute many tasks;<br>\n",
"c. those people should be from different steps of the organization's pyramid, however in line with the common sense:<br>\n",
"\n",
" 1. someone from management (i.e. partners) should be involved to authorize some transactions;<br>\n",
" 2. someone from the lower stages of the organization - they are more likely to keep orders from the partners than the directors who could risk too much (after being director they would like to be promoted to a partner in the organization; with the allegiation resulting from the unveiled fraud such chances of promotion are likely to decrease). <br>\n",
"\n",
"It is more likely that data are broken in this respect and it would be better to exclude them as the feature, so:\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Results__: Director fee should be excluded as a feature from our algorithm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__: Checking deferral payments"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d3333dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter_column(financial_data,'deferral_payments')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After removing the outliers (above 2M):"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\nJm5CCOHM/wGDB6fscCSQYQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d3321898>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_range = [-50000, 2000000]\n",
"scatter_column(financial_data,'deferral_payments', x_range=x_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Result__: Still cannot find any pattern. Thus, it should be eliminated.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Summary \n",
"\n",
"__Eliminating__:\n",
"1. loan advances - because of too much NANs;\n",
"2. deferral payments - because of too much NANs;\n",
"3. deferred restricted stocks - because of too much NANs;\n",
"4. director_fees - because a director should be in the set of POI however it does not<br>\n",
"5. other - because we use only data we understand. \n",
"\n",
"__To the next stage__: \n",
"1. salary\n",
"2. total payments\n",
"3. bonus\n",
"4. total stock value\n",
"5. expenses\n",
"6. exercised stock options\n",
"7. restricted stock\n",
"8. poi\n",
"9. deferred income\n",
"\n",
"__Caveat__: They will be removed if their outliers cannot be removed without significant decreasing the number of POIs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 2: Remove outliers\n",
"\n",
"__Short summary__: After the analysis described below I have removed outliers regarding some executive POIs and their salary. It has influence most data - except: restricted stock and exercised stock options. Removing other outliers from those features decrease the number of POIs too much."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"feature_edited = ['Name', \n",
" 'salary', \n",
" 'total_payments',\n",
" 'bonus',\n",
" 'total_stock_value',\n",
" 'expenses',\n",
" 'exercised_stock_options',\n",
" 'restricted_stock',\n",
" 'deferred_income',\n",
" 'poi',\n",
" ]\n",
"\n",
"\n",
"def matrix_of_poi():\n",
" \n",
" plot = sns.pairplot(financial_data, hue=\"poi\", \n",
" y_vars=['poi'],\n",
" x_vars = feature_edited[1:-1])\n",
" plot.set(yticks=(0,1),)\n",
" plt.show()\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\naPTxqXYdT7X2EpF/o/47zomIiIiIiIiIiIiIgsGFcyIiIiIiIiIiIiIiCS6cExERERERERERERFJ\ncOGciIiIiIiIiIiIiEiCC+dERERERERERERERBJcOCciIiIiIiIiIiIikuDCORERERERERERERGR\nBBfOiYiIiIiIiIiIiIgkuHBORERERERERERERCTBhXMiIiIiIiIiIiIiIgkunBMRERERERERERER\nSXDhnIiIiIiIiIiIiIhIggvnREREREREREREREQSXDgnIiIiIiIiIiIiIpLgwjkRERERERERERER\nkQQXzomIiIiIiIiIiIiIJLhwTkREREREREREREQkwYVzIiIiIiIiIiIiIiIJLpwTERERERERERER\nEUlw4ZyIiIiIiIiIiIiISIIL50REREREREREREREElw4JyIiIiIiIiIiIiKS4MI5ERERERERERER\nEZEEF86JiIiIiIiIiIiIiCS4cE5EREREREREREREJMGFcyIiIiIiIiIiIiIiCS6cExERERERERER\nERFJcOGciIiIiIiIiIiIiEiCC+dERERERERERERERBJcOCciIiIiIiIiIiIikuDCORERERERERER\nERGRBBfOiYiIiIiIiIiIiIgkuHBORERERERERERERCTBhXMiIiIiIiIiIiIiIgkunBMRERERERER\nERERSXDhnIiIiIiIiIiIiIhIggvnREREREREREREREQSXDgnIiIiIiIiIiIiIpLgwjkRERERERER\nERERkYTe10ZBEKDRaOByuWS3a7VcdyciIiIiIiIiIiKi0cXnwvmaNWvw5z//GdOnT4dGo4EgCO5t\nGo0Ghw8fjniARERERERERERERETR5HPh/M9//jMAoLKyMirBEBERERERERERERGJbrjhBjz++ONR\nP6/PhXNRX18fnnvuORw4cAAajQZz587FVVddhaSkpEjHR0RERERERERERESnqFgsmgMBLpxv2rQJ\n+fn5uOKKKyAIAj7++GNs3LgRmzdvjnR8RERERERERERERDTKbNu2DW+//TamTp2K6upqXHXVVXjv\nvffQ09OD3t5eXH755Tj33HNx3nnn4d133416fAEtnLe1teHhhx92P162bBlWr14dsaCIiIiIiIiI\niIiIaHRLT0/HjTfeiMbGRtx2223Iy8vDb3/7W/T19eGKK67AueeeG7PYtIHsZLVaYbVa3Y/7+/sx\nODgYsaCIiIiIiIiIiIiIaHQrLi4GAJhMJjQ1NWHs2LEAgNTU1JivPwf0ifPLL78cK1aswIwZMwAA\nhw4dwrp16yIaGBERERERERERERGNXnV1dQCAEydOoLCw0P3YYrEgNTU1lqEFtnB+wQUXoKWlBf/4\nxz9gs9lw2WWX4YILLoh0bEREREREREREREQ0SnV3d+Pee+/Fl19+ibVr1+Lf//43br/9dvT09OCW\nW26JaWwBLZzfdNNNyMzMxJo1ayAIAj799FPceOONeOKJJyIdHxERERERERERERGNQvPmzcO1117r\nfrxw4cJh+8TiD4MCAS6cd3d348knn3Q/XrVqFb73ve9FLCgiIiIiIiIiIiIiolgJaOG8uLgYra2t\nMJlMAIC2tjaMGzcuooERERERERERERER0ei0cuXKWIfgU0AL542NjTjvvPMwadIkuFwu1NTUYOLE\nifjf//1fAMCLL74Y0SCJiIiIiIiIiIiIiKIloIXzn//855GOg4iIiIiIiIiIiIhIFQJaOD/jjDMi\nHQcRERERERERERERkSpoYx0AEREREREREREREZGaBPSJcyIiIiIiIiIiIiKiaGloaMBFF12EmTNn\nup8rKyvDL3/5y2H7rl69Gps2bcKUKVPCdn4unBMRERERERERERGR6pSWlmLr1q0xOTcXzomIiIiI\niIiIiIgoZBU17figvAGHajowozQbS+cVY3ppTtjP43A4cNttt6GlpQX9/f24/vrrsWzZspNxVFTg\nrrvugsFggMFgwCOPPAKtVosNGzagu7sbTqcTGzduRFlZmd9zceGciIiIiIiIiIiIiEJSUdOOXz25\nC4N2JwCgtqkH/9pbj1//dFHYF8+7u7txzjnn4Dvf+Q7q6+uxbt06j4Xzbdu2YdWqVfj2t7+NXbt2\nobW1FTt27MDixYtx6aWXorq6Gvfeey+effZZv+fiwjkRERERERERERERheSD8gb3orlo0O7EB+UN\nI144r6mpwerVq92PFy5ciI6ODrzyyivQarXo6ury2P9rX/sa7rzzThw/fhwrVqzAxIkT8dlnn6Gj\nowPbt28HAFit1oDOzYVzIiIiIiIiIiIiIgrJoZoO2ecrFJ4Phvd3nP/tb39DTU0N/vKXv6CrqwuX\nXHKJx/6LFi3Ca6+9hvfffx/r16/HrbfeioSEBGzatAlz584N6tzaEUdPRERERERERERERKekGaXZ\nss9PV3h+JDo7O1FcXAytVot3330XNpvNY/sLL7yArq4uXHzxxVizZg0OHz6M2bNn47333gMAVFdX\nB/Q1LQA/cU5EREREREREREREIVo6rxj/2lvv8XUtiQk6LJ1XHPZznX/++bjmmmvw+eef47vf/S4K\nCgrwu9/9zr197NixWLduHdLS0mAwGHDfffchKSkJt99+O773ve/B5XLhl7/8ZUDn4sI5ERERERER\nEREREYVkemkOfv3TRfigvAEVNR2YXpqNpfOKR/z95sXFxdi2bduw59544w3344svvhgAsHbtWgDA\nlClTsGTJkmHH2rJlS9Dn58I5EREREREREREREYVsemnOiBfK1YbfcU5EREREREREREREJMGFcyIi\nIiIiIiIiIiIiCS6cExERERERERERERFJcOGciIiIiIiIiIiIiEiCC+dERERERERERERERBL6WAdA\nRERERERERERERCS6//77cejQIbS2tsJqtWLs2LHIyMjA7373u6jFwIVzIiIiIiIiIiIiIlKN9evX\nAwC2bduGI0eO4Lbbbot6DPyqFiIiIiIiIiIiIiIKWWVrNZ7e9xJu3nEPnt73Eipbq8N+jt27d+On\nP/0pVq9ejYMHD2LhwoXubTfccAN2794Ni8WCG264AWvWrMGVV16JysrKkM/HT5wTERERERERERER\nUUgqW6txzwePw+a0AwDquk9g5/Fd2Lj0BpSZJoX1XFVVVXj77bdhMBhktz///PNYvHgxLr30UlRX\nV+Pee+/Fs88+G9K5uHBORERERERERERERCH5b+1e96K5yOa046PavWFfOJ86dariojkAfPbZZ+jo\n6MD27dsBAFarNeRzceGciIiIiIiIiIiIiEJS2XY0qOdHQmnR3G4fWrhPSEjApk2bMHfu3BGfi99x\nTkREREREREREREQhKcudGNTz4aLRaGC1WmG1WnH48GEAwOzZs/Hee+8BAKqrq0P+mhaAC+dERERE\nREREREREFKJzxi2AQZfg8ZxBl4Czxy2I6HlXrVqFyy67DLfffjtmzJgBALjyyitRV1eH733ve9i4\ncSPmz58f8vH5VS1EREREREREREREFJIy0yRsXHoDPqrdi8q2oyjLnYizxy0Iy/ebr1y50v3vhQsX\nYuHChe7H69atw7p164a9ZsuWLSM+L8CFcyIiIiIiIiIiIiIagTLTpLD/IdBY41e1EBERERERERER\n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\nzzzzDIxGI371q19h+/bt+M53voPHH38cfX19SE1NxT//+U9cfvnlMJvNOHjwIN58802YzWacd955\neO655/CLX/zC/YnMGTNm4A9/+ANee+01GAwGPP/883jyySexfv16WCwWTJkyBT/+8Y/xu9/9Dq++\n+io2btyIP//5z7jmmmuwaNEirF27Fm+//TZyc3Px4Ycfwmw2R21R84svvnB/Aspms+G0005DfX09\n3n33Xbz33ntwOBy44oorsGLFCuTk5EQlplNVVVUVfv/736OgoAC33HILnvv/7d17XM15/sDxV3U6\nkja5lpolt2FCqWgsNZF7al2KiIZY1+SyzRJdXaey0bK5jMcwDZod5B4aE2siYolU0pBrLptmJorU\nqfP7o8f5/jo5J5kRMzuf5189zuV7Ob3P9/s+n/fn+/5+8QW7du3S+B3RFlfarF279p3FWH3SFL8q\n3377LX379v3dzbx5W8XJkpISAgICePLkCQqFgn79+uHm5kZMTAxKpRITExO8vLwICQnh4cOHKBQK\nhg8fjre3N5WVlSxfvpzMzEwAfH19GTp0qLTs8vJyZsyYgZubGyNHjtS4fg8PD4KCgrCzswNg0qRJ\n+Pr60qhRo1qL/ffu3cPb25vvvvsOqBoEUigUzJ8/n7NnzxIbG4tSqUQmk7Fs2bJ6G8QUsVv/MjIy\nOHbsGDt27EBHR4eVK1dSVFREkyZNOHToEKdOncLPzw8zMzOgavLI559/zpMnTxgwYAAjRowgISGB\nli1bsnz5cioqKhgzZgy9e/cGID09ncTERBo0aMDAgQO5evUq586deymPBggPD2fy5Mn06tWLgoIC\nvLy8+Oabb9i4cSPLli3DxsaGy5cv8+jRIzFw/pa9TpwsWbIEJycnPDw8ePbsGcOHD6dPnz5A1bFl\n+/bt6OjoMHHiRKZMmULfvn1JTEzkyJEjfPDBB9I6NZ2TVblX9e3YtWsXjo6OHDx4kKNHj6Krq8vo\n0aNrHTgvKipix44d/Oc//0FPT4/Dhw/z+PFj/P39iYmJISoqivT0dL755ht27dqFvr4+c+bM4dCh\nQzg4OLBx40YSExMxMDAgMDCQvLw8adkJCQnk5OSo/Q6s6fnz5wQHB7N7927MzMzYvn07MTExfPrp\npwCYmJgQFxfHmTNniIyMZO/evTg5OWFvb4+7uzunT58G4P79+6xbt67OOZC/v7/G/a75vxbH3VdL\nS0tj/fr1NGjQABcXFzIzM18qHubm5hIaGoq+vj6lpaX4+flRXl6uNjFo/fr1dO7cmatXrxIXF4eV\nlRVZWVkoFAoWLVrEgwcPAPjrX//K9evX1XIThUJBZGQkCoWC8vJyQkNDsbKy4uLFi4SFhdG0adOX\nJvJpcvbsWaKjozEwMKCsrIygoCAyMzPV1lVSUkJERAQymQwdHR1CQ0Pp0KEDt27deqkAVl1OTg5/\n+9vf2Lx5s3QeqU8ifrWrrKwkKCiIa9euYWFhwbNnzwA0TmxLTEwkKyuL6OhoFAoFFhYWGmPNx8dH\nLX579uwpTQgNDg5+Y4VO1aSnCxcuaCzI6+josH79epKTk9HV1WX48OFMmDCBmzdvEhYWhlKpRKFQ\nEBAQQI8ePQgMDKRJkybcuHGD69evExAQwPHjx8nNzcXOzo4lS5YAsHr1ai5evEhpaSk9e/ZkwYIF\n6Ojo1Pv/SnjzxMD5O+Dk5ER8fDyBgYE4Ozvj5eVFVlYWUVFRvHjxgqdPn9K4cWO198hkMnR1dfH2\n9kYmk5GXl8ePP/4IgFKplH7UDh06lJiYGEpKSjh27Bju7u6/24O7ANnZ2XTp0kWayezg4KDxEtLm\nzZuzcOFClEolBQUF2Nra1nkdJiYmdO3aFQA7Ozvi4uKkx6dNm4auri75+fm0aNGCRo0a0b9/f5KS\nkhg8eDDXr1+nd+/e7Nu3j65duyKXyzEzM6OyshJ7e3sATE1Nefr0Kenp6RQUFDBlyhSgKpmpPvDU\nq1cvAMzNzTW2IfD09OQvf/kLgwcPZsiQIbRt27bO+/hLNWzYkC+//FLtRHn48GFsbGyk9iydOnUi\nNzdXzCCtZ+3atZMSb1tbW7Zt21brd+RVcVXdu4yx+qQpflVOnDjxu+wb/7aKk6mpqSgUCuLj46ms\nrGTbtm1YWFgwcuRIFAoFvr6+bNq0CWNjY6KjoyktLcXV1RUnJycuXLjA48eP2blzJ0+ePOGTTz5h\n0KBB0rJDQkLo3bu31kFzAHd3d5KSkrCzs6OwsJAbN27g6OjIiRMnai32a/P8+XPCwsL4+uuvMTEx\n4dtvvyUqKupn9xJ+FRG79S8tLY07d+7w8ccfA1U9Y2UyGSEhIYwbN4527doxYsQI6fWOjo4AGBsb\nY2lpye3bt0lLS+Phw4ecP38eqDq/37lzBwBra2sMDAwAaNWqFUVFRRrzaNW2lJSUEBsbC1TlzoWF\nhYwaNYrAwEAGDRrEoEGDsLGxeTsfjiB5nThJS0vjypUr7Nu3D6j6P967dw8AGxsb6fuckZGBg4MD\nAMOGDZPeq6LpnLx582aN25Gbm0uXLl2Qy+UA9OjRo9b9ady4MU5OTkyYMIGBAwfi6uqKmZmZWvuM\ny5cv07NnT/T19YGq/OLKlSs0bNiQLl26SHGtugoTqo756enpJCUloaenp3X9t27dolmzZlI+UzN3\nUX3P7OzsuH79utblvOp3Qs0cSNt+VyeOu3WXmZlJcnIyu3fv1lg83L17Ny4uLkybNo3CwkJSUlIY\nMWKE2sSg9evXY2ho+NLNLT///HPMzMxYs2YNt27dIjY2llWrVqnlJu7u7sTGxtK6dWtycnJYvHgx\ne/bsISoqik8++QRnZ2e2bt36yv2Ii4vD19cXV1dX8vLyuHnzJt7e3mrrGjx4MKtWrcLa2poTJ06w\nZMkStm3bRlhYmNYC2MOHD1m4cCExMTFvZdAcRPzWJjU1lby8PBISEigtLWXgwIHY2dmRlJSkcWJb\nUlISM2fOpHfv3lpjDVCL3+oTQjUVXH9OobMmTQX5Z8+e8e9//5udO3dSWVmJv78/f/7zn6U8f+jQ\noVy7do1Zs2aRnJwMwOPHj/nss8/Ys2cPS5cu5dixY8jlchwcHAgICOD06dM8evRI2jc/Pz9OnDjx\ns1sfCe+WGDh/B9q3b09iYiLnz5/n6NGjxMXF8cMPP7BkyRL+9Kc/ceLECbZs2aL2ngsXLpCQkEBC\nQgKGhobMmTNH7XlVUqY6ABw7doykpCTCwsLe2n4Jv35KpfKlRKC8vJx58+axd+9eLC0t2b59uzRD\nsa7LrLn8hw8fEhkZSWJiIs2aNVO7jHPs2LFEREQgl8sZNmyYVNip+QOh+qVzSqUSuVyOtbU1mzZt\n0rgd1d9ffZtUFi1aRH5+PidPnsTPz4+FCxe+tUvHOnfuzHfffYezszOJiYk0bdqU1q1bExcXR2Vl\nJRUVFeTm5ooZcG9B9UKiUqnkxYsXas/X/I68Kq7Ky8ulv99ljNUnTfGrKvBkZmbSuXPnd7yF7059\nFyft7OxYu3Ytc+fOxdnZmdGjR79UDL98+TKjRo0CwMDAgK5du5KVlUVGRobUts3Y2JjPPvtMes+6\ndet4/vy5VIjUZtiwYYwbN45FixZx9OhRhgwZgp6eHs2bN6+12K/N999/T0FBAf7+/kBVy5v6nHkj\n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\nK9EILuxnAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d33e3da0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"matrix_of_poi()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## SUBTASK: checking \"Salary\" "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAWkAAABzCAYAAABaQfMHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFEFJREFUeJzt3X1sFOW+B/Dv7G5d7La027KttLRVNIeD9dZQFE5tACGA\nAl4vxlhEqKcRXzCiOYSA0otQFPBcE2IwsSoQ3iJ6SchBUanFaGzkrRhQhApoETm0QLflti7tFNiX\nuX+su+yy77O7zMz6/fwFszPP/H4zs7+dfeZ5toIkSRKIiEiVdEoHQEREobFIExGpGIs0EZGKsUgT\nEakYizQRkYqxSBMRqZgh0Q12dl5KSDtmczq6u8WEtKUmzEt7UjU35qUuFktm0OVR3Un//PPPmDhx\nIj744IOEBhWOwaC/YfuKiyhCd/pXQIzuovDmJYrQHf8JuuMt7m2vb0cUoTveAt3xn4CLXcH3EakN\nmTHK2TbgfPnG77ttPLEoRDPXYoyYVxSivV6TeF1HvJMWRRGvv/46KioqEr5zTXM4YKr7bxgbPoeu\nvQ2uwiG4MmUa+upWAoYwh9XhgKl2IQb871YIvb0AAMlgAIxGCP39cBUWwjUwC/rfTkPo63NvIwiA\nJMFVVIQrUx5C35LlML32apg2/ohlyXKYViyLPcZ481u62D+2jAxcrnoC0AkwNjbEHgvRjRbt9S/3\nfRIDIdKMQ4fDAYfDgXXr1sFsNmP27NlhG0xUd4fFkpmwtpLBtORlpK99N2C5+Ozz6FvxPyG3s6x8\nFVizJq592+/6D6QdOyp7vUgxArHn5zlfobYLJZpYlKb2a1Eu5hVatNe/3DoQjOzuDoPBgAEDBsS0\ns5QnijA2fB70JWPDrtBfeUQR2LEj7t0bjv8U13phYwTiys/4+adRxRZ1LEQ3WrTXv9z3SYwS/j3T\nbE5PWJ9QqE8WxZ2yAu1tQV/Sn2uDxdELWPKDb9cWfLtYCE5nXOuFjRGQnZ/F0Quca48qtqhjUQnV\nXotxYl5BRHv9y60DMUp4kU7UU1VVfxUzZCCncAj0Z/8d8JKzYAj+z5ABBIvdkAHLkCHAvwO3i4Wk\n10dVqEOtFzbGP+KMNT+LJROdhgzkFBRCH+LCDSZiLCqg6msxDswrhGivf7l1IEzcwXCctBzp6bgy\nZVrQl65MmQqkp4fcDo88EvfuHcPvjGu9sDECceV3Zdp/RhVb1LEQ3WjRXv9y3ycx0tfV1dWFW+HY\nsWNYsGABDh48iKNHj2L37t2YMGFCyH5qUbyakMBMJmPC2koG+9jxEC7ZoLN2QujrhWtIMS4//oT7\nqa4u9Gef6b+mQTxvhf7nn4Gr7vwkQxqkm9MBlxOuIUVwFhVBEEXA/kf+ggBAgKvIvY9L72+EcMkW\npg2f9fp6Y45RTn6e82UfOx7C7z3+sWVkon92Dewj74GusyvmWJSm9mtRLuYVWrTXv9w6ECruYCKO\n7ojVn2V0h5coQtdxAa78W6L65PTmJYrQnfkNgARXyW0A4N+OKEJ35jQAAa68POhstsB9RGpDZoxy\n8gs4X77xl9x6bdt4YlGIZq7FGDGvKER7vSbgug7V3cEifYMxL+1J1dyYl7qwT5qISINYpImIVIxF\nmohIxVikiYhUjEWaiEjFWKSJiFSMRZqISMVYpImIVIxFmohIxVikiYhUjEWaiEjFWKSJiFSMRZqI\nSMVYpImIVIxFmohIxVikiYhUjEWaiEjFWKSJiFSMRZqISMVYpImIVIxFmohIxVikiYhUjEWaiEjF\nWKSJiFSMRZqISMVYpImIVIxFmohIxVikiYhUjEWaiEjFWKSJiFSMRZqISMVYpImIVIxFmohIxVik\niYhUjEWaiEjFDNGstGrVKhw5cgSCIKC2thZlZWVJDUoUgVOnALsdsNkE5OdLSE+PvY2OjmvbiiJw\n5oyAy5eBAQOAkhIJ/f3ATz/pcOedLuTmRtdOuHUGDpRgtQoAgLw8978vX/Zf12wGursF/P47cPq0\nDrfd5oLRCPT1CfjrX13o7BRw7pwAk0mCwyEgK8uFpiYDhgxxYeRIF5qadNi714Dbb3eirMyF8+d1\nsFgkjBvnAuCfjydn33gAd+6A/2ue4wxcy8VmE5CWJuHECR1MJgnZ2e5tIx2H649VNMcwkmBtJKLd\nZFJ7fBSc2s5bxCJ98OBBnDlzBtu2bcOpU6dQW1uLbdu2JSUYhwOoq7sJu3YZ0NYG6PUZcDqBoiIX\npkxxoK7uKgwRIva00dBgQHu7DoWFLgwcKOG333To6xN81pQgCAIkCdDrgeHDndi1qx8DBoRu5/oY\nfNc5e1YHQQAkKZpMTTKOTvT0eiAry4UrV4TrcnZzx+/+EPCVkSFBktwfGDod4HIFtm0ySZg5047X\nXvM/Dv/4B/Cvf6X7HaslS65ixYrwxzCSYOfhgQccAIDGRvntJlM01w6pj1rPmyBJ4cvKmjVrUFBQ\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d34a7898>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter_column(financial_data,'salary')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"scrolled": true
},
"outputs": [
{
"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></th>\n",
" <th>Name</th>\n",
" <th>salary</th>\n",
" <th>deferral_payments</th>\n",
" <th>total_payments</th>\n",
" <th>loan_advances</th>\n",
" <th>bonus</th>\n",
" <th>restricted_stock_deferred</th>\n",
" <th>deferred_income</th>\n",
" <th>total_stock_value</th>\n",
" <th>expenses</th>\n",
" <th>exercised_stock_options</th>\n",
" <th>other</th>\n",
" <th>long_term_incentive</th>\n",
" <th>restricted_stock</th>\n",
" <th>director_fees</th>\n",
" <th>poi</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>FREVERT MARK A</td>\n",
" <td>1060932.0</td>\n",
" <td>6426990.0</td>\n",
" <td>17252530.0</td>\n",
" <td>2000000.0</td>\n",
" <td>2000000.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>14622185.0</td>\n",
" <td>86987.0</td>\n",
" <td>10433518.0</td>\n",
" <td>7427621.0</td>\n",
" <td>1617011.0</td>\n",
" <td>4188667.0</td>\n",
" <td>NaN</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>LAY KENNETH L</td>\n",
" <td>1072321.0</td>\n",
" <td>202911.0</td>\n",
" <td>103559793.0</td>\n",
" <td>81525000.0</td>\n",
" <td>7000000.0</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>49110078.0</td>\n",
" <td>99832.0</td>\n",
" <td>34348384.0</td>\n",
" <td>10359729.0</td>\n",
" <td>3600000.0</td>\n",
" <td>14761694.0</td>\n",
" <td>NaN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>122</th>\n",
" <td>SKILLING JEFFREY K</td>\n",
" <td>1111258.0</td>\n",
" <td>NaN</td>\n",
" <td>8682716.0</td>\n",
" <td>NaN</td>\n",
" <td>5600000.0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>26093672.0</td>\n",
" <td>29336.0</td>\n",
" <td>19250000.0</td>\n",
" <td>22122.0</td>\n",
" <td>1920000.0</td>\n",
" <td>6843672.0</td>\n",
" <td>NaN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name salary deferral_payments total_payments \\\n",
"47 FREVERT MARK A 1060932.0 6426990.0 17252530.0 \n",
"79 LAY KENNETH L 1072321.0 202911.0 103559793.0 \n",
"122 SKILLING JEFFREY K 1111258.0 NaN 8682716.0 \n",
"\n",
" loan_advances bonus restricted_stock_deferred deferred_income \\\n",
"47 2000000.0 2000000.0 NaN 1 \n",
"79 81525000.0 7000000.0 NaN 1 \n",
"122 NaN 5600000.0 NaN 0 \n",
"\n",
" total_stock_value expenses exercised_stock_options other \\\n",
"47 14622185.0 86987.0 10433518.0 7427621.0 \n",
"79 49110078.0 99832.0 34348384.0 10359729.0 \n",
"122 26093672.0 29336.0 19250000.0 22122.0 \n",
"\n",
" long_term_incentive restricted_stock director_fees poi \n",
"47 1617011.0 4188667.0 NaN False \n",
"79 3600000.0 14761694.0 NaN True \n",
"122 1920000.0 6843672.0 NaN True "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"financial_data[(financial_data['salary'] > 1000000)]"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"After short investigation we could find that those person are high executives of ENRON, i.e.:\n",
"1. FREVERT MARK A - Mark A. Frevert, chief executive of ENRON Wholesale Services\n",
"2. LAY KENNETH L - the CEO and chairman of ENRON Corporation \n",
"3. SKILLING JEFFREY K - the former CEO of ENRON Corporation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Results__: Those guys are the chiefs of ENRON, so removing outliers will naturally be seen in other sets \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Influence of removing outliers at salary"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdwAAACkCAYAAACNfOxvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0W+WdP/63JEveJC9yJNmO7cRxFicOCTFZSLMBZUnp\nMrRlSZiEzO8wDGsJB1KWNDR0WijTocwAnX7LUKbT0k6bKU070JlDKAy0DBiSkBASJ8ZxFi/xIsm7\nbNmy7Pv7w7mKLN+rxb7Xutd5v87hYN31c5/ncz967hNZNgiCIICIiIiIiIiIiIiIiCbFmOwAiIiI\niIiIiIiIiIimA064ExEREREREREREREpgBPuREREREREREREREQK4IQ7EREREREREREREZECOOFO\nRERERERERERERKQATrgTERERERERERERESkgJdkBTJbH0yu5PDc3A52d/VMcTeL0EOfFFKPDYVMg\nmvjI5W44PbS9iLGqI95YtZK7emlbxqmsycaplfwF9NPmgH5inc5xaiF39dK+SuC1KkcLuQvoq08Z\nq3oSiVcruasGPfQbY5wcLeavlttrKvD6tTffMF1M20+4p6SYkh1CXPQQJ2NMHj1dF2NVh55iBfQT\nL+NUll7ijIeerkUvsTJOdek17ongtU4/erpOxqoevcWrFj20A2Ocfi729uL1X9zXr6ZpO+FORERE\nRERERERERDSVOOFORERERERERERERKQATrgTERERERERERERESlA1Qn32tpaXH311fjlL385bt0H\nH3yAG2+8Ebfccgv+5V/+JbT8qaeewi233IJNmzbh008/VTM81RmNhoS2FbcP309cLnUsuX0SPXci\n20vFkui5KDHhfRxvLqSkGMftG3k8cRul4ot3OV1cYuVHZK5K/RyZ+3L3gNK0msNajWs6Cc/L8Joq\nLhNfS9XRRN/71aTHXNFKzFqJQ0mRY4ho4wm58YbUfolsG2udku0udSylxj6kPKm8i6y9Ez2umttr\nkd6vQe/xT5Y4zogc+0aORyLrWaw6nGg9JiKiyUlR68D9/f347ne/i9WrV0uu/973voeXX34ZLpcL\nW7ZswXXXXYeOjg7U19djz549OHXqFHbu3Ik9e/aoFaJqmvxN2N9yCCc7z2BebilWFlSiKL1Ictsa\nTx3ePv0+TnfUoyi7APmZDhxqOYbZucWYlTUT3YFenOtpRavPgzL7LHyuYCUA4IOW/eP2mZc7Bwsd\n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\nMrgL31bu53j3SfTciWwvtZ0WHuans/DBVqxtxJ8j95HKFaUeOOXiYl4QEDs/xDxMpAZOVR3Sag5r\nNa7pJDIv5WqsVB2d6Hu/GvSYK1qJWStxKCmesWI8153ImDPRdUq2u9Sx9DLZfjGK1V8TzQ21nom0\nTO/XoPf4Jyt8nBG+LPz/wPh6FmvMPdFaTUREE5OU73AnIiIiIiIiIiIiIppuOOFORERERERERERE\nRKQATrgTERERERERERERESmAE+5ERERERERERERERArghDsRERERERERERERkQI44U5ERERERERE\nREREpABOuBMRERERERERERERKYAT7kRERERERERERERECuCEOxERERERERERERGRAjjhTkRERERE\nRERERESkAE64ExEREREREREREREpgBPuREREREREREREREQK4IQ7EREREREREREREZECOOFORERE\nRERERERERKQATrgTERERERERERERESkgRc2DP/XUUzhy5AgMBgN27tyJJUuWAADa2tqwY8eO0HaN\njY146KGHMDQ0hOeeew4lJSUAgM997nO4++671QyRiIiIiIiIiIiIiEgRqk2479+/H/X19dizZw9O\nnTqFnTt3Ys+ePQAAl8uFV155BQAQDAaxdetWXHXVVdi3bx+uv/56PPLII2qFRURERERERERERESk\nCtW+UqaqqgpXX301AKCsrAzd3d3w+Xzjtvv973+P6667DpmZmWqFQkRERERERERERESkOtUm3L1e\nL3Jzc0Ov7XY7PB7PuO1++9vf4sYbbwy93r9/P26//XZs27YNx48fVys8IiIiIiIiIiIiIiJFqfod\n7uEEQRi37PDhw5gzZw6sVisAYOnSpbDb7bjiiitw+PBhPPLII3j99dejHjc3NwMpKSbJdQ6HbfKB\nTwE9xMkYlRctd8Pp6boYqzq0Fmus3NVavHIYp7L0Emc8tVcv1wLoJ1bGOXnTYcyrBF6r/kyXcQPA\nWNWkxXjjfV5TkhbbIRJj1IdE8vdiby9e/8V9/WpRbcLd6XTC6/WGXrvdbjgcjjHbvPvuu1i9enXo\ndVlZGcrKygAAy5YtQ0dHB4aHh2EyyReJzs5+yeUOhw0eT+9kLmFK6CHOiynGqSw0crkbTg9tL2Ks\n6og3Vq3krl7alnEqa7JxaiV/Af20OaCfWKdznFrIXb20rxJ4rcoef6pMh3EDwFjVlEi8WsldNeih\n3xjj5Ggxf7XcXlOB16+9+YbpQrWvlFmzZg327dsHAKiurobT6Qx9kl109OhRlJeXh16/9NJL+OMf\n/wgAqK2thd1ujzrZTkRERERERERERESkFap9wr2yshIVFRXYtGkTDAYDdu/ejb1798Jms+Gaa64B\nAHg8HuTl5YX2+fKXv4xvfvOb+M1vfoNgMIgnn3xSrfCIiIiIiIiIiIiIiBSl6ne479ixY8zr8E+z\nAxj3/ez5+fl45ZVX1AyJiIiIiIiIiIiIiEgVqn2lDBERERERERERERHRxYQT7kRERERERERERERE\nCuCEOxERERERERERERGRAjjhTkRERERERERERESkAE64ExEREREREREREREpgBPuRERERERERERE\nREQK4IQ7EREREREREREREZECOOFORERERERERERERKQATrgTERERERERERERESmAE+5ERERERERE\nRERERArghDsRERERERERERERkQI44U5EREREREREREREpABOuBMRERERERERERERKYAT7kRERERE\nRERERERECuCEOxERERERERERERGRAlKirRQEAQaDASMjI5LrjUbO1xMRERERERERERERATEm3Ldt\n24Zf/OIXWLRoEQwGAwRBCK0zGAw4ceKE6gESEREREREREREREelB1An3X/ziFwCAmpqaCR38qaee\nwpEjR2AwGLBz504sWbIktO6qq65Cfn4+TCYTAOCZZ56By+WKug8RERERERERERERUSz3338/nn/+\n+Sk/b9QJd1FfXx/+/d//HUePHoXBYMCyZctw2223IS0tTXaf/fv3o76+Hnv27MGpU6ewc+dO7Nmz\nZ8w2L730EjIzMxPah4iIiIiIiIiIiIgommRMtgNxTrg//vjjcLlc2LRpEwRBwAcffIBdu3bhmWee\nkd2nqqoKV199NQCgrKwM3d3d8Pl8sFqtiu5DRERERERERERERBeHvXv3Yt++fViwYAHq6upw2223\n4a233kJPTw96e3txyy234IorrsA111yDP/3pT1MeX1wT7l6vF88++2zo9ZVXXomtW7fG3KeioiL0\n2m63w+PxjJk83717N86dO4fLLrsMDz30UFz7RMrNzUBKiklyncNhi3ltWqCHOBmj8qLlbjg9XRdj\nVYfWYo2Vu1qLVw7jVJZe4oyn9urlWgD9xMo4J286jHmVwGvVn+kybgAYq5q0GG+8z2tK0mI7RGKM\n+pBI/l7s7cXr1+/1Z2Vl4cEHH0RzczMeeeQROJ1O/PCHP0RfXx82bdqEK664ImmxxTXh7vf74ff7\nkZ6eDgDo7+/H4OBgQicK/4OrwOh36Kxbtw7Z2dm49957sW/fvpj7SOns7Jdc7nDY4PH0JhRjMugh\nzospxqksNHK5G04PbS9irOqIN1at5K5e2pZxKmuycWolfwH9tDmgn1inc5xayF29tK8SeK3KHn+q\nTIdxA8BY1ZRIvFrJXTXood8Y4+RoMX+13F5TgdevvfmGRBQVFQEAHA4HWlpasHz5cgBAZmZmwvPW\nSotrwv2WW27B9ddfH/r0eXV1NbZv3x51H6fTCa/XG3rtdrvhcDhCr2+44YbQz+vXr0dtbW3MfYiI\niIiIiIiIiIjo4tbQ0AAAOHfuHAoKCkKvfT7fmL8ZmgzGeDbauHEjbrzxRpw6dQonTpzAzTffjI0b\nN0bdZ82aNaFPrVdXV8PpdIa+Gqa3txe33347AoEAAODAgQOYN29e1H2IiIiIiIiIiIiIiLq7u/Hk\nk0/i29/+Nu677z7MmDEDjz32GB555BF885vfTGpscX3C/aGHHkJOTg62bdsGQRDw8ccf48EHH8SP\nf/xj2X0qKytRUVGBTZs2wWAwYPfu3di7dy9sNhuuueYarF+/HrfccgtSU1OxaNEibNy4EQaDYdw+\nRERERERERERERESiyspK3HPPPaHXq1atGrdNMv5gKhDnhHt3dzdefPHF0OvNmzfj1ltvjbnfjh07\nxrwuLy8P/bxt2zZs27Yt5j5ERERERERERERERHoQ14R7UVERPB5P6PvUvV4vZs2apWpgRERERERE\nREREREThvva1ryU7hKjimnBvbm7GNddcg7lz52JkZARnzpxBWVkZ/vqv/xoA8Ktf/UrVIImIiIiI\niIiIiIiItC6uCfcHHnhA7TiIiIiIiIiIiIiIiHQtrgn3lStXqh0HEREREREREREREZGuGZMdABER\nERERERERERHRdBDXJ9yJiIiIiIiIiIiIiLSuqakJX/7yl7F48eLQsvLycnzrW98at+3WrVvx+OOP\nY/78+YqdnxPuRERERERERERERDRtlJaW4pVXXknKuTnhTkRERERERERERERT7viZdvz5UBOqz3Sg\notSODZVFWFSap/h5gsEgHnnkEbS1taG/vx/f+MY3cOWVV16I4/hxfOc734HFYoHFYsE//dM/wWg0\nYufOneju7sbw8DB27dqF8vLymOfihDsRERERERERERERTanjZ9rx7RerMDg0DACob+nB2wca8fd3\nrlZ80r27uxtr167FV7/6VTQ2NmL79u1jJtz37t2LzZs344YbbkBVVRU8Hg/eeOMNrFu3DjfddBPq\n6urw5JNP4mc/+1nMc3HCnYiIiIiIiIiIiIim1J8PNYUm20WDQ8P486GmSU+4nzlzBlu3bg29XrVq\nFTo6OrBnzx4YjUZ0dXWN2f7zn/88nnjiCZw9exbXX389ysrKcPjwYXR0dOC1114DAPj9/rjOzQl3\nIiIiIiIiIiIiIppS1Wc6JJcfl1meiMjvcP/973+PM2fO4D/+4z/Q1dWFG2+8ccz2q1evxquvvop3\n3nkHjz76KB5++GGYzWY8/vjjWLZsWULnNk46eiIiIiIiIiIiIiKiBFSU2iWXL5JZPhmdnZ0oKiqC\n0WjEn/70JwQCgTHrf/nLX6Krqwtf+cpXsG3bNpw4cQJLly7FW2+9BQCoq6uL6+tkAH7CnYiIiIiI\niIiIiIim2IbKIrx9oHHM18qkmk3YUFmk+LmuvfZa3H333fjkk0/w9a9/Hfn5+fjRj34UWl9SUoLt\n27fDZrPBYrHg+9//PtLS0vDYY4/h1ltvxcjICL71rW/FdS5OuBMRERERERERERHRlFpUmoe/v3M1\n/nyoCcfPdGBRqR0bKosm/f3tRUVF2Lt377hlr7/+euj1V77yFQDAfffdBwCYP38+1q9fP+5YL7zw\nQsLn54Q7EREREREREREREU25RaV5k55g1xp+hzsRERERERERERERkQJU/YT7U089hSNHjsBgMGDn\nzp1YsmRJaN2HH36IZ599FkajEaWlpXjyySdx4MABbN++HfPmzQMw+lH+xx9/XM0QiYiIiIiIiIiI\niIgUodqE+/79+1FfX489e/bg1KlT2LlzJ/bs2RNa/+1vfxu/+MUvkJ+fj/vvvx/vvfce0tLSsHLl\nSjz//PNqhUVEREREREREREREpArVvlKmqqoKV199NQCgrKwM3d3d8Pl8ofV79+5Ffn4+AMBut6Oz\ns1OtUIiIiIiIiIiIiIiIVKfahLvX60Vubm7otd1uh8fjCb22Wq0AALfbjffffx8bNmwAANTV1eGu\nu+7C5s2b8f7776sVHhERERERERERERGRogyCIAhqHPjxxx/Hhg0bQp9y37x5M5566imUlpaGtmlv\nb8cdd9yBBx98EGvXrkVbWxs+/vhjfOELX0BjYyNuu+02vPnmm7BYLLLnCQaHkZJiUuMSiFTF3CW9\nYu6SnjE13VtPAAAgAElEQVR/Sa+Yu6RXzF3SK+Yu6Rnzly5mTz/9NKqrq+HxeOD3+1FSUoLs7Gz8\n6Ec/mrIYVPsOd6fTCa/XG3rtdrvhcDhCr30+H+644w488MADWLt2LQDA5XLh+uuvBwCUlJRgxowZ\naGtrQ3Fxsex5Ojv7JZc7HDZ4PL1KXIqq9BDnxRSjw2FTIJr4yOVuOD20vYixqiPeWLWSu3ppW8ap\nrMnGqZX8BfTT5oB+Yp3OcWohd/XSvkrgtSp7/KkyHcYNAGNVUyLxaiV31aCHfmOMk6PF/NVye00F\nXr/25huU8OijjwIY/TrzkydP4pFHHpnyGFT7Spk1a9Zg3759AIDq6mo4nc7Q18gAo//asG3bNqxf\nvz607LXXXsPLL78MAPB4PGhvb4fL5VIrRCIiIiIiIiIiIiJKkhpPHX568NfY8cb38NODv0aNp07x\nc3z00Ue48847sXXrVhw7dgyrVq0Krbv//vvx0Ucfwefz4f7778e2bduwZcsW1NTUTPh8qn3CvbKy\nEhUVFdi0aRMMBgN2796NvXv3wmazYe3atfjDH/6A+vp6vPrqqwCAL33pS/jiF7+IHTt24O2338bQ\n0BCeeOKJqF8nQ0RERERERERERET6U+Opw/f+/DwCw0MAgIbuc3j3bBV2bbgf5Y65ip6rtrYW+/bt\nk51r/vnPf45169bhpptuQl1dHZ588kn87Gc/m9C5VJtwB4AdO3aMeV1eXh76+dixY5L7/OQnP1Ez\nJCIiIiIiIiIiIiJKsv+rPxCabBcFhofwfv0BxSfcFyxYEPWD3YcPH0ZHRwdee+01AIDf75/wuVSd\ncCciIiIiIiIiIiIiilTjPZXQ8smQm2wfGhqd8DebzXj88cexbNmySZ9Lte9wJyIiIiIiIiIiIiKS\nUj6jLKHlSjEYDPD7/fD7/Thx4gQAYOnSpXjrrbcAAHV1dRP+OhmAE+5ERERERERERERENMXWzloB\ni8k8ZpnFZMaaWStUPe/mzZtx880347HHHkNFRQUAYMuWLWhoaMCtt96KXbt2Yfny5RM+Pr9ShoiI\niIiIiIiIiIimVLljLnZtuB/v1x9AjfcUymeUYc2sFYp8f/vXvva10M+rVq3CqlWrQq+3b9+O7du3\nj9vnhRdemPR5AU64ExEREREREREREVESlDvmKv4HUpONXylDRERERERERERERKQATrgTERERERER\nERERESmAE+5ERERERERERERERArghDsRERERERERERERkQI44U5EREREREREREREpABOuBMRERER\nERERERERKYAT7kRERERERERERERECuCEOxERERERERERERGRAjjhTkRERERERERERESkAE64ExER\nEREREREREREpgBPuREREREREREREREQKSFHz4E899RSOHDkCg8GAnTt3YsmSJaF1H3zwAZ599lmY\nTCasX78e9957b8x9EmU0GgAAIyNCQvuMjAihfcX9U1KMCAZHou4TbZ24v9FoGHcOo9EAi8WEQGAY\nRqMBweAILBZTaPuREQGpqSkYHAzCYjHBaDQiEAiGto2ML/xcYvyR1xMeg7g/gISuMdp1y4ncZyLH\nmKxknHMysrIsGB4GBgeDofwJBkdgNptC12IyGcbkT+Q1ms0mDA4Gx+RKeM4YjYbQ68j8AC7cQ3L3\nRzRqtrdSx9ZTTugh1vA8TUtLOZ+jozVmcDCIlBQjTCbjmJ8NBgMCgSCCwRGkp5vh9w/J1qV46ki8\n7RSrfgOJvYdM5DwXCz21QVaWZdyy/v7RfDUajRAEAYIgIBgcGffeDox9nwUwrmaOHme0bovrI9/L\nI9+n4xlrKEGL/aTFmLQmPd0cqqmRY0DgQhtGvoeLLBYTBgZG95faR1wu7h/+X3geS+W1lPC8Ft8v\n5Mba4dtIHUNKtHG71L5K1vt4zzkVYrWDVlitFhgMgMEADA8Dfv8Q0tPNMBiA/v6h0HNQSooxlF+R\n9VLsw8iaLNXmkfU51s9TgXVOf9TqM5tt9H4QCQIwNDSCgYEgMjIsofFy+FyCOH8QCAyPeR+I97lb\nasyipXzU2/2ht3iJSB2qTbjv378f9fX12LNnD06dOoWdO3diz549ofXf+9738PLLL8PlcmHLli24\n7rrr0NHREXWfeDW4fXj7k3M42diNVm8f5hbnYP2SApQ4rVH3qapuxYn6ThQ7bbBlmNHrD2BBcS4+\na+xEY6sPxS4bVlW4sHhW7ph9auq7UD4rB6sr8kPnCD9ekdOKrAwLev0BlM/KRW//EM629KLV24fS\nwiy48jLQ4xtCT/8gmtw+FDutmF2QhcGhYTS0+eDu6MfyhU64O/pxtqUX+TMyUeS0wpJiQHqqGafP\n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\nhOe1+H4hN9YO3ya8j6IdP9q4XWpfJet9vOeMRYn6H60dtJC7Yhx+/yAMBsBgAIaHAb9/COnnPyTS\n3z8Ueg5KSTGG8iuyXop9GFmTpdo8sj7H+jk8VrXek5Wuc3oZP4j0NOEuUuv9cmBg9H4QCQIwNDSC\ngYEgMjIsofGymPPh8weBwPCY94F4n7ulxizRxmxTnVvJqJ+ToZcxryjZ7ZVsvP74rp8T7ombsj+a\nmgwTeQMMf1gOF23QHu084jpx//CBX/j/BwaCY5aJg0nxtd8/+iuR4naRwuMLP5dcjJExRLs+qf3l\nlsUiF8dU0urEqpyeHuk/1Berz+S2FX8OXzYyIoRyTnwd/v9Yy6NRs72VOraeckIPsYbXuQs160J+\njeba8LifRWK9k8vxeOpIvO0UT/1Wgh76TW16aoNE667UpE609+DI40i9F0uNFeRM91zVYkxaI9bN\nyPGjKFo+AhdqtVQOSi2Pp+7Gk7Phx0rk/op1/ETHtVORY8nI40TGisnk842vuX19F5ZF5jcQPSfl\nciZ8fSI/TwXWOf1Rq896e6XHIADQ339hXeT4QLw/pOYCpF7LrdNiLmoxpmj0Fi8RqUO173AnIiIi\nIiIiIiIiIrqYcMKdiIiIiIiIiIiIiEgBnHAnIiIiIiIiIiIiIlKA7v9oKhERERERERERERGRFvAT\n7kRERERERERERERECuCEOxERERERERERERGRAjjhTkRERERERERERESkAE64ExEREREREREREREp\ngBPuREREREREREREREQK4IQ7EREREREREREREZECUpIdgBqeeuopHDlyBAaDATt37sSSJUtUO9cP\nfvADfPzxxwgGg7jzzjtxySWX4OGHH8bw8DAcDgf+8R//ERaLBa+99hp+/vOfw2g04uabb8ZNN92E\noaEhPProo2hubobJZML3v/99FBcXo6amBk888QQAYMGCBfjOd74DAPjpT3+KN954AwaDAffddx82\nbNgQd5wDAwP40pe+hHvuuQerV6/WZIyvvfYafvrTnyIlJQX3338/FixYoMk41RItbz/44AM8++yz\nMJlMWL9+Pe69994kRho91quuugr5+fkwmUwAgGeeeQYulytZoaK2thb33HMP/uZv/gZbtmwZs05L\n7RotTi216UTydCprcjxxfvjhh3j22WdhNBpRWlqKJ598EgcOHMD27dsxb948AMD8+fPx+OOPJzVO\n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\nQvKLNgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d315e4a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df2 = financial_data[(financial_data['salary'] <= 1000000) | (financial_data['salary'].isnull())]\n",
" \n",
"def first_updated_dataset_matrix(): \n",
" sns.pairplot(df2, hue=\"poi\", \n",
" y_vars=['poi'],\n",
" x_vars = feature_edited[1:-1]\n",
" )\n",
" plt.show()\n",
" \n",
"first_updated_dataset_matrix()\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\naPTxqXYdT7X2EpF/o/47zomIiIiIiIiIiIiIgsGFcyIiIiIiIiIiIiIiCS6cExERERERERERERFJ\ncOGciIiIiIiIiIiIiEiCC+dERERERERERERERBJcOCciIiIiIiIiIiIikuDCORERERERERERERGR\nBBfOiYiIiIiIiIiIiIgkuHBORERERERERERERCTBhXMiIiIiIiIiIiIiIgkunBMRERERERERERER\nSXDhnIiIiIiIiIiIiIhIggvnREREREREREREREQSXDgnIiIiIiIiIiIiIpLgwjkRERERERERERER\nkQQXzomIiIiIiIiIiIiIJLhwTkREREREREREREQkwYVzIiIiIiIiIiIiIiIJLpwTERERERERERER\nEUlw4ZyIiIiIiIiIiIiISIIL50REREREREREREREElw4JyIiIiIiIiIiIiKS4MI5ERERERERERER\nEZEEF86JiIiIiIiIiIiIiCS4cE5EREREREREREREJMGFcyIiIiIiIiIiIiIiCS6cExERERERERER\nERFJcOGciIiIiIiIiIiIiEiCC+dERERERERERERERBJcOCciIiIiIiIiIiIikuDCORERERERERER\nERGRBBfOiYiIiIiIiIiIiIgkuHBORERERERERERERCTBhXMiIiIiIiIiIiIiIgkunBMRERERERER\nERERSXDhnIiIiIiIiIiIiIhIggvnREREREREREREREQSXDgnIiIiIiIiIiIiIpLgwjkRERERERER\nERERkYTe10ZBEKDRaOByuWS3a7VcdyciIiIiIiIiIiKi0cXnwvmaNWvw5z//GdOnT4dGo4EgCO5t\nGo0Ghw8fjniARERERERERERERETR5HPh/M9//jMAoLKyMirBEBERERERERERERGJbrjhBjz++ONR\nP6/PhXNRX18fnnvuORw4cAAajQZz587FVVddhaSkpEjHR0RERERERERERESnqFgsmgMBLpxv2rQJ\n+fn5uOKKKyAIAj7++GNs3LgRmzdvjnR8RERERERERERERDTKbNu2DW+//TamTp2K6upqXHXVVXjv\nvffQ09OD3t5eXH755Tj33HNx3nnn4d133416fAEtnLe1teHhhx92P162bBlWr14dsaCIiIiIiIiI\niIiIaHRLT0/HjTfeiMbGRtx2223Iy8vDb3/7W/T19eGKK67AueeeG7PYtIHsZLVaYbVa3Y/7+/sx\nODgYsaCIiIiIiIiIiIiIaHQrLi4GAJhMJjQ1NWHs2LEAgNTU1JivPwf0ifPLL78cK1aswIwZMwAA\nhw4dwrp16yIaGBERERERERERERGNXnV1dQCAEydOoLCw0P3YYrEgNTU1lqEFtnB+wQUXoKWlBf/4\nxz9gs9lw2WWX4YILLoh0bEREREREREREREQ0SnV3d+Pee+/Fl19+ibVr1+Lf//43br/9dvT09OCW\nW26JaWwBLZzfdNNNyMzMxJo1ayAIAj799FPceOONeOKJJyIdHxERERERERERERGNQvPmzcO1117r\nfrxw4cJh+8TiD4MCAS6cd3d348knn3Q/XrVqFb73ve9FLCgiIiIiIiIiIiIiolgJaOG8uLgYra2t\nMJlMAIC2tjaMGzcuooERERERERERERER0ei0cuXKWIfgU0AL542NjTjvvPMwadIkuFwu1NTUYOLE\nifjf//1fAMCLL74Y0SCJiIiIiIiIiIiIiKIloIXzn//855GOg4iIiIiIiIiIiIhIFQJaOD/jjDMi\nHQcRERERERERERERkSpoYx0AEREREREREREREZGaBPSJcyIiIiIiIiIiIiKiaGloaMBFF12EmTNn\nup8rKyvDL3/5y2H7rl69Gps2bcKUKVPCdn4unBMRERERERERERGR6pSWlmLr1q0xOTcXzomIiIiI\niIiIiIgoZBU17figvAGHajowozQbS+cVY3ppTtjP43A4cNttt6GlpQX9/f24/vrrsWzZspNxVFTg\nrrvugsFggMFgwCOPPAKtVosNGzagu7sbTqcTGzduRFlZmd9zceGciIiIiIiIiIiIiEJSUdOOXz25\nC4N2JwCgtqkH/9pbj1//dFHYF8+7u7txzjnn4Dvf+Q7q6+uxbt06j4Xzbdu2YdWqVfj2t7+NXbt2\nobW1FTt27MDixYtx6aWXorq6Gvfeey+effZZv+fiwjkRERERERERERERheSD8gb3orlo0O7EB+UN\nI144r6mpwerVq92PFy5ciI6ODrzyyivQarXo6ury2P9rX/sa7rzzThw/fhwrVqzAxIkT8dlnn6Gj\nowPbt28HAFit1oDOzYVzIiIiIiIiIiIiIgrJoZoO2ecrFJ4Phvd3nP/tb39DTU0N/vKXv6CrqwuX\nXHKJx/6LFi3Ca6+9hvfffx/r16/HrbfeioSEBGzatAlz584N6tzaEUdPRERERERERERERKekGaXZ\nss9PV3h+JDo7O1FcXAytVot3330XNpvNY/sLL7yArq4uXHzxxVizZg0OHz6M2bNn47333gMAVFdX\nB/Q1LQA/cU5EREREREREREREIVo6rxj/2lvv8XUtiQk6LJ1XHPZznX/++bjmmmvw+eef47vf/S4K\nCgrwu9/9zr197NixWLduHdLS0mAwGHDfffchKSkJt99+O773ve/B5XLhl7/8ZUDn4sI5ERERERER\nEREREYVkemkOfv3TRfigvAEVNR2YXpqNpfOKR/z95sXFxdi2bduw59544w3344svvhgAsHbtWgDA\nlClTsGTJkmHH2rJlS9Dn58I5EREREREREREREYVsemnOiBfK1YbfcU5EREREREREREREJMGFcyIi\nIiIiIiIiIiIiCS6cExERERERERERERFJcOGciIiIiIiIiIiIiEiCC+dERERERERERERERBL6WAdA\nRERERERERERERCS6//77cejQIbS2tsJqtWLs2LHIyMjA7373u6jFwIVzIiIiIiIiIiIiIlKN9evX\nAwC2bduGI0eO4Lbbbot6DPyqFiIiIiIiIiIiIiIKWWVrNZ7e9xJu3nEPnt73Eipbq8N+jt27d+On\nP/0pVq9ejYMHD2LhwoXubTfccAN2794Ni8WCG264AWvWrMGVV16JysrKkM/HT5wTERERERERERER\nUUgqW6txzwePw+a0AwDquk9g5/Fd2Lj0BpSZJoX1XFVVVXj77bdhMBhktz///PNYvHgxLr30UlRX\nV+Pee+/Fs88+G9K5uHBORERERERERERERCH5b+1e96K5yOa046PavWFfOJ86dariojkAfPbZZ+jo\n6MD27dsBAFarNeRzceGciIiIiIiIiIiIiEJS2XY0qOdHQmnR3G4fWrhPSEjApk2bMHfu3BGfi99x\nTkREREREREREREQhKcudGNTz4aLRaGC1WmG1WnH48GEAwOzZs/Hee+8BAKqrq0P+mhaAC+dERERE\nREREREREFKJzxi2AQZfg8ZxBl4Czxy2I6HlXrVqFyy67DLfffjtmzJgBALjyyitRV1eH733ve9i4\ncSPmz58f8vH5VS1EREREREREREREFJIy0yRsXHoDPqrdi8q2oyjLnYizxy0Iy/ebr1y50v3vhQsX\nYuHChe7H69atw7p164a9ZsuWLSM+L8CFcyIiIiIiIiIiIiIagTLTpLD/IdBY41e1EBERERERERER\n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\nzzzzDIxGI371q19h+/bt+M53voPHH38cfX19SE1NxT//+U9cfvnlMJvNOHjwIN58802YzWacd955\neO655/CLX/zC/YnMGTNm4A9/+ANee+01GAwGPP/883jyySexfv16WCwWTJkyBT/+8Y/xu9/9Dq++\n+io2btyIP//5z7jmmmuwaNEirF27Fm+//TZyc3Px4Ycfwmw2R21R84svvnB/Aspms+G0005DfX09\n3n33Xbz33ntwOBy44oorsGLFCuTk5EQlplNVVVUVfv/736OgoAC33HILnvv/7d17XM15/sDxV3U6\nkja5lpolt2FCqWgsNZF7al2KiIZY1+SyzRJdXaey0bK5jMcwDZod5B4aE2siYolU0pBrLptmJorU\nqfP7o8f5/jo5J5kRMzuf5189zuV7Ob3P9/s+n/fn+/5+8QW7du3S+B3RFlfarF279p3FWH3SFL8q\n3377LX379v3dzbx5W8XJkpISAgICePLkCQqFgn79+uHm5kZMTAxKpRITExO8vLwICQnh4cOHKBQK\nhg8fjre3N5WVlSxfvpzMzEwAfH19GTp0qLTs8vJyZsyYgZubGyNHjtS4fg8PD4KCgrCzswNg0qRJ\n+Pr60qhRo1qL/ffu3cPb25vvvvsOqBoEUigUzJ8/n7NnzxIbG4tSqUQmk7Fs2bJ6G8QUsVv/MjIy\nOHbsGDt27EBHR4eVK1dSVFREkyZNOHToEKdOncLPzw8zMzOgavLI559/zpMnTxgwYAAjRowgISGB\nli1bsnz5cioqKhgzZgy9e/cGID09ncTERBo0aMDAgQO5evUq586deymPBggPD2fy5Mn06tWLgoIC\nvLy8+Oabb9i4cSPLli3DxsaGy5cv8+jRIzFw/pa9TpwsWbIEJycnPDw8ePbsGcOHD6dPnz5A1bFl\n+/bt6OjoMHHiRKZMmULfvn1JTEzkyJEjfPDBB9I6NZ2TVblX9e3YtWsXjo6OHDx4kKNHj6Krq8vo\n0aNrHTgvKipix44d/Oc//0FPT4/Dhw/z+PFj/P39iYmJISoqivT0dL755ht27dqFvr4+c+bM4dCh\nQzg4OLBx40YSExMxMDAgMDCQvLw8adkJCQnk5OSo/Q6s6fnz5wQHB7N7927MzMzYvn07MTExfPrp\npwCYmJgQFxfHmTNniIyMZO/evTg5OWFvb4+7uzunT58G4P79+6xbt67OOZC/v7/G/a75vxbH3VdL\nS0tj/fr1NGjQABcXFzIzM18qHubm5hIaGoq+vj6lpaX4+flRXl6uNjFo/fr1dO7cmatXrxIXF4eV\nlRVZWVkoFAoWLVrEgwcPAPjrX//K9evX1XIThUJBZGQkCoWC8vJyQkNDsbKy4uLFi4SFhdG0adOX\nJvJpcvbsWaKjozEwMKCsrIygoCAyMzPV1lVSUkJERAQymQwdHR1CQ0Pp0KEDt27deqkAVl1OTg5/\n+9vf2Lx5s3QeqU8ifrWrrKwkKCiIa9euYWFhwbNnzwA0TmxLTEwkKyuL6OhoFAoFFhYWGmPNx8dH\nLX579uwpTQgNDg5+Y4VO1aSnCxcuaCzI6+josH79epKTk9HV1WX48OFMmDCBmzdvEhYWhlKpRKFQ\nEBAQQI8ePQgMDKRJkybcuHGD69evExAQwPHjx8nNzcXOzo4lS5YAsHr1ai5evEhpaSk9e/ZkwYIF\n6Ojo1Pv/SnjzxMD5O+Dk5ER8fDyBgYE4Ozvj5eVFVlYWUVFRvHjxgqdPn9K4cWO198hkMnR1dfH2\n9kYmk5GXl8ePP/4IgFKplH7UDh06lJiYGEpKSjh27Bju7u6/24O7ANnZ2XTp0kWayezg4KDxEtLm\nzZuzcOFClEolBQUF2Nra1nkdJiYmdO3aFQA7Ozvi4uKkx6dNm4auri75+fm0aNGCRo0a0b9/f5KS\nkhg8eDDXr1+nd+/e7Nu3j65duyKXyzEzM6OyshJ7e3sATE1Nefr0Kenp6RQUFDBlyhSgKpmpPvDU\nq1cvAMzNzTW2IfD09OQvf/kLgwcPZsiQIbRt27bO+/hLNWzYkC+//FLtRHn48GFsbGyk9iydOnUi\nNzdXzCCtZ+3atZMSb1tbW7Zt21brd+RVcVXdu4yx+qQpflVOnDjxu+wb/7aKk6mpqSgUCuLj46ms\nrGTbtm1YWFgwcuRIFAoFvr6+bNq0CWNjY6KjoyktLcXV1RUnJycuXLjA48eP2blzJ0+ePOGTTz5h\n0KBB0rJDQkLo3bu31kFzAHd3d5KSkrCzs6OwsJAbN27g6OjIiRMnai32a/P8+XPCwsL4+uuvMTEx\n4dtvvyUqKupn9xJ+FRG79S8tLY07d+7w8ccfA1U9Y2UyGSEhIYwbN4527doxYsQI6fWOjo4AGBsb\nY2lpye3bt0lLS+Phw4ecP38eqDq/37lzBwBra2sMDAwAaNWqFUVFRRrzaNW2lJSUEBsbC1TlzoWF\nhYwaNYrAwEAGDRrEoEGDsLGxeTsfjiB5nThJS0vjypUr7Nu3D6j6P967dw8AGxsb6fuckZGBg4MD\nAMOGDZPeq6LpnLx582aN25Gbm0uXLl2Qy+UA9OjRo9b9ady4MU5OTkyYMIGBAwfi6uqKmZmZWvuM\ny5cv07NnT/T19YGq/OLKlSs0bNiQLl26SHGtugoTqo756enpJCUloaenp3X9t27dolmzZlI+UzN3\nUX3P7OzsuH79utblvOp3Qs0cSNt+VyeOu3WXmZlJcnIyu3fv1lg83L17Ny4uLkybNo3CwkJSUlIY\nMWKE2sSg9evXY2ho+NLNLT///HPMzMxYs2YNt27dIjY2llWrVqnlJu7u7sTGxtK6dWtycnJYvHgx\ne/bsISoqik8++QRnZ2e2bt36yv2Ii4vD19cXV1dX8vLyuHnzJt7e3mrrGjx4MKtWrcLa2poTJ06w\nZMkStm3bRlhYmNYC2MOHD1m4cCExMTFvZdAcRPzWJjU1lby8PBISEigtLWXgwIHY2dmRlJSkcWJb\nUlISM2fOpHfv3lpjDVCL3+oTQjUVXH9OobMmTQX5Z8+e8e9//5udO3dSWVmJv78/f/7zn6U8f+jQ\noVy7do1Zs2aRnJwMwOPHj/nss8/Ys2cPS5cu5dixY8jlchwcHAgICOD06dM8evRI2jc/Pz9OnDjx\ns1sfCe+WGDh/B9q3b09iYiLnz5/n6NGjxMXF8cMPP7BkyRL+9Kc/ceLECbZs2aL2ngsXLpCQkEBC\nQgKGhobMmTNH7XlVUqY6ABw7doykpCTCwsLe2n4Jv35KpfKlRKC8vJx58+axd+9eLC0t2b59uzRD\nsa7LrLn8hw8fEhkZSWJiIs2aNVO7jHPs2LFEREQgl8sZNmyYVNip+QOh+qVzSqUSuVyOtbU1mzZt\n0rgd1d9ffZtUFi1aRH5+PidPnsTPz4+FCxe+tUvHOnfuzHfffYezszOJiYk0bdqU1q1bExcXR2Vl\nJRUVFeTm5ooZcG9B9UKiUqnkxYsXas/X/I68Kq7Ky8ulv99ljNUnTfGrKvBkZmbSuXPnd7yF7059\nFyft7OxYu3Ytc+fOxdnZmdGjR79UDL98+TKjRo0CwMDAgK5du5KVlUVGRobUts3Y2JjPPvtMes+6\ndet4/vy5VIjUZtiwYYwbN45FixZx9OhRhgwZgp6eHs2bN6+12K/N999/T0FBAf7+/kBVy5v6nHkj\n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\nK9EILuxnAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d33847f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"matrix_of_poi()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Skinnier distribution on POIs regarding__: \n",
"1. salary; \n",
"2. total payments; \n",
"3. bonus;\n",
"4. total stock value; \n",
"5. expenses;\n",
"6. other.\n",
"\n",
"__To be checked__: \n",
"1. restricted stock; \n",
"2. exercised stock options. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Removing other outliers\n",
"\n",
"We will do that with one restriction: if too much pois will be eliminated after removing outliers - we include relevant feature in our investigation later. \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__SUBTASK__ Removing outliers at restricted stock "
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d2e86358>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f1 = df2[((financial_data['restricted_stock'] <= 1750000)\n",
" & (financial_data['restricted_stock'] > 0))\n",
" | (financial_data['restricted_stock'].isnull())]\n",
"plt.scatter(f1.restricted_stock, f1.poi)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Number of pois: "
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(f1[f1['poi']])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__RESULTS__: Too much POIs have been eliminated. Keeping this data seems to influence on the performing further analysis negatively because of a lot of NANs, so we will __eliminate__ restricted stock<br>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## __SUBTASK__ Removing outliers at exercised stock options"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d2f20048>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f1 = df2[((financial_data['exercised_stock_options'] <= 3000000))]\n",
"plt.scatter(f1.exercised_stock_options, f1.poi)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(f1[f1['poi']])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__RESULTS__: For similar reasons to the above we should eliminate these data. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 3: Create new feature(s)\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"financial_features_list = ['poi',\n",
" 'salary', \n",
" 'total_payments',\n",
" 'bonus',\n",
" 'total_stock_value', \n",
" 'expenses',\n",
" 'deferred_income', \n",
" ] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before we perform further, we will set our dataset. "
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data = df\n",
"data.deferred_income = financial_data.deferred_income\n",
"data = df[(df['salary'] <= 1000000) | (df['salary'].isnull())]\n",
"data = data[financial_features_list]\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f47d2e6ac88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"correlat = data.corr()\n",
"plt.rcParams['figure.figsize'] = [6.0, 4.0]\n",
"sns.heatmap(correlat,\n",
" annot=True,\n",
" cbar=True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is a correlation between salary and total_payment. Here I will set a salary / total_payments ratio with the following assumptions:\n",
"1. the lesser ratio - more likely that you are poi, because you spend more than you earn and from which title you have such payment. \n",
"2. a salary is something that you could not hide from the tax / financial audit. More sophisticated financial instruments (e.g. restricted stocks or bonuses) could be better to allocate defrauded money. "
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"new_feature = data.salary / data.total_payments\n",
"data['salary_total_payment_ratio'] = new_feature"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We save the data in order to perform faster our investigation."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"data.to_csv('training_dataset.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 4: Try a variety of classifiers "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Short summary__: I went go through process of choosing classifier. Firstly I have scaled data and imputed NANs with ```imputer```. Then I have used cross validation in order to compare algorithm with performance ratio i.e. precision and recall. Good precision and recall have __DecisionTreeClassifier__ and __DecisionTreeRegressor__. We will test them further. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__SUBTASK__: Preparing data through scaling and eliminating NANs with Imputer."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Why?__: Scaling ensures that big features won't influence the convergence of the algorithm (similarities located in the greater Euclidean distances between samples could be not visible). "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"features_list = financial_features_list\n",
"training_dataset = pd.read_csv('training_dataset.csv')\n",
"\n",
"y = np.where(training_dataset.poi.values==1, 1, 0)\n",
"\n",
"for i in training_dataset.columns:\n",
" imp = Imputer(missing_values='NaN', strategy='mean', axis=1)\n",
" xlist = imp.fit_transform(training_dataset[i].reshape(1, -1).tolist()).tolist()[0]\n",
" training_dataset[i] = pd.Series(xlist, index=training_dataset.index)\n",
"scaler=StandardScaler() \n",
"training_dataset[features_list] = scaler.fit_transform(training_dataset[features_list])\n",
"\n",
"X = training_dataset[features_list[1:]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will use cross validation in order to not overfit data."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(np.array(X),y, test_size = 0.2, random_state=42)\n",
"skf = StratifiedKFold(n_splits=10, random_state=42, shuffle=True)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"np.random.seed(123)\n",
"def searcher(clf, table):\n",
" results = []\n",
" matrix = np.array([0,0,0,0])\n",
" for i in range(100):\n",
" for train, test in skf.split(X_train, y_train):\n",
"\n",
" clf.fit(X_train[train], y_train[train])\n",
" \n",
" # The score should be differently calculated for DTRegressor and BayesianRidge\n",
" if isinstance(clf, DecisionTreeRegressor) or isinstance(clf, BayesianRidge):\n",
" clf.fit(X_train[train], y_train[train])\n",
" score = clf.predict(X_train[test]).round()\n",
" result = (len(y_train[test]) - abs((y_train[test] - score).sum()))/len(y_train[test])\n",
" results.append(result)\n",
" else:\n",
" results.append(clf.score(X_train[test], y_train[test]))\n",
" matrix += confusion_matrix(clf.predict(X_train[test]).round(), \n",
" y_train[test], \n",
" labels = [0,1]).ravel()\n",
" pattern = re.compile(\"(\\S+)([(])\")\n",
" \n",
" tn, fp, fn, tp = matrix.tolist()\n",
" \n",
" table.add_row([pattern.findall(str(clf))[0][0], tn, fp, fn, tp, np.array(results).mean()]) \n",
"\n",
"table = PrettyTable(['Classifier', 'TN', 'FP', 'FN', 'TP', 'accuracy'])\n",
"\n",
"for i in [GaussianNB(), \n",
" BayesianRidge(), \n",
" DecisionTreeClassifier(), \n",
" LogisticRegression(), \n",
" SGDClassifier(), \n",
" KNeighborsClassifier(), \n",
" DecisionTreeRegressor(),\n",
" SVC()]:\n",
" searcher(i, table)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+------------------------+------+------+------+-----+----------------+\n",
"| Classifier | TN | FP | FN | TP | accuracy |\n",
"+------------------------+------+------+------+-----+----------------+\n",
"| GaussianNB | 8700 | 1200 | 1200 | 200 | 0.79 |\n",
"| BayesianRidge | 9900 | 1400 | 0 | 0 | 0.877878787879 |\n",
"| DecisionTreeClassifier | 8861 | 819 | 1039 | 581 | 0.838901515152 |\n",
"| LogisticRegression | 9600 | 1400 | 300 | 0 | 0.852121212121 |\n",
"| SGDClassifier | 8928 | 1222 | 972 | 178 | 0.80751969697 |\n",
"| KNeighborsClassifier | 9600 | 1400 | 300 | 0 | 0.852121212121 |\n",
"| DecisionTreeRegressor | 8830 | 822 | 1070 | 578 | 0.931833333333 |\n",
"| SVC | 9900 | 1400 | 0 | 0 | 0.877878787879 |\n",
"+------------------------+------+------+------+-----+----------------+\n"
]
}
],
"source": [
"print(table)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Good precision and recall performance have __DecisionTreeClassifier__ and __DecisionTreeRegressor__. We will test them further checking their performance in line with precision and recall"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBSTASK: Precision/Recall explanation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's consider that we have already train a model and would like to test its performance on a set of 10 persons from which 3 are POI and the rest are innocent employees. If our model was perfect, the desired accuracy will be 100%. \n",
"\n",
"Our model|Real set|Error|\n",
":-:|:-:|:-:|:-:|\n",
"1\t|\t <font bgcolor=\"green\"><u>__1__</u></font>\t|\t1\n",
"1\t|\t<font bgcolor=\"green\"><u>__1__</u></font>\t|\t1\n",
"1\t|\t<font bgcolor=\"green\"><u>__1__</u></font>\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"\t|\tAccuracy\t|\t100,00%\n",
"\n",
"A such situation requires the following statements to be true:\n",
"1. Our model qualified 3 persons as POI and among them are 3 correctly selected persons and 0 incorrectly selected persons.\n",
"2. Our model qualified 7 persons as innocent employees and among them are 7 correctly selected persons and 0 incorrectly selected persons \n",
"\n",
"|POI according to model|nonPOI according to model|Total\n",
":-:|:-:|:-:|\n",
"True POIs|3|0|3\n",
"True nonPOIs|0|7|7\n",
"TOTAL|3|7|10\n",
"\n",
"\n",
"In this example:\n",
"3. __Precision__ amounts to 100% [ = 3 correctly selected POIS/all (3) selected POIs].\n",
"4. __Recall__ amounts to 100% [ = 3 correctly selected POIs/3 POIs in the set]. \n",
"\n",
"\n",
"\n",
"\n",
"But normal models are less accurate (80-95%). For example, let's assume that our model is not able to find a POI very well and achieve approx. 80% accuracy:\n",
"\n",
"\n",
"Our model|Real set|Error|\n",
":-:|:-:|:-:|:-:|\n",
"1\t|\t0\t|\t0\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t0\t|\t1\n",
"0\t|\t1\t|\t0\n",
"\t|\tAccuracy\t|\t80,00%\n",
"\n",
"\n",
"\n",
"In our example following statements could be true:\n",
"1. Our model qualified 1 persons as POI and among them are 0 correctly selected person and 1 incorrectly selected person. \n",
"2. Our model qualified 9 persons as innocent employees and among them are 8 correctly selected persons and 1 incorrectly selected person.\n",
"\n",
"|POI according to model|nonPOI according to model|Total\n",
":-:|:-:|:-:|\n",
"True POIs|1|1|2\n",
"True nonPOIs|1|7|8\n",
"TOTAL|2|8|10\n",
"\n",
"In this example:\n",
"3. __Precision__ amounts to 0% [=0 correctly selected POIS/all (1) selected POIs].\n",
"4. __Recall__ amounts to 0% [=0 correctly selected persons/1 POIs in the set].\n",
"\n",
"The above proves that the accuracy is not a proper measure in assessing whether somebody is a POI or not.\n",
"\n",
"Below I summarize more generalized way of thinking about of precision and recall in the so called confusion matrix:\n",
"\n",
"|Positive example according to the model |Negative example according to the model|\n",
":|:|:\n",
"Real positive example|True positive (TP)|False negative(FN)\n",
"Real negative example|False positive (FP)|True negative(TN)\n",
"\n",
"Bearing the above in mind, precision is: \n",
"\n",
"<center>$precision=\\frac{TP}{TP + FP}$</center>\n",
"\n",
"where:\n",
"TP - true positives,\n",
"FP - false positives. \n",
"\n",
"Consequently, recall is: \n",
"\n",
"<center>$recall=\\frac{TP}{TP + FN}$</center>\n",
"\n",
"where:\n",
"TP - true positives,\n",
"FN - false negatives.\n",
"\n",
"So analyzing our two examples we could express those features in the following words:\n",
"1. precision tells us how many times our model correctly indicates the person as the POI; \n",
"2. recall tells us how good our model is at finding the POI in the dataset. \n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 5: Tune your classifier to achieve better than .3 precision and recall "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Short summary__: We use algorithms in machine learning in order to find the best model describing the tested dataset and that could give us the answer on the new future data of the same kind (e.g. classification of the persons from a corporation other than ENRON as the person of interest). Such a model describes the best set of weights that give us most accurate answers on the dataset. <br>\n",
"In order to find this model via algorithm, algorithm uses strict rules (e.g. learning rates, tolerance, momenta) that could to be customized by the researcher. Those rules are __parameters__. \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DecisionTreeClassifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Firstly we would like to control precision and recall, so we could see how parameters will influence on this. We will retrieve all combination from the customized classifier performer function, than we will test confusion matrix on each of them. "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def classifier_performer(clf, X, y, file, parameters):\n",
" X = np.array(X)\n",
" \n",
" # Setting our metrics\n",
" true_negatives = []\n",
" false_positives = []\n",
" false_negatives = []\n",
" true_positives = []\n",
" acc = []\n",
" \n",
" # Preparing parameters \n",
" clf_pattern = clf\n",
" n = 0\n",
" np.random.seed(123) \n",
" \n",
" # Here we use validation technique\n",
" cv = StratifiedShuffleSplit(y, 1000, random_state = 42)\n",
" \n",
" for i in parameters:\n",
" n += 1\n",
" \n",
" clf = clf_pattern(**i)\n",
" sys.stdout.write(\"Checking parameters {}/{}\\r\".format(str(n), len(parameters)))\n",
" accuracy = []\n",
" matrix = np.array([0,0,0,0])\n",
" \n",
" \n",
"\n",
" for train_idx, test_idx in cv: \n",
" X_train = []\n",
" X_test = []\n",
" y_train = []\n",
" y_test = []\n",
" for ii in train_idx:\n",
" X_train.append( X[ii] )\n",
" y_train.append( y[ii] )\n",
" for jj in test_idx:\n",
" X_test.append( X[jj] )\n",
" y_test.append( y[jj] )\n",
" clf.fit(X_train, y_train)\n",
" score = clf.predict(X_test).round()\n",
" result = (len(y_test) - abs((y_test - score).sum()))/len(y_test)\n",
" accuracy.append(result)\n",
" matrix += confusion_matrix(clf.predict(X_test).round(), y_test, labels = [0,1]).ravel()\n",
"\n",
" tn, fp, fn, tp = matrix.tolist()\n",
" acc.append(np.array(accuracy).mean())\n",
" true_negatives.append(tn)\n",
" false_positives.append(fp)\n",
" false_negatives.append(fn)\n",
" true_positives.append(tp)\n",
" \n",
" data = {'params': parameters, \n",
" 'tn':true_negatives, \n",
" 'fp': false_positives, \n",
" 'fn':false_negatives, \n",
" 'tp':true_positives, \n",
" 'acc':acc}\n",
" \n",
" data = pd.DataFrame(data=data, \n",
" columns=['tp','tn','fn',\n",
" 'fp', 'acc', 'params']).sort_values(['tp', 'tn'], ascending=False)\n",
" \n",
" data['recall'] = data.tp/(data.tp+data.fn)\n",
" data['precision'] = data.tp/(data.tp+data.fp)\n",
" data.to_csv(file)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then we apply the function to the DecisionTreeRegressor and DecisionTreeClassifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Founding DecisionTreeRegressor's best score"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking parameters 2016/2016\r"
]
}
],
"source": [
"param_range = [0.00001, 0.0001, 0.001, 0.01, 1.0, 1/5]\n",
"parameters = [\n",
" {'criterion':criterion, \n",
" 'max_depth':max_depth,\n",
" 'max_features': max_features,\n",
" 'presort': presort,\n",
" 'min_impurity_decrease':min_impurity_decrease} \n",
" for criterion in [\"mse\", \"friedman_mse\", \"mae\"] \n",
" for spliter in [\"best\", \"random\"] \n",
" for max_depth in[2,3,4,8]\n",
" for max_features in [2,4,6,'auto', 'sqrt', 'log2', None]\n",
" for presort in [False, True]\n",
" for min_impurity_decrease in param_range]\n",
"\n",
"clf = DecisionTreeRegressor\n",
"\n",
"classifier_performer(clf, X, y, \"decision_tree_regressor_results.csv\", parameters)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's get the parameters that give us both recall and precision above 39%."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>tp</th>\n",
" <th>tn</th>\n",
" <th>fn</th>\n",
" <th>fp</th>\n",
" <th>acc</th>\n",
" <th>params</th>\n",
" <th>recall</th>\n",
" <th>precision</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>953</td>\n",
" <td>787</td>\n",
" <td>11897</td>\n",
" <td>1103</td>\n",
" <td>1213</td>\n",
" <td>0.9324</td>\n",
" <td>{'criterion': 'friedman_mse', 'presort': False...</td>\n",
" <td>0.416402</td>\n",
" <td>0.3935</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 tp tn fn fp acc \\\n",
"2 953 787 11897 1103 1213 0.9324 \n",
"\n",
" params recall precision \n",
"2 {'criterion': 'friedman_mse', 'presort': False... 0.416402 0.3935 "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decision_tree_regressor_results = pd.read_csv('decision_tree_regressor_results.csv')\n",
"decision_tree_regressor_results[(decision_tree_regressor_results.recall>0.39)&(decision_tree_regressor_results.precision>0.39)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So our best params for the DecisionTreeRegressor are:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"DecisionTreeRegressor_best_score = decision_tree_regressor_results.get_value(2, \"params\")"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"{'criterion': 'friedman_mse', 'presort': False, 'min_impurity_decrease': 0.2, 'max_features': 6, 'max_depth': 8}\""
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DecisionTreeRegressor_best_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Founding DecisionTreeRegressor's best score\n"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking parameters 1344/1344\r"
]
}
],
"source": [
"param_range = [0.00001, 0.0001, 0.001, 0.01, 1.0, 1/5]\n",
"parameters = [\n",
" {'criterion':criterion, \n",
" 'max_depth':max_depth,\n",
" 'max_features': max_features,\n",
" 'splitter': splitter,\n",
" 'presort': presort,\n",
" 'min_impurity_decrease':min_impurity_decrease} \n",
" for criterion in [\"gini\", \"entropy\"] \n",
" for splitter in [\"best\", \"random\"]\n",
" for max_depth in[2,3,4,8]\n",
" for max_features in [2,4,6,'auto', 'sqrt', 'log2', None]\n",
" for presort in [False, True]\n",
" for min_impurity_decrease in param_range]\n",
"\n",
"clf = DecisionTreeClassifier\n",
"\n",
"classifier_performer(clf, X, y, \"decision_tree_classifier_results.csv\", parameters)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's get the parameters that give us both recall and precision above 37%."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>tp</th>\n",
" <th>tn</th>\n",
" <th>fn</th>\n",
" <th>fp</th>\n",
" <th>acc</th>\n",
" <th>params</th>\n",
" <th>recall</th>\n",
" <th>precision</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>332</td>\n",
" <td>787</td>\n",
" <td>11727</td>\n",
" <td>1273</td>\n",
" <td>1213</td>\n",
" <td>0.930533</td>\n",
" <td>{'max_depth': 8, 'splitter': 'best', 'max_feat...</td>\n",
" <td>0.382039</td>\n",
" <td>0.3935</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>326</td>\n",
" <td>781</td>\n",
" <td>11731</td>\n",
" <td>1269</td>\n",
" <td>1219</td>\n",
" <td>0.929333</td>\n",
" <td>{'max_depth': 8, 'splitter': 'best', 'max_feat...</td>\n",
" <td>0.380976</td>\n",
" <td>0.3905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>284</td>\n",
" <td>772</td>\n",
" <td>11754</td>\n",
" <td>1246</td>\n",
" <td>1228</td>\n",
" <td>0.930533</td>\n",
" <td>{'max_depth': 8, 'splitter': 'best', 'max_feat...</td>\n",
" <td>0.382557</td>\n",
" <td>0.3860</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>278</td>\n",
" <td>752</td>\n",
" <td>11756</td>\n",
" <td>1244</td>\n",
" <td>1248</td>\n",
" <td>0.930667</td>\n",
" <td>{'max_depth': 8, 'splitter': 'best', 'max_feat...</td>\n",
" <td>0.376754</td>\n",
" <td>0.3760</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>272</td>\n",
" <td>749</td>\n",
" <td>11743</td>\n",
" <td>1257</td>\n",
" <td>1251</td>\n",
" <td>0.931467</td>\n",
" <td>{'max_depth': 8, 'splitter': 'best', 'max_feat...</td>\n",
" <td>0.373380</td>\n",
" <td>0.3745</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 tp tn fn fp acc \\\n",
"0 332 787 11727 1273 1213 0.930533 \n",
"2 326 781 11731 1269 1219 0.929333 \n",
"7 284 772 11754 1246 1228 0.930533 \n",
"12 278 752 11756 1244 1248 0.930667 \n",
"13 272 749 11743 1257 1251 0.931467 \n",
"\n",
" params recall precision \n",
"0 {'max_depth': 8, 'splitter': 'best', 'max_feat... 0.382039 0.3935 \n",
"2 {'max_depth': 8, 'splitter': 'best', 'max_feat... 0.380976 0.3905 \n",
"7 {'max_depth': 8, 'splitter': 'best', 'max_feat... 0.382557 0.3860 \n",
"12 {'max_depth': 8, 'splitter': 'best', 'max_feat... 0.376754 0.3760 \n",
"13 {'max_depth': 8, 'splitter': 'best', 'max_feat... 0.373380 0.3745 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decision_tree_results = pd.read_csv('decision_tree_classifier_results.csv')\n",
"decision_tree_results[(decision_tree_results.precision>0.37)&(decision_tree_results.recall>0.37)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And the best params are:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"{'max_depth': 8, 'splitter': 'best', 'max_features': None, 'presort': True, 'min_impurity_decrease': 0.001, 'criterion': 'gini'}\""
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DecisionTreeClassifier_best_score = decision_tree_results.get_value(0, \"params\")\n",
"DecisionTreeClassifier_best_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__SUBTASK__: Explaining validation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Validation__: It is technique of assessing whether our model properly classify new data that have not been used during creation of this model. <br>\n",
"\n",
"S.Raschka enumerates two methods of holdout cross validation:\n",
"1. division dataset on the training data and testing data - that is depreciated;\n",
"2. division dataset on the training data, __validating data__ and testing data; \n",
"\n",
"I. Holdout method with two sets\n",
"\n",
"The main risk of using this approach is that after training data we assess performance of our data with the test data. If this performance is very poor, we want to tune parameters further in order to fit the test data. But then it is high risk that our test data become in fact __the part of training data__ and the model will overfit the entire dataset. If we would like to use our model in the new data its performance could be still very poor. \n",
"<br><br><br>\n",
"\n",
"\n",
"![two sets](data/testing.png)\n",
"\n",
"<br><br><br>\n",
"\n",
"II. Holdout method with three sets\n",
"\n",
"In this case the above method risks are minimized because we have third additional set of data: validation set. We use it with training data in order to tune parameters. The test data are only used once - in order to check the final performance. <br><br><br>\n",
"![three sets](data/method2.png)\n",
"<center>Source: S.Raschka, p. 174.</center><br><br><br><br>\n",
"\n",
"However, still the final performance is based on the choice of the three sets that could differ from the performance of other possible scenario of choosing another three sets. \n",
"\n",
"III. Kfold validation\n",
"\n",
"This method wins that disadvantage. The training set is divided on n-folds (where n is natural number). In the every of n-iteration the set is divided on the training folds (n folds without k-fold) and one test fold (k-fold). During iteration firstly the model is applied to the training folds and its performance is validated on basis of the k fold. All scores of <i>n</i> iteration is then adding up and the average performance is calculated. <br><br>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![cross](https://sebastianraschka.com/images/faq/evaluate-a-model/k-fold.png)\n",
"<center>Source: https://sebastianraschka.com/images/faq/evaluate-a-model/k-fold.png</center><br><br>\n",
"\n",
"__This strategy is applied in the \"tester.py\" (with shuffling mode enabling randomizing selection).__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 6: Dump your classifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: summary of results and interpretation of my metrics "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"File \"tester.py\" uses cross validation (StratifiedShuffleSplit) method that enables me to find a proper algorithm to look for the frauds on the ENRON dataset, which is however very small base. With randomized choices of batches that make up to 15000 samples we could be relatively sure that it will perform on the similar data. The file delivers with average performance metrics for precision and recall. Below I show performance of chosen and tuned classifiers "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"|Classifier|Parameters|Precision(Average)|Recall(Average)|Accuracy\n",
"|:-|:-|:-:|:-:|:-:|\n",
"|DecisionTreeClassifier|class_weight=None, <br>criterion='gini',<br> max_depth=8,<br>max_features=None, <br>max_leaf_nodes=None,<br>min_impurity_decrease=0.001,<br> min_impurity_split=None,<br>min_samples_leaf=1,<br> min_samples_split=2,<br>min_weight_fraction_leaf=0.0, <br>presort=True,<br> random_state=None,<br>splitter='best'|0.37844|0.38450|0.83373\n",
"|AdaBoostClassifier with DecisionTreeClassifier|algorithm='SAMME.R'<br>learning_rate=0.0001<br> n_estimators=100|0.38370|0.40500|0.83393\t\n",
"|DecisionTreeRegressor|criterion='friedman_mse'<br>max_depth=8<br>max_features=6<br>max_leaf_nodes=None<br>min_impurity_decrease=0.2<br>min_impurity_split=None<br>min_samples_leaf=1<br>min_samples_split=2<br>min_weight_fraction_leaf=0.0<br>presort=False<br>random_state=None<br>splitter='best'|0.40213|0.37700|0.84220\n",
"|AdaBoostRegressor with DecisionTreeRegressor<br>splitter='best'|learning_rate=0.1<br>loss='linear'<br>n_estimators=100<br>random_state=None|0.50227|0.33250\t|0.86707\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember that:\n",
"1. precision tells us how many times our model does correctly indicate the person as the POI;\n",
"2. recall tells us how good our model is at finding the POI in the dataset.\n",
"\n",
"Regardless to accuracy DecisionTreeRegressor with AdaBoostRegressor gives relatively better precision (approx. 0.50) in founding POI. Simultaneously recall is worse than the best in this matter DecisionTreeClassifier. Adaptive Boosting Algorithm gives us in the case of DecisionTreeClassifier better precision but worser recall. \n",
"\n",
"__Therefore we could say that if we would like to find a POI better would to be use of AdaBoostClassifier with DecisionTreeClassifier because it finds 43% of the POIs in the dataset on average. However more \"predigious\" is AdaBoostRegressor with DecisionTreeRegressor__. \n",
"\n",
"Below please find chunks of codes I have used in searching the best params + validation of the feature importance made by the trees"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training DecisionTreeClassifier"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=8,\n",
" max_features=None, max_leaf_nodes=None,\n",
" min_impurity_decrease=0.001, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=True, random_state=None,\n",
" splitter='best')\n",
"\tAccuracy: 0.83373\tPrecision: 0.37844\tRecall: 0.38450\tF1: 0.38145\tF2: 0.38327\n",
"\tTotal predictions: 15000\tTrue positives: 769\tFalse positives: 1263\tFalse negatives: 1231\tTrue negatives: 11737\n",
"\n"
]
}
],
"source": [
"np.random.seed(123)\n",
"features_list = financial_features_list\n",
"tree = DecisionTreeClassifier(**eval(DecisionTreeClassifier_best_score))\n",
"training_dataset.poi = y\n",
"my_dataset = training_dataset.to_dict(orient='index')\n",
"dump_classifier_and_data(tree, my_dataset, features_list)\n",
"tester()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"{'max_depth': 8, 'splitter': 'best', 'max_features': None, 'presort': True, 'min_impurity_decrease': 0.001, 'criterion': 'gini'}\""
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"DecisionTreeClassifier_best_score"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"tree_classifier = tree #saving for drawing tree"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: Training DecisionTreeRegressor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Important__: For possibility of tuning Regression with tester.py I have customized that file with the rounding function: \n",
"```\n",
"clf.fit(features_train, labels_train)\n",
" predictions = clf.predict(features_test)\n",
" predictions = predictions.round()\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DecisionTreeRegressor(criterion='friedman_mse', max_depth=8, max_features=6,\n",
" max_leaf_nodes=None, min_impurity_decrease=0.2,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best')\n",
"\tAccuracy: 0.84220\tPrecision: 0.40213\tRecall: 0.37700\tF1: 0.38916\tF2: 0.38177\n",
"\tTotal predictions: 15000\tTrue positives: 754\tFalse positives: 1121\tFalse negatives: 1246\tTrue negatives: 11879\n",
"\n"
]
}
],
"source": [
"np.random.seed(123)\n",
"tree = DecisionTreeRegressor(**eval(DecisionTreeRegressor_best_score))\n",
"dump_classifier_and_data(tree, my_dataset, features_list)\n",
"tester()"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"tree_regressor = tree #saving for drawing tree"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: Feature importance for DecisionTreeRegressor and Decision Tree Classifier"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(np.array(X),y, test_size = 0.2, random_state=42)\n",
"skf = StratifiedKFold(n_splits=10, random_state=42, shuffle=True) \n",
"\n",
"def create_tree(tree, file): \n",
" feature_importances = np.zeros(len(features_list[1:])) \n",
" for i in range(100):\n",
" for train, test in skf.split(X_train, y_train):\n",
" tree.fit(X_train[train], y_train[train])\n",
" feature_importances += tree.feature_importances_ \n",
"\n",
" feature_importances = [(i, feature_importances[num]) \n",
" for num, i in enumerate(features_list[1:])]\n",
" # picture of exemplary tree\n",
" export_graphviz(tree.fit(np.array(X),y), \n",
" out_file='{}.dot'.format(file), \n",
" label=None,\n",
" filled=False,\n",
" feature_names=features_list[1:], \n",
" class_names=['nonpoi', 'poi'])\n",
" feature_importances.sort(key=lambda x: x[1], reverse=True)\n",
" total = [i[1] for i in feature_importances]\n",
" for i in feature_importances:\n",
" print(i[0], \":\", i[1]/sum(total))\n",
" \n",
" check_call(['dot','-Tpng','{}.dot'.format(file),'-o','{}.png'.format(file)])"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bonus : 0.272949915062\n",
"deferred_income : 0.237175295831\n",
"expenses : 0.208096689273\n",
"total_payments : 0.116942957965\n",
"salary : 0.0854004487731\n",
"total_stock_value : 0.0794346930967\n"
]
}
],
"source": [
"create_tree(tree_classifier, \"test\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the decision tree it is presented as follow: \n",
"![decision_tree](data/test.png)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bonus : 0.269065976356\n",
"deferred_income : 0.234595054825\n",
"expenses : 0.210627459714\n",
"total_payments : 0.120433544234\n",
"salary : 0.087508115449\n",
"total_stock_value : 0.0777698494224\n"
]
}
],
"source": [
"create_tree(tree_regressor, \"test_regressor\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!['test_regr'](data/test_regressor.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see the most essential features are bonus, expenses and deferred income. First is the immediate transfer of money to the POI; I assume that salary is vivid to the tax audits so the salary cannot simply being utilized fraud executives. However, bonuses are of discrete powers restricted to the POI chefs. Furthermore, it is also relevant that expenses, as they cannot normally exceed financial sources available to the employee, are also important feature when they are higher than those sources. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: Experimenting with AdaBoostClassifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may improve our classifier with the ensemble method - let's check them. "
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking parameters 35/35\r"
]
}
],
"source": [
"param_range = [0.0001, 0.001, 0.01, 0.1, 0.3, 0.5, 0.9]\n",
"parameters = [{'base_estimator':tree_classifier,\n",
" 'learning_rate':learning_rate, \n",
" 'n_estimators':n_estimators} \n",
" for n_estimators in [10,30,50,70,100]\n",
" for learning_rate in param_range]\n",
"\n",
"clf = AdaBoostClassifier\n",
"\n",
"classifier_performer(clf, X, y, \"decision_tree_classifier_adaboost_results.csv\", parameters)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>tp</th>\n",
" <th>tn</th>\n",
" <th>fn</th>\n",
" <th>fp</th>\n",
" <th>acc</th>\n",
" <th>params</th>\n",
" <th>recall</th>\n",
" <th>precision</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>813</td>\n",
" <td>11723</td>\n",
" <td>1277</td>\n",
" <td>1187</td>\n",
" <td>0.929467</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.388995</td>\n",
" <td>0.4065</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>773</td>\n",
" <td>11775</td>\n",
" <td>1225</td>\n",
" <td>1227</td>\n",
" <td>0.930267</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.386887</td>\n",
" <td>0.3865</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>805</td>\n",
" <td>11719</td>\n",
" <td>1281</td>\n",
" <td>1195</td>\n",
" <td>0.928400</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.385906</td>\n",
" <td>0.4025</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>808</td>\n",
" <td>11705</td>\n",
" <td>1295</td>\n",
" <td>1192</td>\n",
" <td>0.928333</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.384213</td>\n",
" <td>0.4040</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>748</td>\n",
" <td>11801</td>\n",
" <td>1199</td>\n",
" <td>1252</td>\n",
" <td>0.932200</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.384181</td>\n",
" <td>0.3740</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>794</td>\n",
" <td>11693</td>\n",
" <td>1307</td>\n",
" <td>1206</td>\n",
" <td>0.929267</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.377915</td>\n",
" <td>0.3970</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>780</td>\n",
" <td>11703</td>\n",
" <td>1297</td>\n",
" <td>1220</td>\n",
" <td>0.930600</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.375542</td>\n",
" <td>0.3900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>794</td>\n",
" <td>11671</td>\n",
" <td>1329</td>\n",
" <td>1206</td>\n",
" <td>0.928467</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.373999</td>\n",
" <td>0.3970</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>798</td>\n",
" <td>11656</td>\n",
" <td>1344</td>\n",
" <td>1202</td>\n",
" <td>0.926933</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.372549</td>\n",
" <td>0.3990</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>796</td>\n",
" <td>11646</td>\n",
" <td>1354</td>\n",
" <td>1204</td>\n",
" <td>0.928133</td>\n",
" <td>{'base_estimator': DecisionTreeClassifier(clas...</td>\n",
" <td>0.370233</td>\n",
" <td>0.3980</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tp tn fn fp acc \\\n",
"28 813 11723 1277 1187 0.929467 \n",
"0 773 11775 1225 1227 0.930267 \n",
"7 805 11719 1281 1195 0.928400 \n",
"14 808 11705 1295 1192 0.928333 \n",
"1 748 11801 1199 1252 0.932200 \n",
"21 794 11693 1307 1206 0.929267 \n",
"8 780 11703 1297 1220 0.930600 \n",
"15 794 11671 1329 1206 0.928467 \n",
"29 798 11656 1344 1202 0.926933 \n",
"22 796 11646 1354 1204 0.928133 \n",
"\n",
" params recall precision \n",
"28 {'base_estimator': DecisionTreeClassifier(clas... 0.388995 0.4065 \n",
"0 {'base_estimator': DecisionTreeClassifier(clas... 0.386887 0.3865 \n",
"7 {'base_estimator': DecisionTreeClassifier(clas... 0.385906 0.4025 \n",
"14 {'base_estimator': DecisionTreeClassifier(clas... 0.384213 0.4040 \n",
"1 {'base_estimator': DecisionTreeClassifier(clas... 0.384181 0.3740 \n",
"21 {'base_estimator': DecisionTreeClassifier(clas... 0.377915 0.3970 \n",
"8 {'base_estimator': DecisionTreeClassifier(clas... 0.375542 0.3900 \n",
"15 {'base_estimator': DecisionTreeClassifier(clas... 0.373999 0.3970 \n",
"29 {'base_estimator': DecisionTreeClassifier(clas... 0.372549 0.3990 \n",
"22 {'base_estimator': DecisionTreeClassifier(clas... 0.370233 0.3980 "
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decision_tree_classifier_adaboost_results = pd.read_csv('decision_tree_classifier_adaboost_results.csv', \n",
" index_col = 'Unnamed: 0')\n",
"decision_tree_classifier_adaboost_results = decision_tree_classifier_adaboost_results.sort_values('recall', \n",
" ascending=False)\n",
"decision_tree_classifier_adaboost_results[(decision_tree_classifier_adaboost_results.recall>0.37)\n",
" &(decision_tree_classifier_adaboost_results.precision>0.37)]"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"AdaBoostClassifier_best_score = decision_tree_classifier_adaboost_results.get_value(28, 'params')"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AdaBoostClassifier(algorithm='SAMME.R',\n",
" base_estimator=DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=8,\n",
" max_features=None, max_leaf_nodes=None,\n",
" min_impurity_decrease=0.001, min_impurity_split=None,\n",
" min_samples_leaf=1, min_samples_split=2,\n",
" min_weight_fraction_leaf=0.0, presort=True, random_state=None,\n",
" splitter='best'),\n",
" learning_rate=0.0001, n_estimators=100, random_state=None)\n",
"\tAccuracy: 0.83393\tPrecision: 0.38370\tRecall: 0.40500\tF1: 0.39406\tF2: 0.40055\n",
"\tTotal predictions: 15000\tTrue positives: 810\tFalse positives: 1301\tFalse negatives: 1190\tTrue negatives: 11699\n",
"\n"
]
}
],
"source": [
"np.random.seed(123)\n",
"clf = AdaBoostClassifier(**eval(AdaBoostClassifier_best_score))\n",
"dump_classifier_and_data(clf, my_dataset, features_list)\n",
"tester()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: Experimenting with AdaBoostRegressor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tuning learning rate algorithm"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking parameters 105/105\r"
]
}
],
"source": [
"param_range = [0.0001, 0.001, 0.01, 0.1, 0.3, 0.5, 0.9]\n",
"parameters = [{'base_estimator':tree_regressor,\n",
" 'learning_rate':learning_rate, \n",
" 'loss':loss,\n",
" 'n_estimators':n_estimators} \n",
" for n_estimators in [10,30,50,70,100]\n",
" for loss in ['linear', 'exponential', 'square'] \n",
" for learning_rate in param_range]\n",
"\n",
"clf = AdaBoostRegressor\n",
"\n",
"classifier_performer(clf, X, y, \"decision_tree_regressor_adaboost_results.csv\", parameters)"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"decision_tree_regressor_adaboost_results = pd.read_csv('decision_tree_regressor_adaboost_results.csv', \n",
" index_col = 'Unnamed: 0')"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>tp</th>\n",
" <th>tn</th>\n",
" <th>fn</th>\n",
" <th>fp</th>\n",
" <th>acc</th>\n",
" <th>params</th>\n",
" <th>recall</th>\n",
" <th>precision</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>672</td>\n",
" <td>12333</td>\n",
" <td>667</td>\n",
" <td>1328</td>\n",
" <td>0.932467</td>\n",
" <td>{'n_estimators': 100, 'learning_rate': 0.1, 'l...</td>\n",
" <td>0.501867</td>\n",
" <td>0.3360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>101</th>\n",
" <td>672</td>\n",
" <td>12319</td>\n",
" <td>681</td>\n",
" <td>1328</td>\n",
" <td>0.933533</td>\n",
" <td>{'n_estimators': 100, 'learning_rate': 0.1, 'l...</td>\n",
" <td>0.496674</td>\n",
" <td>0.3360</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>668</td>\n",
" <td>12326</td>\n",
" <td>674</td>\n",
" <td>1332</td>\n",
" <td>0.932933</td>\n",
" <td>{'n_estimators': 70, 'learning_rate': 0.1, 'lo...</td>\n",
" <td>0.497765</td>\n",
" <td>0.3340</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>661</td>\n",
" <td>12313</td>\n",
" <td>687</td>\n",
" <td>1339</td>\n",
" <td>0.932133</td>\n",
" <td>{'n_estimators': 50, 'learning_rate': 0.1, 'lo...</td>\n",
" <td>0.490356</td>\n",
" <td>0.3305</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tp tn fn fp acc \\\n",
"87 672 12333 667 1328 0.932467 \n",
"101 672 12319 681 1328 0.933533 \n",
"73 668 12326 674 1332 0.932933 \n",
"52 661 12313 687 1339 0.932133 \n",
"\n",
" params recall precision \n",
"87 {'n_estimators': 100, 'learning_rate': 0.1, 'l... 0.501867 0.3360 \n",
"101 {'n_estimators': 100, 'learning_rate': 0.1, 'l... 0.496674 0.3360 \n",
"73 {'n_estimators': 70, 'learning_rate': 0.1, 'lo... 0.497765 0.3340 \n",
"52 {'n_estimators': 50, 'learning_rate': 0.1, 'lo... 0.490356 0.3305 "
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decision_tree_regressor_adaboost_results[(decision_tree_regressor_adaboost_results.precision > 0.33)\n",
" &(decision_tree_regressor_adaboost_results.recall>0.33)]"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"AdaBoostRegressor_best_score_ = decision_tree_regressor_adaboost_results.get_value(87, 'params')"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AdaBoostRegressor(base_estimator=DecisionTreeRegressor(criterion='friedman_mse', max_depth=8, max_features=6,\n",
" max_leaf_nodes=None, min_impurity_decrease=0.2,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best'),\n",
" learning_rate=0.1, loss='linear', n_estimators=100,\n",
" random_state=None)\n",
"\tAccuracy: 0.86707\tPrecision: 0.50227\tRecall: 0.33250\tF1: 0.40012\tF2: 0.35661\n",
"\tTotal predictions: 15000\tTrue positives: 665\tFalse positives: 659\tFalse negatives: 1335\tTrue negatives: 12341\n",
"\n"
]
}
],
"source": [
"np.random.seed(123)\n",
"clf = AdaBoostRegressor(**eval(AdaBoostRegressor_best_score_))\n",
"dump_classifier_and_data(clf, my_dataset, features_list)\n",
"\n",
"tester()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Appendix 1 Checking salary / total payment ratio"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here I will test if the DecisionTreeRegressor boosted by AdaBoost and with the created feature may improve our final score. "
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"features_list=financial_features_list+['salary_total_payment_ratio']\n",
"training_dataset = pd.read_csv('training_dataset.csv')\n",
"\n",
"y = np.where(training_dataset.poi.values==1, 1, 0)\n",
"\n",
"for i in training_dataset.columns:\n",
" imp = Imputer(missing_values='NaN', strategy='mean', axis=1)\n",
" xlist = imp.fit_transform(training_dataset[i].reshape(1, -1).tolist()).tolist()[0]\n",
" training_dataset[i] = pd.Series(xlist, index=training_dataset.index)\n",
"scaler=StandardScaler() \n",
"training_dataset[features_list] = scaler.fit_transform(training_dataset[features_list])\n",
"training_dataset = training_dataset.drop(['Unnamed: 0'], axis=1)\n",
"\n",
"X = training_dataset[features_list[1:]]\n",
"X_train, X_test, y_train, y_test = train_test_split(np.array(X),y, test_size = 0.2, random_state=42)\n",
"skf = StratifiedKFold(n_splits=10, random_state=42, shuffle=True) "
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking parameters 2016/2016\r"
]
}
],
"source": [
"param_range = [0.00001, 0.0001, 0.001, 0.01, 1.0, 1/5]\n",
"parameters = [\n",
" {'criterion':criterion, \n",
" 'max_depth':max_depth,\n",
" 'max_features': max_features,\n",
" 'presort': presort,\n",
" 'min_impurity_decrease':min_impurity_decrease} \n",
" for criterion in [\"mse\", \"friedman_mse\", \"mae\"] \n",
" for spliter in [\"best\", \"random\"] \n",
" for max_depth in[2,3,4,8]\n",
" for max_features in [2,4,6,'auto', 'sqrt', 'log2', None]\n",
" for presort in [False, True]\n",
" for min_impurity_decrease in param_range]\n",
"\n",
"clf = DecisionTreeRegressor\n",
"\n",
"classifier_performer(clf, X, y, \"decision_tree_regressor_results_SPRATIO.csv\", parameters)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"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></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>tp</th>\n",
" <th>tn</th>\n",
" <th>fn</th>\n",
" <th>fp</th>\n",
" <th>acc</th>\n",
" <th>params</th>\n",
" <th>recall</th>\n",
" <th>precision</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>939</td>\n",
" <td>699</td>\n",
" <td>11738</td>\n",
" <td>1262</td>\n",
" <td>1301</td>\n",
" <td>0.931400</td>\n",
" <td>{'min_impurity_decrease': 0.01, 'presort': Fal...</td>\n",
" <td>0.356451</td>\n",
" <td>0.3495</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>956</td>\n",
" <td>689</td>\n",
" <td>11703</td>\n",
" <td>1297</td>\n",
" <td>1311</td>\n",
" <td>0.935867</td>\n",
" <td>{'min_impurity_decrease': 0.001, 'presort': Tr...</td>\n",
" <td>0.346928</td>\n",
" <td>0.3445</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>618</td>\n",
" <td>684</td>\n",
" <td>11684</td>\n",
" <td>1316</td>\n",
" <td>1316</td>\n",
" <td>0.931200</td>\n",
" <td>{'min_impurity_decrease': 1e-05, 'presort': Tr...</td>\n",
" <td>0.342000</td>\n",
" <td>0.3420</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>283</td>\n",
" <td>683</td>\n",
" <td>11711</td>\n",
" <td>1289</td>\n",
" <td>1317</td>\n",
" <td>0.929467</td>\n",
" <td>{'min_impurity_decrease': 0.0001, 'presort': T...</td>\n",
" <td>0.346349</td>\n",
" <td>0.3415</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>612</td>\n",
" <td>681</td>\n",
" <td>11699</td>\n",
" <td>1301</td>\n",
" <td>1319</td>\n",
" <td>0.931733</td>\n",
" <td>{'min_impurity_decrease': 1e-05, 'presort': Fa...</td>\n",
" <td>0.343592</td>\n",
" <td>0.3405</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 tp tn fn fp acc \\\n",
"0 939 699 11738 1262 1301 0.931400 \n",
"1 956 689 11703 1297 1311 0.935867 \n",
"4 618 684 11684 1316 1316 0.931200 \n",
"6 283 683 11711 1289 1317 0.929467 \n",
"7 612 681 11699 1301 1319 0.931733 \n",
"\n",
" params recall precision \n",
"0 {'min_impurity_decrease': 0.01, 'presort': Fal... 0.356451 0.3495 \n",
"1 {'min_impurity_decrease': 0.001, 'presort': Tr... 0.346928 0.3445 \n",
"4 {'min_impurity_decrease': 1e-05, 'presort': Tr... 0.342000 0.3420 \n",
"6 {'min_impurity_decrease': 0.0001, 'presort': T... 0.346349 0.3415 \n",
"7 {'min_impurity_decrease': 1e-05, 'presort': Fa... 0.343592 0.3405 "
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decision_tree_regressor_results_SPRATIO = pd.read_csv('decision_tree_regressor_results_SPRATIO.csv')\n",
"decision_tree_regressor_results_SPRATIO[(decision_tree_regressor_results_SPRATIO.recall>0.34\n",
" )&(decision_tree_regressor_results_SPRATIO.precision>0.34)]"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"DecisionTreeRegressor_SPRATIO_best_score = decision_tree_regressor_results.get_value(0, \"params\")"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DecisionTreeRegressor(criterion='mse', max_depth=8, max_features=6,\n",
" max_leaf_nodes=None, min_impurity_decrease=0.0001,\n",
" min_impurity_split=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=None, splitter='best')\n",
"\tAccuracy: 0.82253\tPrecision: 0.33516\tRecall: 0.33650\tF1: 0.33583\tF2: 0.33623\n",
"\tTotal predictions: 15000\tTrue positives: 673\tFalse positives: 1335\tFalse negatives: 1327\tTrue negatives: 11665\n",
"\n"
]
}
],
"source": [
"features_list=financial_features_list+['salary_total_payment_ratio']\n",
"training_dataset.poi = y\n",
"my_dataset = training_dataset.to_dict(orient='index')\n",
"np.random.seed(123)\n",
"tree = DecisionTreeRegressor(**eval(DecisionTreeRegressor_SPRATIO_best_score))\n",
"\n",
"dump_classifier_and_data(tree, my_dataset, features_list)\n",
"tester()"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"tree_regressor_stpratio = tree"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will manually experiment with AdaBoostRegressor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: Experimenting with AdaBoostRegressor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tuning learning rate algorithm"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking parameters 1/105\r"
]
}
],
"source": [
"param_range = [0.0001, 0.001, 0.01, 0.1, 0.3, 0.5, 0.9]\n",
"parameters = [{'base_estimator':tree,\n",
" 'learning_rate':learning_rate, \n",
" 'loss':loss,\n",
" 'n_estimators':n_estimators} \n",
" for n_estimators in [10,30,50,70,100]\n",
" for loss in ['linear', 'exponential', 'square'] \n",
" for learning_rate in param_range]\n",
"\n",
"clf = AdaBoostRegressor\n",
"\n",
"classifier_performer(clf, X, y, \"decision_tree_regressor_adaboost_results_SPRATIO.csv\", parameters)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"decision_tree_regressor_adaboost_results_SPRATIO = pd.read_csv('decision_tree_regressor_adaboost_results_SPRATIO.csv', index_col = 'Unnamed: 0')"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"scrolled": true
},
"outputs": [
{
"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></th>\n",
" <th>tp</th>\n",
" <th>tn</th>\n",
" <th>fn</th>\n",
" <th>fp</th>\n",
" <th>acc</th>\n",
" <th>params</th>\n",
" <th>recall</th>\n",
" <th>precision</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>546</td>\n",
" <td>12430</td>\n",
" <td>570</td>\n",
" <td>1454</td>\n",
" <td>0.926533</td>\n",
" <td>{'base_estimator': DecisionTreeRegressor(crite...</td>\n",
" <td>0.489247</td>\n",
" <td>0.2730</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>542</td>\n",
" <td>12422</td>\n",
" <td>578</td>\n",
" <td>1458</td>\n",
" <td>0.926400</td>\n",
" <td>{'base_estimator': DecisionTreeRegressor(crite...</td>\n",
" <td>0.483929</td>\n",
" <td>0.2710</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>536</td>\n",
" <td>12251</td>\n",
" <td>749</td>\n",
" <td>1464</td>\n",
" <td>0.927800</td>\n",
" <td>{'base_estimator': DecisionTreeRegressor(crite...</td>\n",
" <td>0.417121</td>\n",
" <td>0.2680</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>533</td>\n",
" <td>12436</td>\n",
" <td>564</td>\n",
" <td>1467</td>\n",
" <td>0.924333</td>\n",
" <td>{'base_estimator': DecisionTreeRegressor(crite...</td>\n",
" <td>0.485871</td>\n",
" <td>0.2665</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>531</td>\n",
" <td>12445</td>\n",
" <td>555</td>\n",
" <td>1469</td>\n",
" <td>0.926800</td>\n",
" <td>{'base_estimator': DecisionTreeRegressor(crite...</td>\n",
" <td>0.488950</td>\n",
" <td>0.2655</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tp tn fn fp acc \\\n",
"80 546 12430 570 1454 0.926533 \n",
"38 542 12422 578 1458 0.926400 \n",
"17 536 12251 749 1464 0.927800 \n",
"87 533 12436 564 1467 0.924333 \n",
"94 531 12445 555 1469 0.926800 \n",
"\n",
" params recall precision \n",
"80 {'base_estimator': DecisionTreeRegressor(crite... 0.489247 0.2730 \n",
"38 {'base_estimator': DecisionTreeRegressor(crite... 0.483929 0.2710 \n",
"17 {'base_estimator': DecisionTreeRegressor(crite... 0.417121 0.2680 \n",
"87 {'base_estimator': DecisionTreeRegressor(crite... 0.485871 0.2665 \n",
"94 {'base_estimator': DecisionTreeRegressor(crite... 0.488950 0.2655 "
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"decision_tree_regressor_adaboost_results_SPRATIO.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SUBTASK: Feature importance for DecisionTreeRegressor"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bonus : 0.231781232102\n",
"expenses : 0.19927911978\n",
"deferred_income : 0.15687960491\n",
"salary_total_payment_ratio : 0.152841288414\n",
"total_stock_value : 0.0894717375451\n",
"total_payments : 0.0870677990197\n",
"salary : 0.0826792182298\n"
]
}
],
"source": [
"create_tree(tree_regressor_stpratio, \"test_regressor_stpratio\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"!['test_regr'](data/test_regressor_stpratio.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see created feature (salary / total payment ratio) makes an unnecessary noise. It is treated as fourth most important feature (weight of 0.153739975626) but it does not give us a better score than previous models. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sources\n",
"1. http://www.nytimes.com/2002/06/18/business/officials-got-a-windfall-before-enron-s-collapse.html\n",
"2. https://www.salon.com/2002/02/08/enron_bonuses/\n",
"2. http://msomisoma.com/wp-content/uploads/2017/05/Bethany-McLean-and-Peter-Elkind.-The-smartest-guys-in-the-room-_-the-amazing-rise-and-scandalous-fall-of-ENRON-Portfolio-2004..pdf \n",
"3. https://www.bloomberg.com/research/stocks/private/person.asp?personId=657352&privcapId=13649709\n",
"5. https://www.washingtonpost.com/archive/business/2002/03/02/out-of-the-frying-pan-into-the-jambalaya/06f8acb8-2c61-4272-936d-5f612565d788/\n",
"6. https://en.wikipedia.org/wiki/ENRON\n",
"7. On scaling: https://stackoverflow.com/questions/26225344/why-feature-scaling\n",
"8. On scaling: https://arxiv.org/abs/1502.03167\n",
"9. On validation: https://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set\n",
"10. On validation: https://sebastianraschka.com/images/faq/evaluate-a-model/k-fold.png\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
},
"toc": {
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": false,
"toc_cell": true,
"toc_position": {
"height": "858px",
"left": "0px",
"right": "1643px",
"top": "107px",
"width": "212px"
},
"toc_section_display": "block",
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment