├── .gitignore ├── 02-naive-bayes └── nb_author_id.ipynb ├── 03-svm └── svm_author_id.ipynb ├── 04-decision-tree └── dt_author_id.ipynb ├── 05-choose-your-own ├── class_vis.py ├── prep_terrain_data.py └── your_algorithm.ipynb ├── 06-datasets-questions └── explore_enron_data.ipynb ├── 07-regression └── finance_regression.ipynb ├── 08-outliers ├── outlier_removal_regression.ipynb ├── practice_outliers_ages.pkl └── practice_outliers_net_worths.pkl ├── 09-10-k-means └── k_means_cluster.ipynb ├── 11-text-learning ├── from_chris.txt ├── from_sara.txt ├── test_email.txt └── vectorize_text.ipynb ├── 12-feature-selection ├── email_authors.pkl ├── email_authors_overfit.pkl ├── find_signature.ipynb ├── word_data.pkl └── word_data_overfit.pkl ├── 13-pca └── eigenfaces.ipynb ├── 14-validation └── validate_poi.ipynb ├── 15-evaluation └── evaluate_poi_identifier.ipynb ├── 17-final-project ├── emails_by_address.tar.gz ├── enron61702insiderpay.pdf ├── final_project_dataset.pkl ├── final_project_dataset_modified.pkl ├── poi_email_addresses.py ├── poi_id.ipynb ├── poi_names.txt └── tester.py ├── README.md ├── environment.yml └── utils ├── email_authors.pkl ├── email_preprocess.py ├── feature_format.py ├── parse_out_email_text.py ├── python2_lesson06_keys.pkl ├── python2_lesson13_keys.pkl ├── python2_lesson14_keys.pkl ├── startup.py └── word_data.pkl /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | # IDEs 132 | .idea/ 133 | .vscode/ 134 | 135 | # Original ignore 136 | enron_mail_20150507.tar.gz 137 | maildir/ 138 | 11-text-learning/your_word_data.pkl 139 | 11-text-learning/your_email_authors.pkl 140 | my_classifier.pkl 141 | my_dataset.pkl 142 | my_feature_list.pkl 143 | -------------------------------------------------------------------------------- /02-naive-bayes/nb_author_id.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# This is the code to accompany the Lesson 2 (Naive Bayes) mini-project\n", 8 | "\n", 9 | "### Use a Naive Bayes Classifier to identify emails by their authors\n", 10 | "\n", 11 | "authors and labels:\n", 12 | "- Sara has label `0`\n", 13 | "- Chris has label `1`" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": null, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "import sys\n", 23 | "from time import time\n", 24 | "sys.path.append(\"../utils/\")\n", 25 | "\n", 26 | "from email_preprocess import preprocess" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "metadata": {}, 32 | "source": [ 33 | "- `features_train` and `features_test` are the features for the training and testing datasets, respectively\n", 34 | "- `labels_train` and `labels_test` are the corresponding item labels" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": null, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "features_train, features_test, labels_train, labels_test = preprocess()" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": {}, 49 | "source": [ 50 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [] 59 | } 60 | ], 61 | "metadata": { 62 | "kernelspec": { 63 | "display_name": "Python 3", 64 | "language": "python", 65 | "name": "python3" 66 | }, 67 | "language_info": { 68 | "codemirror_mode": { 69 | "name": "ipython", 70 | "version": 3 71 | }, 72 | "file_extension": ".py", 73 | "mimetype": "text/x-python", 74 | "name": "python", 75 | "nbconvert_exporter": "python", 76 | "pygments_lexer": "ipython3", 77 | "version": "3.8.2" 78 | } 79 | }, 80 | "nbformat": 4, 81 | "nbformat_minor": 4 82 | } 83 | -------------------------------------------------------------------------------- /03-svm/svm_author_id.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# This is the code to accompany the Lesson 2 (SVM) mini-project\n", 8 | "\n", 9 | "### Use a SVM to identify emails from the Enron corpus by their authors\n", 10 | "\n", 11 | "authors and labels:\n", 12 | "- Sara has label `0`\n", 13 | "- Chris has label `1`" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": null, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "import sys\n", 23 | "from time import time\n", 24 | "sys.path.append('../utils/')\n", 25 | "\n", 26 | "from email_preprocess import preprocess" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "metadata": {}, 32 | "source": [ 33 | "- `features_train` and `features_test` are the features for the training and testing datasets, respectively\n", 34 | "- `labels_train` and `labels_test` are the corresponding item labels" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": null, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "features_train, features_test, labels_train, labels_test = preprocess()" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": {}, 49 | "source": [ 50 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [] 59 | } 60 | ], 61 | "metadata": { 62 | "kernelspec": { 63 | "display_name": "Python 3", 64 | "language": "python", 65 | "name": "python3" 66 | }, 67 | "language_info": { 68 | "codemirror_mode": { 69 | "name": "ipython", 70 | "version": 3 71 | }, 72 | "file_extension": ".py", 73 | "mimetype": "text/x-python", 74 | "name": "python", 75 | "nbconvert_exporter": "python", 76 | "pygments_lexer": "ipython3", 77 | "version": "3.8.2" 78 | } 79 | }, 80 | "nbformat": 4, 81 | "nbformat_minor": 4 82 | } 83 | -------------------------------------------------------------------------------- /04-decision-tree/dt_author_id.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# This is the code to accompany the Lesson 3 (decision tree) mini-project\n", 8 | "\n", 9 | "### Use a Decision Tree to identify emails from the Enron corpus by author:\n", 10 | "\n", 11 | "- Sara has label `0`\n", 12 | "- Chris has label `1`" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": null, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "import sys\n", 22 | "from time import time\n", 23 | "sys.path.append('../utils/')\n", 24 | "\n", 25 | "from email_preprocess import preprocess" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "- `features_train` and `features_test` are the features for the training and testing datasets, respectively\n", 33 | "- `labels_train` and `labels_test` are the corresponding item labels" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": null, 39 | "metadata": {}, 40 | "outputs": [], 41 | "source": [ 42 | "features_train, features_test, labels_train, labels_test = preprocess()" 43 | ] 44 | }, 45 | { 46 | "cell_type": "markdown", 47 | "metadata": {}, 48 | "source": [ 49 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": null, 55 | "metadata": {}, 56 | "outputs": [], 57 | "source": [] 58 | } 59 | ], 60 | "metadata": { 61 | "kernelspec": { 62 | "display_name": "Python 3", 63 | "language": "python", 64 | "name": "python3" 65 | }, 66 | "language_info": { 67 | "codemirror_mode": { 68 | "name": "ipython", 69 | "version": 3 70 | }, 71 | "file_extension": ".py", 72 | "mimetype": "text/x-python", 73 | "name": "python", 74 | "nbconvert_exporter": "python", 75 | "pygments_lexer": "ipython3", 76 | "version": "3.8.2" 77 | } 78 | }, 79 | "nbformat": 4, 80 | "nbformat_minor": 4 81 | } 82 | -------------------------------------------------------------------------------- /05-choose-your-own/class_vis.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import json 3 | 4 | import numpy as np 5 | import matplotlib.pyplot as plt 6 | 7 | 8 | def pretty_picture(clf, X_test, y_test): 9 | x_min = 0.0 10 | x_max = 1.0 11 | y_min = 0.0 12 | y_max = 1.0 13 | 14 | # Plot the decision boundary. For that, we will assign a color to each 15 | # point in the mesh [x_min, m_max]x[y_min, y_max]. 16 | h = .01 # step size in the mesh 17 | xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) 18 | Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) 19 | 20 | # Put the result into a color plot 21 | Z = Z.reshape(xx.shape) 22 | plt.xlim(xx.min(), xx.max()) 23 | plt.ylim(yy.min(), yy.max()) 24 | 25 | plt.pcolormesh(xx, yy, Z, cmap='seismic') 26 | 27 | # Plot also the test points 28 | grade_sig = [X_test[ii][0] for ii in range(0, len(X_test)) if y_test[ii] == 0] 29 | bumpy_sig = [X_test[ii][1] for ii in range(0, len(X_test)) if y_test[ii] == 0] 30 | grade_bkg = [X_test[ii][0] for ii in range(0, len(X_test)) if y_test[ii] == 1] 31 | bumpy_bkg = [X_test[ii][1] for ii in range(0, len(X_test)) if y_test[ii] == 1] 32 | 33 | plt.scatter(grade_sig, bumpy_sig, color='b', label='fast') 34 | plt.scatter(grade_bkg, bumpy_bkg, color='r', label='slow') 35 | plt.legend() 36 | plt.xlabel('bumpiness') 37 | plt.ylabel('grade') 38 | 39 | plt.savefig('test.png') 40 | 41 | 42 | def output_image(name, iformat, ibytes): 43 | image_start = 'BEGIN_IMAGE_f9825uweof8jw9fj4r8' 44 | image_end = 'END_IMAGE_0238jfw08fjsiufhw8frs' 45 | data = { 46 | 'name': name, 47 | 'format': iformat, 48 | 'bytes': base64.encodebytes(ibytes), 49 | } 50 | print(image_start + json.dumps(data) + image_end) 51 | -------------------------------------------------------------------------------- /05-choose-your-own/prep_terrain_data.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | 4 | def make_terrain_data(n_points=1000): 5 | # make the toy dataset 6 | random.seed(42) 7 | grade = [random.random() for ii in range(0, n_points)] 8 | bumpy = [random.random() for ii in range(0, n_points)] 9 | error = [random.random() for ii in range(0, n_points)] 10 | y = [round(grade[ii] * bumpy[ii] + 0.3 + 0.1 * error[ii]) for ii in range(0, n_points)] 11 | for ii in range(0, len(y)): 12 | if grade[ii] > 0.8 or bumpy[ii] > 0.8: 13 | y[ii] = 1.0 14 | 15 | # split into train/test sets 16 | X = [[gg, ss] for gg, ss in zip(grade, bumpy)] 17 | split = int(0.75*n_points) 18 | X_train = X[0:split] 19 | X_test = X[split:] 20 | y_train = y[0:split] 21 | y_test = y[split:] 22 | 23 | grade_sig = [X_train[ii][0] for ii in range(0, len(X_train)) if y_train[ii] == 0] 24 | bumpy_sig = [X_train[ii][1] for ii in range(0, len(X_train)) if y_train[ii] == 0] 25 | grade_bkg = [X_train[ii][0] for ii in range(0, len(X_train)) if y_train[ii] == 1] 26 | bumpy_bkg = [X_train[ii][1] for ii in range(0, len(X_train)) if y_train[ii] == 1] 27 | 28 | training_data = {'fast': {'grade': grade_sig, 'bumpiness': bumpy_sig}, 29 | 'slow': {'grade': grade_bkg, 'bumpiness': bumpy_bkg}} 30 | 31 | grade_sig = [X_test[ii][0] for ii in range(0, len(X_test)) if y_test[ii]==0] 32 | bumpy_sig = [X_test[ii][1] for ii in range(0, len(X_test)) if y_test[ii]==0] 33 | grade_bkg = [X_test[ii][0] for ii in range(0, len(X_test)) if y_test[ii]==1] 34 | bumpy_bkg = [X_test[ii][1] for ii in range(0, len(X_test)) if y_test[ii]==1] 35 | 36 | test_data = {'fast': {'grade': grade_sig, 'bumpiness': bumpy_sig}, 37 | 'slow': {'grade': grade_bkg, 'bumpiness': bumpy_bkg}} 38 | 39 | return X_train, y_train, X_test, y_test 40 | -------------------------------------------------------------------------------- /05-choose-your-own/your_algorithm.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import matplotlib.pyplot as plt\n", 10 | "\n", 11 | "from prep_terrain_data import make_terrain_data\n", 12 | "from class_vis import pretty_picture" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": null, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "features_train, labels_train, features_test, labels_test = make_terrain_data()" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "the training data (`features_train`, `labels_train`) have both `\"fast\"` and `\"slow\"` points mixed together --- separate them so we can give them different colors in the scatterplot and identify them visually" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": null, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "grade_fast = [features_train[ii][0] for ii in range(0, len(features_train)) if labels_train[ii] == 0]\n", 38 | "bumpy_fast = [features_train[ii][1] for ii in range(0, len(features_train)) if labels_train[ii] == 0]\n", 39 | "grade_slow = [features_train[ii][0] for ii in range(0, len(features_train)) if labels_train[ii] == 1]\n", 40 | "bumpy_slow = [features_train[ii][1] for ii in range(0, len(features_train)) if labels_train[ii] == 1]" 41 | ] 42 | }, 43 | { 44 | "cell_type": "markdown", 45 | "metadata": {}, 46 | "source": [ 47 | "initial visualization" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": null, 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": [ 56 | "plt.xlim(0.0, 1.0)\n", 57 | "plt.ylim(0.0, 1.0)\n", 58 | "plt.scatter(bumpy_fast, grade_fast, color = \"b\", label=\"fast\")\n", 59 | "plt.scatter(grade_slow, bumpy_slow, color = \"r\", label=\"slow\")\n", 60 | "plt.legend()\n", 61 | "plt.xlabel(\"bumpiness\")\n", 62 | "plt.ylabel(\"grade\")\n", 63 | "plt.show()" 64 | ] 65 | }, 66 | { 67 | "cell_type": "markdown", 68 | "metadata": {}, 69 | "source": [ 70 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 71 | ] 72 | }, 73 | { 74 | "cell_type": "markdown", 75 | "metadata": {}, 76 | "source": [ 77 | "name your classifier object `clf` if you want the visualization code `pretty_picture` to show you the decision boundary" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": null, 83 | "metadata": {}, 84 | "outputs": [], 85 | "source": [] 86 | }, 87 | { 88 | "cell_type": "code", 89 | "execution_count": null, 90 | "metadata": {}, 91 | "outputs": [], 92 | "source": [ 93 | "try:\n", 94 | " pretty_picture(clf, features_test, labels_test)\n", 95 | "except NameError:\n", 96 | " pass" 97 | ] 98 | } 99 | ], 100 | "metadata": { 101 | "kernelspec": { 102 | "display_name": "Python 3", 103 | "language": "python", 104 | "name": "python3" 105 | }, 106 | "language_info": { 107 | "codemirror_mode": { 108 | "name": "ipython", 109 | "version": 3 110 | }, 111 | "file_extension": ".py", 112 | "mimetype": "text/x-python", 113 | "name": "python", 114 | "nbconvert_exporter": "python", 115 | "pygments_lexer": "ipython3", 116 | "version": "3.8.2" 117 | } 118 | }, 119 | "nbformat": 4, 120 | "nbformat_minor": 4 121 | } 122 | -------------------------------------------------------------------------------- /06-datasets-questions/explore_enron_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter code for exploring the Enron dataset (emails + finances)\n", 8 | "\n", 9 | "Loads up the dataset (pickled dict of dicts)\n", 10 | "\n", 11 | "The dataset has the form: `enron_data[\"LASTNAME FIRSTNAME MIDDLEINITIAL\"] = { features_dict }`\n", 12 | "\n", 13 | "`{features_dict}` is a dictionary of features associated with that person.\n", 14 | "\n", 15 | "You should explore `features_dict` as part of the mini-project, but here's an example to get you started:\n", 16 | "\n", 17 | "`enron_data[\"SKILLING JEFFREY K\"][\"bonus\"] = 5600000`" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": null, 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "import pickle\n", 27 | "\n", 28 | "with open('../17-final-project/final_project_dataset.pkl', 'rb') as f:\n", 29 | " enron_data = pickle.load(f)" 30 | ] 31 | }, 32 | { 33 | "cell_type": "markdown", 34 | "metadata": {}, 35 | "source": [ 36 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 37 | ] 38 | }, 39 | { 40 | "cell_type": "code", 41 | "execution_count": null, 42 | "metadata": {}, 43 | "outputs": [], 44 | "source": [] 45 | } 46 | ], 47 | "metadata": { 48 | "kernelspec": { 49 | "display_name": "Python 3", 50 | "language": "python", 51 | "name": "python3" 52 | }, 53 | "language_info": { 54 | "codemirror_mode": { 55 | "name": "ipython", 56 | "version": 3 57 | }, 58 | "file_extension": ".py", 59 | "mimetype": "text/x-python", 60 | "name": "python", 61 | "nbconvert_exporter": "python", 62 | "pygments_lexer": "ipython3", 63 | "version": "3.8.2" 64 | } 65 | }, 66 | "nbformat": 4, 67 | "nbformat_minor": 4 68 | } -------------------------------------------------------------------------------- /07-regression/finance_regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter code for the regression mini-project\n", 8 | "\n", 9 | "- Loads up/formats a modified version of the dataset (why modified? we've removed some trouble points that you'll find yourself in the outliers mini-project).\n", 10 | "- Draws a little scatterplot of the training/testing data\n", 11 | "- You fill in the regression code where indicated:" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": null, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import sys\n", 21 | "import pickle\n", 22 | "sys.path.append('../utils/')\n", 23 | "\n", 24 | "from feature_format import feature_format, target_feature_split\n", 25 | "\n", 26 | "with open('../17-final-project/final_project_dataset_modified.pkl', 'rb') as f:\n", 27 | " dictionary = pickle.load(f)" 28 | ] 29 | }, 30 | { 31 | "cell_type": "markdown", 32 | "metadata": {}, 33 | "source": [ 34 | "- list the features you want to look at--first item in the \n", 35 | "- list will be the \"target\" feature" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": null, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "features_list = ['bonus', 'salary']\n", 45 | "data = feature_format(dictionary, features_list, remove_any_zeroes=True, sort_keys='../utils/python2_lesson06_keys.pkl')\n", 46 | "target, features = target_feature_split(data)" 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": {}, 52 | "source": [ 53 | "training-testing split needed in regression, just like classification:" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": null, 59 | "metadata": {}, 60 | "outputs": [], 61 | "source": [ 62 | "from sklearn.model_selection import train_test_split\n", 63 | "\n", 64 | "feature_train, feature_test, target_train, target_test = train_test_split(features, target, test_size=0.5, random_state=42)\n", 65 | "train_color = 'b'\n", 66 | "test_color = 'r'" 67 | ] 68 | }, 69 | { 70 | "cell_type": "markdown", 71 | "metadata": {}, 72 | "source": [ 73 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 74 | ] 75 | }, 76 | { 77 | "cell_type": "markdown", 78 | "metadata": {}, 79 | "source": [ 80 | "Please name it reg, so that the plotting code below picks it up and plots it correctly. \n", 81 | "\n", 82 | "Don't forget to change `the test_color` above from `'b'` to `'r'` to differentiate training points from test points." 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": null, 88 | "metadata": {}, 89 | "outputs": [], 90 | "source": [] 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "metadata": {}, 95 | "source": [ 96 | "# Plot results\n", 97 | "- draw the scatterplot, with color-coded training and testing points\n", 98 | "- draw the regression line, once it's coded" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": null, 104 | "metadata": {}, 105 | "outputs": [], 106 | "source": [ 107 | "import matplotlib.pyplot as plt\n", 108 | "\n", 109 | "for feature, target in zip(feature_test, target_test):\n", 110 | " plt.scatter(feature, target, color=test_color)\n", 111 | "\n", 112 | "for feature, target in zip(feature_train, target_train):\n", 113 | " plt.scatter(feature, target, color=train_color)\n", 114 | "\n", 115 | "# labels for the legend\n", 116 | "plt.scatter(feature_test[0], target_test[0], color=test_color, label='test')\n", 117 | "plt.scatter(feature_train[0], target_train[0], color=train_color, label='train')\n", 118 | "\n", 119 | "try:\n", 120 | " plt.plot(feature_test, reg.predict(feature_test))\n", 121 | "except NameError:\n", 122 | " pass\n", 123 | "\n", 124 | "plt.xlabel(features_list[1])\n", 125 | "plt.ylabel(features_list[0])\n", 126 | "plt.legend()\n", 127 | "plt.show()" 128 | ] 129 | } 130 | ], 131 | "metadata": { 132 | "kernelspec": { 133 | "display_name": "Python 3", 134 | "language": "python", 135 | "name": "python3" 136 | }, 137 | "language_info": { 138 | "codemirror_mode": { 139 | "name": "ipython", 140 | "version": 3 141 | }, 142 | "file_extension": ".py", 143 | "mimetype": "text/x-python", 144 | "name": "python", 145 | "nbconvert_exporter": "python", 146 | "pygments_lexer": "ipython3", 147 | "version": "3.8.2" 148 | } 149 | }, 150 | "nbformat": 4, 151 | "nbformat_minor": 4 152 | } -------------------------------------------------------------------------------- /08-outliers/outlier_removal_regression.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter code for the Outliers Mini-Project" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import random\n", 17 | "import pickle\n", 18 | "\n", 19 | "import numpy as np\n", 20 | "import matplotlib.pyplot as plt" 21 | ] 22 | }, 23 | { 24 | "cell_type": "markdown", 25 | "metadata": {}, 26 | "source": [ 27 | "## Load up some practice data with outliers in it" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": null, 33 | "metadata": {}, 34 | "outputs": [], 35 | "source": [ 36 | "with open('practice_outliers_ages.pkl', 'rb') as f:\n", 37 | " ages = pickle.load(f)\n", 38 | " \n", 39 | "with open('practice_outliers_net_worths.pkl', 'rb') as f:\n", 40 | " net_worths = pickle.load(f)" 41 | ] 42 | }, 43 | { 44 | "cell_type": "markdown", 45 | "metadata": {}, 46 | "source": [ 47 | "- ages and net_worths need to be reshaped into 2D numpy arrays\n", 48 | "- second argument of reshape command is a tuple of integers: `(n_rows, n_columns)`\n", 49 | "- by convention, `n_rows` is the number of data points\n", 50 | "- and `n_columns` is the number of features" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [ 59 | "from sklearn.model_selection import train_test_split\n", 60 | "\n", 61 | "ages = np.reshape(np.array(ages), (len(ages), 1))\n", 62 | "net_worths = np.reshape(np.array(net_worths), (len(net_worths), 1))\n", 63 | "\n", 64 | "ages_train, ages_test, net_worths_train, net_worths_test = train_test_split(ages, net_worths, test_size=0.1, random_state=42)" 65 | ] 66 | }, 67 | { 68 | "cell_type": "markdown", 69 | "metadata": {}, 70 | "source": [ 71 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 72 | ] 73 | }, 74 | { 75 | "cell_type": "markdown", 76 | "metadata": {}, 77 | "source": [ 78 | "Fill in a regression here! Name the regression object `reg` so that the plotting code below works, and you can see what your regression looks like" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": null, 84 | "metadata": {}, 85 | "outputs": [], 86 | "source": [] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": null, 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": [ 94 | "try:\n", 95 | " plt.plot(ages, reg.predict(ages), color=\"blue\")\n", 96 | "except NameError:\n", 97 | " pass\n", 98 | "plt.scatter(ages, net_worths)\n", 99 | "plt.show()" 100 | ] 101 | }, 102 | { 103 | "cell_type": "markdown", 104 | "metadata": {}, 105 | "source": [ 106 | "## Identify and remove the most outlier-y points" 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": null, 112 | "metadata": {}, 113 | "outputs": [], 114 | "source": [ 115 | "def outlier_cleaner(predictions, ages, net_worths):\n", 116 | " \"\"\"Clean away the 10% of points that have the largest\n", 117 | " residual errors (difference between the prediction\n", 118 | " and the actual net worth).\n", 119 | "\n", 120 | " Return a list of tuples named cleaned_data where\n", 121 | " each tuple is of the form (age, net_worth, error).\n", 122 | " \"\"\"\n", 123 | " cleaned_data = []\n", 124 | "\n", 125 | " #=== Your Code Goes Here ===#\n", 126 | "\n", 127 | "\n", 128 | "\n", 129 | " return cleaned_data" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": null, 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": [ 138 | "cleaned_data = []\n", 139 | "\n", 140 | "try:\n", 141 | " predictions = reg.predict(ages_train)\n", 142 | " cleaned_data = outlier_cleaner(predictions, ages_train, net_worths_train)\n", 143 | "except NameError:\n", 144 | " print(\"Your regression object doesn't exist, or isn't name reg\")\n", 145 | " print(\"Can't make predictions to use in identifying outliers\")" 146 | ] 147 | }, 148 | { 149 | "cell_type": "markdown", 150 | "metadata": {}, 151 | "source": [ 152 | "**Only run this code if `cleaned_data` is returning data**" 153 | ] 154 | }, 155 | { 156 | "cell_type": "code", 157 | "execution_count": null, 158 | "metadata": {}, 159 | "outputs": [], 160 | "source": [ 161 | "if cleaned_data:\n", 162 | " ages, net_worths, errors = cleaned_data\n", 163 | " ages = np.reshape(np.array(ages), (len(ages), 1))\n", 164 | " net_worths = np.reshape(np.array(net_worths), (len(net_worths), 1))\n", 165 | "\n", 166 | " # Refit your cleaned data!\n", 167 | "\n", 168 | " try:\n", 169 | " reg.fit(ages, net_worths)\n", 170 | " plt.plot(ages, reg.predict(ages), color=\"blue\")\n", 171 | " except NameError:\n", 172 | " print(\"you don't seem to have regression imported/created,\")\n", 173 | " print(\" or else your regression object isn't named reg\")\n", 174 | " print(\" either way, only draw the scatter plot of the cleaned data\")\n", 175 | "\n", 176 | " plt.scatter(ages, net_worths)\n", 177 | " plt.xlabel(\"ages\")\n", 178 | " plt.ylabel(\"net worths\")\n", 179 | " plt.show()\n", 180 | "else:\n", 181 | " print(\"outlier_cleaner() is returning an empty list, no refitting to be done\")" 182 | ] 183 | }, 184 | { 185 | "cell_type": "markdown", 186 | "metadata": {}, 187 | "source": [ 188 | "## Enron Outliers" 189 | ] 190 | }, 191 | { 192 | "cell_type": "code", 193 | "execution_count": null, 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "import sys\n", 198 | "import pickle\n", 199 | "import matplotlib.pyplot\n", 200 | "\n", 201 | "sys.path.append(\"../utils/\")\n", 202 | "\n", 203 | "from feature_format import feature_format, target_feature_split" 204 | ] 205 | }, 206 | { 207 | "cell_type": "markdown", 208 | "metadata": {}, 209 | "source": [ 210 | "read in data dictionary, convert to numpy array" 211 | ] 212 | }, 213 | { 214 | "cell_type": "code", 215 | "execution_count": null, 216 | "metadata": {}, 217 | "outputs": [], 218 | "source": [ 219 | "with open('../17-final-project/final_project_dataset.pkl', 'rb') as f:\n", 220 | " data_dict = pickle.load(f)\n", 221 | "\n", 222 | "features = [\"salary\", \"bonus\"]\n", 223 | "data = feature_format(data_dict, features)" 224 | ] 225 | }, 226 | { 227 | "cell_type": "markdown", 228 | "metadata": {}, 229 | "source": [ 230 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 231 | ] 232 | }, 233 | { 234 | "cell_type": "code", 235 | "execution_count": null, 236 | "metadata": {}, 237 | "outputs": [], 238 | "source": [] 239 | } 240 | ], 241 | "metadata": { 242 | "kernelspec": { 243 | "display_name": "Python 3", 244 | "language": "python", 245 | "name": "python3" 246 | }, 247 | "language_info": { 248 | "codemirror_mode": { 249 | "name": "ipython", 250 | "version": 3 251 | }, 252 | "file_extension": ".py", 253 | "mimetype": "text/x-python", 254 | "name": "python", 255 | "nbconvert_exporter": "python", 256 | "pygments_lexer": "ipython3", 257 | "version": "3.8.2" 258 | } 259 | }, 260 | "nbformat": 4, 261 | "nbformat_minor": 4 262 | } -------------------------------------------------------------------------------- /08-outliers/practice_outliers_ages.pkl: -------------------------------------------------------------------------------- 1 | (lp0 2 | I49 3 | aI21 4 | aI32 5 | aI30 6 | aI53 7 | aI51 8 | aI61 9 | aI23 10 | aI39 11 | aI21 12 | aI30 13 | aI43 14 | aI21 15 | aI29 16 | aI49 17 | aI45 18 | aI30 19 | aI47 20 | aI57 21 | aI20 22 | aI57 23 | aI52 24 | aI35 25 | aI27 26 | aI64 27 | aI35 28 | aI24 29 | aI24 30 | aI58 31 | aI47 32 | aI57 33 | aI53 34 | aI44 35 | aI64 36 | aI37 37 | aI45 38 | aI58 39 | aI48 40 | aI59 41 | aI46 42 | aI52 43 | aI22 44 | aI30 45 | aI33 46 | aI23 47 | aI30 48 | aI24 49 | aI32 50 | aI49 51 | aI36 52 | aI37 53 | aI29 54 | aI32 55 | aI63 56 | aI49 57 | aI48 58 | aI27 59 | aI53 60 | aI27 61 | aI37 62 | aI65 63 | aI49 64 | aI45 65 | aI51 66 | aI58 67 | aI55 68 | aI30 69 | aI21 70 | aI34 71 | aI32 72 | aI29 73 | aI63 74 | aI60 75 | aI34 76 | aI50 77 | aI38 78 | aI62 79 | aI41 80 | aI32 81 | aI31 82 | aI45 83 | aI32 84 | aI46 85 | aI61 86 | aI38 87 | aI30 88 | aI65 89 | aI43 90 | aI24 91 | aI22 92 | aI25 93 | aI48 94 | aI56 95 | aI39 96 | aI22 97 | aI37 98 | aI65 99 | aI44 100 | aI64 101 | aI59 102 | a. -------------------------------------------------------------------------------- /08-outliers/practice_outliers_net_worths.pkl: -------------------------------------------------------------------------------- 1 | (lp0 2 | F316.18428306022463 3 | aF128.4847139765763 4 | aF212.95377076201385 5 | aF217.96059712816052 6 | aF326.56693250553326 7 | aF314.0672608610164 8 | aF412.83425631014785 9 | aF159.09869458305818 10 | aF234.36051228130097 11 | aF142.1012008717193 12 | aF178.23164614375077 13 | aF259.43540492859483 14 | aF136.08924543132068 15 | aF142.98439510684403 16 | aF271.75164334973937 17 | aF270.00424941518054 18 | aF167.24337759331152 19 | aF300.0349466519055 20 | aF338.08951848957577 21 | aF96.75392597329417 22 | aF385.5629753784311 23 | aF320.4844739902693 24 | aF220.10056409375846 25 | aF140.25503627573087 26 | aF389.1123455094963 27 | aF220.96845179419734 28 | aF126.98012845155395 29 | aF157.51396036691344 30 | aF350.4872262016239 31 | aF287.91612500413447 32 | aF344.21586775541203 33 | aF368.29556369017877 34 | aF274.7300555052413 35 | aF378.84578142088196 36 | aF247.70089824206377 37 | aF256.83312700057957 38 | aF366.6772719000951 39 | aF260.8065975224045 40 | aF342.1862790220314 41 | aF291.4372247173825 42 | aF339.7693315999082 43 | aF140.9273656237994 44 | aF185.1870343522352 45 | aF200.22792608821422 46 | aF114.17956019265145 47 | aF173.10311583210583 48 | aF140.78722458080426 49 | aF221.1424445243783 50 | aF313.12236579136925 51 | aF189.73919689274533 52 | aF237.7316793878959 53 | aF173.54835439167368 54 | aF186.46155999388083 55 | aF405.9835257768174 56 | aF326.86999044991904 57 | aF318.62560238232396 58 | aF151.96564953554724 59 | aF325.0657524829757 60 | aF175.37526862807127 61 | aF250.76090254244718 62 | aF396.6665152430942 63 | aF302.53682046672367 64 | aF259.1233005198794 65 | aF294.8258675183866 66 | aF378.75051644788397 67 | aF370.8748005714165 68 | aF186.05979756839332 69 | aF151.32065795784047 70 | aF219.7327205009527 71 | aF187.0976049078975 72 | aF188.4779121101683 73 | aF424.51073132931936 74 | aF374.28347921780096 75 | aF243.79287311628013 76 | aF260.1050979182051 77 | aF253.93805008750448 78 | aF389.24094136476344 79 | aF250.26985299068266 80 | aF201.83521553071006 81 | aF153.99862170798215 82 | aF276.85656224324975 83 | aF207.14225143023492 84 | aF317.0578808948303 85 | aF370.88459563452705 86 | aF221.33012794213624 87 | aF177.46485912830926 88 | aF424.5580423540415 89 | aF275.3250221931937 90 | aF139.40479592465923 91 | aF147.76534866226712 92 | aF133.88384977349668 93 | aF80.9013362873476 94 | aF121.11602327460938 95 | aF134.41369498852399 96 | aF47.70052124577958 97 | aF16.507788679151513 98 | aF34.19027438129125 99 | aF64.06616829393845 100 | aF122.70221488837397 101 | aF129.10958748845152 102 | a. -------------------------------------------------------------------------------- /09-10-k-means/k_means_cluster.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for k-means Clustering and Feature Scaling Mini-Projects" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import sys\n", 17 | "import pickle\n", 18 | "\n", 19 | "import numpy as np\n", 20 | "import matplotlib.pyplot as plt\n", 21 | "\n", 22 | "sys.path.append('../utils/')\n", 23 | "\n", 24 | "from feature_format import feature_format, target_feature_split" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": null, 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "def draw(pred, features, poi, mark_poi=False, name='image.png', f1_name='feature 1', f2_name='feature 2'):\n", 34 | " \"\"\"Some plotting code designed to help you visualize your clusters \"\"\"\n", 35 | "\n", 36 | " # Plot each cluster with a different color--add more colors for\n", 37 | " # drawing more than five clusters\n", 38 | " colors = [\"b\", \"c\", \"k\", \"m\", \"g\"]\n", 39 | " for ii, pp in enumerate(pred):\n", 40 | " plt.scatter(features[ii][0], features[ii][1], color = colors[pred[ii]])\n", 41 | "\n", 42 | " # If you like, place red stars over points that are POIs (just for funsies)\n", 43 | " if mark_poi:\n", 44 | " for ii, pp in enumerate(pred):\n", 45 | " if poi[ii]:\n", 46 | " plt.scatter(features[ii][0], features[ii][1], color=\"r\", marker=\"*\")\n", 47 | " plt.xlabel(f1_name)\n", 48 | " plt.ylabel(f2_name)\n", 49 | " plt.savefig(name)\n", 50 | " plt.show()" 51 | ] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "metadata": {}, 56 | "source": [ 57 | "**Load in the dict of dicts containing all the data on each person in the dataset**" 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": null, 63 | "metadata": {}, 64 | "outputs": [], 65 | "source": [ 66 | "with open('../17-final-project/final_project_dataset.pkl', 'rb') as f:\n", 67 | " data_dict = pickle.load(f)" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "metadata": {}, 73 | "source": [ 74 | "**There's an outlier--remove it!**" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": null, 80 | "metadata": {}, 81 | "outputs": [], 82 | "source": [ 83 | "data_dict.pop('TOTAL', 0)" 84 | ] 85 | }, 86 | { 87 | "cell_type": "markdown", 88 | "metadata": {}, 89 | "source": [ 90 | "The input features we want to use can be any key in the person-level dictionary (`salary`, `director_fees`, etc.)" 91 | ] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": null, 96 | "metadata": {}, 97 | "outputs": [], 98 | "source": [ 99 | "feature_1 = 'salary'\n", 100 | "feature_2 = 'exercised_stock_options'\n", 101 | "poi = 'poi'\n", 102 | "\n", 103 | "features_list = [poi, feature_1, feature_2]\n", 104 | "data = feature_format(data_dict, features_list)\n", 105 | "poi, finance_features = target_feature_split(data)" 106 | ] 107 | }, 108 | { 109 | "cell_type": "markdown", 110 | "metadata": {}, 111 | "source": [ 112 | "In the \"clustering with 3 features\" part of the mini-project, you'll want to change this line to for \n", 113 | "```python\n", 114 | "f1, f2, _ in finance_features:\n", 115 | "```\n", 116 | "as it's currently written, the line below assumes 2 features" 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": null, 122 | "metadata": {}, 123 | "outputs": [], 124 | "source": [ 125 | "for f1, f2 in finance_features:\n", 126 | " plt.scatter(f1, f2)\n", 127 | "\n", 128 | "plt.show()" 129 | ] 130 | }, 131 | { 132 | "cell_type": "markdown", 133 | "metadata": {}, 134 | "source": [ 135 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 136 | ] 137 | }, 138 | { 139 | "cell_type": "markdown", 140 | "metadata": {}, 141 | "source": [ 142 | "Cluster here; create predictions of the cluster labels for the data and store them to a list called pred" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": null, 148 | "metadata": {}, 149 | "outputs": [], 150 | "source": [] 151 | }, 152 | { 153 | "cell_type": "markdown", 154 | "metadata": {}, 155 | "source": [ 156 | "Rename the `name` parameter when you change the number of features so that the figure gets saved to a different file" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": null, 162 | "metadata": {}, 163 | "outputs": [], 164 | "source": [ 165 | "try:\n", 166 | " draw(pred, finance_features, poi, mark_poi=False, name=\"clusters.pdf\", f1_name=feature_1, f2_name=feature_2)\n", 167 | "except NameError:\n", 168 | " print('No predictions object named pred found, no clusters to plot')" 169 | ] 170 | } 171 | ], 172 | "metadata": { 173 | "kernelspec": { 174 | "display_name": "Python 3", 175 | "language": "python", 176 | "name": "python3" 177 | }, 178 | "language_info": { 179 | "codemirror_mode": { 180 | "name": "ipython", 181 | "version": 3 182 | }, 183 | "file_extension": ".py", 184 | "mimetype": "text/x-python", 185 | "name": "python", 186 | "nbconvert_exporter": "python", 187 | "pygments_lexer": "ipython3", 188 | "version": "3.8.2" 189 | } 190 | }, 191 | "nbformat": 4, 192 | "nbformat_minor": 4 193 | } -------------------------------------------------------------------------------- /11-text-learning/test_email.txt: -------------------------------------------------------------------------------- 1 | To: Katie_and_Sebastians_Excellent_Students@udacity.com 2 | From: katie@udacity.com 3 | X-FileName: 4 | 5 | Hi Everyone! If you can read this message, you're properly using parseOutText. Please proceed to the next part of the project! 6 | -------------------------------------------------------------------------------- /11-text-learning/vectorize_text.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for the Lesson 11: Text Learning Mini-Project" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import os\n", 17 | "import pickle\n", 18 | "import re\n", 19 | "import sys\n", 20 | "\n", 21 | "sys.path.append('../utils/')\n", 22 | "from parse_out_email_text import parse_out_text" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": {}, 28 | "source": [ 29 | "Starter code to process the emails from Sara and Chris to extract\n", 30 | "the features and get the documents ready for classification.\n", 31 | "\n", 32 | "The list of all the emails from Sara are in the `from_sara` list\n", 33 | "likewise for emails from Chris (`from_chris`)\n", 34 | "\n", 35 | "The actual documents are in the Enron email dataset, which\n", 36 | "you downloaded/unpacked in Part 0 of the first mini-project. If you have\n", 37 | "not obtained the Enron email corpus, run `starter.py` in the `utils` folder.\n", 38 | "\n", 39 | "The data is stored in lists and packed away in pickle files at the end." 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": null, 45 | "metadata": {}, 46 | "outputs": [], 47 | "source": [ 48 | "with open(\"from_sara.txt\", \"r\") as from_sara, open(\"from_chris.txt\", \"r\") as from_chris:\n", 49 | " from_data = []\n", 50 | " word_data = []\n", 51 | " \n", 52 | " # temp_counter is a way to speed up the development--there are\n", 53 | " # thousands of emails from Sara and Chris, so running over all of them\n", 54 | " # can take a long time\n", 55 | " # temp_counter helps you only look at the first 200 emails in the list so you\n", 56 | " # can iterate your modifications quicker\n", 57 | " temp_counter = 0\n", 58 | "\n", 59 | " for name, from_person in [(\"sara\", from_sara), (\"chris\", from_chris)]:\n", 60 | " for path in from_person:\n", 61 | " # only look at first 200 emails when developing\n", 62 | " # once everything is working, remove this line to run over full dataset\n", 63 | " temp_counter += 1\n", 64 | " if temp_counter < 200:\n", 65 | " path = os.path.join('..', path[:-1])\n", 66 | " print(path)\n", 67 | " with open(path, \"r\") as email:\n", 68 | "\n", 69 | " # use parse_out_text to extract the text from the opened email\n", 70 | "\n", 71 | " # use str.replace() to remove any instances of the words\n", 72 | " # [\"sara\", \"shackleton\", \"chris\", \"germani\"]\n", 73 | "\n", 74 | " # append the text to word_data\n", 75 | "\n", 76 | " # append a 0 to from_data if email is from Sara, and 1 if email is from Chris\n", 77 | "\n", 78 | "\n", 79 | "print(\"Emails processed\")\n", 80 | "\n", 81 | "with open(\"your_word_data.pkl\", \"w\") as f:\n", 82 | " pickle.dump(word_data, f)\n", 83 | "\n", 84 | "with open(\"your_email_authors.pkl\", \"w\") as f:\n", 85 | " pickle.dump(from_data, f)" 86 | ] 87 | }, 88 | { 89 | "cell_type": "markdown", 90 | "metadata": {}, 91 | "source": [ 92 | "## Part 4, do TfIdf vectorization here" 93 | ] 94 | }, 95 | { 96 | "cell_type": "markdown", 97 | "metadata": {}, 98 | "source": [ 99 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": null, 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [] 108 | } 109 | ], 110 | "metadata": { 111 | "kernelspec": { 112 | "display_name": "Python 3", 113 | "language": "python", 114 | "name": "python3" 115 | }, 116 | "language_info": { 117 | "codemirror_mode": { 118 | "name": "ipython", 119 | "version": 3 120 | }, 121 | "file_extension": ".py", 122 | "mimetype": "text/x-python", 123 | "name": "python", 124 | "nbconvert_exporter": "python", 125 | "pygments_lexer": "ipython3", 126 | "version": "3.8.5" 127 | } 128 | }, 129 | "nbformat": 4, 130 | "nbformat_minor": 4 131 | } 132 | -------------------------------------------------------------------------------- /12-feature-selection/email_authors.pkl: -------------------------------------------------------------------------------- 1 | (lp0 2 | I0 3 | aI0 4 | aI0 5 | aI0 6 | aI0 7 | aI0 8 | aI0 9 | aI0 10 | aI0 11 | aI0 12 | aI0 13 | aI0 14 | aI0 15 | aI0 16 | aI0 17 | aI0 18 | aI0 19 | aI0 20 | aI0 21 | aI0 22 | aI0 23 | aI0 24 | aI0 25 | aI0 26 | aI0 27 | aI0 28 | aI0 29 | aI0 30 | aI0 31 | aI0 32 | aI0 33 | aI0 34 | aI0 35 | aI0 36 | aI0 37 | aI0 38 | aI0 39 | aI0 40 | aI0 41 | aI0 42 | aI0 43 | aI0 44 | aI0 45 | aI0 46 | aI0 47 | aI0 48 | aI0 49 | aI0 50 | aI0 51 | aI0 52 | aI0 53 | aI0 54 | aI0 55 | aI0 56 | aI0 57 | aI0 58 | aI0 59 | aI0 60 | aI0 61 | aI0 62 | aI0 63 | aI0 64 | aI0 65 | aI0 66 | aI0 67 | aI0 68 | aI0 69 | aI0 70 | aI0 71 | aI0 72 | aI0 73 | aI0 74 | aI0 75 | aI0 76 | aI0 77 | aI0 78 | aI0 79 | aI0 80 | aI0 81 | aI0 82 | aI0 83 | aI0 84 | aI0 85 | aI0 86 | aI0 87 | aI0 88 | aI0 89 | aI0 90 | aI0 91 | aI0 92 | aI0 93 | aI0 94 | aI0 95 | aI0 96 | aI0 97 | aI0 98 | aI0 99 | aI0 100 | aI0 101 | aI0 102 | aI0 103 | aI0 104 | aI0 105 | aI0 106 | aI0 107 | aI0 108 | aI0 109 | aI0 110 | aI0 111 | aI0 112 | aI0 113 | aI0 114 | aI0 115 | aI0 116 | aI0 117 | aI0 118 | aI0 119 | aI0 120 | aI0 121 | aI0 122 | aI0 123 | aI0 124 | aI0 125 | aI0 126 | aI0 127 | aI0 128 | aI0 129 | aI0 130 | aI0 131 | aI0 132 | aI0 133 | aI0 134 | aI0 135 | aI0 136 | aI0 137 | aI0 138 | aI0 139 | aI0 140 | aI0 141 | aI0 142 | aI0 143 | aI0 144 | aI0 145 | aI0 146 | aI0 147 | aI0 148 | aI0 149 | aI0 150 | aI0 151 | aI0 152 | aI0 153 | aI0 154 | aI0 155 | aI0 156 | aI0 157 | aI0 158 | aI0 159 | aI0 160 | aI0 161 | aI0 162 | aI0 163 | aI0 164 | aI0 165 | aI0 166 | aI0 167 | aI0 168 | aI0 169 | aI0 170 | aI0 171 | aI0 172 | aI0 173 | aI0 174 | aI0 175 | aI0 176 | aI0 177 | aI0 178 | aI0 179 | aI0 180 | aI0 181 | aI0 182 | aI0 183 | aI0 184 | aI0 185 | aI0 186 | aI0 187 | aI0 188 | aI0 189 | aI0 190 | aI0 191 | aI0 192 | aI0 193 | aI0 194 | aI0 195 | aI0 196 | aI0 197 | aI0 198 | aI0 199 | aI0 200 | aI0 201 | a. -------------------------------------------------------------------------------- /12-feature-selection/find_signature.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for the Lesson 12: Feature Selection" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import pickle\n", 17 | "\n", 18 | "import numpy\n", 19 | "from sklearn.model_selection import train_test_split\n", 20 | "from sklearn.feature_extraction.text import TfidfVectorizer\n", 21 | "\n", 22 | "numpy.random.seed(42)" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": {}, 28 | "source": [ 29 | "The words (features) and authors (labels), already largely processed.\n", 30 | "\n", 31 | "These files should have been created from the previous (Lesson 11) mini-project." 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": null, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "words_file = \"../11-text-learning/your_word_data.pkl\" \n", 41 | "authors_file = \"../11-text-learning/your_email_authors.pkl\"\n", 42 | "\n", 43 | "with open(words_file, \"r\") as f:\n", 44 | " word_data = pickle.load(f)\n", 45 | " \n", 46 | "with open(authors_file, \"r\") as f:\n", 47 | " authors = pickle.load(f) " 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": {}, 53 | "source": [ 54 | "`test_size` is the percentage of events assigned to the test set (the remainder go into training) feature matrices changed to dense representations for compatibility with classifier functions in versions 0.15.2 and earlier" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": null, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "features_train, features_test, labels_train, labels_test = train_test_split(word_data, authors, test_size=0.1, random_state=42)\n", 64 | "vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words='english')\n", 65 | "\n", 66 | "features_train = vectorizer.fit_transform(features_train)\n", 67 | "features_test = vectorizer.transform(features_test).toarray()" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "metadata": {}, 73 | "source": [ 74 | "A classic way to overfit is to use a small number of data points and a large number of features;\n", 75 | "\n", 76 | "train on only 150 events to put ourselves in this regime:" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": null, 82 | "metadata": {}, 83 | "outputs": [], 84 | "source": [ 85 | "features_train = features_train[:150].toarray()\n", 86 | "labels_train = labels_train[:150]" 87 | ] 88 | }, 89 | { 90 | "cell_type": "markdown", 91 | "metadata": {}, 92 | "source": [ 93 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 94 | ] 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": null, 99 | "metadata": {}, 100 | "outputs": [], 101 | "source": [] 102 | } 103 | ], 104 | "metadata": { 105 | "kernelspec": { 106 | "display_name": "Python 3", 107 | "language": "python", 108 | "name": "python3" 109 | }, 110 | "language_info": { 111 | "codemirror_mode": { 112 | "name": "ipython", 113 | "version": 3 114 | }, 115 | "file_extension": ".py", 116 | "mimetype": "text/x-python", 117 | "name": "python", 118 | "nbconvert_exporter": "python", 119 | "pygments_lexer": "ipython3", 120 | "version": "3.8.5" 121 | } 122 | }, 123 | "nbformat": 4, 124 | "nbformat_minor": 4 125 | } -------------------------------------------------------------------------------- /13-pca/eigenfaces.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for the Lesson 13: PCA" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## Faces recognition example using eigenfaces and SVMs" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "The dataset used in this example is a preprocessed excerpt of the\n", 22 | "\"Labeled Faces in the Wild\", aka LFW_:\n", 23 | "\n", 24 | " http://vis-www.cs.umass.edu/lfw/lfw-funneled.tgz (233MB)\n", 25 | "\n", 26 | " .. _LFW: http://vis-www.cs.umass.edu/lfw/\n", 27 | "\n", 28 | "original source: http://scikit-learn.org/stable/auto_examples/applications/face_recognition.html" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": null, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "from time import time\n", 38 | "import logging\n", 39 | "\n", 40 | "import numpy as np\n", 41 | "\n", 42 | "from sklearn.model_selection import train_test_split\n", 43 | "from sklearn.datasets import fetch_lfw_people\n", 44 | "from sklearn.model_selection import GridSearchCV\n", 45 | "from sklearn.metrics import classification_report\n", 46 | "from sklearn.metrics import confusion_matrix\n", 47 | "from sklearn.decomposition import PCA\n", 48 | "from sklearn.svm import SVC\n", 49 | "\n", 50 | "import matplotlib.pyplot as plt" 51 | ] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "metadata": {}, 56 | "source": [ 57 | "### Display progress logs on stdout" 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": null, 63 | "metadata": {}, 64 | "outputs": [], 65 | "source": [ 66 | "logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s')" 67 | ] 68 | }, 69 | { 70 | "cell_type": "markdown", 71 | "metadata": {}, 72 | "source": [ 73 | "## Download the data, if not already on disk and load it as numpy arrays" 74 | ] 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": null, 79 | "metadata": {}, 80 | "outputs": [], 81 | "source": [ 82 | "lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)" 83 | ] 84 | }, 85 | { 86 | "cell_type": "markdown", 87 | "metadata": {}, 88 | "source": [ 89 | "## Introspect the images arrays to find the shapes (for plotting)" 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "execution_count": null, 95 | "metadata": {}, 96 | "outputs": [], 97 | "source": [ 98 | "n_samples, h, w = lfw_people.images.shape\n", 99 | "np.random.seed(42)\n", 100 | "\n", 101 | "# for machine learning we use the data directly (as relative pixel\n", 102 | "# position info is ignored by this model)\n", 103 | "X = lfw_people.data\n", 104 | "n_features = X.shape[1]\n", 105 | "\n", 106 | "# the label to predict is the id of the person\n", 107 | "y = lfw_people.target\n", 108 | "target_names = lfw_people.target_names\n", 109 | "n_classes = target_names.shape[0]\n", 110 | "\n", 111 | "print(\"Total dataset size:\")\n", 112 | "print(f\"n_samples: {n_samples}\")\n", 113 | "print(f\"n_features: {n_features}\")\n", 114 | "print(f\"n_classes: {n_classes}\")" 115 | ] 116 | }, 117 | { 118 | "cell_type": "markdown", 119 | "metadata": {}, 120 | "source": [ 121 | "## Split into a training and testing set" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": null, 127 | "metadata": {}, 128 | "outputs": [], 129 | "source": [ 130 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)" 131 | ] 132 | }, 133 | { 134 | "cell_type": "markdown", 135 | "metadata": {}, 136 | "source": [ 137 | "## Compute a PCA (eigenfaces) on the face dataset (treated as unlabeled dataset): unsupervised feature extraction / dimensionality reduction" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": null, 143 | "metadata": {}, 144 | "outputs": [], 145 | "source": [ 146 | "n_components = 150\n", 147 | "\n", 148 | "print(f\"Extracting the top {n_components} eigenfaces from {X_train.shape[0]} faces\")\n", 149 | "t0 = time()\n", 150 | "pca = PCA(n_components=n_components, whiten=True).fit(X_train)\n", 151 | "\n", 152 | "print(\"done in %0.3fs\" % (time() - t0))\n", 153 | "\n", 154 | "eigenfaces = pca.components_.reshape((n_components, h, w))\n", 155 | "\n", 156 | "print(\"Projecting the input data on the eigenfaces orthonormal basis\")\n", 157 | "\n", 158 | "t0 = time()\n", 159 | "X_train_pca = pca.transform(X_train)\n", 160 | "X_test_pca = pca.transform(X_test)\n", 161 | "\n", 162 | "print(\"done in %0.3fs\" % (time() - t0))" 163 | ] 164 | }, 165 | { 166 | "cell_type": "markdown", 167 | "metadata": {}, 168 | "source": [ 169 | "## Train a SVM classification model" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": null, 175 | "metadata": {}, 176 | "outputs": [], 177 | "source": [ 178 | "print(\"Fitting the classifier to the training set\")\n", 179 | "\n", 180 | "t0 = time()\n", 181 | "param_grid = {\n", 182 | " 'C': [1e3, 5e3, 1e4, 5e4, 1e5],\n", 183 | " 'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.1],\n", 184 | "}\n", 185 | "\n", 186 | "# For sklearn version 0.16 or prior, the class_weight parameter value is 'auto'\n", 187 | "clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)\n", 188 | "clf = clf.fit(X_train_pca, y_train)\n", 189 | "\n", 190 | "print(\"Done in %0.3fs\" % (time() - t0))\n", 191 | "print(\"Best estimator found by grid search:\")\n", 192 | "print(clf.best_estimator_)" 193 | ] 194 | }, 195 | { 196 | "cell_type": "markdown", 197 | "metadata": {}, 198 | "source": [ 199 | "## Quantitative evaluation of the model quality on the test set" 200 | ] 201 | }, 202 | { 203 | "cell_type": "code", 204 | "execution_count": null, 205 | "metadata": {}, 206 | "outputs": [], 207 | "source": [ 208 | "print(\"Predicting the people names on the testing set\")\n", 209 | "\n", 210 | "t0 = time()\n", 211 | "y_pred = clf.predict(X_test_pca)\n", 212 | "print(\"Done in %0.3fs\" % (time() - t0))\n", 213 | "\n", 214 | "print(classification_report(y_test, y_pred, target_names=target_names))\n", 215 | "print(confusion_matrix(y_test, y_pred, labels=range(n_classes)))" 216 | ] 217 | }, 218 | { 219 | "cell_type": "markdown", 220 | "metadata": {}, 221 | "source": [ 222 | "## Qualitative evaluation of the predictions using matplotlib " 223 | ] 224 | }, 225 | { 226 | "cell_type": "code", 227 | "execution_count": null, 228 | "metadata": {}, 229 | "outputs": [], 230 | "source": [ 231 | "def plot_gallery(images, titles, h, w, n_row=3, n_col=4):\n", 232 | " \"\"\"Helper function to plot a gallery of portraits.\n", 233 | " \"\"\"\n", 234 | " plt.figure(figsize=(1.8 * n_col, 2.4 * n_row))\n", 235 | " plt.subplots_adjust(bottom=0, left=.01, right=.99, top=.90, hspace=.35)\n", 236 | "\n", 237 | " for i in range(n_row * n_col):\n", 238 | " plt.subplot(n_row, n_col, i + 1)\n", 239 | " plt.imshow(images[i].reshape((h, w)), cmap=plt.cm.gray)\n", 240 | " plt.title(titles[i], size=12)\n", 241 | " plt.xticks(())\n", 242 | " plt.yticks(())\n", 243 | "\n", 244 | "\n", 245 | "# Plot the result of the prediction on a portion of the test set\n", 246 | "\n", 247 | "def title(y_pred, y_test, target_names, i):\n", 248 | " pred_name = target_names[y_pred[i]].rsplit(' ', 1)[-1]\n", 249 | " true_name = target_names[y_test[i]].rsplit(' ', 1)[-1]\n", 250 | " return f'Predicted: {pred_name}\\ntrue: {true_name}'\n", 251 | "\n", 252 | "prediction_titles = [title(y_pred, y_test, target_names, i) for i in range(y_pred.shape[0])]\n", 253 | "\n", 254 | "plot_gallery(X_test, prediction_titles, h, w)\n", 255 | "\n", 256 | "# Plot the gallery of the most significative eigenfaces\n", 257 | "\n", 258 | "eigenface_titles = [\"eigenface %d\" % i for i in range(eigenfaces.shape[0])]\n", 259 | "plot_gallery(eigenfaces, eigenface_titles, h, w)\n", 260 | "\n", 261 | "plt.show()" 262 | ] 263 | } 264 | ], 265 | "metadata": { 266 | "kernelspec": { 267 | "display_name": "Python 3", 268 | "language": "python", 269 | "name": "python3" 270 | }, 271 | "language_info": { 272 | "codemirror_mode": { 273 | "name": "ipython", 274 | "version": 3 275 | }, 276 | "file_extension": ".py", 277 | "mimetype": "text/x-python", 278 | "name": "python", 279 | "nbconvert_exporter": "python", 280 | "pygments_lexer": "ipython3", 281 | "version": "3.8.5" 282 | } 283 | }, 284 | "nbformat": 4, 285 | "nbformat_minor": 4 286 | } 287 | -------------------------------------------------------------------------------- /14-validation/validate_poi.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for the Lesson 14: Validation" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "The first step toward building your POI identifier!\n", 15 | "\n", 16 | "Start by loading/formatting the data\n", 17 | "\n", 18 | "After that, it's not our code anymore--it's yours!" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": null, 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [ 27 | "import sys\n", 28 | "import pickle\n", 29 | "\n", 30 | "sys.path.append(\"../utils/\")\n", 31 | "from feature_format import feature_format, target_feature_split" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": null, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "with open('../17-final-project/final_project_dataset.pkl', 'rb') as f:\n", 41 | " data_dict = pickle.load(f)" 42 | ] 43 | }, 44 | { 45 | "cell_type": "markdown", 46 | "metadata": {}, 47 | "source": [ 48 | "First element is our labels, any added elements are predictor\n", 49 | "features. Keep this the same for the mini-project, but you'll\n", 50 | "have a different feature list when you do the final project." 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [ 59 | "features_list = [\"poi\", \"salary\"]\n", 60 | "\n", 61 | "data = feature_format(data_dict, features_list)\n", 62 | "labels, features = target_feature_split(data)" 63 | ] 64 | }, 65 | { 66 | "cell_type": "markdown", 67 | "metadata": {}, 68 | "source": [ 69 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": null, 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [] 78 | } 79 | ], 80 | "metadata": { 81 | "kernelspec": { 82 | "display_name": "Python 3", 83 | "language": "python", 84 | "name": "python3" 85 | }, 86 | "language_info": { 87 | "codemirror_mode": { 88 | "name": "ipython", 89 | "version": 3 90 | }, 91 | "file_extension": ".py", 92 | "mimetype": "text/x-python", 93 | "name": "python", 94 | "nbconvert_exporter": "python", 95 | "pygments_lexer": "ipython3", 96 | "version": "3.8.5" 97 | } 98 | }, 99 | "nbformat": 4, 100 | "nbformat_minor": 4 101 | } -------------------------------------------------------------------------------- /15-evaluation/evaluate_poi_identifier.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for the Lesson 15: Evaluation Metrics" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "Start by copying your trained/tested POI identifier from that which you built in the validation mini-project.\n", 15 | "\n", 16 | "This is the second step toward building your POI identifier!\n", 17 | "\n", 18 | "Start by loading/formatting the data..." 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": null, 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [ 27 | "import sys\n", 28 | "import pickle\n", 29 | "\n", 30 | "sys.path.append(\"../utils/\")\n", 31 | "from feature_format import feature_format, target_feature_split" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": null, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "with open('../17-final-project/final_project_dataset.pkl', 'rb') as f:\n", 41 | " data_dict = pickle.load(f)" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": null, 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "# Add more features to features_list!\n", 51 | "features_list = [\"poi\", \"salary\"]\n", 52 | "\n", 53 | "data = feature_format(data_dict, features_list)\n", 54 | "labels, features = target_feature_split(data)" 55 | ] 56 | }, 57 | { 58 | "cell_type": "markdown", 59 | "metadata": {}, 60 | "source": [ 61 | "## ↓↓↓ Your Code Goes Here ↓↓↓" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": null, 67 | "metadata": {}, 68 | "outputs": [], 69 | "source": [] 70 | } 71 | ], 72 | "metadata": { 73 | "kernelspec": { 74 | "display_name": "Python 3", 75 | "language": "python", 76 | "name": "python3" 77 | }, 78 | "language_info": { 79 | "codemirror_mode": { 80 | "name": "ipython", 81 | "version": 3 82 | }, 83 | "file_extension": ".py", 84 | "mimetype": "text/x-python", 85 | "name": "python", 86 | "nbconvert_exporter": "python", 87 | "pygments_lexer": "ipython3", 88 | "version": "3.8.5" 89 | } 90 | }, 91 | "nbformat": 4, 92 | "nbformat_minor": 4 93 | } -------------------------------------------------------------------------------- /17-final-project/emails_by_address.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trsvchn/ud120-projects-py3-jupyter/e44819d5ecf56f0d0914a4fc595672a800173fd2/17-final-project/emails_by_address.tar.gz -------------------------------------------------------------------------------- /17-final-project/enron61702insiderpay.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trsvchn/ud120-projects-py3-jupyter/e44819d5ecf56f0d0914a4fc595672a800173fd2/17-final-project/enron61702insiderpay.pdf -------------------------------------------------------------------------------- /17-final-project/final_project_dataset_modified.pkl: -------------------------------------------------------------------------------- 1 | (dp0 2 | S'METTS MARK' 3 | p1 4 | (dp2 5 | S'salary' 6 | p3 7 | I365788 8 | sS'to_messages' 9 | p4 10 | I807 11 | sS'deferral_payments' 12 | p5 13 | S'NaN' 14 | p6 15 | sS'total_payments' 16 | p7 17 | I1061827 18 | sS'loan_advances' 19 | p8 20 | g6 21 | sS'bonus' 22 | p9 23 | I600000 24 | sS'email_address' 25 | p10 26 | S'mark.metts@enron.com' 27 | p11 28 | sS'restricted_stock_deferred' 29 | p12 30 | g6 31 | sS'deferred_income' 32 | p13 33 | g6 34 | sS'total_stock_value' 35 | p14 36 | I585062 37 | sS'expenses' 38 | p15 39 | I94299 40 | sS'from_poi_to_this_person' 41 | p16 42 | I38 43 | sS'exercised_stock_options' 44 | p17 45 | g6 46 | sS'from_messages' 47 | p18 48 | I29 49 | sS'other' 50 | p19 51 | I1740 52 | sS'from_this_person_to_poi' 53 | p20 54 | I1 55 | sS'poi' 56 | p21 57 | I00 58 | sS'long_term_incentive' 59 | p22 60 | g6 61 | sS'shared_receipt_with_poi' 62 | p23 63 | I702 64 | sS'restricted_stock' 65 | p24 66 | I585062 67 | sS'director_fees' 68 | p25 69 | g6 70 | ssS'BAXTER JOHN C' 71 | p26 72 | (dp27 73 | g3 74 | I267102 75 | sg4 76 | g6 77 | sg5 78 | I1295738 79 | sg7 80 | I5634343 81 | sg8 82 | g6 83 | sg9 84 | I1200000 85 | sg10 86 | g6 87 | sg12 88 | g6 89 | sg13 90 | I-1386055 91 | sg14 92 | I10623258 93 | sg15 94 | I11200 95 | sg16 96 | g6 97 | sg17 98 | I6680544 99 | sg18 100 | g6 101 | sg19 102 | I2660303 103 | sg20 104 | g6 105 | sg21 106 | I00 107 | sg22 108 | I1586055 109 | sg23 110 | g6 111 | sg24 112 | I3942714 113 | sg25 114 | g6 115 | ssS'ELLIOTT STEVEN' 116 | p28 117 | (dp29 118 | g3 119 | I170941 120 | sg4 121 | g6 122 | sg5 123 | g6 124 | sg7 125 | I211725 126 | sg8 127 | g6 128 | sg9 129 | I350000 130 | sg10 131 | S'steven.elliott@enron.com' 132 | p30 133 | sg12 134 | g6 135 | sg13 136 | I-400729 137 | sg14 138 | I6678735 139 | sg15 140 | I78552 141 | sg16 142 | g6 143 | sg17 144 | I4890344 145 | sg18 146 | g6 147 | sg19 148 | I12961 149 | sg20 150 | g6 151 | sg21 152 | I00 153 | sg22 154 | g6 155 | sg23 156 | g6 157 | sg24 158 | I1788391 159 | sg25 160 | g6 161 | ssS'CORDES WILLIAM R' 162 | p31 163 | (dp32 164 | g3 165 | g6 166 | sg4 167 | I764 168 | sg5 169 | g6 170 | sg7 171 | g6 172 | sg8 173 | g6 174 | sg9 175 | g6 176 | sg10 177 | S'bill.cordes@enron.com' 178 | p33 179 | sg12 180 | g6 181 | sg13 182 | g6 183 | sg14 184 | I1038185 185 | sg15 186 | g6 187 | sg16 188 | I10 189 | sg17 190 | I651850 191 | sg18 192 | I12 193 | sg19 194 | g6 195 | sg20 196 | I0 197 | sg21 198 | I00 199 | sg22 200 | g6 201 | sg23 202 | I58 203 | sg24 204 | I386335 205 | sg25 206 | g6 207 | ssS'HANNON KEVIN P' 208 | p34 209 | (dp35 210 | g3 211 | I243293 212 | sg4 213 | I1045 214 | sg5 215 | g6 216 | sg7 217 | I288682 218 | sg8 219 | g6 220 | sg9 221 | I1500000 222 | sg10 223 | S'kevin.hannon@enron.com' 224 | p36 225 | sg12 226 | g6 227 | sg13 228 | I-3117011 229 | sg14 230 | I6391065 231 | sg15 232 | I34039 233 | sg16 234 | I32 235 | sg17 236 | I5538001 237 | sg18 238 | I32 239 | sg19 240 | I11350 241 | sg20 242 | I21 243 | sg21 244 | I01 245 | sg22 246 | I1617011 247 | sg23 248 | I1035 249 | sg24 250 | I853064 251 | sg25 252 | g6 253 | ssS'MORDAUNT KRISTINA M' 254 | p37 255 | (dp38 256 | g3 257 | I267093 258 | sg4 259 | g6 260 | sg5 261 | g6 262 | sg7 263 | I628522 264 | sg8 265 | g6 266 | sg9 267 | I325000 268 | sg10 269 | S'kristina.mordaunt@enron.com' 270 | p39 271 | sg12 272 | g6 273 | sg13 274 | g6 275 | sg14 276 | I208510 277 | sg15 278 | I35018 279 | sg16 280 | g6 281 | sg17 282 | g6 283 | sg18 284 | g6 285 | sg19 286 | I1411 287 | sg20 288 | g6 289 | sg21 290 | I00 291 | sg22 292 | g6 293 | sg23 294 | g6 295 | sg24 296 | I208510 297 | sg25 298 | g6 299 | ssS'MEYER ROCKFORD G' 300 | p40 301 | (dp41 302 | g3 303 | g6 304 | sg4 305 | I232 306 | sg5 307 | I1848227 308 | sg7 309 | I1848227 310 | sg8 311 | g6 312 | sg9 313 | g6 314 | sg10 315 | S'rockford.meyer@enron.com' 316 | p42 317 | sg12 318 | g6 319 | sg13 320 | g6 321 | sg14 322 | I955873 323 | sg15 324 | g6 325 | sg16 326 | I0 327 | sg17 328 | I493489 329 | sg18 330 | I28 331 | sg19 332 | g6 333 | sg20 334 | I0 335 | sg21 336 | I00 337 | sg22 338 | g6 339 | sg23 340 | I22 341 | sg24 342 | I462384 343 | sg25 344 | g6 345 | ssS'MCMAHON JEFFREY' 346 | p43 347 | (dp44 348 | g3 349 | I370448 350 | sg4 351 | I2355 352 | sg5 353 | g6 354 | sg7 355 | I4099771 356 | sg8 357 | g6 358 | sg9 359 | I2600000 360 | sg10 361 | S'jeffrey.mcmahon@enron.com' 362 | p45 363 | sg12 364 | g6 365 | sg13 366 | g6 367 | sg14 368 | I1662855 369 | sg15 370 | I137108 371 | sg16 372 | I58 373 | sg17 374 | I1104054 375 | sg18 376 | I48 377 | sg19 378 | I297353 379 | sg20 380 | I26 381 | sg21 382 | I00 383 | sg22 384 | I694862 385 | sg23 386 | I2228 387 | sg24 388 | I558801 389 | sg25 390 | g6 391 | ssS'HAEDICKE MARK E' 392 | p46 393 | (dp47 394 | g3 395 | I374125 396 | sg4 397 | I4009 398 | sg5 399 | I2157527 400 | sg7 401 | I3859065 402 | sg8 403 | g6 404 | sg9 405 | I1150000 406 | sg10 407 | S'mark.haedicke@enron.com' 408 | p48 409 | sg12 410 | I-329825 411 | sg13 412 | I-934484 413 | sg14 414 | I803094 415 | sg15 416 | I76169 417 | sg16 418 | I180 419 | sg17 420 | I608750 421 | sg18 422 | I1941 423 | sg19 424 | I52382 425 | sg20 426 | I61 427 | sg21 428 | I00 429 | sg22 430 | I983346 431 | sg23 432 | I1847 433 | sg24 434 | I524169 435 | sg25 436 | g6 437 | ssS'PIPER GREGORY F' 438 | p49 439 | (dp50 440 | g3 441 | I197091 442 | sg4 443 | I1238 444 | sg5 445 | I1130036 446 | sg7 447 | I1737629 448 | sg8 449 | g6 450 | sg9 451 | I400000 452 | sg10 453 | S'greg.piper@enron.com' 454 | p51 455 | sg12 456 | I-409554 457 | sg13 458 | I-33333 459 | sg14 460 | I880290 461 | sg15 462 | I43057 463 | sg16 464 | I61 465 | sg17 466 | I880290 467 | sg18 468 | I222 469 | sg19 470 | I778 471 | sg20 472 | I48 473 | sg21 474 | I00 475 | sg22 476 | g6 477 | sg23 478 | I742 479 | sg24 480 | I409554 481 | sg25 482 | g6 483 | ssS'HUMPHREY GENE E' 484 | p52 485 | (dp53 486 | g3 487 | I130724 488 | sg4 489 | I128 490 | sg5 491 | I2964506 492 | sg7 493 | I3100224 494 | sg8 495 | g6 496 | sg9 497 | g6 498 | sg10 499 | S'gene.humphrey@enron.com' 500 | p54 501 | sg12 502 | g6 503 | sg13 504 | g6 505 | sg14 506 | I2282768 507 | sg15 508 | I4994 509 | sg16 510 | I10 511 | sg17 512 | I2282768 513 | sg18 514 | I17 515 | sg19 516 | g6 517 | sg20 518 | I17 519 | sg21 520 | I00 521 | sg22 522 | g6 523 | sg23 524 | I119 525 | sg24 526 | g6 527 | sg25 528 | g6 529 | ssS'NOLES JAMES L' 530 | p55 531 | (dp56 532 | g3 533 | g6 534 | sg4 535 | g6 536 | sg5 537 | I774401 538 | sg7 539 | I774401 540 | sg8 541 | g6 542 | sg9 543 | g6 544 | sg10 545 | g6 546 | sg12 547 | I-94556 548 | sg13 549 | g6 550 | sg14 551 | I368705 552 | sg15 553 | g6 554 | sg16 555 | g6 556 | sg17 557 | g6 558 | sg18 559 | g6 560 | sg19 561 | g6 562 | sg20 563 | g6 564 | sg21 565 | I00 566 | sg22 567 | g6 568 | sg23 569 | g6 570 | sg24 571 | I463261 572 | sg25 573 | g6 574 | ssS'BLACHMAN JEREMY M' 575 | p57 576 | (dp58 577 | g3 578 | I248546 579 | sg4 580 | I2475 581 | sg5 582 | g6 583 | sg7 584 | I2014835 585 | sg8 586 | g6 587 | sg9 588 | I850000 589 | sg10 590 | S'jeremy.blachman@enron.com' 591 | p59 592 | sg12 593 | g6 594 | sg13 595 | g6 596 | sg14 597 | I954354 598 | sg15 599 | I84208 600 | sg16 601 | I25 602 | sg17 603 | I765313 604 | sg18 605 | I14 606 | sg19 607 | I272 608 | sg20 609 | I2 610 | sg21 611 | I00 612 | sg22 613 | I831809 614 | sg23 615 | I2326 616 | sg24 617 | I189041 618 | sg25 619 | g6 620 | ssS'SUNDE MARTIN' 621 | p60 622 | (dp61 623 | g3 624 | I257486 625 | sg4 626 | I2647 627 | sg5 628 | g6 629 | sg7 630 | I1545059 631 | sg8 632 | g6 633 | sg9 634 | I700000 635 | sg10 636 | S'marty.sunde@enron.com' 637 | p62 638 | sg12 639 | g6 640 | sg13 641 | g6 642 | sg14 643 | I698920 644 | sg15 645 | g6 646 | sg16 647 | I37 648 | sg17 649 | g6 650 | sg18 651 | I38 652 | sg19 653 | I111122 654 | sg20 655 | I13 656 | sg21 657 | I00 658 | sg22 659 | I476451 660 | sg23 661 | I2565 662 | sg24 663 | I698920 664 | sg25 665 | g6 666 | ssS'GIBBS DANA R' 667 | p63 668 | (dp64 669 | g3 670 | g6 671 | sg4 672 | I169 673 | sg5 674 | I504610 675 | sg7 676 | I966522 677 | sg8 678 | g6 679 | sg9 680 | g6 681 | sg10 682 | S'dana.gibbs@enron.com' 683 | p65 684 | sg12 685 | g6 686 | sg13 687 | g6 688 | sg14 689 | I2218275 690 | sg15 691 | g6 692 | sg16 693 | I0 694 | sg17 695 | I2218275 696 | sg18 697 | I12 698 | sg19 699 | g6 700 | sg20 701 | I0 702 | sg21 703 | I00 704 | sg22 705 | I461912 706 | sg23 707 | I23 708 | sg24 709 | g6 710 | sg25 711 | g6 712 | ssS'LOWRY CHARLES P' 713 | p66 714 | (dp67 715 | g3 716 | g6 717 | sg4 718 | g6 719 | sg5 720 | g6 721 | sg7 722 | g6 723 | sg8 724 | g6 725 | sg9 726 | g6 727 | sg10 728 | g6 729 | sg12 730 | I-153686 731 | sg13 732 | g6 733 | sg14 734 | I372205 735 | sg15 736 | g6 737 | sg16 738 | g6 739 | sg17 740 | I372205 741 | sg18 742 | g6 743 | sg19 744 | g6 745 | sg20 746 | g6 747 | sg21 748 | I00 749 | sg22 750 | g6 751 | sg23 752 | g6 753 | sg24 754 | I153686 755 | sg25 756 | g6 757 | ssS'COLWELL WESLEY' 758 | p68 759 | (dp69 760 | g3 761 | I288542 762 | sg4 763 | I1758 764 | sg5 765 | I27610 766 | sg7 767 | I1490344 768 | sg8 769 | g6 770 | sg9 771 | I1200000 772 | sg10 773 | S'wes.colwell@enron.com' 774 | p70 775 | sg12 776 | g6 777 | sg13 778 | I-144062 779 | sg14 780 | I698242 781 | sg15 782 | I16514 783 | sg16 784 | I240 785 | sg17 786 | g6 787 | sg18 788 | I40 789 | sg19 790 | I101740 791 | sg20 792 | I11 793 | sg21 794 | I01 795 | sg22 796 | g6 797 | sg23 798 | I1132 799 | sg24 800 | I698242 801 | sg25 802 | g6 803 | ssS'MULLER MARK S' 804 | p71 805 | (dp72 806 | g3 807 | I251654 808 | sg4 809 | I136 810 | sg5 811 | I842924 812 | sg7 813 | I3202070 814 | sg8 815 | g6 816 | sg9 817 | I1100000 818 | sg10 819 | S's..muller@enron.com' 820 | p73 821 | sg12 822 | g6 823 | sg13 824 | I-719000 825 | sg14 826 | I1416848 827 | sg15 828 | g6 829 | sg16 830 | I12 831 | sg17 832 | I1056320 833 | sg18 834 | I16 835 | sg19 836 | I947 837 | sg20 838 | I0 839 | sg21 840 | I00 841 | sg22 842 | I1725545 843 | sg23 844 | I114 845 | sg24 846 | I360528 847 | sg25 848 | g6 849 | ssS'JACKSON CHARLENE R' 850 | p74 851 | (dp75 852 | g3 853 | I288558 854 | sg4 855 | I258 856 | sg5 857 | g6 858 | sg7 859 | I551174 860 | sg8 861 | g6 862 | sg9 863 | I250000 864 | sg10 865 | S'charlene.jackson@enron.com' 866 | p76 867 | sg12 868 | g6 869 | sg13 870 | g6 871 | sg14 872 | I725735 873 | sg15 874 | I10181 875 | sg16 876 | I25 877 | sg17 878 | I185063 879 | sg18 880 | I56 881 | sg19 882 | I2435 883 | sg20 884 | I19 885 | sg21 886 | I00 887 | sg22 888 | g6 889 | sg23 890 | I117 891 | sg24 892 | I540672 893 | sg25 894 | g6 895 | ssS'WESTFAHL RICHARD K' 896 | p77 897 | (dp78 898 | g3 899 | I63744 900 | sg4 901 | g6 902 | sg5 903 | g6 904 | sg7 905 | I762135 906 | sg8 907 | g6 908 | sg9 909 | g6 910 | sg10 911 | S'dick.westfahl@enron.com' 912 | p79 913 | sg12 914 | g6 915 | sg13 916 | I-10800 917 | sg14 918 | I384930 919 | sg15 920 | I51870 921 | sg16 922 | g6 923 | sg17 924 | g6 925 | sg18 926 | g6 927 | sg19 928 | I401130 929 | sg20 930 | g6 931 | sg21 932 | I00 933 | sg22 934 | I256191 935 | sg23 936 | g6 937 | sg24 938 | I384930 939 | sg25 940 | g6 941 | ssS'WALTERS GARETH W' 942 | p80 943 | (dp81 944 | g3 945 | g6 946 | sg4 947 | g6 948 | sg5 949 | I53625 950 | sg7 951 | I87410 952 | sg8 953 | g6 954 | sg9 955 | g6 956 | sg10 957 | g6 958 | sg12 959 | g6 960 | sg13 961 | g6 962 | sg14 963 | I1030329 964 | sg15 965 | I33785 966 | sg16 967 | g6 968 | sg17 969 | I1030329 970 | sg18 971 | g6 972 | sg19 973 | g6 974 | sg20 975 | g6 976 | sg21 977 | I00 978 | sg22 979 | g6 980 | sg23 981 | g6 982 | sg24 983 | g6 984 | sg25 985 | g6 986 | ssS'WALLS JR ROBERT H' 987 | p82 988 | (dp83 989 | g3 990 | I357091 991 | sg4 992 | I671 993 | sg5 994 | g6 995 | sg7 996 | I1798780 997 | sg8 998 | g6 999 | sg9 1000 | I850000 1001 | sg10 1002 | S'rob.walls@enron.com' 1003 | p84 1004 | sg12 1005 | g6 1006 | sg13 1007 | g6 1008 | sg14 1009 | I5898997 1010 | sg15 1011 | I50936 1012 | sg16 1013 | I17 1014 | sg17 1015 | I4346544 1016 | sg18 1017 | I146 1018 | sg19 1019 | I2 1020 | sg20 1021 | I0 1022 | sg21 1023 | I00 1024 | sg22 1025 | I540751 1026 | sg23 1027 | I215 1028 | sg24 1029 | I1552453 1030 | sg25 1031 | g6 1032 | ssS'KITCHEN LOUISE' 1033 | p85 1034 | (dp86 1035 | g3 1036 | I271442 1037 | sg4 1038 | I8305 1039 | sg5 1040 | g6 1041 | sg7 1042 | I3471141 1043 | sg8 1044 | g6 1045 | sg9 1046 | I3100000 1047 | sg10 1048 | S'louise.kitchen@enron.com' 1049 | p87 1050 | sg12 1051 | g6 1052 | sg13 1053 | g6 1054 | sg14 1055 | I547143 1056 | sg15 1057 | I5774 1058 | sg16 1059 | I251 1060 | sg17 1061 | I81042 1062 | sg18 1063 | I1728 1064 | sg19 1065 | I93925 1066 | sg20 1067 | I194 1068 | sg21 1069 | I00 1070 | sg22 1071 | g6 1072 | sg23 1073 | I3669 1074 | sg24 1075 | I466101 1076 | sg25 1077 | g6 1078 | ssS'CHAN RONNIE' 1079 | p88 1080 | (dp89 1081 | g3 1082 | g6 1083 | sg4 1084 | g6 1085 | sg5 1086 | g6 1087 | sg7 1088 | g6 1089 | sg8 1090 | g6 1091 | sg9 1092 | g6 1093 | sg10 1094 | g6 1095 | sg12 1096 | I-32460 1097 | sg13 1098 | I-98784 1099 | sg14 1100 | g6 1101 | sg15 1102 | g6 1103 | sg16 1104 | g6 1105 | sg17 1106 | g6 1107 | sg18 1108 | g6 1109 | sg19 1110 | g6 1111 | sg20 1112 | g6 1113 | sg21 1114 | I00 1115 | sg22 1116 | g6 1117 | sg23 1118 | g6 1119 | sg24 1120 | I32460 1121 | sg25 1122 | I98784 1123 | ssS'BELFER ROBERT' 1124 | p90 1125 | (dp91 1126 | g3 1127 | g6 1128 | sg4 1129 | g6 1130 | sg5 1131 | I-102500 1132 | sg7 1133 | I102500 1134 | sg8 1135 | g6 1136 | sg9 1137 | g6 1138 | sg10 1139 | g6 1140 | sg12 1141 | I44093 1142 | sg13 1143 | g6 1144 | sg14 1145 | I-44093 1146 | sg15 1147 | g6 1148 | sg16 1149 | g6 1150 | sg17 1151 | I3285 1152 | sg18 1153 | g6 1154 | sg19 1155 | g6 1156 | sg20 1157 | g6 1158 | sg21 1159 | I00 1160 | sg22 1161 | g6 1162 | sg23 1163 | g6 1164 | sg24 1165 | g6 1166 | sg25 1167 | I3285 1168 | ssS'SHANKMAN JEFFREY A' 1169 | p92 1170 | (dp93 1171 | g3 1172 | I304110 1173 | sg4 1174 | I3221 1175 | sg5 1176 | g6 1177 | sg7 1178 | I3038702 1179 | sg8 1180 | g6 1181 | sg9 1182 | I2000000 1183 | sg10 1184 | S'jeffrey.shankman@enron.com' 1185 | p94 1186 | sg12 1187 | g6 1188 | sg13 1189 | g6 1190 | sg14 1191 | I2072035 1192 | sg15 1193 | I178979 1194 | sg16 1195 | I94 1196 | sg17 1197 | I1441898 1198 | sg18 1199 | I2681 1200 | sg19 1201 | I1191 1202 | sg20 1203 | I83 1204 | sg21 1205 | I00 1206 | sg22 1207 | I554422 1208 | sg23 1209 | I1730 1210 | sg24 1211 | I630137 1212 | sg25 1213 | g6 1214 | ssS'WODRASKA JOHN' 1215 | p95 1216 | (dp96 1217 | g3 1218 | g6 1219 | sg4 1220 | g6 1221 | sg5 1222 | g6 1223 | sg7 1224 | I189583 1225 | sg8 1226 | g6 1227 | sg9 1228 | g6 1229 | sg10 1230 | S'john.wodraska@enron.com' 1231 | p97 1232 | sg12 1233 | g6 1234 | sg13 1235 | g6 1236 | sg14 1237 | g6 1238 | sg15 1239 | g6 1240 | sg16 1241 | g6 1242 | sg17 1243 | g6 1244 | sg18 1245 | g6 1246 | sg19 1247 | I189583 1248 | sg20 1249 | g6 1250 | sg21 1251 | I00 1252 | sg22 1253 | g6 1254 | sg23 1255 | g6 1256 | sg24 1257 | g6 1258 | sg25 1259 | g6 1260 | ssS'BERGSIEKER RICHARD P' 1261 | p98 1262 | (dp99 1263 | g3 1264 | I187922 1265 | sg4 1266 | I383 1267 | sg5 1268 | g6 1269 | sg7 1270 | I618850 1271 | sg8 1272 | g6 1273 | sg9 1274 | I250000 1275 | sg10 1276 | S'rick.bergsieker@enron.com' 1277 | p100 1278 | sg12 1279 | g6 1280 | sg13 1281 | I-485813 1282 | sg14 1283 | I659249 1284 | sg15 1285 | I59175 1286 | sg16 1287 | I4 1288 | sg17 1289 | g6 1290 | sg18 1291 | I59 1292 | sg19 1293 | I427316 1294 | sg20 1295 | I0 1296 | sg21 1297 | I00 1298 | sg22 1299 | I180250 1300 | sg23 1301 | I233 1302 | sg24 1303 | I659249 1304 | sg25 1305 | g6 1306 | ssS'URQUHART JOHN A' 1307 | p101 1308 | (dp102 1309 | g3 1310 | g6 1311 | sg4 1312 | g6 1313 | sg5 1314 | g6 1315 | sg7 1316 | I228656 1317 | sg8 1318 | g6 1319 | sg9 1320 | g6 1321 | sg10 1322 | g6 1323 | sg12 1324 | g6 1325 | sg13 1326 | I-36666 1327 | sg14 1328 | g6 1329 | sg15 1330 | I228656 1331 | sg16 1332 | g6 1333 | sg17 1334 | g6 1335 | sg18 1336 | g6 1337 | sg19 1338 | g6 1339 | sg20 1340 | g6 1341 | sg21 1342 | I00 1343 | sg22 1344 | g6 1345 | sg23 1346 | g6 1347 | sg24 1348 | g6 1349 | sg25 1350 | I36666 1351 | ssS'BIBI PHILIPPE A' 1352 | p103 1353 | (dp104 1354 | g3 1355 | I213625 1356 | sg4 1357 | I1607 1358 | sg5 1359 | g6 1360 | sg7 1361 | I2047593 1362 | sg8 1363 | g6 1364 | sg9 1365 | I1000000 1366 | sg10 1367 | S'philippe.bibi@enron.com' 1368 | p105 1369 | sg12 1370 | g6 1371 | sg13 1372 | g6 1373 | sg14 1374 | I1843816 1375 | sg15 1376 | I38559 1377 | sg16 1378 | I23 1379 | sg17 1380 | I1465734 1381 | sg18 1382 | I40 1383 | sg19 1384 | I425688 1385 | sg20 1386 | I8 1387 | sg21 1388 | I00 1389 | sg22 1390 | I369721 1391 | sg23 1392 | I1336 1393 | sg24 1394 | I378082 1395 | sg25 1396 | g6 1397 | ssS'RIEKER PAULA H' 1398 | p106 1399 | (dp107 1400 | g3 1401 | I249201 1402 | sg4 1403 | I1328 1404 | sg5 1405 | I214678 1406 | sg7 1407 | I1099100 1408 | sg8 1409 | g6 1410 | sg9 1411 | I700000 1412 | sg10 1413 | S'paula.rieker@enron.com' 1414 | p108 1415 | sg12 1416 | g6 1417 | sg13 1418 | I-100000 1419 | sg14 1420 | I1918887 1421 | sg15 1422 | I33271 1423 | sg16 1424 | I35 1425 | sg17 1426 | I1635238 1427 | sg18 1428 | I82 1429 | sg19 1430 | I1950 1431 | sg20 1432 | I48 1433 | sg21 1434 | I01 1435 | sg22 1436 | g6 1437 | sg23 1438 | I1258 1439 | sg24 1440 | I283649 1441 | sg25 1442 | g6 1443 | ssS'WHALEY DAVID A' 1444 | p109 1445 | (dp110 1446 | g3 1447 | g6 1448 | sg4 1449 | g6 1450 | sg5 1451 | g6 1452 | sg7 1453 | g6 1454 | sg8 1455 | g6 1456 | sg9 1457 | g6 1458 | sg10 1459 | g6 1460 | sg12 1461 | g6 1462 | sg13 1463 | g6 1464 | sg14 1465 | I98718 1466 | sg15 1467 | g6 1468 | sg16 1469 | g6 1470 | sg17 1471 | I98718 1472 | sg18 1473 | g6 1474 | sg19 1475 | g6 1476 | sg20 1477 | g6 1478 | sg21 1479 | I00 1480 | sg22 1481 | g6 1482 | sg23 1483 | g6 1484 | sg24 1485 | g6 1486 | sg25 1487 | g6 1488 | ssS'BECK SALLY W' 1489 | p111 1490 | (dp112 1491 | g3 1492 | I231330 1493 | sg4 1494 | I7315 1495 | sg5 1496 | g6 1497 | sg7 1498 | I969068 1499 | sg8 1500 | g6 1501 | sg9 1502 | I700000 1503 | sg10 1504 | S'sally.beck@enron.com' 1505 | p113 1506 | sg12 1507 | g6 1508 | sg13 1509 | g6 1510 | sg14 1511 | I126027 1512 | sg15 1513 | I37172 1514 | sg16 1515 | I144 1516 | sg17 1517 | g6 1518 | sg18 1519 | I4343 1520 | sg19 1521 | I566 1522 | sg20 1523 | I386 1524 | sg21 1525 | I00 1526 | sg22 1527 | g6 1528 | sg23 1529 | I2639 1530 | sg24 1531 | I126027 1532 | sg25 1533 | g6 1534 | ssS'HAUG DAVID L' 1535 | p114 1536 | (dp115 1537 | g3 1538 | g6 1539 | sg4 1540 | I573 1541 | sg5 1542 | g6 1543 | sg7 1544 | I475 1545 | sg8 1546 | g6 1547 | sg9 1548 | g6 1549 | sg10 1550 | S'david.haug@enron.com' 1551 | p116 1552 | sg12 1553 | g6 1554 | sg13 1555 | g6 1556 | sg14 1557 | I2217299 1558 | sg15 1559 | I475 1560 | sg16 1561 | I4 1562 | sg17 1563 | g6 1564 | sg18 1565 | I19 1566 | sg19 1567 | g6 1568 | sg20 1569 | I7 1570 | sg21 1571 | I00 1572 | sg22 1573 | g6 1574 | sg23 1575 | I471 1576 | sg24 1577 | I2217299 1578 | sg25 1579 | g6 1580 | ssS'ECHOLS JOHN B' 1581 | p117 1582 | (dp118 1583 | g3 1584 | I182245 1585 | sg4 1586 | g6 1587 | sg5 1588 | g6 1589 | sg7 1590 | I2692324 1591 | sg8 1592 | g6 1593 | sg9 1594 | I200000 1595 | sg10 1596 | S'john.echols@enron.com' 1597 | p119 1598 | sg12 1599 | g6 1600 | sg13 1601 | g6 1602 | sg14 1603 | I1008941 1604 | sg15 1605 | I21530 1606 | sg16 1607 | g6 1608 | sg17 1609 | I601438 1610 | sg18 1611 | g6 1612 | sg19 1613 | I53775 1614 | sg20 1615 | g6 1616 | sg21 1617 | I00 1618 | sg22 1619 | I2234774 1620 | sg23 1621 | g6 1622 | sg24 1623 | I407503 1624 | sg25 1625 | g6 1626 | ssS'MENDELSOHN JOHN' 1627 | p120 1628 | (dp121 1629 | g3 1630 | g6 1631 | sg4 1632 | g6 1633 | sg5 1634 | g6 1635 | sg7 1636 | I148 1637 | sg8 1638 | g6 1639 | sg9 1640 | g6 1641 | sg10 1642 | g6 1643 | sg12 1644 | g6 1645 | sg13 1646 | I-103750 1647 | sg14 1648 | g6 1649 | sg15 1650 | I148 1651 | sg16 1652 | g6 1653 | sg17 1654 | g6 1655 | sg18 1656 | g6 1657 | sg19 1658 | g6 1659 | sg20 1660 | g6 1661 | sg21 1662 | I00 1663 | sg22 1664 | g6 1665 | sg23 1666 | g6 1667 | sg24 1668 | g6 1669 | sg25 1670 | I103750 1671 | ssS'HICKERSON GARY J' 1672 | p122 1673 | (dp123 1674 | g3 1675 | I211788 1676 | sg4 1677 | I1320 1678 | sg5 1679 | g6 1680 | sg7 1681 | I2081796 1682 | sg8 1683 | g6 1684 | sg9 1685 | I1700000 1686 | sg10 1687 | S'gary.hickerson@enron.com' 1688 | p124 1689 | sg12 1690 | g6 1691 | sg13 1692 | g6 1693 | sg14 1694 | I441096 1695 | sg15 1696 | I98849 1697 | sg16 1698 | I40 1699 | sg17 1700 | g6 1701 | sg18 1702 | I27 1703 | sg19 1704 | I1936 1705 | sg20 1706 | I1 1707 | sg21 1708 | I00 1709 | sg22 1710 | I69223 1711 | sg23 1712 | I900 1713 | sg24 1714 | I441096 1715 | sg25 1716 | g6 1717 | ssS'CLINE KENNETH W' 1718 | p125 1719 | (dp126 1720 | g3 1721 | g6 1722 | sg4 1723 | g6 1724 | sg5 1725 | g6 1726 | sg7 1727 | g6 1728 | sg8 1729 | g6 1730 | sg9 1731 | g6 1732 | sg10 1733 | g6 1734 | sg12 1735 | I-472568 1736 | sg13 1737 | g6 1738 | sg14 1739 | I189518 1740 | sg15 1741 | g6 1742 | sg16 1743 | g6 1744 | sg17 1745 | g6 1746 | sg18 1747 | g6 1748 | sg19 1749 | g6 1750 | sg20 1751 | g6 1752 | sg21 1753 | I00 1754 | sg22 1755 | g6 1756 | sg23 1757 | g6 1758 | sg24 1759 | I662086 1760 | sg25 1761 | g6 1762 | ssS'LEWIS RICHARD' 1763 | p127 1764 | (dp128 1765 | g3 1766 | g6 1767 | sg4 1768 | I952 1769 | sg5 1770 | g6 1771 | sg7 1772 | g6 1773 | sg8 1774 | g6 1775 | sg9 1776 | g6 1777 | sg10 1778 | S'richard.lewis@enron.com' 1779 | p129 1780 | sg12 1781 | g6 1782 | sg13 1783 | g6 1784 | sg14 1785 | I850477 1786 | sg15 1787 | g6 1788 | sg16 1789 | I10 1790 | sg17 1791 | I850477 1792 | sg18 1793 | I26 1794 | sg19 1795 | g6 1796 | sg20 1797 | I0 1798 | sg21 1799 | I00 1800 | sg22 1801 | g6 1802 | sg23 1803 | I739 1804 | sg24 1805 | g6 1806 | sg25 1807 | g6 1808 | ssS'HAYES ROBERT E' 1809 | p130 1810 | (dp131 1811 | g3 1812 | g6 1813 | sg4 1814 | I504 1815 | sg5 1816 | I7961 1817 | sg7 1818 | I7961 1819 | sg8 1820 | g6 1821 | sg9 1822 | g6 1823 | sg10 1824 | S'robert.hayes@enron.com' 1825 | p132 1826 | sg12 1827 | g6 1828 | sg13 1829 | g6 1830 | sg14 1831 | I151418 1832 | sg15 1833 | g6 1834 | sg16 1835 | I16 1836 | sg17 1837 | g6 1838 | sg18 1839 | I12 1840 | sg19 1841 | g6 1842 | sg20 1843 | I0 1844 | sg21 1845 | I00 1846 | sg22 1847 | g6 1848 | sg23 1849 | I50 1850 | sg24 1851 | I151418 1852 | sg25 1853 | g6 1854 | ssS'KOPPER MICHAEL J' 1855 | p133 1856 | (dp134 1857 | g3 1858 | I224305 1859 | sg4 1860 | g6 1861 | sg5 1862 | g6 1863 | sg7 1864 | I2652612 1865 | sg8 1866 | g6 1867 | sg9 1868 | I800000 1869 | sg10 1870 | S'michael.kopper@enron.com' 1871 | p135 1872 | sg12 1873 | g6 1874 | sg13 1875 | g6 1876 | sg14 1877 | I985032 1878 | sg15 1879 | I118134 1880 | sg16 1881 | g6 1882 | sg17 1883 | g6 1884 | sg18 1885 | g6 1886 | sg19 1887 | I907502 1888 | sg20 1889 | g6 1890 | sg21 1891 | I01 1892 | sg22 1893 | I602671 1894 | sg23 1895 | g6 1896 | sg24 1897 | I985032 1898 | sg25 1899 | g6 1900 | ssS'LEFF DANIEL P' 1901 | p136 1902 | (dp137 1903 | g3 1904 | I273746 1905 | sg4 1906 | I2822 1907 | sg5 1908 | g6 1909 | sg7 1910 | I2664228 1911 | sg8 1912 | g6 1913 | sg9 1914 | I1000000 1915 | sg10 1916 | S'dan.leff@enron.com' 1917 | p138 1918 | sg12 1919 | g6 1920 | sg13 1921 | g6 1922 | sg14 1923 | I360528 1924 | sg15 1925 | g6 1926 | sg16 1927 | I67 1928 | sg17 1929 | g6 1930 | sg18 1931 | I63 1932 | sg19 1933 | I3083 1934 | sg20 1935 | I14 1936 | sg21 1937 | I00 1938 | sg22 1939 | I1387399 1940 | sg23 1941 | I2672 1942 | sg24 1943 | I360528 1944 | sg25 1945 | g6 1946 | ssS'LAVORATO JOHN J' 1947 | p139 1948 | (dp140 1949 | g3 1950 | I339288 1951 | sg4 1952 | I7259 1953 | sg5 1954 | g6 1955 | sg7 1956 | I10425757 1957 | sg8 1958 | g6 1959 | sg9 1960 | I8000000 1961 | sg10 1962 | S'john.lavorato@enron.com' 1963 | p141 1964 | sg12 1965 | g6 1966 | sg13 1967 | g6 1968 | sg14 1969 | I5167144 1970 | sg15 1971 | I49537 1972 | sg16 1973 | I528 1974 | sg17 1975 | I4158995 1976 | sg18 1977 | I2585 1978 | sg19 1979 | I1552 1980 | sg20 1981 | I411 1982 | sg21 1983 | I00 1984 | sg22 1985 | I2035380 1986 | sg23 1987 | I3962 1988 | sg24 1989 | I1008149 1990 | sg25 1991 | g6 1992 | ssS'BERBERIAN DAVID' 1993 | p142 1994 | (dp143 1995 | g3 1996 | I216582 1997 | sg4 1998 | g6 1999 | sg5 2000 | g6 2001 | sg7 2002 | I228474 2003 | sg8 2004 | g6 2005 | sg9 2006 | g6 2007 | sg10 2008 | S'david.berberian@enron.com' 2009 | p144 2010 | sg12 2011 | g6 2012 | sg13 2013 | g6 2014 | sg14 2015 | I2493616 2016 | sg15 2017 | I11892 2018 | sg16 2019 | g6 2020 | sg17 2021 | I1624396 2022 | sg18 2023 | g6 2024 | sg19 2025 | g6 2026 | sg20 2027 | g6 2028 | sg21 2029 | I00 2030 | sg22 2031 | g6 2032 | sg23 2033 | g6 2034 | sg24 2035 | I869220 2036 | sg25 2037 | g6 2038 | ssS'DETMERING TIMOTHY J' 2039 | p145 2040 | (dp146 2041 | g3 2042 | I210500 2043 | sg4 2044 | g6 2045 | sg5 2046 | I875307 2047 | sg7 2048 | I1204583 2049 | sg8 2050 | g6 2051 | sg9 2052 | I425000 2053 | sg10 2054 | S'timothy.detmering@enron.com' 2055 | p147 2056 | sg12 2057 | I-315068 2058 | sg13 2059 | I-775241 2060 | sg14 2061 | I2027865 2062 | sg15 2063 | I52255 2064 | sg16 2065 | g6 2066 | sg17 2067 | I2027865 2068 | sg18 2069 | g6 2070 | sg19 2071 | I1105 2072 | sg20 2073 | g6 2074 | sg21 2075 | I00 2076 | sg22 2077 | I415657 2078 | sg23 2079 | g6 2080 | sg24 2081 | I315068 2082 | sg25 2083 | g6 2084 | ssS'WAKEHAM JOHN' 2085 | p148 2086 | (dp149 2087 | g3 2088 | g6 2089 | sg4 2090 | g6 2091 | sg5 2092 | g6 2093 | sg7 2094 | I213071 2095 | sg8 2096 | g6 2097 | sg9 2098 | g6 2099 | sg10 2100 | g6 2101 | sg12 2102 | g6 2103 | sg13 2104 | g6 2105 | sg14 2106 | g6 2107 | sg15 2108 | I103773 2109 | sg16 2110 | g6 2111 | sg17 2112 | g6 2113 | sg18 2114 | g6 2115 | sg19 2116 | g6 2117 | sg20 2118 | g6 2119 | sg21 2120 | I00 2121 | sg22 2122 | g6 2123 | sg23 2124 | g6 2125 | sg24 2126 | g6 2127 | sg25 2128 | I109298 2129 | ssS'POWERS WILLIAM' 2130 | p150 2131 | (dp151 2132 | g3 2133 | g6 2134 | sg4 2135 | I653 2136 | sg5 2137 | g6 2138 | sg7 2139 | g6 2140 | sg8 2141 | g6 2142 | sg9 2143 | g6 2144 | sg10 2145 | S'ken.powers@enron.com' 2146 | p152 2147 | sg12 2148 | g6 2149 | sg13 2150 | I-17500 2151 | sg14 2152 | g6 2153 | sg15 2154 | g6 2155 | sg16 2156 | I0 2157 | sg17 2158 | g6 2159 | sg18 2160 | I26 2161 | sg19 2162 | g6 2163 | sg20 2164 | I0 2165 | sg21 2166 | I00 2167 | sg22 2168 | g6 2169 | sg23 2170 | I12 2171 | sg24 2172 | g6 2173 | sg25 2174 | I17500 2175 | ssS'GOLD JOSEPH' 2176 | p153 2177 | (dp154 2178 | g3 2179 | I272880 2180 | sg4 2181 | g6 2182 | sg5 2183 | g6 2184 | sg7 2185 | I2146973 2186 | sg8 2187 | g6 2188 | sg9 2189 | I750000 2190 | sg10 2191 | S'joe.gold@enron.com' 2192 | p155 2193 | sg12 2194 | g6 2195 | sg13 2196 | g6 2197 | sg14 2198 | I877611 2199 | sg15 2200 | g6 2201 | sg16 2202 | g6 2203 | sg17 2204 | I436515 2205 | sg18 2206 | g6 2207 | sg19 2208 | I819288 2209 | sg20 2210 | g6 2211 | sg21 2212 | I00 2213 | sg22 2214 | I304805 2215 | sg23 2216 | g6 2217 | sg24 2218 | I441096 2219 | sg25 2220 | g6 2221 | ssS'BANNANTINE JAMES M' 2222 | p156 2223 | (dp157 2224 | g3 2225 | I477 2226 | sg4 2227 | I566 2228 | sg5 2229 | g6 2230 | sg7 2231 | I916197 2232 | sg8 2233 | g6 2234 | sg9 2235 | g6 2236 | sg10 2237 | S'james.bannantine@enron.com' 2238 | p158 2239 | sg12 2240 | I-560222 2241 | sg13 2242 | I-5104 2243 | sg14 2244 | I5243487 2245 | sg15 2246 | I56301 2247 | sg16 2248 | I39 2249 | sg17 2250 | I4046157 2251 | sg18 2252 | I29 2253 | sg19 2254 | I864523 2255 | sg20 2256 | I0 2257 | sg21 2258 | I00 2259 | sg22 2260 | g6 2261 | sg23 2262 | I465 2263 | sg24 2264 | I1757552 2265 | sg25 2266 | g6 2267 | ssS'DUNCAN JOHN H' 2268 | p159 2269 | (dp160 2270 | g3 2271 | g6 2272 | sg4 2273 | g6 2274 | sg5 2275 | g6 2276 | sg7 2277 | I77492 2278 | sg8 2279 | g6 2280 | sg9 2281 | g6 2282 | sg10 2283 | g6 2284 | sg12 2285 | g6 2286 | sg13 2287 | I-25000 2288 | sg14 2289 | I371750 2290 | sg15 2291 | g6 2292 | sg16 2293 | g6 2294 | sg17 2295 | I371750 2296 | sg18 2297 | g6 2298 | sg19 2299 | g6 2300 | sg20 2301 | g6 2302 | sg21 2303 | I00 2304 | sg22 2305 | g6 2306 | sg23 2307 | g6 2308 | sg24 2309 | g6 2310 | sg25 2311 | I102492 2312 | ssS'SHAPIRO RICHARD S' 2313 | p161 2314 | (dp162 2315 | g3 2316 | I269076 2317 | sg4 2318 | I15149 2319 | sg5 2320 | g6 2321 | sg7 2322 | I1057548 2323 | sg8 2324 | g6 2325 | sg9 2326 | I650000 2327 | sg10 2328 | S'richard.shapiro@enron.com' 2329 | p163 2330 | sg12 2331 | g6 2332 | sg13 2333 | g6 2334 | sg14 2335 | I987001 2336 | sg15 2337 | I137767 2338 | sg16 2339 | I74 2340 | sg17 2341 | I607837 2342 | sg18 2343 | I1215 2344 | sg19 2345 | I705 2346 | sg20 2347 | I65 2348 | sg21 2349 | I00 2350 | sg22 2351 | g6 2352 | sg23 2353 | I4527 2354 | sg24 2355 | I379164 2356 | sg25 2357 | g6 2358 | ssS'SHERRIFF JOHN R' 2359 | p164 2360 | (dp165 2361 | g3 2362 | I428780 2363 | sg4 2364 | I3187 2365 | sg5 2366 | g6 2367 | sg7 2368 | I4335388 2369 | sg8 2370 | g6 2371 | sg9 2372 | I1500000 2373 | sg10 2374 | S'john.sherriff@enron.com' 2375 | p166 2376 | sg12 2377 | g6 2378 | sg13 2379 | g6 2380 | sg14 2381 | I3128982 2382 | sg15 2383 | g6 2384 | sg16 2385 | I28 2386 | sg17 2387 | I1835558 2388 | sg18 2389 | I92 2390 | sg19 2391 | I1852186 2392 | sg20 2393 | I23 2394 | sg21 2395 | I00 2396 | sg22 2397 | I554422 2398 | sg23 2399 | I2103 2400 | sg24 2401 | I1293424 2402 | sg25 2403 | g6 2404 | ssS'SHELBY REX' 2405 | p167 2406 | (dp168 2407 | g3 2408 | I211844 2409 | sg4 2410 | I225 2411 | sg5 2412 | g6 2413 | sg7 2414 | I2003885 2415 | sg8 2416 | g6 2417 | sg9 2418 | I200000 2419 | sg10 2420 | S'rex.shelby@enron.com' 2421 | p169 2422 | sg12 2423 | g6 2424 | sg13 2425 | I-4167 2426 | sg14 2427 | I2493616 2428 | sg15 2429 | I22884 2430 | sg16 2431 | I13 2432 | sg17 2433 | I1624396 2434 | sg18 2435 | I39 2436 | sg19 2437 | I1573324 2438 | sg20 2439 | I14 2440 | sg21 2441 | I01 2442 | sg22 2443 | g6 2444 | sg23 2445 | I91 2446 | sg24 2447 | I869220 2448 | sg25 2449 | g6 2450 | ssS'LEMAISTRE CHARLES' 2451 | p170 2452 | (dp171 2453 | g3 2454 | g6 2455 | sg4 2456 | g6 2457 | sg5 2458 | g6 2459 | sg7 2460 | I87492 2461 | sg8 2462 | g6 2463 | sg9 2464 | g6 2465 | sg10 2466 | g6 2467 | sg12 2468 | g6 2469 | sg13 2470 | I-25000 2471 | sg14 2472 | I412878 2473 | sg15 2474 | g6 2475 | sg16 2476 | g6 2477 | sg17 2478 | I412878 2479 | sg18 2480 | g6 2481 | sg19 2482 | g6 2483 | sg20 2484 | g6 2485 | sg21 2486 | I00 2487 | sg22 2488 | g6 2489 | sg23 2490 | g6 2491 | sg24 2492 | g6 2493 | sg25 2494 | I112492 2495 | ssS'DEFFNER JOSEPH M' 2496 | p172 2497 | (dp173 2498 | g3 2499 | I206121 2500 | sg4 2501 | I714 2502 | sg5 2503 | g6 2504 | sg7 2505 | I1208649 2506 | sg8 2507 | g6 2508 | sg9 2509 | I600000 2510 | sg10 2511 | S'joseph.deffner@enron.com' 2512 | p174 2513 | sg12 2514 | g6 2515 | sg13 2516 | g6 2517 | sg14 2518 | I159211 2519 | sg15 2520 | I41626 2521 | sg16 2522 | I115 2523 | sg17 2524 | I17378 2525 | sg18 2526 | I74 2527 | sg19 2528 | I25553 2529 | sg20 2530 | I4 2531 | sg21 2532 | I00 2533 | sg22 2534 | I335349 2535 | sg23 2536 | I552 2537 | sg24 2538 | I141833 2539 | sg25 2540 | g6 2541 | ssS'KISHKILL JOSEPH G' 2542 | p175 2543 | (dp176 2544 | g3 2545 | I174246 2546 | sg4 2547 | g6 2548 | sg5 2549 | g6 2550 | sg7 2551 | I704896 2552 | sg8 2553 | g6 2554 | sg9 2555 | g6 2556 | sg10 2557 | S'joe.kishkill@enron.com' 2558 | p177 2559 | sg12 2560 | g6 2561 | sg13 2562 | I-51042 2563 | sg14 2564 | I1034346 2565 | sg15 2566 | I116335 2567 | sg16 2568 | g6 2569 | sg17 2570 | g6 2571 | sg18 2572 | g6 2573 | sg19 2574 | I465357 2575 | sg20 2576 | g6 2577 | sg21 2578 | I00 2579 | sg22 2580 | g6 2581 | sg23 2582 | g6 2583 | sg24 2584 | I1034346 2585 | sg25 2586 | g6 2587 | ssS'WHALLEY LAWRENCE G' 2588 | p178 2589 | (dp179 2590 | g3 2591 | I510364 2592 | sg4 2593 | I6019 2594 | sg5 2595 | g6 2596 | sg7 2597 | I4677574 2598 | sg8 2599 | g6 2600 | sg9 2601 | I3000000 2602 | sg10 2603 | S'greg.whalley@enron.com' 2604 | p180 2605 | sg12 2606 | g6 2607 | sg13 2608 | g6 2609 | sg14 2610 | I6079137 2611 | sg15 2612 | I57838 2613 | sg16 2614 | I186 2615 | sg17 2616 | I3282960 2617 | sg18 2618 | I556 2619 | sg19 2620 | I301026 2621 | sg20 2622 | I24 2623 | sg21 2624 | I00 2625 | sg22 2626 | I808346 2627 | sg23 2628 | I3920 2629 | sg24 2630 | I2796177 2631 | sg25 2632 | g6 2633 | ssS'MCCONNELL MICHAEL S' 2634 | p181 2635 | (dp182 2636 | g3 2637 | I365038 2638 | sg4 2639 | I3329 2640 | sg5 2641 | g6 2642 | sg7 2643 | I2101364 2644 | sg8 2645 | g6 2646 | sg9 2647 | I1100000 2648 | sg10 2649 | S'mike.mcconnell@enron.com' 2650 | p183 2651 | sg12 2652 | g6 2653 | sg13 2654 | g6 2655 | sg14 2656 | I3101279 2657 | sg15 2658 | I81364 2659 | sg16 2660 | I92 2661 | sg17 2662 | I1623010 2663 | sg18 2664 | I2742 2665 | sg19 2666 | I540 2667 | sg20 2668 | I194 2669 | sg21 2670 | I00 2671 | sg22 2672 | I554422 2673 | sg23 2674 | I2189 2675 | sg24 2676 | I1478269 2677 | sg25 2678 | g6 2679 | ssS'PIRO JIM' 2680 | p184 2681 | (dp185 2682 | g3 2683 | g6 2684 | sg4 2685 | I58 2686 | sg5 2687 | g6 2688 | sg7 2689 | g6 2690 | sg8 2691 | g6 2692 | sg9 2693 | g6 2694 | sg10 2695 | S'jim.piro@enron.com' 2696 | p186 2697 | sg12 2698 | g6 2699 | sg13 2700 | g6 2701 | sg14 2702 | I47304 2703 | sg15 2704 | g6 2705 | sg16 2706 | I0 2707 | sg17 2708 | g6 2709 | sg18 2710 | I16 2711 | sg19 2712 | g6 2713 | sg20 2714 | I1 2715 | sg21 2716 | I00 2717 | sg22 2718 | g6 2719 | sg23 2720 | I3 2721 | sg24 2722 | I47304 2723 | sg25 2724 | g6 2725 | ssS'DELAINEY DAVID W' 2726 | p187 2727 | (dp188 2728 | g3 2729 | I365163 2730 | sg4 2731 | I3093 2732 | sg5 2733 | g6 2734 | sg7 2735 | I4747979 2736 | sg8 2737 | g6 2738 | sg9 2739 | I3000000 2740 | sg10 2741 | S'david.delainey@enron.com' 2742 | p189 2743 | sg12 2744 | g6 2745 | sg13 2746 | g6 2747 | sg14 2748 | I3614261 2749 | sg15 2750 | I86174 2751 | sg16 2752 | I66 2753 | sg17 2754 | I2291113 2755 | sg18 2756 | I3069 2757 | sg19 2758 | I1661 2759 | sg20 2760 | I609 2761 | sg21 2762 | I01 2763 | sg22 2764 | I1294981 2765 | sg23 2766 | I2097 2767 | sg24 2768 | I1323148 2769 | sg25 2770 | g6 2771 | ssS'SULLIVAN-SHAKLOVITZ COLLEEN' 2772 | p190 2773 | (dp191 2774 | g3 2775 | I162779 2776 | sg4 2777 | g6 2778 | sg5 2779 | I181993 2780 | sg7 2781 | I999356 2782 | sg8 2783 | g6 2784 | sg9 2785 | I100000 2786 | sg10 2787 | g6 2788 | sg12 2789 | g6 2790 | sg13 2791 | g6 2792 | sg14 2793 | I1362375 2794 | sg15 2795 | g6 2796 | sg16 2797 | g6 2798 | sg17 2799 | I1362375 2800 | sg18 2801 | g6 2802 | sg19 2803 | I162 2804 | sg20 2805 | g6 2806 | sg21 2807 | I00 2808 | sg22 2809 | I554422 2810 | sg23 2811 | g6 2812 | sg24 2813 | g6 2814 | sg25 2815 | g6 2816 | ssS'WROBEL BRUCE' 2817 | p192 2818 | (dp193 2819 | g3 2820 | g6 2821 | sg4 2822 | g6 2823 | sg5 2824 | g6 2825 | sg7 2826 | g6 2827 | sg8 2828 | g6 2829 | sg9 2830 | g6 2831 | sg10 2832 | g6 2833 | sg12 2834 | g6 2835 | sg13 2836 | g6 2837 | sg14 2838 | I139130 2839 | sg15 2840 | g6 2841 | sg16 2842 | g6 2843 | sg17 2844 | I139130 2845 | sg18 2846 | g6 2847 | sg19 2848 | g6 2849 | sg20 2850 | g6 2851 | sg21 2852 | I00 2853 | sg22 2854 | g6 2855 | sg23 2856 | g6 2857 | sg24 2858 | g6 2859 | sg25 2860 | g6 2861 | ssS'LINDHOLM TOD A' 2862 | p194 2863 | (dp195 2864 | g3 2865 | I236457 2866 | sg4 2867 | g6 2868 | sg5 2869 | I204075 2870 | sg7 2871 | I875889 2872 | sg8 2873 | g6 2874 | sg9 2875 | I200000 2876 | sg10 2877 | S'tod.lindholm@enron.com' 2878 | p196 2879 | sg12 2880 | g6 2881 | sg13 2882 | g6 2883 | sg14 2884 | I3064208 2885 | sg15 2886 | I57727 2887 | sg16 2888 | g6 2889 | sg17 2890 | I2549361 2891 | sg18 2892 | g6 2893 | sg19 2894 | I2630 2895 | sg20 2896 | g6 2897 | sg21 2898 | I00 2899 | sg22 2900 | I175000 2901 | sg23 2902 | g6 2903 | sg24 2904 | I514847 2905 | sg25 2906 | g6 2907 | ssS'MEYER JEROME J' 2908 | p197 2909 | (dp198 2910 | g3 2911 | g6 2912 | sg4 2913 | g6 2914 | sg5 2915 | g6 2916 | sg7 2917 | I2151 2918 | sg8 2919 | g6 2920 | sg9 2921 | g6 2922 | sg10 2923 | g6 2924 | sg12 2925 | g6 2926 | sg13 2927 | I-38346 2928 | sg14 2929 | g6 2930 | sg15 2931 | I2151 2932 | sg16 2933 | g6 2934 | sg17 2935 | g6 2936 | sg18 2937 | g6 2938 | sg19 2939 | g6 2940 | sg20 2941 | g6 2942 | sg21 2943 | I00 2944 | sg22 2945 | g6 2946 | sg23 2947 | g6 2948 | sg24 2949 | g6 2950 | sg25 2951 | I38346 2952 | ssS'BUTTS ROBERT H' 2953 | p199 2954 | (dp200 2955 | g3 2956 | I261516 2957 | sg4 2958 | g6 2959 | sg5 2960 | g6 2961 | sg7 2962 | I1271582 2963 | sg8 2964 | g6 2965 | sg9 2966 | I750000 2967 | sg10 2968 | S'bob.butts@enron.com' 2969 | p201 2970 | sg12 2971 | g6 2972 | sg13 2973 | I-75000 2974 | sg14 2975 | I417619 2976 | sg15 2977 | I9410 2978 | sg16 2979 | g6 2980 | sg17 2981 | g6 2982 | sg18 2983 | g6 2984 | sg19 2985 | I150656 2986 | sg20 2987 | g6 2988 | sg21 2989 | I00 2990 | sg22 2991 | I175000 2992 | sg23 2993 | g6 2994 | sg24 2995 | I417619 2996 | sg25 2997 | g6 2998 | ssS'OLSON CINDY K' 2999 | p202 3000 | (dp203 3001 | g3 3002 | I329078 3003 | sg4 3004 | I1184 3005 | sg5 3006 | I77716 3007 | sg7 3008 | I1321557 3009 | sg8 3010 | g6 3011 | sg9 3012 | I750000 3013 | sg10 3014 | S'cindy.olson@enron.com' 3015 | p204 3016 | sg12 3017 | g6 3018 | sg13 3019 | g6 3020 | sg14 3021 | I2606763 3022 | sg15 3023 | I63791 3024 | sg16 3025 | I20 3026 | sg17 3027 | I1637034 3028 | sg18 3029 | I52 3030 | sg19 3031 | I972 3032 | sg20 3033 | I15 3034 | sg21 3035 | I00 3036 | sg22 3037 | I100000 3038 | sg23 3039 | I856 3040 | sg24 3041 | I969729 3042 | sg25 3043 | g6 3044 | ssS'MCDONALD REBECCA' 3045 | p205 3046 | (dp206 3047 | g3 3048 | g6 3049 | sg4 3050 | I894 3051 | sg5 3052 | g6 3053 | sg7 3054 | g6 3055 | sg8 3056 | g6 3057 | sg9 3058 | g6 3059 | sg10 3060 | S'rebecca.mcdonald@enron.com' 3061 | p207 3062 | sg12 3063 | g6 3064 | sg13 3065 | g6 3066 | sg14 3067 | I1691366 3068 | sg15 3069 | g6 3070 | sg16 3071 | I54 3072 | sg17 3073 | I757301 3074 | sg18 3075 | I13 3076 | sg19 3077 | g6 3078 | sg20 3079 | I1 3080 | sg21 3081 | I00 3082 | sg22 3083 | g6 3084 | sg23 3085 | I720 3086 | sg24 3087 | I934065 3088 | sg25 3089 | g6 3090 | ssS'CUMBERLAND MICHAEL S' 3091 | p208 3092 | (dp209 3093 | g3 3094 | I184899 3095 | sg4 3096 | g6 3097 | sg5 3098 | g6 3099 | sg7 3100 | I807956 3101 | sg8 3102 | g6 3103 | sg9 3104 | I325000 3105 | sg10 3106 | g6 3107 | sg12 3108 | g6 3109 | sg13 3110 | g6 3111 | sg14 3112 | I207940 3113 | sg15 3114 | I22344 3115 | sg16 3116 | g6 3117 | sg17 3118 | g6 3119 | sg18 3120 | g6 3121 | sg19 3122 | I713 3123 | sg20 3124 | g6 3125 | sg21 3126 | I00 3127 | sg22 3128 | I275000 3129 | sg23 3130 | g6 3131 | sg24 3132 | I207940 3133 | sg25 3134 | g6 3135 | ssS'GAHN ROBERT S' 3136 | p210 3137 | (dp211 3138 | g3 3139 | I192008 3140 | sg4 3141 | g6 3142 | sg5 3143 | I73122 3144 | sg7 3145 | I900585 3146 | sg8 3147 | g6 3148 | sg9 3149 | I509870 3150 | sg10 3151 | g6 3152 | sg12 3153 | g6 3154 | sg13 3155 | I-1042 3156 | sg14 3157 | I318607 3158 | sg15 3159 | I50080 3160 | sg16 3161 | g6 3162 | sg17 3163 | I83237 3164 | sg18 3165 | g6 3166 | sg19 3167 | I76547 3168 | sg20 3169 | g6 3170 | sg21 3171 | I00 3172 | sg22 3173 | g6 3174 | sg23 3175 | g6 3176 | sg24 3177 | I235370 3178 | sg25 3179 | g6 3180 | ssS'BADUM JAMES P' 3181 | p212 3182 | (dp213 3183 | g3 3184 | g6 3185 | sg4 3186 | g6 3187 | sg5 3188 | I178980 3189 | sg7 3190 | I182466 3191 | sg8 3192 | g6 3193 | sg9 3194 | g6 3195 | sg10 3196 | g6 3197 | sg12 3198 | g6 3199 | sg13 3200 | g6 3201 | sg14 3202 | I257817 3203 | sg15 3204 | I3486 3205 | sg16 3206 | g6 3207 | sg17 3208 | I257817 3209 | sg18 3210 | g6 3211 | sg19 3212 | g6 3213 | sg20 3214 | g6 3215 | sg21 3216 | I00 3217 | sg22 3218 | g6 3219 | sg23 3220 | g6 3221 | sg24 3222 | g6 3223 | sg25 3224 | g6 3225 | ssS'HERMANN ROBERT J' 3226 | p214 3227 | (dp215 3228 | g3 3229 | I262663 3230 | sg4 3231 | g6 3232 | sg5 3233 | g6 3234 | sg7 3235 | I1297461 3236 | sg8 3237 | g6 3238 | sg9 3239 | I700000 3240 | sg10 3241 | S'robert.hermann@enron.com' 3242 | p216 3243 | sg12 3244 | g6 3245 | sg13 3246 | I-280000 3247 | sg14 3248 | I668132 3249 | sg15 3250 | I48357 3251 | sg16 3252 | g6 3253 | sg17 3254 | I187500 3255 | sg18 3256 | g6 3257 | sg19 3258 | I416441 3259 | sg20 3260 | g6 3261 | sg21 3262 | I00 3263 | sg22 3264 | I150000 3265 | sg23 3266 | g6 3267 | sg24 3268 | I480632 3269 | sg25 3270 | g6 3271 | ssS'FALLON JAMES B' 3272 | p217 3273 | (dp218 3274 | g3 3275 | I304588 3276 | sg4 3277 | I1755 3278 | sg5 3279 | g6 3280 | sg7 3281 | I3676340 3282 | sg8 3283 | g6 3284 | sg9 3285 | I2500000 3286 | sg10 3287 | S'jim.fallon@enron.com' 3288 | p219 3289 | sg12 3290 | g6 3291 | sg13 3292 | g6 3293 | sg14 3294 | I2332399 3295 | sg15 3296 | I95924 3297 | sg16 3298 | I42 3299 | sg17 3300 | I940257 3301 | sg18 3302 | I75 3303 | sg19 3304 | I401481 3305 | sg20 3306 | I37 3307 | sg21 3308 | I00 3309 | sg22 3310 | I374347 3311 | sg23 3312 | I1604 3313 | sg24 3314 | I1392142 3315 | sg25 3316 | g6 3317 | ssS'GATHMANN WILLIAM D' 3318 | p220 3319 | (dp221 3320 | g3 3321 | g6 3322 | sg4 3323 | g6 3324 | sg5 3325 | g6 3326 | sg7 3327 | g6 3328 | sg8 3329 | g6 3330 | sg9 3331 | g6 3332 | sg10 3333 | g6 3334 | sg12 3335 | I-72419 3336 | sg13 3337 | g6 3338 | sg14 3339 | I1945360 3340 | sg15 3341 | g6 3342 | sg16 3343 | g6 3344 | sg17 3345 | I1753766 3346 | sg18 3347 | g6 3348 | sg19 3349 | g6 3350 | sg20 3351 | g6 3352 | sg21 3353 | I00 3354 | sg22 3355 | g6 3356 | sg23 3357 | g6 3358 | sg24 3359 | I264013 3360 | sg25 3361 | g6 3362 | ssS'HORTON STANLEY C' 3363 | p222 3364 | (dp223 3365 | g3 3366 | g6 3367 | sg4 3368 | I2350 3369 | sg5 3370 | I3131860 3371 | sg7 3372 | I3131860 3373 | sg8 3374 | g6 3375 | sg9 3376 | g6 3377 | sg10 3378 | S'stanley.horton@enron.com' 3379 | p224 3380 | sg12 3381 | g6 3382 | sg13 3383 | g6 3384 | sg14 3385 | I7256648 3386 | sg15 3387 | g6 3388 | sg16 3389 | I44 3390 | sg17 3391 | I5210569 3392 | sg18 3393 | I1073 3394 | sg19 3395 | g6 3396 | sg20 3397 | I15 3398 | sg21 3399 | I00 3400 | sg22 3401 | g6 3402 | sg23 3403 | I1074 3404 | sg24 3405 | I2046079 3406 | sg25 3407 | g6 3408 | ssS'BOWEN JR RAYMOND M' 3409 | p225 3410 | (dp226 3411 | g3 3412 | I278601 3413 | sg4 3414 | I1858 3415 | sg5 3416 | g6 3417 | sg7 3418 | I2669589 3419 | sg8 3420 | g6 3421 | sg9 3422 | I1350000 3423 | sg10 3424 | S'raymond.bowen@enron.com' 3425 | p227 3426 | sg12 3427 | g6 3428 | sg13 3429 | I-833 3430 | sg14 3431 | I252055 3432 | sg15 3433 | I65907 3434 | sg16 3435 | I140 3436 | sg17 3437 | g6 3438 | sg18 3439 | I27 3440 | sg19 3441 | I1621 3442 | sg20 3443 | I15 3444 | sg21 3445 | I01 3446 | sg22 3447 | I974293 3448 | sg23 3449 | I1593 3450 | sg24 3451 | I252055 3452 | sg25 3453 | g6 3454 | ssS'GILLIS JOHN' 3455 | p228 3456 | (dp229 3457 | g3 3458 | g6 3459 | sg4 3460 | g6 3461 | sg5 3462 | g6 3463 | sg7 3464 | g6 3465 | sg8 3466 | g6 3467 | sg9 3468 | g6 3469 | sg10 3470 | g6 3471 | sg12 3472 | g6 3473 | sg13 3474 | g6 3475 | sg14 3476 | I85641 3477 | sg15 3478 | g6 3479 | sg16 3480 | g6 3481 | sg17 3482 | I9803 3483 | sg18 3484 | g6 3485 | sg19 3486 | g6 3487 | sg20 3488 | g6 3489 | sg21 3490 | I00 3491 | sg22 3492 | g6 3493 | sg23 3494 | g6 3495 | sg24 3496 | I75838 3497 | sg25 3498 | g6 3499 | ssS'FITZGERALD JAY L' 3500 | p230 3501 | (dp231 3502 | g3 3503 | I199157 3504 | sg4 3505 | I936 3506 | sg5 3507 | g6 3508 | sg7 3509 | I1414857 3510 | sg8 3511 | g6 3512 | sg9 3513 | I350000 3514 | sg10 3515 | S'jay.fitzgerald@enron.com' 3516 | p232 3517 | sg12 3518 | g6 3519 | sg13 3520 | g6 3521 | sg14 3522 | I1621236 3523 | sg15 3524 | I23870 3525 | sg16 3526 | I1 3527 | sg17 3528 | I664461 3529 | sg18 3530 | I16 3531 | sg19 3532 | I285414 3533 | sg20 3534 | I8 3535 | sg21 3536 | I00 3537 | sg22 3538 | I556416 3539 | sg23 3540 | I723 3541 | sg24 3542 | I956775 3543 | sg25 3544 | g6 3545 | ssS'MORAN MICHAEL P' 3546 | p233 3547 | (dp234 3548 | g3 3549 | g6 3550 | sg4 3551 | I672 3552 | sg5 3553 | g6 3554 | sg7 3555 | g6 3556 | sg8 3557 | g6 3558 | sg9 3559 | g6 3560 | sg10 3561 | S'michael.moran@enron.com' 3562 | p235 3563 | sg12 3564 | g6 3565 | sg13 3566 | g6 3567 | sg14 3568 | I221141 3569 | sg15 3570 | g6 3571 | sg16 3572 | I0 3573 | sg17 3574 | I59539 3575 | sg18 3576 | I19 3577 | sg19 3578 | g6 3579 | sg20 3580 | I0 3581 | sg21 3582 | I00 3583 | sg22 3584 | g6 3585 | sg23 3586 | I127 3587 | sg24 3588 | I161602 3589 | sg25 3590 | g6 3591 | ssS'REDMOND BRIAN L' 3592 | p236 3593 | (dp237 3594 | g3 3595 | I96840 3596 | sg4 3597 | I1671 3598 | sg5 3599 | g6 3600 | sg7 3601 | I111529 3602 | sg8 3603 | g6 3604 | sg9 3605 | g6 3606 | sg10 3607 | S'brian.redmond@enron.com' 3608 | p238 3609 | sg12 3610 | g6 3611 | sg13 3612 | g6 3613 | sg14 3614 | I7890324 3615 | sg15 3616 | I14689 3617 | sg16 3618 | I204 3619 | sg17 3620 | I7509039 3621 | sg18 3622 | I221 3623 | sg19 3624 | g6 3625 | sg20 3626 | I49 3627 | sg21 3628 | I00 3629 | sg22 3630 | g6 3631 | sg23 3632 | I1063 3633 | sg24 3634 | I381285 3635 | sg25 3636 | g6 3637 | ssS'BAZELIDES PHILIP J' 3638 | p239 3639 | (dp240 3640 | g3 3641 | I80818 3642 | sg4 3643 | g6 3644 | sg5 3645 | I684694 3646 | sg7 3647 | I860136 3648 | sg8 3649 | g6 3650 | sg9 3651 | g6 3652 | sg10 3653 | g6 3654 | sg12 3655 | g6 3656 | sg13 3657 | g6 3658 | sg14 3659 | I1599641 3660 | sg15 3661 | g6 3662 | sg16 3663 | g6 3664 | sg17 3665 | I1599641 3666 | sg18 3667 | g6 3668 | sg19 3669 | I874 3670 | sg20 3671 | g6 3672 | sg21 3673 | I00 3674 | sg22 3675 | I93750 3676 | sg23 3677 | g6 3678 | sg24 3679 | g6 3680 | sg25 3681 | g6 3682 | ssS'BELDEN TIMOTHY N' 3683 | p241 3684 | (dp242 3685 | g3 3686 | I213999 3687 | sg4 3688 | I7991 3689 | sg5 3690 | I2144013 3691 | sg7 3692 | I5501630 3693 | sg8 3694 | g6 3695 | sg9 3696 | I5249999 3697 | sg10 3698 | S'tim.belden@enron.com' 3699 | p243 3700 | sg12 3701 | g6 3702 | sg13 3703 | I-2334434 3704 | sg14 3705 | I1110705 3706 | sg15 3707 | I17355 3708 | sg16 3709 | I228 3710 | sg17 3711 | I953136 3712 | sg18 3713 | I484 3714 | sg19 3715 | I210698 3716 | sg20 3717 | I108 3718 | sg21 3719 | I01 3720 | sg22 3721 | g6 3722 | sg23 3723 | I5521 3724 | sg24 3725 | I157569 3726 | sg25 3727 | g6 3728 | ssS'DIMICHELE RICHARD G' 3729 | p244 3730 | (dp245 3731 | g3 3732 | I262788 3733 | sg4 3734 | g6 3735 | sg5 3736 | g6 3737 | sg7 3738 | I2368151 3739 | sg8 3740 | g6 3741 | sg9 3742 | I1000000 3743 | sg10 3744 | S'richard.dimichele@enron.com' 3745 | p246 3746 | sg12 3747 | g6 3748 | sg13 3749 | g6 3750 | sg14 3751 | I8317782 3752 | sg15 3753 | I35812 3754 | sg16 3755 | g6 3756 | sg17 3757 | I8191755 3758 | sg18 3759 | g6 3760 | sg19 3761 | I374689 3762 | sg20 3763 | g6 3764 | sg21 3765 | I00 3766 | sg22 3767 | I694862 3768 | sg23 3769 | g6 3770 | sg24 3771 | I126027 3772 | sg25 3773 | g6 3774 | ssS'DURAN WILLIAM D' 3775 | p247 3776 | (dp248 3777 | g3 3778 | I210692 3779 | sg4 3780 | I904 3781 | sg5 3782 | g6 3783 | sg7 3784 | I2093263 3785 | sg8 3786 | g6 3787 | sg9 3788 | I750000 3789 | sg10 3790 | S'w.duran@enron.com' 3791 | p249 3792 | sg12 3793 | g6 3794 | sg13 3795 | g6 3796 | sg14 3797 | I1640910 3798 | sg15 3799 | I25785 3800 | sg16 3801 | I106 3802 | sg17 3803 | I1451869 3804 | sg18 3805 | I12 3806 | sg19 3807 | I1568 3808 | sg20 3809 | I3 3810 | sg21 3811 | I00 3812 | sg22 3813 | I1105218 3814 | sg23 3815 | I599 3816 | sg24 3817 | I189041 3818 | sg25 3819 | g6 3820 | ssS'THORN TERENCE H' 3821 | p250 3822 | (dp251 3823 | g3 3824 | I222093 3825 | sg4 3826 | I266 3827 | sg5 3828 | I16586 3829 | sg7 3830 | I911453 3831 | sg8 3832 | g6 3833 | sg9 3834 | g6 3835 | sg10 3836 | S'terence.thorn@enron.com' 3837 | p252 3838 | sg12 3839 | g6 3840 | sg13 3841 | g6 3842 | sg14 3843 | I4817796 3844 | sg15 3845 | I46145 3846 | sg16 3847 | I0 3848 | sg17 3849 | I4452476 3850 | sg18 3851 | I41 3852 | sg19 3853 | I426629 3854 | sg20 3855 | I0 3856 | sg21 3857 | I00 3858 | sg22 3859 | I200000 3860 | sg23 3861 | I73 3862 | sg24 3863 | I365320 3864 | sg25 3865 | g6 3866 | ssS'FASTOW ANDREW S' 3867 | p253 3868 | (dp254 3869 | g3 3870 | I440698 3871 | sg4 3872 | g6 3873 | sg5 3874 | g6 3875 | sg7 3876 | I2424083 3877 | sg8 3878 | g6 3879 | sg9 3880 | I1300000 3881 | sg10 3882 | S'andrew.fastow@enron.com' 3883 | p255 3884 | sg12 3885 | g6 3886 | sg13 3887 | I-1386055 3888 | sg14 3889 | I1794412 3890 | sg15 3891 | I55921 3892 | sg16 3893 | g6 3894 | sg17 3895 | g6 3896 | sg18 3897 | g6 3898 | sg19 3899 | I277464 3900 | sg20 3901 | g6 3902 | sg21 3903 | I01 3904 | sg22 3905 | I1736055 3906 | sg23 3907 | g6 3908 | sg24 3909 | I1794412 3910 | sg25 3911 | g6 3912 | ssS'FOY JOE' 3913 | p256 3914 | (dp257 3915 | g3 3916 | g6 3917 | sg4 3918 | I57 3919 | sg5 3920 | I181755 3921 | sg7 3922 | I181755 3923 | sg8 3924 | g6 3925 | sg9 3926 | g6 3927 | sg10 3928 | S'tracy.foy@enron.com' 3929 | p258 3930 | sg12 3931 | g6 3932 | sg13 3933 | g6 3934 | sg14 3935 | I343434 3936 | sg15 3937 | g6 3938 | sg16 3939 | I0 3940 | sg17 3941 | I343434 3942 | sg18 3943 | I13 3944 | sg19 3945 | g6 3946 | sg20 3947 | I0 3948 | sg21 3949 | I00 3950 | sg22 3951 | g6 3952 | sg23 3953 | I2 3954 | sg24 3955 | g6 3956 | sg25 3957 | g6 3958 | ssS'CALGER CHRISTOPHER F' 3959 | p259 3960 | (dp260 3961 | g3 3962 | I240189 3963 | sg4 3964 | I2598 3965 | sg5 3966 | g6 3967 | sg7 3968 | I1639297 3969 | sg8 3970 | g6 3971 | sg9 3972 | I1250000 3973 | sg10 3974 | S'christopher.calger@enron.com' 3975 | p261 3976 | sg12 3977 | g6 3978 | sg13 3979 | I-262500 3980 | sg14 3981 | I126027 3982 | sg15 3983 | I35818 3984 | sg16 3985 | I199 3986 | sg17 3987 | g6 3988 | sg18 3989 | I144 3990 | sg19 3991 | I486 3992 | sg20 3993 | I25 3994 | sg21 3995 | I01 3996 | sg22 3997 | I375304 3998 | sg23 3999 | I2188 4000 | sg24 4001 | I126027 4002 | sg25 4003 | g6 4004 | ssS'RICE KENNETH D' 4005 | p262 4006 | (dp263 4007 | g3 4008 | I420636 4009 | sg4 4010 | I905 4011 | sg5 4012 | g6 4013 | sg7 4014 | I505050 4015 | sg8 4016 | g6 4017 | sg9 4018 | I1750000 4019 | sg10 4020 | S'ken.rice@enron.com' 4021 | p264 4022 | sg12 4023 | g6 4024 | sg13 4025 | I-3504386 4026 | sg14 4027 | I22542539 4028 | sg15 4029 | I46950 4030 | sg16 4031 | I42 4032 | sg17 4033 | I19794175 4034 | sg18 4035 | I18 4036 | sg19 4037 | I174839 4038 | sg20 4039 | I4 4040 | sg21 4041 | I01 4042 | sg22 4043 | I1617011 4044 | sg23 4045 | I864 4046 | sg24 4047 | I2748364 4048 | sg25 4049 | g6 4050 | ssS'KAMINSKI WINCENTY J' 4051 | p265 4052 | (dp266 4053 | g3 4054 | I275101 4055 | sg4 4056 | I4607 4057 | sg5 4058 | g6 4059 | sg7 4060 | I1086821 4061 | sg8 4062 | g6 4063 | sg9 4064 | I400000 4065 | sg10 4066 | S'vince.kaminski@enron.com' 4067 | p267 4068 | sg12 4069 | g6 4070 | sg13 4071 | g6 4072 | sg14 4073 | I976037 4074 | sg15 4075 | I83585 4076 | sg16 4077 | I41 4078 | sg17 4079 | I850010 4080 | sg18 4081 | I14368 4082 | sg19 4083 | I4669 4084 | sg20 4085 | I171 4086 | sg21 4087 | I00 4088 | sg22 4089 | I323466 4090 | sg23 4091 | I583 4092 | sg24 4093 | I126027 4094 | sg25 4095 | g6 4096 | ssS'LOCKHART EUGENE E' 4097 | p268 4098 | (dp269 4099 | g3 4100 | g6 4101 | sg4 4102 | g6 4103 | sg5 4104 | g6 4105 | sg7 4106 | g6 4107 | sg8 4108 | g6 4109 | sg9 4110 | g6 4111 | sg10 4112 | g6 4113 | sg12 4114 | g6 4115 | sg13 4116 | g6 4117 | sg14 4118 | g6 4119 | sg15 4120 | g6 4121 | sg16 4122 | g6 4123 | sg17 4124 | g6 4125 | sg18 4126 | g6 4127 | sg19 4128 | g6 4129 | sg20 4130 | g6 4131 | sg21 4132 | I00 4133 | sg22 4134 | g6 4135 | sg23 4136 | g6 4137 | sg24 4138 | g6 4139 | sg25 4140 | g6 4141 | ssS'COX DAVID' 4142 | p270 4143 | (dp271 4144 | g3 4145 | I314288 4146 | sg4 4147 | I102 4148 | sg5 4149 | g6 4150 | sg7 4151 | I1101393 4152 | sg8 4153 | g6 4154 | sg9 4155 | I800000 4156 | sg10 4157 | S'chip.cox@enron.com' 4158 | p272 4159 | sg12 4160 | g6 4161 | sg13 4162 | I-41250 4163 | sg14 4164 | I495633 4165 | sg15 4166 | I27861 4167 | sg16 4168 | I0 4169 | sg17 4170 | I117551 4171 | sg18 4172 | I33 4173 | sg19 4174 | I494 4175 | sg20 4176 | I4 4177 | sg21 4178 | I00 4179 | sg22 4180 | g6 4181 | sg23 4182 | I71 4183 | sg24 4184 | I378082 4185 | sg25 4186 | g6 4187 | ssS'OVERDYKE JR JERE C' 4188 | p273 4189 | (dp274 4190 | g3 4191 | I94941 4192 | sg4 4193 | g6 4194 | sg5 4195 | g6 4196 | sg7 4197 | I249787 4198 | sg8 4199 | g6 4200 | sg9 4201 | g6 4202 | sg10 4203 | S'jere.overdyke@enron.com' 4204 | p275 4205 | sg12 4206 | g6 4207 | sg13 4208 | g6 4209 | sg14 4210 | I7307594 4211 | sg15 4212 | I18834 4213 | sg16 4214 | g6 4215 | sg17 4216 | I5266578 4217 | sg18 4218 | g6 4219 | sg19 4220 | I176 4221 | sg20 4222 | g6 4223 | sg21 4224 | I00 4225 | sg22 4226 | I135836 4227 | sg23 4228 | g6 4229 | sg24 4230 | I2041016 4231 | sg25 4232 | g6 4233 | ssS'PEREIRA PAULO V. FERRAZ' 4234 | p276 4235 | (dp277 4236 | g3 4237 | g6 4238 | sg4 4239 | g6 4240 | sg5 4241 | g6 4242 | sg7 4243 | I27942 4244 | sg8 4245 | g6 4246 | sg9 4247 | g6 4248 | sg10 4249 | g6 4250 | sg12 4251 | g6 4252 | sg13 4253 | I-101250 4254 | sg14 4255 | g6 4256 | sg15 4257 | I27942 4258 | sg16 4259 | g6 4260 | sg17 4261 | g6 4262 | sg18 4263 | g6 4264 | sg19 4265 | g6 4266 | sg20 4267 | g6 4268 | sg21 4269 | I00 4270 | sg22 4271 | g6 4272 | sg23 4273 | g6 4274 | sg24 4275 | g6 4276 | sg25 4277 | I101250 4278 | ssS'STABLER FRANK' 4279 | p278 4280 | (dp279 4281 | g3 4282 | I239502 4283 | sg4 4284 | g6 4285 | sg5 4286 | g6 4287 | sg7 4288 | I1112087 4289 | sg8 4290 | g6 4291 | sg9 4292 | I500000 4293 | sg10 4294 | S'frank.stabler@enron.com' 4295 | p280 4296 | sg12 4297 | g6 4298 | sg13 4299 | g6 4300 | sg14 4301 | I511734 4302 | sg15 4303 | I16514 4304 | sg16 4305 | g6 4306 | sg17 4307 | g6 4308 | sg18 4309 | g6 4310 | sg19 4311 | I356071 4312 | sg20 4313 | g6 4314 | sg21 4315 | I00 4316 | sg22 4317 | g6 4318 | sg23 4319 | g6 4320 | sg24 4321 | I511734 4322 | sg25 4323 | g6 4324 | ssS'BLAKE JR. NORMAN P' 4325 | p281 4326 | (dp282 4327 | g3 4328 | g6 4329 | sg4 4330 | g6 4331 | sg5 4332 | g6 4333 | sg7 4334 | I1279 4335 | sg8 4336 | g6 4337 | sg9 4338 | g6 4339 | sg10 4340 | g6 4341 | sg12 4342 | g6 4343 | sg13 4344 | I-113784 4345 | sg14 4346 | g6 4347 | sg15 4348 | I1279 4349 | sg16 4350 | g6 4351 | sg17 4352 | g6 4353 | sg18 4354 | g6 4355 | sg19 4356 | g6 4357 | sg20 4358 | g6 4359 | sg21 4360 | I00 4361 | sg22 4362 | g6 4363 | sg23 4364 | g6 4365 | sg24 4366 | g6 4367 | sg25 4368 | I113784 4369 | ssS'SHERRICK JEFFREY B' 4370 | p283 4371 | (dp284 4372 | g3 4373 | g6 4374 | sg4 4375 | I613 4376 | sg5 4377 | g6 4378 | sg7 4379 | g6 4380 | sg8 4381 | g6 4382 | sg9 4383 | g6 4384 | sg10 4385 | S'jeffrey.sherrick@enron.com' 4386 | p285 4387 | sg12 4388 | g6 4389 | sg13 4390 | g6 4391 | sg14 4392 | I1832468 4393 | sg15 4394 | g6 4395 | sg16 4396 | I39 4397 | sg17 4398 | I1426469 4399 | sg18 4400 | I25 4401 | sg19 4402 | g6 4403 | sg20 4404 | I18 4405 | sg21 4406 | I00 4407 | sg22 4408 | g6 4409 | sg23 4410 | I583 4411 | sg24 4412 | I405999 4413 | sg25 4414 | g6 4415 | ssS'PRENTICE JAMES' 4416 | p286 4417 | (dp287 4418 | g3 4419 | g6 4420 | sg4 4421 | g6 4422 | sg5 4423 | I564348 4424 | sg7 4425 | I564348 4426 | sg8 4427 | g6 4428 | sg9 4429 | g6 4430 | sg10 4431 | S'james.prentice@enron.com' 4432 | p288 4433 | sg12 4434 | g6 4435 | sg13 4436 | g6 4437 | sg14 4438 | I1095040 4439 | sg15 4440 | g6 4441 | sg16 4442 | g6 4443 | sg17 4444 | I886231 4445 | sg18 4446 | g6 4447 | sg19 4448 | g6 4449 | sg20 4450 | g6 4451 | sg21 4452 | I00 4453 | sg22 4454 | g6 4455 | sg23 4456 | g6 4457 | sg24 4458 | I208809 4459 | sg25 4460 | g6 4461 | ssS'GRAY RODNEY' 4462 | p289 4463 | (dp290 4464 | g3 4465 | I6615 4466 | sg4 4467 | g6 4468 | sg5 4469 | I93585 4470 | sg7 4471 | I1146658 4472 | sg8 4473 | g6 4474 | sg9 4475 | g6 4476 | sg10 4477 | g6 4478 | sg12 4479 | g6 4480 | sg13 4481 | g6 4482 | sg14 4483 | g6 4484 | sg15 4485 | g6 4486 | sg16 4487 | g6 4488 | sg17 4489 | g6 4490 | sg18 4491 | g6 4492 | sg19 4493 | I680833 4494 | sg20 4495 | g6 4496 | sg21 4497 | I00 4498 | sg22 4499 | I365625 4500 | sg23 4501 | g6 4502 | sg24 4503 | g6 4504 | sg25 4505 | g6 4506 | ssS'THE TRAVEL AGENCY IN THE PARK' 4507 | p291 4508 | (dp292 4509 | g3 4510 | g6 4511 | sg4 4512 | g6 4513 | sg5 4514 | g6 4515 | sg7 4516 | I362096 4517 | sg8 4518 | g6 4519 | sg9 4520 | g6 4521 | sg10 4522 | g6 4523 | sg12 4524 | g6 4525 | sg13 4526 | g6 4527 | sg14 4528 | g6 4529 | sg15 4530 | g6 4531 | sg16 4532 | g6 4533 | sg17 4534 | g6 4535 | sg18 4536 | g6 4537 | sg19 4538 | I362096 4539 | sg20 4540 | g6 4541 | sg21 4542 | I00 4543 | sg22 4544 | g6 4545 | sg23 4546 | g6 4547 | sg24 4548 | g6 4549 | sg25 4550 | g6 4551 | ssS'UMANOFF ADAM S' 4552 | p293 4553 | (dp294 4554 | g3 4555 | I288589 4556 | sg4 4557 | I111 4558 | sg5 4559 | g6 4560 | sg7 4561 | I1130461 4562 | sg8 4563 | g6 4564 | sg9 4565 | I788750 4566 | sg10 4567 | S'adam.umanoff@enron.com' 4568 | p295 4569 | sg12 4570 | g6 4571 | sg13 4572 | g6 4573 | sg14 4574 | g6 4575 | sg15 4576 | I53122 4577 | sg16 4578 | I12 4579 | sg17 4580 | g6 4581 | sg18 4582 | I18 4583 | sg19 4584 | g6 4585 | sg20 4586 | I0 4587 | sg21 4588 | I00 4589 | sg22 4590 | g6 4591 | sg23 4592 | I41 4593 | sg24 4594 | g6 4595 | sg25 4596 | g6 4597 | ssS'KEAN STEVEN J' 4598 | p296 4599 | (dp297 4600 | g3 4601 | I404338 4602 | sg4 4603 | I12754 4604 | sg5 4605 | g6 4606 | sg7 4607 | I1747522 4608 | sg8 4609 | g6 4610 | sg9 4611 | I1000000 4612 | sg10 4613 | S'steven.kean@enron.com' 4614 | p298 4615 | sg12 4616 | g6 4617 | sg13 4618 | g6 4619 | sg14 4620 | I6153642 4621 | sg15 4622 | I41953 4623 | sg16 4624 | I140 4625 | sg17 4626 | I2022048 4627 | sg18 4628 | I6759 4629 | sg19 4630 | I1231 4631 | sg20 4632 | I387 4633 | sg21 4634 | I00 4635 | sg22 4636 | I300000 4637 | sg23 4638 | I3639 4639 | sg24 4640 | I4131594 4641 | sg25 4642 | g6 4643 | ssS'FOWLER PEGGY' 4644 | p299 4645 | (dp300 4646 | g3 4647 | g6 4648 | sg4 4649 | I517 4650 | sg5 4651 | g6 4652 | sg7 4653 | g6 4654 | sg8 4655 | g6 4656 | sg9 4657 | g6 4658 | sg10 4659 | S'kulvinder.fowler@enron.com' 4660 | p301 4661 | sg12 4662 | g6 4663 | sg13 4664 | g6 4665 | sg14 4666 | I1884748 4667 | sg15 4668 | g6 4669 | sg16 4670 | I0 4671 | sg17 4672 | I1324578 4673 | sg18 4674 | I36 4675 | sg19 4676 | g6 4677 | sg20 4678 | I0 4679 | sg21 4680 | I00 4681 | sg22 4682 | g6 4683 | sg23 4684 | I10 4685 | sg24 4686 | I560170 4687 | sg25 4688 | g6 4689 | ssS'WASAFF GEORGE' 4690 | p302 4691 | (dp303 4692 | g3 4693 | I259996 4694 | sg4 4695 | I400 4696 | sg5 4697 | I831299 4698 | sg7 4699 | I1034395 4700 | sg8 4701 | g6 4702 | sg9 4703 | I325000 4704 | sg10 4705 | S'george.wasaff@enron.com' 4706 | p304 4707 | sg12 4708 | g6 4709 | sg13 4710 | I-583325 4711 | sg14 4712 | I2056427 4713 | sg15 4714 | g6 4715 | sg16 4716 | I22 4717 | sg17 4718 | I1668260 4719 | sg18 4720 | I30 4721 | sg19 4722 | I1425 4723 | sg20 4724 | I7 4725 | sg21 4726 | I00 4727 | sg22 4728 | I200000 4729 | sg23 4730 | I337 4731 | sg24 4732 | I388167 4733 | sg25 4734 | g6 4735 | ssS'WHITE JR THOMAS E' 4736 | p305 4737 | (dp306 4738 | g3 4739 | I317543 4740 | sg4 4741 | g6 4742 | sg5 4743 | g6 4744 | sg7 4745 | I1934359 4746 | sg8 4747 | g6 4748 | sg9 4749 | I450000 4750 | sg10 4751 | S'thomas.white@enron.com' 4752 | p307 4753 | sg12 4754 | g6 4755 | sg13 4756 | g6 4757 | sg14 4758 | I15144123 4759 | sg15 4760 | I81353 4761 | sg16 4762 | g6 4763 | sg17 4764 | I1297049 4765 | sg18 4766 | g6 4767 | sg19 4768 | I1085463 4769 | sg20 4770 | g6 4771 | sg21 4772 | I00 4773 | sg22 4774 | g6 4775 | sg23 4776 | g6 4777 | sg24 4778 | I13847074 4779 | sg25 4780 | g6 4781 | ssS'CHRISTODOULOU DIOMEDES' 4782 | p308 4783 | (dp309 4784 | g3 4785 | g6 4786 | sg4 4787 | g6 4788 | sg5 4789 | g6 4790 | sg7 4791 | g6 4792 | sg8 4793 | g6 4794 | sg9 4795 | g6 4796 | sg10 4797 | S'diomedes.christodoulou@enron.com' 4798 | p310 4799 | sg12 4800 | g6 4801 | sg13 4802 | g6 4803 | sg14 4804 | I6077885 4805 | sg15 4806 | g6 4807 | sg16 4808 | g6 4809 | sg17 4810 | I5127155 4811 | sg18 4812 | g6 4813 | sg19 4814 | g6 4815 | sg20 4816 | g6 4817 | sg21 4818 | I00 4819 | sg22 4820 | g6 4821 | sg23 4822 | g6 4823 | sg24 4824 | I950730 4825 | sg25 4826 | g6 4827 | ssS'ALLEN PHILLIP K' 4828 | p311 4829 | (dp312 4830 | g3 4831 | I201955 4832 | sg4 4833 | I2902 4834 | sg5 4835 | I2869717 4836 | sg7 4837 | I4484442 4838 | sg8 4839 | g6 4840 | sg9 4841 | I4175000 4842 | sg10 4843 | S'phillip.allen@enron.com' 4844 | p313 4845 | sg12 4846 | I-126027 4847 | sg13 4848 | I-3081055 4849 | sg14 4850 | I1729541 4851 | sg15 4852 | I13868 4853 | sg16 4854 | I47 4855 | sg17 4856 | I1729541 4857 | sg18 4858 | I2195 4859 | sg19 4860 | I152 4861 | sg20 4862 | I65 4863 | sg21 4864 | I00 4865 | sg22 4866 | I304805 4867 | sg23 4868 | I1407 4869 | sg24 4870 | I126027 4871 | sg25 4872 | g6 4873 | ssS'SHARP VICTORIA T' 4874 | p314 4875 | (dp315 4876 | g3 4877 | I248146 4878 | sg4 4879 | I3136 4880 | sg5 4881 | I187469 4882 | sg7 4883 | I1576511 4884 | sg8 4885 | g6 4886 | sg9 4887 | I600000 4888 | sg10 4889 | S'vicki.sharp@enron.com' 4890 | p316 4891 | sg12 4892 | g6 4893 | sg13 4894 | g6 4895 | sg14 4896 | I494136 4897 | sg15 4898 | I116337 4899 | sg16 4900 | I24 4901 | sg17 4902 | I281073 4903 | sg18 4904 | I136 4905 | sg19 4906 | I2401 4907 | sg20 4908 | I6 4909 | sg21 4910 | I00 4911 | sg22 4912 | I422158 4913 | sg23 4914 | I2477 4915 | sg24 4916 | I213063 4917 | sg25 4918 | g6 4919 | ssS'JAEDICKE ROBERT' 4920 | p317 4921 | (dp318 4922 | g3 4923 | g6 4924 | sg4 4925 | g6 4926 | sg5 4927 | g6 4928 | sg7 4929 | I83750 4930 | sg8 4931 | g6 4932 | sg9 4933 | g6 4934 | sg10 4935 | g6 4936 | sg12 4937 | I-44093 4938 | sg13 4939 | I-25000 4940 | sg14 4941 | I431750 4942 | sg15 4943 | g6 4944 | sg16 4945 | g6 4946 | sg17 4947 | I431750 4948 | sg18 4949 | g6 4950 | sg19 4951 | g6 4952 | sg20 4953 | g6 4954 | sg21 4955 | I00 4956 | sg22 4957 | g6 4958 | sg23 4959 | g6 4960 | sg24 4961 | I44093 4962 | sg25 4963 | I108750 4964 | ssS'WINOKUR JR. HERBERT S' 4965 | p319 4966 | (dp320 4967 | g3 4968 | g6 4969 | sg4 4970 | g6 4971 | sg5 4972 | g6 4973 | sg7 4974 | I84992 4975 | sg8 4976 | g6 4977 | sg9 4978 | g6 4979 | sg10 4980 | g6 4981 | sg12 4982 | g6 4983 | sg13 4984 | I-25000 4985 | sg14 4986 | g6 4987 | sg15 4988 | I1413 4989 | sg16 4990 | g6 4991 | sg17 4992 | g6 4993 | sg18 4994 | g6 4995 | sg19 4996 | g6 4997 | sg20 4998 | g6 4999 | sg21 5000 | I00 5001 | sg22 5002 | g6 5003 | sg23 5004 | g6 5005 | sg24 5006 | g6 5007 | sg25 5008 | I108579 5009 | ssS'BROWN MICHAEL' 5010 | p321 5011 | (dp322 5012 | g3 5013 | g6 5014 | sg4 5015 | I1486 5016 | sg5 5017 | g6 5018 | sg7 5019 | I49288 5020 | sg8 5021 | g6 5022 | sg9 5023 | g6 5024 | sg10 5025 | S'michael.brown@enron.com' 5026 | p323 5027 | sg12 5028 | g6 5029 | sg13 5030 | g6 5031 | sg14 5032 | g6 5033 | sg15 5034 | I49288 5035 | sg16 5036 | I13 5037 | sg17 5038 | g6 5039 | sg18 5040 | I41 5041 | sg19 5042 | g6 5043 | sg20 5044 | I1 5045 | sg21 5046 | I00 5047 | sg22 5048 | g6 5049 | sg23 5050 | I761 5051 | sg24 5052 | g6 5053 | sg25 5054 | g6 5055 | ssS'MCCLELLAN GEORGE' 5056 | p324 5057 | (dp325 5058 | g3 5059 | I263413 5060 | sg4 5061 | I1744 5062 | sg5 5063 | g6 5064 | sg7 5065 | I1318763 5066 | sg8 5067 | g6 5068 | sg9 5069 | I900000 5070 | sg10 5071 | S'george.mcclellan@enron.com' 5072 | p326 5073 | sg12 5074 | g6 5075 | sg13 5076 | I-125000 5077 | sg14 5078 | I947861 5079 | sg15 5080 | I228763 5081 | sg16 5082 | I52 5083 | sg17 5084 | I506765 5085 | sg18 5086 | I49 5087 | sg19 5088 | I51587 5089 | sg20 5090 | I0 5091 | sg21 5092 | I00 5093 | sg22 5094 | g6 5095 | sg23 5096 | I1469 5097 | sg24 5098 | I441096 5099 | sg25 5100 | g6 5101 | ssS'HUGHES JAMES A' 5102 | p327 5103 | (dp328 5104 | g3 5105 | g6 5106 | sg4 5107 | I719 5108 | sg5 5109 | g6 5110 | sg7 5111 | g6 5112 | sg8 5113 | g6 5114 | sg9 5115 | g6 5116 | sg10 5117 | S'james.hughes@enron.com' 5118 | p329 5119 | sg12 5120 | g6 5121 | sg13 5122 | g6 5123 | sg14 5124 | I1118394 5125 | sg15 5126 | g6 5127 | sg16 5128 | I35 5129 | sg17 5130 | I754966 5131 | sg18 5132 | I34 5133 | sg19 5134 | g6 5135 | sg20 5136 | I5 5137 | sg21 5138 | I00 5139 | sg22 5140 | g6 5141 | sg23 5142 | I589 5143 | sg24 5144 | I363428 5145 | sg25 5146 | g6 5147 | ssS'REYNOLDS LAWRENCE' 5148 | p330 5149 | (dp331 5150 | g3 5151 | I76399 5152 | sg4 5153 | g6 5154 | sg5 5155 | I51365 5156 | sg7 5157 | I394475 5158 | sg8 5159 | g6 5160 | sg9 5161 | I100000 5162 | sg10 5163 | g6 5164 | sg12 5165 | I-140264 5166 | sg13 5167 | I-200000 5168 | sg14 5169 | I4221891 5170 | sg15 5171 | I8409 5172 | sg16 5173 | g6 5174 | sg17 5175 | I4160672 5176 | sg18 5177 | g6 5178 | sg19 5179 | I202052 5180 | sg20 5181 | g6 5182 | sg21 5183 | I00 5184 | sg22 5185 | I156250 5186 | sg23 5187 | g6 5188 | sg24 5189 | I201483 5190 | sg25 5191 | g6 5192 | ssS'PICKERING MARK R' 5193 | p332 5194 | (dp333 5195 | g3 5196 | I655037 5197 | sg4 5198 | I898 5199 | sg5 5200 | g6 5201 | sg7 5202 | I1386690 5203 | sg8 5204 | I400000 5205 | sg9 5206 | I300000 5207 | sg10 5208 | S'mark.pickering@enron.com' 5209 | p334 5210 | sg12 5211 | g6 5212 | sg13 5213 | g6 5214 | sg14 5215 | I28798 5216 | sg15 5217 | I31653 5218 | sg16 5219 | I7 5220 | sg17 5221 | I28798 5222 | sg18 5223 | I67 5224 | sg19 5225 | g6 5226 | sg20 5227 | I0 5228 | sg21 5229 | I00 5230 | sg22 5231 | g6 5232 | sg23 5233 | I728 5234 | sg24 5235 | g6 5236 | sg25 5237 | g6 5238 | ssS'BHATNAGAR SANJAY' 5239 | p335 5240 | (dp336 5241 | g3 5242 | g6 5243 | sg4 5244 | I523 5245 | sg5 5246 | g6 5247 | sg7 5248 | I15456290 5249 | sg8 5250 | g6 5251 | sg9 5252 | g6 5253 | sg10 5254 | S'sanjay.bhatnagar@enron.com' 5255 | p337 5256 | sg12 5257 | I15456290 5258 | sg13 5259 | g6 5260 | sg15 5261 | g6 5262 | sg16 5263 | I0 5264 | sg17 5265 | I2604490 5266 | sg18 5267 | I29 5268 | sg19 5269 | I137864 5270 | sg20 5271 | I1 5272 | sg21 5273 | I00 5274 | sg22 5275 | g6 5276 | sg23 5277 | I463 5278 | sg24 5279 | I-2604490 5280 | sg25 5281 | I137864 5282 | ssS'CARTER REBECCA C' 5283 | p338 5284 | (dp339 5285 | g3 5286 | I261809 5287 | sg4 5288 | I312 5289 | sg5 5290 | g6 5291 | sg7 5292 | I477557 5293 | sg8 5294 | g6 5295 | sg9 5296 | I300000 5297 | sg10 5298 | S'rebecca.carter@enron.com' 5299 | p340 5300 | sg12 5301 | I-307301 5302 | sg13 5303 | I-159792 5304 | sg14 5305 | g6 5306 | sg15 5307 | g6 5308 | sg16 5309 | I29 5310 | sg17 5311 | g6 5312 | sg18 5313 | I15 5314 | sg19 5315 | I540 5316 | sg20 5317 | I7 5318 | sg21 5319 | I00 5320 | sg22 5321 | I75000 5322 | sg23 5323 | I196 5324 | sg24 5325 | I307301 5326 | sg25 5327 | g6 5328 | ssS'BUCHANAN HAROLD G' 5329 | p341 5330 | (dp342 5331 | g3 5332 | I248017 5333 | sg4 5334 | I1088 5335 | sg5 5336 | g6 5337 | sg7 5338 | I1054637 5339 | sg8 5340 | g6 5341 | sg9 5342 | I500000 5343 | sg10 5344 | S'john.buchanan@enron.com' 5345 | p343 5346 | sg12 5347 | g6 5348 | sg13 5349 | g6 5350 | sg14 5351 | I1014505 5352 | sg15 5353 | I600 5354 | sg16 5355 | I0 5356 | sg17 5357 | I825464 5358 | sg18 5359 | I125 5360 | sg19 5361 | I1215 5362 | sg20 5363 | I0 5364 | sg21 5365 | I00 5366 | sg22 5367 | I304805 5368 | sg23 5369 | I23 5370 | sg24 5371 | I189041 5372 | sg25 5373 | g6 5374 | ssS'YEAP SOON' 5375 | p344 5376 | (dp345 5377 | g3 5378 | g6 5379 | sg4 5380 | g6 5381 | sg5 5382 | g6 5383 | sg7 5384 | I55097 5385 | sg8 5386 | g6 5387 | sg9 5388 | g6 5389 | sg10 5390 | g6 5391 | sg12 5392 | g6 5393 | sg13 5394 | g6 5395 | sg14 5396 | I192758 5397 | sg15 5398 | I55097 5399 | sg16 5400 | g6 5401 | sg17 5402 | I192758 5403 | sg18 5404 | g6 5405 | sg19 5406 | g6 5407 | sg20 5408 | g6 5409 | sg21 5410 | I00 5411 | sg22 5412 | g6 5413 | sg23 5414 | g6 5415 | sg24 5416 | g6 5417 | sg25 5418 | g6 5419 | ssS'MURRAY JULIA H' 5420 | p346 5421 | (dp347 5422 | g3 5423 | I229284 5424 | sg4 5425 | I2192 5426 | sg5 5427 | g6 5428 | sg7 5429 | I812194 5430 | sg8 5431 | g6 5432 | sg9 5433 | I400000 5434 | sg10 5435 | S'julia.murray@enron.com' 5436 | p348 5437 | sg12 5438 | g6 5439 | sg13 5440 | g6 5441 | sg14 5442 | I597461 5443 | sg15 5444 | I57580 5445 | sg16 5446 | I11 5447 | sg17 5448 | I400478 5449 | sg18 5450 | I45 5451 | sg19 5452 | I330 5453 | sg20 5454 | I2 5455 | sg21 5456 | I00 5457 | sg22 5458 | I125000 5459 | sg23 5460 | I395 5461 | sg24 5462 | I196983 5463 | sg25 5464 | g6 5465 | ssS'GARLAND C KEVIN' 5466 | p349 5467 | (dp350 5468 | g3 5469 | I231946 5470 | sg4 5471 | I209 5472 | sg5 5473 | g6 5474 | sg7 5475 | I1566469 5476 | sg8 5477 | g6 5478 | sg9 5479 | I850000 5480 | sg10 5481 | S'kevin.garland@enron.com' 5482 | p351 5483 | sg12 5484 | g6 5485 | sg13 5486 | g6 5487 | sg14 5488 | I896153 5489 | sg15 5490 | I48405 5491 | sg16 5492 | I10 5493 | sg17 5494 | I636246 5495 | sg18 5496 | I44 5497 | sg19 5498 | I60814 5499 | sg20 5500 | I27 5501 | sg21 5502 | I00 5503 | sg22 5504 | I375304 5505 | sg23 5506 | I178 5507 | sg24 5508 | I259907 5509 | sg25 5510 | g6 5511 | ssS'DODSON KEITH' 5512 | p352 5513 | (dp353 5514 | g3 5515 | I221003 5516 | sg4 5517 | I176 5518 | sg5 5519 | g6 5520 | sg7 5521 | I319941 5522 | sg8 5523 | g6 5524 | sg9 5525 | I70000 5526 | sg10 5527 | S'keith.dodson@enron.com' 5528 | p354 5529 | sg12 5530 | g6 5531 | sg13 5532 | g6 5533 | sg14 5534 | g6 5535 | sg15 5536 | I28164 5537 | sg16 5538 | I10 5539 | sg17 5540 | g6 5541 | sg18 5542 | I14 5543 | sg19 5544 | I774 5545 | sg20 5546 | I3 5547 | sg21 5548 | I00 5549 | sg22 5550 | g6 5551 | sg23 5552 | I114 5553 | sg24 5554 | g6 5555 | sg25 5556 | g6 5557 | ssS'YEAGER F SCOTT' 5558 | p355 5559 | (dp356 5560 | g3 5561 | I158403 5562 | sg4 5563 | g6 5564 | sg5 5565 | g6 5566 | sg7 5567 | I360300 5568 | sg8 5569 | g6 5570 | sg9 5571 | g6 5572 | sg10 5573 | S'scott.yeager@enron.com' 5574 | p357 5575 | sg12 5576 | g6 5577 | sg13 5578 | g6 5579 | sg14 5580 | I11884758 5581 | sg15 5582 | I53947 5583 | sg16 5584 | g6 5585 | sg17 5586 | I8308552 5587 | sg18 5588 | g6 5589 | sg19 5590 | I147950 5591 | sg20 5592 | g6 5593 | sg21 5594 | I01 5595 | sg22 5596 | g6 5597 | sg23 5598 | g6 5599 | sg24 5600 | I3576206 5601 | sg25 5602 | g6 5603 | ssS'HIRKO JOSEPH' 5604 | p358 5605 | (dp359 5606 | g3 5607 | g6 5608 | sg4 5609 | g6 5610 | sg5 5611 | I10259 5612 | sg7 5613 | I91093 5614 | sg8 5615 | g6 5616 | sg9 5617 | g6 5618 | sg10 5619 | S'joe.hirko@enron.com' 5620 | p360 5621 | sg12 5622 | g6 5623 | sg13 5624 | g6 5625 | sg14 5626 | I30766064 5627 | sg15 5628 | I77978 5629 | sg16 5630 | g6 5631 | sg17 5632 | I30766064 5633 | sg18 5634 | g6 5635 | sg19 5636 | I2856 5637 | sg20 5638 | g6 5639 | sg21 5640 | I01 5641 | sg22 5642 | g6 5643 | sg23 5644 | g6 5645 | sg24 5646 | g6 5647 | sg25 5648 | g6 5649 | ssS'DIETRICH JANET R' 5650 | p361 5651 | (dp362 5652 | g3 5653 | I250100 5654 | sg4 5655 | I2572 5656 | sg5 5657 | g6 5658 | sg7 5659 | I1410464 5660 | sg8 5661 | g6 5662 | sg9 5663 | I600000 5664 | sg10 5665 | S'janet.dietrich@enron.com' 5666 | p363 5667 | sg12 5668 | g6 5669 | sg13 5670 | g6 5671 | sg14 5672 | I1865087 5673 | sg15 5674 | I3475 5675 | sg16 5676 | I305 5677 | sg17 5678 | I1550019 5679 | sg18 5680 | I63 5681 | sg19 5682 | I473 5683 | sg20 5684 | I14 5685 | sg21 5686 | I00 5687 | sg22 5688 | I556416 5689 | sg23 5690 | I1902 5691 | sg24 5692 | I315068 5693 | sg25 5694 | g6 5695 | ssS'DERRICK JR. JAMES V' 5696 | p364 5697 | (dp365 5698 | g3 5699 | I492375 5700 | sg4 5701 | I2181 5702 | sg5 5703 | g6 5704 | sg7 5705 | I550981 5706 | sg8 5707 | g6 5708 | sg9 5709 | I800000 5710 | sg10 5711 | S'james.derrick@enron.com' 5712 | p366 5713 | sg12 5714 | I-1787380 5715 | sg13 5716 | I-1284000 5717 | sg14 5718 | I8831913 5719 | sg15 5720 | I51124 5721 | sg16 5722 | I64 5723 | sg17 5724 | I8831913 5725 | sg18 5726 | I909 5727 | sg19 5728 | I7482 5729 | sg20 5730 | I20 5731 | sg21 5732 | I00 5733 | sg22 5734 | I484000 5735 | sg23 5736 | I1401 5737 | sg24 5738 | I1787380 5739 | sg25 5740 | g6 5741 | ssS'FREVERT MARK A' 5742 | p367 5743 | (dp368 5744 | g3 5745 | I1060932 5746 | sg4 5747 | I3275 5748 | sg5 5749 | I6426990 5750 | sg7 5751 | I17252530 5752 | sg8 5753 | I2000000 5754 | sg9 5755 | I2000000 5756 | sg10 5757 | S'mark.frevert@enron.com' 5758 | p369 5759 | sg12 5760 | g6 5761 | sg13 5762 | I-3367011 5763 | sg14 5764 | I14622185 5765 | sg15 5766 | I86987 5767 | sg16 5768 | I242 5769 | sg17 5770 | I10433518 5771 | sg18 5772 | I21 5773 | sg19 5774 | I7427621 5775 | sg20 5776 | I6 5777 | sg21 5778 | I00 5779 | sg22 5780 | I1617011 5781 | sg23 5782 | I2979 5783 | sg24 5784 | I4188667 5785 | sg25 5786 | g6 5787 | ssS'PAI LOU L' 5788 | p370 5789 | (dp371 5790 | g3 5791 | I261879 5792 | sg4 5793 | g6 5794 | sg5 5795 | g6 5796 | sg7 5797 | I3123383 5798 | sg8 5799 | g6 5800 | sg9 5801 | I1000000 5802 | sg10 5803 | S'lou.pai@enron.com' 5804 | p372 5805 | sg12 5806 | g6 5807 | sg13 5808 | g6 5809 | sg14 5810 | I23817930 5811 | sg15 5812 | I32047 5813 | sg16 5814 | g6 5815 | sg17 5816 | I15364167 5817 | sg18 5818 | g6 5819 | sg19 5820 | I1829457 5821 | sg20 5822 | g6 5823 | sg21 5824 | I00 5825 | sg22 5826 | g6 5827 | sg23 5828 | g6 5829 | sg24 5830 | I8453763 5831 | sg25 5832 | g6 5833 | ssS'HAYSLETT RODERICK J' 5834 | p373 5835 | (dp374 5836 | g3 5837 | g6 5838 | sg4 5839 | I2649 5840 | sg5 5841 | g6 5842 | sg7 5843 | g6 5844 | sg8 5845 | g6 5846 | sg9 5847 | g6 5848 | sg10 5849 | S'rod.hayslett@enron.com' 5850 | p375 5851 | sg12 5852 | g6 5853 | sg13 5854 | g6 5855 | sg14 5856 | I346663 5857 | sg15 5858 | g6 5859 | sg16 5860 | I35 5861 | sg17 5862 | g6 5863 | sg18 5864 | I1061 5865 | sg19 5866 | g6 5867 | sg20 5868 | I38 5869 | sg21 5870 | I00 5871 | sg22 5872 | g6 5873 | sg23 5874 | I571 5875 | sg24 5876 | I346663 5877 | sg25 5878 | g6 5879 | ssS'BAY FRANKLIN R' 5880 | p376 5881 | (dp377 5882 | g3 5883 | I239671 5884 | sg4 5885 | g6 5886 | sg5 5887 | I260455 5888 | sg7 5889 | I827696 5890 | sg8 5891 | g6 5892 | sg9 5893 | I400000 5894 | sg10 5895 | S'frank.bay@enron.com' 5896 | p378 5897 | sg12 5898 | I-82782 5899 | sg13 5900 | I-201641 5901 | sg14 5902 | I63014 5903 | sg15 5904 | I129142 5905 | sg16 5906 | g6 5907 | sg17 5908 | g6 5909 | sg18 5910 | g6 5911 | sg19 5912 | I69 5913 | sg20 5914 | g6 5915 | sg21 5916 | I00 5917 | sg22 5918 | g6 5919 | sg23 5920 | g6 5921 | sg24 5922 | I145796 5923 | sg25 5924 | g6 5925 | ssS'MCCARTY DANNY J' 5926 | p379 5927 | (dp380 5928 | g3 5929 | g6 5930 | sg4 5931 | I1433 5932 | sg5 5933 | g6 5934 | sg7 5935 | g6 5936 | sg8 5937 | g6 5938 | sg9 5939 | g6 5940 | sg10 5941 | S'danny.mccarty@enron.com' 5942 | p381 5943 | sg12 5944 | g6 5945 | sg13 5946 | g6 5947 | sg14 5948 | I758931 5949 | sg15 5950 | g6 5951 | sg16 5952 | I25 5953 | sg17 5954 | I664375 5955 | sg18 5956 | I215 5957 | sg19 5958 | g6 5959 | sg20 5960 | I2 5961 | sg21 5962 | I00 5963 | sg22 5964 | g6 5965 | sg23 5966 | I508 5967 | sg24 5968 | I94556 5969 | sg25 5970 | g6 5971 | ssS'FUGH JOHN L' 5972 | p382 5973 | (dp383 5974 | g3 5975 | g6 5976 | sg4 5977 | g6 5978 | sg5 5979 | I50591 5980 | sg7 5981 | I50591 5982 | sg8 5983 | g6 5984 | sg9 5985 | g6 5986 | sg10 5987 | g6 5988 | sg12 5989 | g6 5990 | sg13 5991 | g6 5992 | sg14 5993 | I176378 5994 | sg15 5995 | g6 5996 | sg16 5997 | g6 5998 | sg17 5999 | I176378 6000 | sg18 6001 | g6 6002 | sg19 6003 | g6 6004 | sg20 6005 | g6 6006 | sg21 6007 | I00 6008 | sg22 6009 | g6 6010 | sg23 6011 | g6 6012 | sg24 6013 | g6 6014 | sg25 6015 | g6 6016 | ssS'SCRIMSHAW MATTHEW' 6017 | p384 6018 | (dp385 6019 | g3 6020 | g6 6021 | sg4 6022 | g6 6023 | sg5 6024 | g6 6025 | sg7 6026 | g6 6027 | sg8 6028 | g6 6029 | sg9 6030 | g6 6031 | sg10 6032 | S'matthew.scrimshaw@enron.com' 6033 | p386 6034 | sg12 6035 | g6 6036 | sg13 6037 | g6 6038 | sg14 6039 | I759557 6040 | sg15 6041 | g6 6042 | sg16 6043 | g6 6044 | sg17 6045 | I759557 6046 | sg18 6047 | g6 6048 | sg19 6049 | g6 6050 | sg20 6051 | g6 6052 | sg21 6053 | I00 6054 | sg22 6055 | g6 6056 | sg23 6057 | g6 6058 | sg24 6059 | g6 6060 | sg25 6061 | g6 6062 | ssS'KOENIG MARK E' 6063 | p387 6064 | (dp388 6065 | g3 6066 | I309946 6067 | sg4 6068 | I2374 6069 | sg5 6070 | g6 6071 | sg7 6072 | I1587421 6073 | sg8 6074 | g6 6075 | sg9 6076 | I700000 6077 | sg10 6078 | S'mark.koenig@enron.com' 6079 | p389 6080 | sg12 6081 | g6 6082 | sg13 6083 | g6 6084 | sg14 6085 | I1920055 6086 | sg15 6087 | I127017 6088 | sg16 6089 | I53 6090 | sg17 6091 | I671737 6092 | sg18 6093 | I61 6094 | sg19 6095 | I150458 6096 | sg20 6097 | I15 6098 | sg21 6099 | I01 6100 | sg22 6101 | I300000 6102 | sg23 6103 | I2271 6104 | sg24 6105 | I1248318 6106 | sg25 6107 | g6 6108 | ssS'SAVAGE FRANK' 6109 | p390 6110 | (dp391 6111 | g3 6112 | g6 6113 | sg4 6114 | g6 6115 | sg5 6116 | g6 6117 | sg7 6118 | I3750 6119 | sg8 6120 | g6 6121 | sg9 6122 | g6 6123 | sg10 6124 | g6 6125 | sg12 6126 | g6 6127 | sg13 6128 | I-121284 6129 | sg14 6130 | g6 6131 | sg15 6132 | g6 6133 | sg16 6134 | g6 6135 | sg17 6136 | g6 6137 | sg18 6138 | g6 6139 | sg19 6140 | g6 6141 | sg20 6142 | g6 6143 | sg21 6144 | I00 6145 | sg22 6146 | g6 6147 | sg23 6148 | g6 6149 | sg24 6150 | g6 6151 | sg25 6152 | I125034 6153 | ssS'IZZO LAWRENCE L' 6154 | p392 6155 | (dp393 6156 | g3 6157 | I85274 6158 | sg4 6159 | I496 6160 | sg5 6161 | g6 6162 | sg7 6163 | I1979596 6164 | sg8 6165 | g6 6166 | sg9 6167 | g6 6168 | sg10 6169 | S'larry.izzo@enron.com' 6170 | p394 6171 | sg12 6172 | g6 6173 | sg13 6174 | g6 6175 | sg14 6176 | I5819980 6177 | sg15 6178 | I28093 6179 | sg16 6180 | I28 6181 | sg17 6182 | I2165172 6183 | sg18 6184 | I19 6185 | sg19 6186 | I1553729 6187 | sg20 6188 | I5 6189 | sg21 6190 | I00 6191 | sg22 6192 | I312500 6193 | sg23 6194 | I437 6195 | sg24 6196 | I3654808 6197 | sg25 6198 | g6 6199 | ssS'TILNEY ELIZABETH A' 6200 | p395 6201 | (dp396 6202 | g3 6203 | I247338 6204 | sg4 6205 | I460 6206 | sg5 6207 | g6 6208 | sg7 6209 | I399393 6210 | sg8 6211 | g6 6212 | sg9 6213 | I300000 6214 | sg10 6215 | S'elizabeth.tilney@enron.com' 6216 | p397 6217 | sg12 6218 | g6 6219 | sg13 6220 | I-575000 6221 | sg14 6222 | I1168042 6223 | sg15 6224 | g6 6225 | sg16 6226 | I10 6227 | sg17 6228 | I591250 6229 | sg18 6230 | I19 6231 | sg19 6232 | I152055 6233 | sg20 6234 | I11 6235 | sg21 6236 | I00 6237 | sg22 6238 | I275000 6239 | sg23 6240 | I379 6241 | sg24 6242 | I576792 6243 | sg25 6244 | g6 6245 | ssS'MARTIN AMANDA K' 6246 | p398 6247 | (dp399 6248 | g3 6249 | I349487 6250 | sg4 6251 | I1522 6252 | sg5 6253 | I85430 6254 | sg7 6255 | I8407016 6256 | sg8 6257 | g6 6258 | sg9 6259 | g6 6260 | sg10 6261 | S'a..martin@enron.com' 6262 | p400 6263 | sg12 6264 | g6 6265 | sg13 6266 | g6 6267 | sg14 6268 | I2070306 6269 | sg15 6270 | I8211 6271 | sg16 6272 | I8 6273 | sg17 6274 | I2070306 6275 | sg18 6276 | I230 6277 | sg19 6278 | I2818454 6279 | sg20 6280 | I0 6281 | sg21 6282 | I00 6283 | sg22 6284 | I5145434 6285 | sg23 6286 | I477 6287 | sg24 6288 | g6 6289 | sg25 6290 | g6 6291 | ssS'BUY RICHARD B' 6292 | p401 6293 | (dp402 6294 | g3 6295 | I330546 6296 | sg4 6297 | I3523 6298 | sg5 6299 | I649584 6300 | sg7 6301 | I2355702 6302 | sg8 6303 | g6 6304 | sg9 6305 | I900000 6306 | sg10 6307 | S'rick.buy@enron.com' 6308 | p403 6309 | sg12 6310 | g6 6311 | sg13 6312 | I-694862 6313 | sg14 6314 | I3444470 6315 | sg15 6316 | g6 6317 | sg16 6318 | I156 6319 | sg17 6320 | I2542813 6321 | sg18 6322 | I1053 6323 | sg19 6324 | I400572 6325 | sg20 6326 | I71 6327 | sg21 6328 | I00 6329 | sg22 6330 | I769862 6331 | sg23 6332 | I2333 6333 | sg24 6334 | I901657 6335 | sg25 6336 | g6 6337 | ssS'GRAMM WENDY L' 6338 | p404 6339 | (dp405 6340 | g3 6341 | g6 6342 | sg4 6343 | g6 6344 | sg5 6345 | g6 6346 | sg7 6347 | I119292 6348 | sg8 6349 | g6 6350 | sg9 6351 | g6 6352 | sg10 6353 | g6 6354 | sg12 6355 | g6 6356 | sg13 6357 | g6 6358 | sg14 6359 | g6 6360 | sg15 6361 | g6 6362 | sg16 6363 | g6 6364 | sg17 6365 | g6 6366 | sg18 6367 | g6 6368 | sg19 6369 | g6 6370 | sg20 6371 | g6 6372 | sg21 6373 | I00 6374 | sg22 6375 | g6 6376 | sg23 6377 | g6 6378 | sg24 6379 | g6 6380 | sg25 6381 | I119292 6382 | ssS'CAUSEY RICHARD A' 6383 | p406 6384 | (dp407 6385 | g3 6386 | I415189 6387 | sg4 6388 | I1892 6389 | sg5 6390 | g6 6391 | sg7 6392 | I1868758 6393 | sg8 6394 | g6 6395 | sg9 6396 | I1000000 6397 | sg10 6398 | S'richard.causey@enron.com' 6399 | p408 6400 | sg12 6401 | g6 6402 | sg13 6403 | I-235000 6404 | sg14 6405 | I2502063 6406 | sg15 6407 | I30674 6408 | sg16 6409 | I58 6410 | sg17 6411 | g6 6412 | sg18 6413 | I49 6414 | sg19 6415 | I307895 6416 | sg20 6417 | I12 6418 | sg21 6419 | I01 6420 | sg22 6421 | I350000 6422 | sg23 6423 | I1585 6424 | sg24 6425 | I2502063 6426 | sg25 6427 | g6 6428 | ssS'TAYLOR MITCHELL S' 6429 | p409 6430 | (dp410 6431 | g3 6432 | I265214 6433 | sg4 6434 | I533 6435 | sg5 6436 | I227449 6437 | sg7 6438 | I1092663 6439 | sg8 6440 | g6 6441 | sg9 6442 | I600000 6443 | sg10 6444 | S'mitchell.taylor@enron.com' 6445 | p411 6446 | sg12 6447 | g6 6448 | sg13 6449 | g6 6450 | sg14 6451 | I3745048 6452 | sg15 6453 | g6 6454 | sg16 6455 | I0 6456 | sg17 6457 | I3181250 6458 | sg18 6459 | I29 6460 | sg19 6461 | g6 6462 | sg20 6463 | I0 6464 | sg21 6465 | I00 6466 | sg22 6467 | g6 6468 | sg23 6469 | I300 6470 | sg24 6471 | I563798 6472 | sg25 6473 | g6 6474 | ssS'DONAHUE JR JEFFREY M' 6475 | p412 6476 | (dp413 6477 | g3 6478 | I278601 6479 | sg4 6480 | I865 6481 | sg5 6482 | g6 6483 | sg7 6484 | I875760 6485 | sg8 6486 | g6 6487 | sg9 6488 | I800000 6489 | sg10 6490 | S'jeff.donahue@enron.com' 6491 | p414 6492 | sg12 6493 | g6 6494 | sg13 6495 | I-300000 6496 | sg14 6497 | I1080988 6498 | sg15 6499 | I96268 6500 | sg16 6501 | I188 6502 | sg17 6503 | I765920 6504 | sg18 6505 | I22 6506 | sg19 6507 | I891 6508 | sg20 6509 | I11 6510 | sg21 6511 | I00 6512 | sg22 6513 | g6 6514 | sg23 6515 | I772 6516 | sg24 6517 | I315068 6518 | sg25 6519 | g6 6520 | ssS'GLISAN JR BEN F' 6521 | p415 6522 | (dp416 6523 | g3 6524 | I274975 6525 | sg4 6526 | I873 6527 | sg5 6528 | g6 6529 | sg7 6530 | I1272284 6531 | sg8 6532 | g6 6533 | sg9 6534 | I600000 6535 | sg10 6536 | S'ben.glisan@enron.com' 6537 | p417 6538 | sg12 6539 | g6 6540 | sg13 6541 | g6 6542 | sg14 6543 | I778546 6544 | sg15 6545 | I125978 6546 | sg16 6547 | I52 6548 | sg17 6549 | I384728 6550 | sg18 6551 | I16 6552 | sg19 6553 | I200308 6554 | sg20 6555 | I6 6556 | sg21 6557 | I01 6558 | sg22 6559 | I71023 6560 | sg23 6561 | I874 6562 | sg24 6563 | I393818 6564 | sg25 6565 | g6 6566 | ss. -------------------------------------------------------------------------------- /17-final-project/poi_email_addresses.py: -------------------------------------------------------------------------------- 1 | def poiEmails(): 2 | email_list = ["kenneth_lay@enron.net", 3 | "kenneth_lay@enron.com", 4 | "klay.enron@enron.com", 5 | "kenneth.lay@enron.com", 6 | "klay@enron.com", 7 | "layk@enron.com", 8 | "chairman.ken@enron.com", 9 | "jeffreyskilling@yahoo.com", 10 | "jeff_skilling@enron.com", 11 | "jskilling@enron.com", 12 | "effrey.skilling@enron.com", 13 | "skilling@enron.com", 14 | "jeffrey.k.skilling@enron.com", 15 | "jeff.skilling@enron.com", 16 | "kevin_a_howard.enronxgate.enron@enron.net", 17 | "kevin.howard@enron.com", 18 | "kevin.howard@enron.net", 19 | "kevin.howard@gcm.com", 20 | "michael.krautz@enron.com" 21 | "scott.yeager@enron.com", 22 | "syeager@fyi-net.com", 23 | "scott_yeager@enron.net", 24 | "syeager@flash.net", 25 | "joe'.'hirko@enron.com", 26 | "joe.hirko@enron.com", 27 | "rex.shelby@enron.com", 28 | "rex.shelby@enron.nt", 29 | "rex_shelby@enron.net", 30 | "jbrown@enron.com", 31 | "james.brown@enron.com", 32 | "rick.causey@enron.com", 33 | "richard.causey@enron.com", 34 | "rcausey@enron.com", 35 | "calger@enron.com", 36 | "chris.calger@enron.com", 37 | "christopher.calger@enron.com", 38 | "ccalger@enron.com", 39 | "tim_despain.enronxgate.enron@enron.net", 40 | "tim.despain@enron.com", 41 | "kevin_hannon@enron.com", 42 | "kevin'.'hannon@enron.com", 43 | "kevin_hannon@enron.net", 44 | "kevin.hannon@enron.com", 45 | "mkoenig@enron.com", 46 | "mark.koenig@enron.com", 47 | "m..forney@enron.com", 48 | "ken'.'rice@enron.com", 49 | "ken.rice@enron.com", 50 | "ken_rice@enron.com", 51 | "ken_rice@enron.net", 52 | "paula.rieker@enron.com", 53 | "prieker@enron.com", 54 | "andrew.fastow@enron.com", 55 | "lfastow@pdq.net", 56 | "andrew.s.fastow@enron.com", 57 | "lfastow@pop.pdq.net", 58 | "andy.fastow@enron.com", 59 | "david.w.delainey@enron.com", 60 | "delainey.dave@enron.com", 61 | "'delainey@enron.com", 62 | "david.delainey@enron.com", 63 | "'david.delainey'@enron.com", 64 | "dave.delainey@enron.com", 65 | "delainey'.'david@enron.com", 66 | "ben.glisan@enron.com", 67 | "bglisan@enron.com", 68 | "ben_f_glisan@enron.com", 69 | "ben'.'glisan@enron.com", 70 | "jeff.richter@enron.com", 71 | "jrichter@nwlink.com", 72 | "lawrencelawyer@aol.com", 73 | "lawyer'.'larry@enron.com", 74 | "larry_lawyer@enron.com", 75 | "llawyer@enron.com", 76 | "larry.lawyer@enron.com", 77 | "lawrence.lawyer@enron.com", 78 | "tbelden@enron.com", 79 | "tim.belden@enron.com", 80 | "tim_belden@pgn.com", 81 | "tbelden@ect.enron.com", 82 | "michael.kopper@enron.com", 83 | "dave.duncan@enron.com", 84 | "dave.duncan@cipco.org", 85 | "duncan.dave@enron.com", 86 | "ray.bowen@enron.com", 87 | "raymond.bowen@enron.com", 88 | "'bowen@enron.com", 89 | "wes.colwell@enron.com", 90 | "dan.boyle@enron.com", 91 | "cloehr@enron.com", 92 | "chris.loehr@enron.com" 93 | ] 94 | return email_list 95 | -------------------------------------------------------------------------------- /17-final-project/poi_id.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Starter Code for the Lesson 17: Final Project" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import sys\n", 17 | "import pickle\n", 18 | "sys.path.append(\"../utils/\")\n", 19 | "\n", 20 | "from feature_format import feature_format, target_feature_split\n", 21 | "from tester import dump_classifier_and_data" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "## Task 1: Select what features you'll use" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 3, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "# features_list is a list of strings, each of which is a feature name.\n", 38 | "# The first feature must be \"poi\".\n", 39 | "features_list = ['poi', 'salary'] # You will need to use more features\n", 40 | "\n", 41 | "# Load the dictionary containing the dataset\n", 42 | "with open(\"final_project_dataset.pkl\", \"rb\") as data_file:\n", 43 | " data_dict = pickle.load(data_file)" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": {}, 49 | "source": [ 50 | "## Task 2: Remove outliers" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [] 59 | }, 60 | { 61 | "cell_type": "markdown", 62 | "metadata": {}, 63 | "source": [ 64 | "## Task 3: Create new feature(s)" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": null, 70 | "metadata": {}, 71 | "outputs": [], 72 | "source": [ 73 | "# Store to my_dataset for easy export below.\n", 74 | "my_dataset = data_dict\n", 75 | "\n", 76 | "# Extract features and labels from dataset for local testing\n", 77 | "data = feature_format(my_dataset, features_list, sort_keys=True)\n", 78 | "labels, features = target_feature_split(data)" 79 | ] 80 | }, 81 | { 82 | "cell_type": "markdown", 83 | "metadata": {}, 84 | "source": [ 85 | "## Task 4: Try a varity of classifiers" 86 | ] 87 | }, 88 | { 89 | "cell_type": "markdown", 90 | "metadata": {}, 91 | "source": [ 92 | "Please name your classifier clf for easy export below.\n", 93 | "Note that if you want to do PCA or other multi-stage operations,\n", 94 | "you'll need to use Pipelines. For more info:\n", 95 | "http://scikit-learn.org/stable/modules/pipeline.html\n", 96 | "\n", 97 | "Provided to give you a starting point. Try a variety of classifiers." 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": null, 103 | "metadata": {}, 104 | "outputs": [], 105 | "source": [ 106 | "from sklearn.naive_bayes import GaussianNB\n", 107 | "\n", 108 | "\n", 109 | "clf = GaussianNB()" 110 | ] 111 | }, 112 | { 113 | "cell_type": "markdown", 114 | "metadata": {}, 115 | "source": [ 116 | "## Task 5: Tune your classifier to achieve better than .3 precision and recall" 117 | ] 118 | }, 119 | { 120 | "cell_type": "markdown", 121 | "metadata": {}, 122 | "source": [ 123 | "Using our testing script. Check the `tester.py` script in the final project\n", 124 | "folder for details on the evaluation method, especially the test_classifier\n", 125 | "function. Because of the small size of the dataset, the script uses\n", 126 | "stratified shuffle split cross validation. For more info:\n", 127 | "http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedShuffleSplit.html\n", 128 | "\n", 129 | "Example starting point. Try investigating other evaluation techniques!" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": null, 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": [ 138 | "from sklearn.model_selection import train_test_split\n", 139 | "\n", 140 | "\n", 141 | "features_train, features_test, labels_train, labels_test = train_test_split(features, labels, test_size=0.3, random_state=42)" 142 | ] 143 | }, 144 | { 145 | "cell_type": "markdown", 146 | "metadata": {}, 147 | "source": [ 148 | "## Task 6: Dump your classifier, dataset, and `features_list` so anyone can" 149 | ] 150 | }, 151 | { 152 | "cell_type": "markdown", 153 | "metadata": {}, 154 | "source": [ 155 | "Check your results. You do not need to change anything below, but make sure\n", 156 | "that the version of `poi_id.py` that you submit can be run on its own and\n", 157 | "generates the necessary `.pkl` files for validating your results." 158 | ] 159 | }, 160 | { 161 | "cell_type": "code", 162 | "execution_count": null, 163 | "metadata": {}, 164 | "outputs": [], 165 | "source": [ 166 | "dump_classifier_and_data(clf, my_dataset, features_list)" 167 | ] 168 | } 169 | ], 170 | "metadata": { 171 | "kernelspec": { 172 | "display_name": "Python 3", 173 | "language": "python", 174 | "name": "python3" 175 | }, 176 | "language_info": { 177 | "codemirror_mode": { 178 | "name": "ipython", 179 | "version": 3 180 | }, 181 | "file_extension": ".py", 182 | "mimetype": "text/x-python", 183 | "name": "python", 184 | "nbconvert_exporter": "python", 185 | "pygments_lexer": "ipython3", 186 | "version": "3.8.5" 187 | } 188 | }, 189 | "nbformat": 4, 190 | "nbformat_minor": 4 191 | } 192 | -------------------------------------------------------------------------------- /17-final-project/poi_names.txt: -------------------------------------------------------------------------------- 1 | http://usatoday30.usatoday.com/money/industries/energy/2005-12-28-enron-participants_x.htm 2 | 3 | (y) Lay, Kenneth 4 | (y) Skilling, Jeffrey 5 | (n) Howard, Kevin 6 | (n) Krautz, Michael 7 | (n) Yeager, Scott 8 | (n) Hirko, Joseph 9 | (n) Shelby, Rex 10 | (n) Bermingham, David 11 | (n) Darby, Giles 12 | (n) Mulgrew, Gary 13 | (n) Bayley, Daniel 14 | (n) Brown, James 15 | (n) Furst, Robert 16 | (n) Fuhs, William 17 | (n) Causey, Richard 18 | (n) Calger, Christopher 19 | (n) DeSpain, Timothy 20 | (n) Hannon, Kevin 21 | (n) Koenig, Mark 22 | (y) Forney, John 23 | (n) Rice, Kenneth 24 | (n) Rieker, Paula 25 | (n) Fastow, Lea 26 | (n) Fastow, Andrew 27 | (y) Delainey, David 28 | (n) Glisan, Ben 29 | (n) Richter, Jeffrey 30 | (n) Lawyer, Larry 31 | (n) Belden, Timothy 32 | (n) Kopper, Michael 33 | (n) Duncan, David 34 | (n) Bowen, Raymond 35 | (n) Colwell, Wesley 36 | (n) Boyle, Dan 37 | (n) Loehr, Christopher 38 | -------------------------------------------------------------------------------- /17-final-project/tester.py: -------------------------------------------------------------------------------- 1 | """A basic script for importing student's POI identifier, 2 | and checking the results that they get from it 3 | 4 | requires that the algorithm, dataset, and features list 5 | be written to my_classifier.pkl, my_dataset.pkl, and 6 | my_feature_list.pkl, respectively 7 | that process should happen at the end of poi_id.py 8 | """ 9 | 10 | import pickle 11 | import sys 12 | from sklearn.model_selection import StratifiedShuffleSplit 13 | 14 | sys.path.append("../utils/") 15 | 16 | from feature_format import feature_format, target_feature_split 17 | 18 | 19 | PERF_FORMAT_STRING = "\ 20 | \tAccuracy: {:>0.{display_precision}f}\tPrecision: {:>0.{display_precision}f}\t\ 21 | Recall: {:>0.{display_precision}f}\tF1: {:>0.{display_precision}f}\tF2: {:>0.{display_precision}f}" 22 | RESULTS_FORMAT_STRING = "\tTotal predictions: {:4d}\tTrue positives: {:4d}\tFalse positives: {:4d}\ 23 | \tFalse negatives: {:4d}\tTrue negatives: {:4d}" 24 | 25 | 26 | def test_classifier(clf, dataset, feature_list, folds=1000): 27 | data = feature_format(dataset, feature_list, sort_keys=True) 28 | labels, features = target_feature_split(data) 29 | cv = StratifiedShuffleSplit(labels, folds, random_state=42) 30 | true_negatives = 0 31 | false_negatives = 0 32 | true_positives = 0 33 | false_positives = 0 34 | for train_idx, test_idx in cv: 35 | features_train = [] 36 | features_test = [] 37 | labels_train = [] 38 | labels_test = [] 39 | for ii in train_idx: 40 | features_train.append(features[ii]) 41 | labels_train.append(labels[ii]) 42 | for jj in test_idx: 43 | features_test.append(features[jj]) 44 | labels_test.append(labels[jj]) 45 | 46 | # Fit the classifier using training set, and test on test set 47 | clf.fit(features_train, labels_train) 48 | predictions = clf.predict(features_test) 49 | for prediction, truth in zip(predictions, labels_test): 50 | if prediction == 0 and truth == 0: 51 | true_negatives += 1 52 | elif prediction == 0 and truth == 1: 53 | false_negatives += 1 54 | elif prediction == 1 and truth == 0: 55 | false_positives += 1 56 | elif prediction == 1 and truth == 1: 57 | true_positives += 1 58 | else: 59 | print("Warning: Found a predicted label not == 0 or 1.") 60 | print("All predictions should take value 0 or 1.") 61 | print("Evaluating performance for processed predictions:") 62 | break 63 | try: 64 | total_predictions = true_negatives + false_negatives + false_positives + true_positives 65 | accuracy = 1.0 * (true_positives + true_negatives) / total_predictions 66 | precision = 1.0 * true_positives / (true_positives + false_positives) 67 | recall = 1.0 * true_positives / (true_positives + false_negatives) 68 | f1 = 2.0 * true_positives / (2 * true_positives + false_positives + false_negatives) 69 | f2 = (1 + 2.0 * 2.0) * precision * recall / (4 * precision + recall) 70 | print(clf) 71 | print(PERF_FORMAT_STRING.format(accuracy, precision, recall, f1, f2, display_precision = 5)) 72 | print(RESULTS_FORMAT_STRING.format(total_predictions, true_positives, false_positives, false_negatives, true_negatives)) 73 | print() 74 | except: 75 | print("Got a divide by zero when trying out:", clf) 76 | print("Precision or recall may be undefined due to a lack of true positive predicitons.") 77 | 78 | 79 | CLF_PICKLE_FILENAME = "my_classifier.pkl" 80 | DATASET_PICKLE_FILENAME = "my_dataset.pkl" 81 | FEATURE_LIST_FILENAME = "my_feature_list.pkl" 82 | 83 | 84 | def dump_classifier_and_data(clf, dataset, feature_list): 85 | with open(CLF_PICKLE_FILENAME, "w") as clf_outfile: 86 | pickle.dump(clf, clf_outfile) 87 | with open(DATASET_PICKLE_FILENAME, "w") as dataset_outfile: 88 | pickle.dump(dataset, dataset_outfile) 89 | with open(FEATURE_LIST_FILENAME, "w") as featurelist_outfile: 90 | pickle.dump(feature_list, featurelist_outfile) 91 | 92 | 93 | def load_classifier_and_data(): 94 | with open(CLF_PICKLE_FILENAME, "r") as clf_infile: 95 | clf = pickle.load(clf_infile) 96 | with open(DATASET_PICKLE_FILENAME, "r") as dataset_infile: 97 | dataset = pickle.load(dataset_infile) 98 | with open(FEATURE_LIST_FILENAME, "r") as featurelist_infile: 99 | feature_list = pickle.load(featurelist_infile) 100 | return clf, dataset, feature_list 101 | 102 | 103 | def main(): 104 | # load up student's classifier, dataset, and feature_list 105 | clf, dataset, feature_list = load_classifier_and_data() 106 | # Run testing script 107 | test_classifier(clf, dataset, feature_list) 108 | 109 | 110 | if __name__ == '__main__': 111 | main() 112 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Udacity ud120 Projects v2: python3 + jupyter + conda env 2 | 3 | The aim of this fork is to improve original starter project code for students taking 4 | [Intro to Machine Learning](https://classroom.udacity.com/courses/ud120) on Udacity with 5 | python 3.8, conda managing and jupyter notebooks. 6 | 7 | ## Mini-Projects 8 | 9 | - [Lesson 2: Naive Bayes](./02-naive-bayes/nb_author_id.ipynb) 10 | - [Lesson 3: SVM](./03-svm/svm_author_id.ipynb) 11 | - [Lesson 4: Decision Trees](./04-decision-tree/dt_author_id.ipynb) 12 | - [Lesson 5: Choose Your own Algorithm](./05-choose-your-own/your_algorithm.ipynb) 13 | - [Lesson 6: Datasets and Questions](./06-datasets-questions/explore_enron_data.ipynb) 14 | - [Lesson 7: Regressions](./07-regression/finance_regression.ipynb) 15 | - [Lesson 8: Outliers](./08-outliers/outlier_removal_regression.ipynb) 16 | - [Lesson 9: Clustering](09-10-k-means/k_means_cluster.ipynb) 17 | - [Lesson 10: Feature Scaling](09-10-k-means/k_means_cluster.ipynb) 18 | - [Lesson 11: Text Learning](11-text-learning/vectorize_text.ipynb) 19 | - [Lesson 12: Feature Selection](12-feature-selection/find_signature.ipynb) 20 | - [Lesson 13: PCA](13-pca/eigenfaces.ipynb) 21 | - [Lesson 14: Validation](14-validation/validate_poi.ipynb) 22 | - [Lesson 15: Evaluation Metrics](15-evaluation/evaluate_poi_identifier.ipynb) 23 | - [Lesson 17: Final Project](17-final-project/poi_id.ipynb) 24 | 25 | ## Important Notes 26 | 27 | ### Lesson 3: SVM 28 | 29 | In this repo newer version of `scikit-learn` is used. Thus, to get the results expected by the course grader 30 | you need to use `SVC` with `gamma='auto'`, since the default value of gamma changed, see `sklearn.svm.SVC` [docs](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html): 31 | > Changed in version 0.22: The default value of gamma changed from 'auto' to 'scale'. 32 | 33 | For example: 34 | 35 | ```python 36 | clf = SVC(kernel='linear', gamma='auto') 37 | ``` 38 | 39 | ### Lesson 7: Regressions 40 | 41 | To get the correct (acceptable by grader) results set `sort_keys='../utils/python2_lesson06_keys.pkl'` for 42 | `feature_format` function: 43 | 44 | ```python 45 | ... 46 | data = feature_format(dictionary, features_list, remove_any_zeroes=True, sort_keys='../utils/python2_lesson06_keys.pkl') 47 | ... 48 | ``` 49 | 50 | > [...] This will open up a file in the tools folder with the Python 2 key order. 51 | 52 | See [this](https://classroom.udacity.com/courses/ud120/lessons/2301748537/concepts/30416086000923) for detailed explanation. 53 | 54 | 55 | ## Initial Setup 56 | 57 | ### 1. Clone the repo 58 | 59 | ```bash 60 | $ git clone https://github.com/trsvchn/ud120-projects-py3-jupyter.git 61 | $ cd ud120-projects-v2 62 | ``` 63 | 64 | ### 2. Set up conda environment 65 | 66 | #### 2.1. Download and install anaconda 67 | 68 | [link](https://www.anaconda.com/distribution/) 69 | 70 | #### 2.2. Create environment 71 | 72 | ```bash 73 | $ conda env create -f environment.yml 74 | ``` 75 | 76 | #### 2.3. Activate environment via 77 | 78 | ```bash 79 | $ conda activate ud120 80 | ``` 81 | 82 | ### 3. Run starter script to check env and download required data 83 | 84 | ```bash 85 | $ python ./utils/starter.py 86 | ``` 87 | -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: ud120 2 | channels: 3 | - defaults 4 | - conda-forge 5 | dependencies: 6 | - python=3.8 7 | - numpy 8 | - scipy 9 | - scikit-learn 10 | - nltk 11 | - jupyter 12 | - matplotlib 13 | -------------------------------------------------------------------------------- /utils/email_preprocess.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | 3 | from sklearn.model_selection import train_test_split 4 | from sklearn.feature_extraction.text import TfidfVectorizer 5 | from sklearn.feature_selection import SelectPercentile, f_classif 6 | 7 | 8 | def preprocess(words_file="../utils/word_data.pkl", authors_file="../utils/email_authors.pkl"): 9 | """ 10 | this function takes a pre-made list of email texts (by default word_data.pkl) 11 | and the corresponding authors (by default email_authors.pkl) and performs 12 | a number of preprocessing steps: 13 | -- splits into training/testing sets (10% testing) 14 | -- vectorizes into tfidf matrix 15 | -- selects/keeps most helpful features 16 | 17 | after this, the feaures and labels are put into numpy arrays, which play nice with sklearn functions 18 | 19 | 4 objects are returned: 20 | -- training/testing features 21 | -- training/testing labels 22 | """ 23 | 24 | # the words (features) and authors (labels), already largely preprocessed 25 | # this preprocessing will be repeated in the text learning mini-project 26 | with open(authors_file, 'rb') as f: 27 | authors = pickle.load(f) 28 | 29 | with open(words_file, 'rb') as f: 30 | word_data = pickle.load(f) 31 | 32 | # test_size is the percentage of events assigned to the test set 33 | # (remainder go into training) 34 | features_train, features_test, labels_train, labels_test = train_test_split(word_data, authors, test_size=0.1, random_state=42) 35 | 36 | # text vectorization--go from strings to lists of numbers 37 | vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words='english') 38 | features_train_transformed = vectorizer.fit_transform(features_train) 39 | features_test_transformed = vectorizer.transform(features_test) 40 | 41 | # feature selection, because text is super high dimensional and 42 | # can be really computationally chewy as a result 43 | selector = SelectPercentile(f_classif, percentile=10) 44 | selector.fit(features_train_transformed, labels_train) 45 | features_train_transformed = selector.transform(features_train_transformed).toarray() 46 | features_test_transformed = selector.transform(features_test_transformed).toarray() 47 | 48 | # info on the data 49 | print("no. of Chris training emails:", sum(labels_train)) 50 | print("no. of Sara training emails:", len(labels_train) - sum(labels_train)) 51 | 52 | return features_train_transformed, features_test_transformed, labels_train, labels_test 53 | -------------------------------------------------------------------------------- /utils/feature_format.py: -------------------------------------------------------------------------------- 1 | """A general tool for converting data from the 2 | dictionary format to an (n x k) python list that's 3 | ready for training an sklearn algorithm 4 | 5 | n--no. of key-value pairs in dictonary 6 | k--no. of features being extracted 7 | 8 | dictionary keys are names of persons in dataset 9 | dictionary values are dictionaries, where each 10 | key-value pair in the dict is the name 11 | of a feature, and its value for that person 12 | 13 | In addition to converting a dictionary to a numpy 14 | array, you may want to separate the labels from the 15 | features--this is what targetFeatureSplit is for 16 | 17 | so, if you want to have the poi label as the target, 18 | and the features you want to use are the person's 19 | salary and bonus, here's what you would do: 20 | 21 | feature_list = ["poi", "salary", "bonus"] 22 | data_array = featureFormat( data_dictionary, feature_list ) 23 | label, features = targetFeatureSplit(data_array) 24 | 25 | the line above (targetFeatureSplit) assumes that the 26 | label is the _first_ item in feature_list--very important 27 | that poi is listed first! 28 | """ 29 | 30 | import pickle 31 | import numpy as np 32 | 33 | 34 | def feature_format(dictionary, features, remove_NaN=True, remove_all_zeroes=True, remove_any_zeroes=False, sort_keys=False): 35 | """Convert dictionary to numpy array of features 36 | remove_NaN = True will convert "NaN" string to 0.0 37 | remove_all_zeroes = True will omit any data points for which 38 | all the features you seek are 0.0 39 | remove_any_zeroes = True will omit any data points for which 40 | any of the features you seek are 0.0 41 | sort_keys = True sorts keys by alphabetical order. Setting the value as 42 | a string opens the corresponding pickle file with a preset key 43 | order (this is used for Python 3 compatibility, and sort_keys 44 | should be left as False for the course mini-projects). 45 | NOTE: first feature is assumed to be 'poi' and is not checked for 46 | removal for zero or missing values. 47 | """ 48 | 49 | return_list = [] 50 | 51 | # Key order - first branch is for Python 3 compatibility on mini-projects, 52 | # second branch is for compatibility on final project. 53 | if isinstance(sort_keys, str): 54 | with open(sort_keys, 'rb') as f: 55 | keys = pickle.load(f) 56 | elif sort_keys: 57 | keys = sorted(dictionary.keys()) 58 | else: 59 | keys = dictionary.keys() 60 | 61 | for key in keys: 62 | tmp_list = [] 63 | for feature in features: 64 | try: 65 | dictionary[key][feature] 66 | except KeyError: 67 | print("error: key ", feature, " not present") 68 | return 69 | value = dictionary[key][feature] 70 | if value == "NaN" and remove_NaN: 71 | value = 0 72 | tmp_list.append(float(value)) 73 | 74 | # Logic for deciding whether or not to add the data point. 75 | append = True 76 | # exclude 'poi' class as criteria. 77 | if features[0] == 'poi': 78 | test_list = tmp_list[1:] 79 | else: 80 | test_list = tmp_list 81 | # if all features are zero and you want to remove 82 | # data points that are all zero, do that here 83 | if remove_all_zeroes: 84 | append = False 85 | for item in test_list: 86 | if item != 0 and item != "NaN": 87 | append = True 88 | break 89 | # if any features for a given data point are zero 90 | # and you want to remove data points with any zeroes, 91 | # handle that here 92 | if remove_any_zeroes: 93 | if 0 in test_list or "NaN" in test_list: 94 | append = False 95 | # Append the data point if flagged for addition. 96 | if append: 97 | return_list.append(np.array(tmp_list)) 98 | 99 | return np.array(return_list) 100 | 101 | 102 | def target_feature_split(data): 103 | """Given a numpy array like the one returned from 104 | featureFormat, separate out the first feature 105 | and put it into its own list (this should be the 106 | quantity you want to predict) 107 | 108 | return targets and features as separate lists 109 | 110 | (sklearn can generally handle both lists and numpy arrays as 111 | input formats when training/predicting) 112 | """ 113 | 114 | target = [] 115 | features = [] 116 | for item in data: 117 | target.append(item[0]) 118 | features.append(item[1:]) 119 | 120 | return target, features 121 | -------------------------------------------------------------------------------- /utils/parse_out_email_text.py: -------------------------------------------------------------------------------- 1 | # from nltk.stem.snowball import SnowballStemmer 2 | import string 3 | 4 | 5 | def parse_out_text(f): 6 | """Given an opened email file f, parse out all text below the 7 | metadata block at the top 8 | (in Part 2, you will also add stemming capabilities) 9 | and return a string that contains all the words 10 | in the email (space-separated) 11 | 12 | Example use case: 13 | >>> f = open("email_file_name.txt", "r") 14 | >>> text = parse_out_text(f) 15 | """ 16 | 17 | f.seek(0) # go back to beginning of file (annoying) 18 | all_text = f.read() 19 | 20 | # split off metadata 21 | content = all_text.split("X-FileName:") 22 | words = "" 23 | if len(content) > 1: 24 | # remove punctuation 25 | text_string = content[1].translate(string.maketrans("", ""), string.punctuation) 26 | 27 | # project part 2: comment out the line below 28 | words = text_string 29 | 30 | # split the text string into individual words, stem each word, 31 | # and append the stemmed word to words (make sure there's a single 32 | # space between each stemmed word) 33 | 34 | return words 35 | 36 | 37 | def main(): 38 | with open("../11-text-learning/test_email.txt", "r") as f: 39 | text = parse_out_text(f) 40 | print(text) 41 | 42 | 43 | if __name__ == '__main__': 44 | main() 45 | -------------------------------------------------------------------------------- /utils/python2_lesson06_keys.pkl: -------------------------------------------------------------------------------- 1 | (lp0 2 | S'METTS MARK' 3 | p1 4 | aS'BAXTER JOHN C' 5 | p2 6 | aS'ELLIOTT STEVEN' 7 | p3 8 | aS'CORDES WILLIAM R' 9 | p4 10 | aS'HANNON KEVIN P' 11 | p5 12 | aS'MORDAUNT KRISTINA M' 13 | p6 14 | aS'MEYER ROCKFORD G' 15 | p7 16 | aS'MCMAHON JEFFREY' 17 | p8 18 | aS'HORTON STANLEY C' 19 | p9 20 | aS'PIPER GREGORY F' 21 | p10 22 | aS'HUMPHREY GENE E' 23 | p11 24 | aS'UMANOFF ADAM S' 25 | p12 26 | aS'BLACHMAN JEREMY M' 27 | p13 28 | aS'SUNDE MARTIN' 29 | p14 30 | aS'GIBBS DANA R' 31 | p15 32 | aS'LOWRY CHARLES P' 33 | p16 34 | aS'COLWELL WESLEY' 35 | p17 36 | aS'MULLER MARK S' 37 | p18 38 | aS'JACKSON CHARLENE R' 39 | p19 40 | aS'WESTFAHL RICHARD K' 41 | p20 42 | aS'WALTERS GARETH W' 43 | p21 44 | aS'WALLS JR ROBERT H' 45 | p22 46 | aS'KITCHEN LOUISE' 47 | p23 48 | aS'CHAN RONNIE' 49 | p24 50 | aS'BELFER ROBERT' 51 | p25 52 | aS'SHANKMAN JEFFREY A' 53 | p26 54 | aS'WODRASKA JOHN' 55 | p27 56 | aS'BERGSIEKER RICHARD P' 57 | p28 58 | aS'URQUHART JOHN A' 59 | p29 60 | aS'BIBI PHILIPPE A' 61 | p30 62 | aS'RIEKER PAULA H' 63 | p31 64 | aS'WHALEY DAVID A' 65 | p32 66 | aS'BECK SALLY W' 67 | p33 68 | aS'HAUG DAVID L' 69 | p34 70 | aS'ECHOLS JOHN B' 71 | p35 72 | aS'MENDELSOHN JOHN' 73 | p36 74 | aS'HICKERSON GARY J' 75 | p37 76 | aS'CLINE KENNETH W' 77 | p38 78 | aS'LEWIS RICHARD' 79 | p39 80 | aS'HAYES ROBERT E' 81 | p40 82 | aS'MCCARTY DANNY J' 83 | p41 84 | aS'KOPPER MICHAEL J' 85 | p42 86 | aS'LEFF DANIEL P' 87 | p43 88 | aS'LAVORATO JOHN J' 89 | p44 90 | aS'BERBERIAN DAVID' 91 | p45 92 | aS'DETMERING TIMOTHY J' 93 | p46 94 | aS'WAKEHAM JOHN' 95 | p47 96 | aS'POWERS WILLIAM' 97 | p48 98 | aS'GOLD JOSEPH' 99 | p49 100 | aS'BANNANTINE JAMES M' 101 | p50 102 | aS'DUNCAN JOHN H' 103 | p51 104 | aS'SHAPIRO RICHARD S' 105 | p52 106 | aS'SHERRIFF JOHN R' 107 | p53 108 | aS'SHELBY REX' 109 | p54 110 | aS'LEMAISTRE CHARLES' 111 | p55 112 | aS'DEFFNER JOSEPH M' 113 | p56 114 | aS'KISHKILL JOSEPH G' 115 | p57 116 | aS'WHALLEY LAWRENCE G' 117 | p58 118 | aS'MCCONNELL MICHAEL S' 119 | p59 120 | aS'PIRO JIM' 121 | p60 122 | aS'DELAINEY DAVID W' 123 | p61 124 | aS'SULLIVAN-SHAKLOVITZ COLLEEN' 125 | p62 126 | aS'WROBEL BRUCE' 127 | p63 128 | aS'LINDHOLM TOD A' 129 | p64 130 | aS'MEYER JEROME J' 131 | p65 132 | aS'BUTTS ROBERT H' 133 | p66 134 | aS'OLSON CINDY K' 135 | p67 136 | aS'MCDONALD REBECCA' 137 | p68 138 | aS'CUMBERLAND MICHAEL S' 139 | p69 140 | aS'GAHN ROBERT S' 141 | p70 142 | aS'MCCLELLAN GEORGE' 143 | p71 144 | aS'HERMANN ROBERT J' 145 | p72 146 | aS'SCRIMSHAW MATTHEW' 147 | p73 148 | aS'GATHMANN WILLIAM D' 149 | p74 150 | aS'HAEDICKE MARK E' 151 | p75 152 | aS'BOWEN JR RAYMOND M' 153 | p76 154 | aS'GILLIS JOHN' 155 | p77 156 | aS'FASTOW ANDREW S' 157 | p78 158 | aS'FITZGERALD JAY L' 159 | p79 160 | aS'MORAN MICHAEL P' 161 | p80 162 | aS'REDMOND BRIAN L' 163 | p81 164 | aS'BAZELIDES PHILIP J' 165 | p82 166 | aS'BELDEN TIMOTHY N' 167 | p83 168 | aS'DURAN WILLIAM D' 169 | p84 170 | aS'THORN TERENCE H' 171 | p85 172 | aS'FOY JOE' 173 | p86 174 | aS'CALGER CHRISTOPHER F' 175 | p87 176 | aS'RICE KENNETH D' 177 | p88 178 | aS'KAMINSKI WINCENTY J' 179 | p89 180 | aS'LOCKHART EUGENE E' 181 | p90 182 | aS'COX DAVID' 183 | p91 184 | aS'OVERDYKE JR JERE C' 185 | p92 186 | aS'PEREIRA PAULO V. FERRAZ' 187 | p93 188 | aS'STABLER FRANK' 189 | p94 190 | aS'BLAKE JR. NORMAN P' 191 | p95 192 | aS'SHERRICK JEFFREY B' 193 | p96 194 | aS'PRENTICE JAMES' 195 | p97 196 | aS'GRAY RODNEY' 197 | p98 198 | aS'PICKERING MARK R' 199 | p99 200 | aS'THE TRAVEL AGENCY IN THE PARK' 201 | p100 202 | aS'NOLES JAMES L' 203 | p101 204 | aS'KEAN STEVEN J' 205 | p102 206 | aS'FOWLER PEGGY' 207 | p103 208 | aS'WASAFF GEORGE' 209 | p104 210 | aS'WHITE JR THOMAS E' 211 | p105 212 | aS'CHRISTODOULOU DIOMEDES' 213 | p106 214 | aS'ALLEN PHILLIP K' 215 | p107 216 | aS'SHARP VICTORIA T' 217 | p108 218 | aS'JAEDICKE ROBERT' 219 | p109 220 | aS'WINOKUR JR. HERBERT S' 221 | p110 222 | aS'BROWN MICHAEL' 223 | p111 224 | aS'BADUM JAMES P' 225 | p112 226 | aS'HUGHES JAMES A' 227 | p113 228 | aS'REYNOLDS LAWRENCE' 229 | p114 230 | aS'DIMICHELE RICHARD G' 231 | p115 232 | aS'BHATNAGAR SANJAY' 233 | p116 234 | aS'CARTER REBECCA C' 235 | p117 236 | aS'BUCHANAN HAROLD G' 237 | p118 238 | aS'YEAP SOON' 239 | p119 240 | aS'MURRAY JULIA H' 241 | p120 242 | aS'GARLAND C KEVIN' 243 | p121 244 | aS'DODSON KEITH' 245 | p122 246 | aS'YEAGER F SCOTT' 247 | p123 248 | aS'HIRKO JOSEPH' 249 | p124 250 | aS'DIETRICH JANET R' 251 | p125 252 | aS'DERRICK JR. JAMES V' 253 | p126 254 | aS'FREVERT MARK A' 255 | p127 256 | aS'PAI LOU L' 257 | p128 258 | aS'BAY FRANKLIN R' 259 | p129 260 | aS'HAYSLETT RODERICK J' 261 | p130 262 | aS'FUGH JOHN L' 263 | p131 264 | aS'FALLON JAMES B' 265 | p132 266 | aS'KOENIG MARK E' 267 | p133 268 | aS'SAVAGE FRANK' 269 | p134 270 | aS'IZZO LAWRENCE L' 271 | p135 272 | aS'TILNEY ELIZABETH A' 273 | p136 274 | aS'MARTIN AMANDA K' 275 | p137 276 | aS'BUY RICHARD B' 277 | p138 278 | aS'GRAMM WENDY L' 279 | p139 280 | aS'CAUSEY RICHARD A' 281 | p140 282 | aS'TAYLOR MITCHELL S' 283 | p141 284 | aS'DONAHUE JR JEFFREY M' 285 | p142 286 | aS'GLISAN JR BEN F' 287 | p143 288 | a. -------------------------------------------------------------------------------- /utils/python2_lesson13_keys.pkl: -------------------------------------------------------------------------------- 1 | (lp0 2 | S'METTS MARK' 3 | p1 4 | aS'BAXTER JOHN C' 5 | p2 6 | aS'ELLIOTT STEVEN' 7 | p3 8 | aS'CORDES WILLIAM R' 9 | p4 10 | aS'HANNON KEVIN P' 11 | p5 12 | aS'MORDAUNT KRISTINA M' 13 | p6 14 | aS'MEYER ROCKFORD G' 15 | p7 16 | aS'MCMAHON JEFFREY' 17 | p8 18 | aS'HORTON STANLEY C' 19 | p9 20 | aS'PIPER GREGORY F' 21 | p10 22 | aS'HUMPHREY GENE E' 23 | p11 24 | aS'UMANOFF ADAM S' 25 | p12 26 | aS'BLACHMAN JEREMY M' 27 | p13 28 | aS'SUNDE MARTIN' 29 | p14 30 | aS'GIBBS DANA R' 31 | p15 32 | aS'LOWRY CHARLES P' 33 | p16 34 | aS'COLWELL WESLEY' 35 | p17 36 | aS'MULLER MARK S' 37 | p18 38 | aS'JACKSON CHARLENE R' 39 | p19 40 | aS'WESTFAHL RICHARD K' 41 | p20 42 | aS'WALTERS GARETH W' 43 | p21 44 | aS'WALLS JR ROBERT H' 45 | p22 46 | aS'KITCHEN LOUISE' 47 | p23 48 | aS'CHAN RONNIE' 49 | p24 50 | aS'BELFER ROBERT' 51 | p25 52 | aS'SHANKMAN JEFFREY A' 53 | p26 54 | aS'WODRASKA JOHN' 55 | p27 56 | aS'BERGSIEKER RICHARD P' 57 | p28 58 | aS'URQUHART JOHN A' 59 | p29 60 | aS'BIBI PHILIPPE A' 61 | p30 62 | aS'RIEKER PAULA H' 63 | p31 64 | aS'WHALEY DAVID A' 65 | p32 66 | aS'BECK SALLY W' 67 | p33 68 | aS'HAUG DAVID L' 69 | p34 70 | aS'ECHOLS JOHN B' 71 | p35 72 | aS'MENDELSOHN JOHN' 73 | p36 74 | aS'HICKERSON GARY J' 75 | p37 76 | aS'CLINE KENNETH W' 77 | p38 78 | aS'LEWIS RICHARD' 79 | p39 80 | aS'HAYES ROBERT E' 81 | p40 82 | aS'MCCARTY DANNY J' 83 | p41 84 | aS'KOPPER MICHAEL J' 85 | p42 86 | aS'LEFF DANIEL P' 87 | p43 88 | aS'LAVORATO JOHN J' 89 | p44 90 | aS'BERBERIAN DAVID' 91 | p45 92 | aS'DETMERING TIMOTHY J' 93 | p46 94 | aS'WAKEHAM JOHN' 95 | p47 96 | aS'POWERS WILLIAM' 97 | p48 98 | aS'GOLD JOSEPH' 99 | p49 100 | aS'BANNANTINE JAMES M' 101 | p50 102 | aS'DUNCAN JOHN H' 103 | p51 104 | aS'SHAPIRO RICHARD S' 105 | p52 106 | aS'SHERRIFF JOHN R' 107 | p53 108 | aS'SHELBY REX' 109 | p54 110 | aS'LEMAISTRE CHARLES' 111 | p55 112 | aS'DEFFNER JOSEPH M' 113 | p56 114 | aS'KISHKILL JOSEPH G' 115 | p57 116 | aS'WHALLEY LAWRENCE G' 117 | p58 118 | aS'MCCONNELL MICHAEL S' 119 | p59 120 | aS'PIRO JIM' 121 | p60 122 | aS'DELAINEY DAVID W' 123 | p61 124 | aS'SULLIVAN-SHAKLOVITZ COLLEEN' 125 | p62 126 | aS'WROBEL BRUCE' 127 | p63 128 | aS'LINDHOLM TOD A' 129 | p64 130 | aS'MEYER JEROME J' 131 | p65 132 | aS'LAY KENNETH L' 133 | p66 134 | aS'BUTTS ROBERT H' 135 | p67 136 | aS'OLSON CINDY K' 137 | p68 138 | aS'MCDONALD REBECCA' 139 | p69 140 | aS'CUMBERLAND MICHAEL S' 141 | p70 142 | aS'GAHN ROBERT S' 143 | p71 144 | aS'MCCLELLAN GEORGE' 145 | p72 146 | aS'HERMANN ROBERT J' 147 | p73 148 | aS'SCRIMSHAW MATTHEW' 149 | p74 150 | aS'GATHMANN WILLIAM D' 151 | p75 152 | aS'HAEDICKE MARK E' 153 | p76 154 | aS'BOWEN JR RAYMOND M' 155 | p77 156 | aS'GILLIS JOHN' 157 | p78 158 | aS'FITZGERALD JAY L' 159 | p79 160 | aS'MORAN MICHAEL P' 161 | p80 162 | aS'REDMOND BRIAN L' 163 | p81 164 | aS'BAZELIDES PHILIP J' 165 | p82 166 | aS'BELDEN TIMOTHY N' 167 | p83 168 | aS'DURAN WILLIAM D' 169 | p84 170 | aS'THORN TERENCE H' 171 | p85 172 | aS'FASTOW ANDREW S' 173 | p86 174 | aS'FOY JOE' 175 | p87 176 | aS'CALGER CHRISTOPHER F' 177 | p88 178 | aS'RICE KENNETH D' 179 | p89 180 | aS'KAMINSKI WINCENTY J' 181 | p90 182 | aS'LOCKHART EUGENE E' 183 | p91 184 | aS'COX DAVID' 185 | p92 186 | aS'OVERDYKE JR JERE C' 187 | p93 188 | aS'PEREIRA PAULO V. FERRAZ' 189 | p94 190 | aS'STABLER FRANK' 191 | p95 192 | aS'SKILLING JEFFREY K' 193 | p96 194 | aS'BLAKE JR. NORMAN P' 195 | p97 196 | aS'SHERRICK JEFFREY B' 197 | p98 198 | aS'PRENTICE JAMES' 199 | p99 200 | aS'GRAY RODNEY' 201 | p100 202 | aS'PICKERING MARK R' 203 | p101 204 | aS'THE TRAVEL AGENCY IN THE PARK' 205 | p102 206 | aS'NOLES JAMES L' 207 | p103 208 | aS'KEAN STEVEN J' 209 | p104 210 | aS'TOTAL' 211 | p105 212 | aS'FOWLER PEGGY' 213 | p106 214 | aS'WASAFF GEORGE' 215 | p107 216 | aS'WHITE JR THOMAS E' 217 | p108 218 | aS'CHRISTODOULOU DIOMEDES' 219 | p109 220 | aS'ALLEN PHILLIP K' 221 | p110 222 | aS'SHARP VICTORIA T' 223 | p111 224 | aS'JAEDICKE ROBERT' 225 | p112 226 | aS'WINOKUR JR. HERBERT S' 227 | p113 228 | aS'BROWN MICHAEL' 229 | p114 230 | aS'BADUM JAMES P' 231 | p115 232 | aS'HUGHES JAMES A' 233 | p116 234 | aS'REYNOLDS LAWRENCE' 235 | p117 236 | aS'DIMICHELE RICHARD G' 237 | p118 238 | aS'BHATNAGAR SANJAY' 239 | p119 240 | aS'CARTER REBECCA C' 241 | p120 242 | aS'BUCHANAN HAROLD G' 243 | p121 244 | aS'YEAP SOON' 245 | p122 246 | aS'MURRAY JULIA H' 247 | p123 248 | aS'GARLAND C KEVIN' 249 | p124 250 | aS'DODSON KEITH' 251 | p125 252 | aS'YEAGER F SCOTT' 253 | p126 254 | aS'HIRKO JOSEPH' 255 | p127 256 | aS'DIETRICH JANET R' 257 | p128 258 | aS'DERRICK JR. JAMES V' 259 | p129 260 | aS'FREVERT MARK A' 261 | p130 262 | aS'PAI LOU L' 263 | p131 264 | aS'BAY FRANKLIN R' 265 | p132 266 | aS'HAYSLETT RODERICK J' 267 | p133 268 | aS'FUGH JOHN L' 269 | p134 270 | aS'FALLON JAMES B' 271 | p135 272 | aS'KOENIG MARK E' 273 | p136 274 | aS'SAVAGE FRANK' 275 | p137 276 | aS'IZZO LAWRENCE L' 277 | p138 278 | aS'TILNEY ELIZABETH A' 279 | p139 280 | aS'MARTIN AMANDA K' 281 | p140 282 | aS'BUY RICHARD B' 283 | p141 284 | aS'GRAMM WENDY L' 285 | p142 286 | aS'CAUSEY RICHARD A' 287 | p143 288 | aS'TAYLOR MITCHELL S' 289 | p144 290 | aS'DONAHUE JR JEFFREY M' 291 | p145 292 | aS'GLISAN JR BEN F' 293 | p146 294 | a. -------------------------------------------------------------------------------- /utils/python2_lesson14_keys.pkl: -------------------------------------------------------------------------------- 1 | (lp0 2 | S'METTS MARK' 3 | p1 4 | aS'BAXTER JOHN C' 5 | p2 6 | aS'ELLIOTT STEVEN' 7 | p3 8 | aS'CORDES WILLIAM R' 9 | p4 10 | aS'HANNON KEVIN P' 11 | p5 12 | aS'MORDAUNT KRISTINA M' 13 | p6 14 | aS'MEYER ROCKFORD G' 15 | p7 16 | aS'MCMAHON JEFFREY' 17 | p8 18 | aS'HORTON STANLEY C' 19 | p9 20 | aS'PIPER GREGORY F' 21 | p10 22 | aS'HUMPHREY GENE E' 23 | p11 24 | aS'UMANOFF ADAM S' 25 | p12 26 | aS'BLACHMAN JEREMY M' 27 | p13 28 | aS'SUNDE MARTIN' 29 | p14 30 | aS'GIBBS DANA R' 31 | p15 32 | aS'LOWRY CHARLES P' 33 | p16 34 | aS'COLWELL WESLEY' 35 | p17 36 | aS'MULLER MARK S' 37 | p18 38 | aS'JACKSON CHARLENE R' 39 | p19 40 | aS'WESTFAHL RICHARD K' 41 | p20 42 | aS'WALTERS GARETH W' 43 | p21 44 | aS'WALLS JR ROBERT H' 45 | p22 46 | aS'KITCHEN LOUISE' 47 | p23 48 | aS'CHAN RONNIE' 49 | p24 50 | aS'BELFER ROBERT' 51 | p25 52 | aS'SHANKMAN JEFFREY A' 53 | p26 54 | aS'WODRASKA JOHN' 55 | p27 56 | aS'BERGSIEKER RICHARD P' 57 | p28 58 | aS'URQUHART JOHN A' 59 | p29 60 | aS'BIBI PHILIPPE A' 61 | p30 62 | aS'RIEKER PAULA H' 63 | p31 64 | aS'WHALEY DAVID A' 65 | p32 66 | aS'BECK SALLY W' 67 | p33 68 | aS'HAUG DAVID L' 69 | p34 70 | aS'ECHOLS JOHN B' 71 | p35 72 | aS'MENDELSOHN JOHN' 73 | p36 74 | aS'HICKERSON GARY J' 75 | p37 76 | aS'CLINE KENNETH W' 77 | p38 78 | aS'LEWIS RICHARD' 79 | p39 80 | aS'HAYES ROBERT E' 81 | p40 82 | aS'MCCARTY DANNY J' 83 | p41 84 | aS'KOPPER MICHAEL J' 85 | p42 86 | aS'LEFF DANIEL P' 87 | p43 88 | aS'LAVORATO JOHN J' 89 | p44 90 | aS'BERBERIAN DAVID' 91 | p45 92 | aS'DETMERING TIMOTHY J' 93 | p46 94 | aS'WAKEHAM JOHN' 95 | p47 96 | aS'POWERS WILLIAM' 97 | p48 98 | aS'GOLD JOSEPH' 99 | p49 100 | aS'BANNANTINE JAMES M' 101 | p50 102 | aS'DUNCAN JOHN H' 103 | p51 104 | aS'SHAPIRO RICHARD S' 105 | p52 106 | aS'SHERRIFF JOHN R' 107 | p53 108 | aS'SHELBY REX' 109 | p54 110 | aS'LEMAISTRE CHARLES' 111 | p55 112 | aS'DEFFNER JOSEPH M' 113 | p56 114 | aS'KISHKILL JOSEPH G' 115 | p57 116 | aS'WHALLEY LAWRENCE G' 117 | p58 118 | aS'MCCONNELL MICHAEL S' 119 | p59 120 | aS'PIRO JIM' 121 | p60 122 | aS'DELAINEY DAVID W' 123 | p61 124 | aS'SULLIVAN-SHAKLOVITZ COLLEEN' 125 | p62 126 | aS'WROBEL BRUCE' 127 | p63 128 | aS'LINDHOLM TOD A' 129 | p64 130 | aS'MEYER JEROME J' 131 | p65 132 | aS'LAY KENNETH L' 133 | p66 134 | aS'BUTTS ROBERT H' 135 | p67 136 | aS'OLSON CINDY K' 137 | p68 138 | aS'MCDONALD REBECCA' 139 | p69 140 | aS'CUMBERLAND MICHAEL S' 141 | p70 142 | aS'GAHN ROBERT S' 143 | p71 144 | aS'MCCLELLAN GEORGE' 145 | p72 146 | aS'HERMANN ROBERT J' 147 | p73 148 | aS'SCRIMSHAW MATTHEW' 149 | p74 150 | aS'GATHMANN WILLIAM D' 151 | p75 152 | aS'HAEDICKE MARK E' 153 | p76 154 | aS'BOWEN JR RAYMOND M' 155 | p77 156 | aS'GILLIS JOHN' 157 | p78 158 | aS'FITZGERALD JAY L' 159 | p79 160 | aS'MORAN MICHAEL P' 161 | p80 162 | aS'REDMOND BRIAN L' 163 | p81 164 | aS'BAZELIDES PHILIP J' 165 | p82 166 | aS'BELDEN TIMOTHY N' 167 | p83 168 | aS'DURAN WILLIAM D' 169 | p84 170 | aS'THORN TERENCE H' 171 | p85 172 | aS'FASTOW ANDREW S' 173 | p86 174 | aS'FOY JOE' 175 | p87 176 | aS'CALGER CHRISTOPHER F' 177 | p88 178 | aS'RICE KENNETH D' 179 | p89 180 | aS'KAMINSKI WINCENTY J' 181 | p90 182 | aS'LOCKHART EUGENE E' 183 | p91 184 | aS'COX DAVID' 185 | p92 186 | aS'OVERDYKE JR JERE C' 187 | p93 188 | aS'PEREIRA PAULO V. FERRAZ' 189 | p94 190 | aS'STABLER FRANK' 191 | p95 192 | aS'SKILLING JEFFREY K' 193 | p96 194 | aS'BLAKE JR. NORMAN P' 195 | p97 196 | aS'SHERRICK JEFFREY B' 197 | p98 198 | aS'PRENTICE JAMES' 199 | p99 200 | aS'GRAY RODNEY' 201 | p100 202 | aS'PICKERING MARK R' 203 | p101 204 | aS'THE TRAVEL AGENCY IN THE PARK' 205 | p102 206 | aS'NOLES JAMES L' 207 | p103 208 | aS'KEAN STEVEN J' 209 | p104 210 | aS'TOTAL' 211 | p105 212 | aS'FOWLER PEGGY' 213 | p106 214 | aS'WASAFF GEORGE' 215 | p107 216 | aS'WHITE JR THOMAS E' 217 | p108 218 | aS'CHRISTODOULOU DIOMEDES' 219 | p109 220 | aS'ALLEN PHILLIP K' 221 | p110 222 | aS'SHARP VICTORIA T' 223 | p111 224 | aS'JAEDICKE ROBERT' 225 | p112 226 | aS'WINOKUR JR. HERBERT S' 227 | p113 228 | aS'BROWN MICHAEL' 229 | p114 230 | aS'BADUM JAMES P' 231 | p115 232 | aS'HUGHES JAMES A' 233 | p116 234 | aS'REYNOLDS LAWRENCE' 235 | p117 236 | aS'DIMICHELE RICHARD G' 237 | p118 238 | aS'BHATNAGAR SANJAY' 239 | p119 240 | aS'CARTER REBECCA C' 241 | p120 242 | aS'BUCHANAN HAROLD G' 243 | p121 244 | aS'YEAP SOON' 245 | p122 246 | aS'MURRAY JULIA H' 247 | p123 248 | aS'GARLAND C KEVIN' 249 | p124 250 | aS'DODSON KEITH' 251 | p125 252 | aS'YEAGER F SCOTT' 253 | p126 254 | aS'HIRKO JOSEPH' 255 | p127 256 | aS'DIETRICH JANET R' 257 | p128 258 | aS'DERRICK JR. JAMES V' 259 | p129 260 | aS'FREVERT MARK A' 261 | p130 262 | aS'PAI LOU L' 263 | p131 264 | aS'BAY FRANKLIN R' 265 | p132 266 | aS'HAYSLETT RODERICK J' 267 | p133 268 | aS'FUGH JOHN L' 269 | p134 270 | aS'FALLON JAMES B' 271 | p135 272 | aS'KOENIG MARK E' 273 | p136 274 | aS'SAVAGE FRANK' 275 | p137 276 | aS'IZZO LAWRENCE L' 277 | p138 278 | aS'TILNEY ELIZABETH A' 279 | p139 280 | aS'MARTIN AMANDA K' 281 | p140 282 | aS'BUY RICHARD B' 283 | p141 284 | aS'GRAMM WENDY L' 285 | p142 286 | aS'CAUSEY RICHARD A' 287 | p143 288 | aS'TAYLOR MITCHELL S' 289 | p144 290 | aS'DONAHUE JR JEFFREY M' 291 | p145 292 | aS'GLISAN JR BEN F' 293 | p146 294 | a. -------------------------------------------------------------------------------- /utils/startup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os 4 | import logging 5 | from urllib.request import urlopen 6 | import tarfile 7 | 8 | logging.basicConfig(format='%(levelname)s: %(message)s') 9 | logging.getLogger().setLevel(logging.INFO) 10 | 11 | LIBS = ['numpy', 'scipy', 'sklearn', 'nltk'] # Libs required for the course 12 | URL = 'https://www.cs.cmu.edu/~./enron/enron_mail_20150507.tar.gz' # Download link 13 | FILE_NAME = URL.rsplit('/', 1)[-1] # Get file name, default download path is ./FILE_NAME 14 | EXTRACT_TO = '.' # Path to untar 15 | MB = 1024 ** 2 16 | 17 | 18 | def check_imports(): 19 | logging.info('Checking env...') 20 | failed = [] 21 | for i, l in enumerate(LIBS): 22 | i, n = i + 1, len(LIBS) 23 | step = f'[{i}/{n}]' 24 | 25 | def check_import(): 26 | logging.info(f'{step} Checking {l}...') 27 | try: 28 | __import__(l) 29 | except ImportError: 30 | logging.warning(f'{step} You should install {l} before continuing!') 31 | failed.append(l) 32 | else: 33 | logging.info(f'{step} {l} is fine!') 34 | finally: 35 | logging.info(f'{step} Done!') 36 | 37 | check_import() 38 | logging.warning(f'You should install: {" ".join(failed)} before continuing!') if failed else None 39 | 40 | 41 | def download(): 42 | logging.info(f'Downloading the Enron dataset to {FILE_NAME} ...') 43 | chunk_size, curr_size = 4 * 1024, 0 44 | start = 'y' 45 | if os.path.exists(FILE_NAME): 46 | start = str(input(f'File {FILE_NAME} already exists! Download anyway? y/[n]: ')) or 'n' 47 | if start != 'y': 48 | return 49 | else: 50 | with urlopen(URL) as r, open(FILE_NAME, 'wb') as f: 51 | fsize = int(r.info()['Content-Length']) 52 | info_line = lambda dsize=0: f'{dsize // MB}MB/{fsize // MB}MB' 53 | 54 | print('Progress:', f'{info_line()}', end='') 55 | while True: 56 | chunk = r.read(chunk_size) 57 | if chunk: 58 | f.write(chunk) 59 | curr_size += chunk_size 60 | if curr_size % MB == 0: 61 | print('\b' * len(info_line(curr_size - MB)), info_line(curr_size), sep='', end='', flush=True) 62 | else: 63 | print() 64 | break 65 | logging.info('Download complete!') 66 | 67 | logging.info(f'Extracting Enron dataset to {EXTRACT_TO} ...') 68 | with tarfile.open(FILE_NAME, 'r:gz') as f: f.extractall(EXTRACT_TO) 69 | logging.info('You\'re ready to go!') 70 | 71 | 72 | if __name__ == '__main__': 73 | [fn() for fn in [check_imports, download]] 74 | --------------------------------------------------------------------------------