├── .github
└── workflows
│ └── manual.yml
├── .gitignore
├── CODEOWNERS
├── IMDB_In_Keras.ipynb
├── IMDB_In_Keras_Solutions.ipynb
├── README.md
├── Student_Admissions.ipynb
├── requirements
├── aind-dl-linux.yml
├── aind-dl-mac.yml
├── aind-dl-windows.yml
└── requirements.txt
└── student_data.csv
/.github/workflows/manual.yml:
--------------------------------------------------------------------------------
1 | # Workflow to ensure whenever a Github PR is submitted,
2 | # a JIRA ticket gets created automatically.
3 | name: Manual Workflow
4 |
5 | # Controls when the action will run.
6 | on:
7 | # Triggers the workflow on pull request events but only for the master branch
8 | pull_request_target:
9 | types: [opened, reopened]
10 |
11 | # Allows you to run this workflow manually from the Actions tab
12 | workflow_dispatch:
13 |
14 | jobs:
15 | test-transition-issue:
16 | name: Convert Github Issue to Jira Issue
17 | runs-on: ubuntu-latest
18 | steps:
19 | - name: Checkout
20 | uses: actions/checkout@master
21 |
22 | - name: Login
23 | uses: atlassian/gajira-login@master
24 | env:
25 | JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
26 | JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
27 | JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
28 |
29 | - name: Create NEW JIRA ticket
30 | id: create
31 | uses: atlassian/gajira-create@master
32 | with:
33 | project: CONUPDATE
34 | issuetype: Task
35 | summary: |
36 | Github PR [Assign the ND component] | Repo: ${{ github.repository }} | PR# ${{github.event.number}}
37 | description: |
38 | Repo link: https://github.com/${{ github.repository }}
39 | PR no. ${{ github.event.pull_request.number }}
40 | PR title: ${{ github.event.pull_request.title }}
41 | PR description: ${{ github.event.pull_request.description }}
42 | In addition, please resolve other issues, if any.
43 | fields: '{"components": [{"name":"Github PR"}], "customfield_16449":"https://classroom.udacity.com/", "customfield_16450":"Resolve the PR", "labels": ["github"], "priority":{"id": "4"}}'
44 |
45 | - name: Log created issue
46 | run: echo "Issue ${{ steps.create.outputs.issue }} was created"
47 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Log files (e.g. for TensorBoard)
2 | logs/
3 |
4 | # Mac
5 | .DS_Store
6 |
7 | # Byte-compiled / optimized / DLL files
8 | __pycache__/
9 | *.py[cod]
10 | *$py.class
11 |
12 | # C extensions
13 | *.so
14 |
15 | # Distribution / packaging
16 | .Python
17 | env/
18 | build/
19 | develop-eggs/
20 | dist/
21 | downloads/
22 | eggs/
23 | .eggs/
24 | lib/
25 | lib64/
26 | parts/
27 | sdist/
28 | var/
29 | wheels/
30 | *.egg-info/
31 | .installed.cfg
32 | *.egg
33 |
34 | # PyInstaller
35 | # Usually these files are written by a python script from a template
36 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
37 | *.manifest
38 | *.spec
39 |
40 | # Installer logs
41 | pip-log.txt
42 | pip-delete-this-directory.txt
43 |
44 | # Unit test / coverage reports
45 | htmlcov/
46 | .tox/
47 | .coverage
48 | .coverage.*
49 | .cache
50 | nosetests.xml
51 | coverage.xml
52 | *.cover
53 | .hypothesis/
54 |
55 | # Translations
56 | *.mo
57 | *.pot
58 |
59 | # Django stuff:
60 | *.log
61 | local_settings.py
62 |
63 | # Flask stuff:
64 | instance/
65 | .webassets-cache
66 |
67 | # Scrapy stuff:
68 | .scrapy
69 |
70 | # Sphinx documentation
71 | docs/_build/
72 |
73 | # PyBuilder
74 | target/
75 |
76 | # Jupyter Notebook
77 | .ipynb_checkpoints
78 |
79 | # pyenv
80 | .python-version
81 |
82 | # celery beat schedule file
83 | celerybeat-schedule
84 |
85 | # SageMath parsed files
86 | *.sage.py
87 |
88 | # dotenv
89 | .env
90 |
91 | # virtualenv
92 | .venv
93 | venv/
94 | ENV/
95 |
96 | # Spyder project settings
97 | .spyderproject
98 | .spyproject
99 |
100 | # Rope project settings
101 | .ropeproject
102 |
103 | # mkdocs documentation
104 | /site
105 |
106 | # mypy
107 | .mypy_cache/
108 |
--------------------------------------------------------------------------------
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | s is a comment.
2 | # Each line is a file pattern followed by one or more owners.
3 |
4 | # These owners will be the default owners for everything in
5 | # the repo.
6 | * @cgearhart @luisguiserrano
7 |
8 |
9 | * @udacity/active-public-content
--------------------------------------------------------------------------------
/IMDB_In_Keras.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Analyzing IMDB Data in Keras"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": null,
13 | "metadata": {
14 | "collapsed": false,
15 | "deletable": true,
16 | "editable": true
17 | },
18 | "outputs": [],
19 | "source": [
20 | "# Imports\n",
21 | "import numpy as np\n",
22 | "import keras\n",
23 | "from keras.datasets import imdb\n",
24 | "from keras.models import Sequential\n",
25 | "from keras.layers import Dense, Dropout, Activation\n",
26 | "from keras.preprocessing.text import Tokenizer\n",
27 | "import matplotlib.pyplot as plt\n",
28 | "%matplotlib inline\n",
29 | "\n",
30 | "np.random.seed(42)"
31 | ]
32 | },
33 | {
34 | "cell_type": "markdown",
35 | "metadata": {},
36 | "source": [
37 | "## 1. Loading the data\n",
38 | "This dataset comes preloaded with Keras, so one simple command will get us training and testing data. There is a parameter for how many words we want to look at. We've set it at 1000, but feel free to experiment."
39 | ]
40 | },
41 | {
42 | "cell_type": "code",
43 | "execution_count": null,
44 | "metadata": {
45 | "collapsed": false,
46 | "deletable": true,
47 | "editable": true
48 | },
49 | "outputs": [],
50 | "source": [
51 | "# Loading the data (it's preloaded in Keras)\n",
52 | "(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=1000)\n",
53 | "\n",
54 | "print(x_train.shape)\n",
55 | "print(x_test.shape)"
56 | ]
57 | },
58 | {
59 | "cell_type": "markdown",
60 | "metadata": {},
61 | "source": [
62 | "## 2. Examining the data\n",
63 | "Notice that the data has been already pre-processed, where all the words have numbers, and the reviews come in as a vector with the words that the review contains. For example, if the word 'the' is the first one in our dictionary, and a review contains the word 'the', then there is a 1 in the corresponding vector.\n",
64 | "\n",
65 | "The output comes as a vector of 1's and 0's, where 1 is a positive sentiment for the review, and 0 is negative."
66 | ]
67 | },
68 | {
69 | "cell_type": "code",
70 | "execution_count": null,
71 | "metadata": {
72 | "collapsed": false
73 | },
74 | "outputs": [],
75 | "source": [
76 | "print(x_train[0])\n",
77 | "print(y_train[0])"
78 | ]
79 | },
80 | {
81 | "cell_type": "markdown",
82 | "metadata": {},
83 | "source": [
84 | "## 3. One-hot encoding the output\n",
85 | "Here, we'll turn the input vectors into (0,1)-vectors. For example, if the pre-processed vector contains the number 14, then in the processed vector, the 14th entry will be 1."
86 | ]
87 | },
88 | {
89 | "cell_type": "code",
90 | "execution_count": null,
91 | "metadata": {
92 | "collapsed": false,
93 | "deletable": true,
94 | "editable": true
95 | },
96 | "outputs": [],
97 | "source": [
98 | "# One-hot encoding the output into vector mode, each of length 1000\n",
99 | "tokenizer = Tokenizer(num_words=1000)\n",
100 | "x_train = tokenizer.sequences_to_matrix(x_train, mode='binary')\n",
101 | "x_test = tokenizer.sequences_to_matrix(x_test, mode='binary')\n",
102 | "print(x_train[0])"
103 | ]
104 | },
105 | {
106 | "cell_type": "markdown",
107 | "metadata": {},
108 | "source": [
109 | "And we'll also one-hot encode the output."
110 | ]
111 | },
112 | {
113 | "cell_type": "code",
114 | "execution_count": null,
115 | "metadata": {
116 | "collapsed": false,
117 | "deletable": true,
118 | "editable": true
119 | },
120 | "outputs": [],
121 | "source": [
122 | "# One-hot encoding the output\n",
123 | "num_classes = 2\n",
124 | "y_train = keras.utils.to_categorical(y_train, num_classes)\n",
125 | "y_test = keras.utils.to_categorical(y_test, num_classes)\n",
126 | "print(y_train.shape)\n",
127 | "print(y_test.shape)"
128 | ]
129 | },
130 | {
131 | "cell_type": "markdown",
132 | "metadata": {},
133 | "source": [
134 | "## 4. Building the model architecture\n",
135 | "Build a model here using sequential. Feel free to experiment with different layers and sizes! Also, experiment adding dropout to reduce overfitting."
136 | ]
137 | },
138 | {
139 | "cell_type": "code",
140 | "execution_count": null,
141 | "metadata": {
142 | "collapsed": false,
143 | "deletable": true,
144 | "editable": true
145 | },
146 | "outputs": [],
147 | "source": [
148 | "# TODO: Build the model architecture\n",
149 | "\n",
150 | "# TODO: Compile the model using a loss function and an optimizer, and include 'accuracy' in metrics.\n"
151 | ]
152 | },
153 | {
154 | "cell_type": "markdown",
155 | "metadata": {},
156 | "source": [
157 | "## 5. Training the model\n",
158 | "Run the model here. Experiment with different batch_size, and number of epochs!"
159 | ]
160 | },
161 | {
162 | "cell_type": "code",
163 | "execution_count": null,
164 | "metadata": {
165 | "collapsed": false,
166 | "deletable": true,
167 | "editable": true
168 | },
169 | "outputs": [],
170 | "source": [
171 | "# TODO: Run the model. Feel free to experiment with different batch sizes and number of epochs."
172 | ]
173 | },
174 | {
175 | "cell_type": "markdown",
176 | "metadata": {},
177 | "source": [
178 | "## 6. Evaluating the model\n",
179 | "This will give you the accuracy of the model, as evaluated on the testing set. Can you get something over 85%?"
180 | ]
181 | },
182 | {
183 | "cell_type": "code",
184 | "execution_count": null,
185 | "metadata": {
186 | "collapsed": false,
187 | "deletable": true,
188 | "editable": true
189 | },
190 | "outputs": [],
191 | "source": [
192 | "score = model.evaluate(x_test, y_test, verbose=0)\n",
193 | "print(\"Accuracy: \", score[1])"
194 | ]
195 | }
196 | ],
197 | "metadata": {
198 | "kernelspec": {
199 | "display_name": "Python 3",
200 | "language": "python",
201 | "name": "python3"
202 | },
203 | "language_info": {
204 | "codemirror_mode": {
205 | "name": "ipython",
206 | "version": 3
207 | },
208 | "file_extension": ".py",
209 | "mimetype": "text/x-python",
210 | "name": "python",
211 | "nbconvert_exporter": "python",
212 | "pygments_lexer": "ipython3",
213 | "version": "3.5.2"
214 | }
215 | },
216 | "nbformat": 4,
217 | "nbformat_minor": 2
218 | }
219 |
--------------------------------------------------------------------------------
/IMDB_In_Keras_Solutions.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "deletable": true,
7 | "editable": true
8 | },
9 | "source": [
10 | "# Analyzing IMDB Data in Keras - Solution"
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "execution_count": 29,
16 | "metadata": {
17 | "collapsed": false,
18 | "deletable": true,
19 | "editable": true
20 | },
21 | "outputs": [],
22 | "source": [
23 | "# Imports\n",
24 | "import numpy as np\n",
25 | "import keras\n",
26 | "from keras.datasets import imdb\n",
27 | "from keras.models import Sequential\n",
28 | "from keras.layers import Dense, Dropout, Activation\n",
29 | "from keras.preprocessing.text import Tokenizer\n",
30 | "import matplotlib.pyplot as plt\n",
31 | "%matplotlib inline\n",
32 | "\n",
33 | "np.random.seed(42)"
34 | ]
35 | },
36 | {
37 | "cell_type": "markdown",
38 | "metadata": {
39 | "deletable": true,
40 | "editable": true
41 | },
42 | "source": [
43 | "## 1. Loading the data\n",
44 | "This dataset comes preloaded with Keras, so one simple command will get us training and testing data. There is a parameter for how many words we want to look at. We've set it at 1000, but feel free to experiment."
45 | ]
46 | },
47 | {
48 | "cell_type": "code",
49 | "execution_count": 30,
50 | "metadata": {
51 | "collapsed": false,
52 | "deletable": true,
53 | "editable": true
54 | },
55 | "outputs": [
56 | {
57 | "name": "stdout",
58 | "output_type": "stream",
59 | "text": [
60 | "(25000,)\n",
61 | "(25000,)\n"
62 | ]
63 | }
64 | ],
65 | "source": [
66 | "# Loading the data (it's preloaded in Keras)\n",
67 | "(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=1000)\n",
68 | "\n",
69 | "print(x_train.shape)\n",
70 | "print(x_test.shape)"
71 | ]
72 | },
73 | {
74 | "cell_type": "markdown",
75 | "metadata": {
76 | "deletable": true,
77 | "editable": true
78 | },
79 | "source": [
80 | "## 2. Examining the data\n",
81 | "Notice that the data has been already pre-processed, where all the words have numbers, and the reviews come in as a vector with the words that the review contains. For example, if the word 'the' is the first one in our dictionary, and a review contains the word 'the', then there is a 1 in the corresponding vector.\n",
82 | "\n",
83 | "The output comes as a vector of 1's and 0's, where 1 is a positive sentiment for the review, and 0 is negative."
84 | ]
85 | },
86 | {
87 | "cell_type": "code",
88 | "execution_count": 31,
89 | "metadata": {
90 | "collapsed": false,
91 | "deletable": true,
92 | "editable": true
93 | },
94 | "outputs": [
95 | {
96 | "name": "stdout",
97 | "output_type": "stream",
98 | "text": [
99 | "[1, 14, 22, 16, 43, 530, 973, 2, 2, 65, 458, 2, 66, 2, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 2, 9, 35, 480, 284, 5, 150, 4, 172, 112, 167, 2, 336, 385, 39, 4, 172, 2, 2, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2, 19, 14, 22, 4, 2, 2, 469, 4, 22, 71, 87, 12, 16, 43, 530, 38, 76, 15, 13, 2, 4, 22, 17, 515, 17, 12, 16, 626, 18, 2, 5, 62, 386, 12, 8, 316, 8, 106, 5, 4, 2, 2, 16, 480, 66, 2, 33, 4, 130, 12, 16, 38, 619, 5, 25, 124, 51, 36, 135, 48, 25, 2, 33, 6, 22, 12, 215, 28, 77, 52, 5, 14, 407, 16, 82, 2, 8, 4, 107, 117, 2, 15, 256, 4, 2, 7, 2, 5, 723, 36, 71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 2, 2, 13, 104, 88, 4, 381, 15, 297, 98, 32, 2, 56, 26, 141, 6, 194, 2, 18, 4, 226, 22, 21, 134, 476, 26, 480, 5, 144, 30, 2, 18, 51, 36, 28, 224, 92, 25, 104, 4, 226, 65, 16, 38, 2, 88, 12, 16, 283, 5, 16, 2, 113, 103, 32, 15, 16, 2, 19, 178, 32]\n",
100 | "1\n"
101 | ]
102 | }
103 | ],
104 | "source": [
105 | "print(x_train[0])\n",
106 | "print(y_train[0])"
107 | ]
108 | },
109 | {
110 | "cell_type": "markdown",
111 | "metadata": {
112 | "deletable": true,
113 | "editable": true
114 | },
115 | "source": [
116 | "## 3. One-hot encoding the output\n",
117 | "Here, we'll turn the input vectors into (0,1)-vectors. For example, if the pre-processed vector contains the number 14, then in the processed vector, the 14th entry will be 1."
118 | ]
119 | },
120 | {
121 | "cell_type": "code",
122 | "execution_count": 32,
123 | "metadata": {
124 | "collapsed": false,
125 | "deletable": true,
126 | "editable": true
127 | },
128 | "outputs": [
129 | {
130 | "name": "stdout",
131 | "output_type": "stream",
132 | "text": [
133 | "(25000, 1000)\n",
134 | "(25000, 1000)\n"
135 | ]
136 | }
137 | ],
138 | "source": [
139 | "# Turning the output into vector mode, each of length 1000\n",
140 | "tokenizer = Tokenizer(num_words=1000)\n",
141 | "x_train = tokenizer.sequences_to_matrix(x_train, mode='binary')\n",
142 | "x_test = tokenizer.sequences_to_matrix(x_test, mode='binary')\n",
143 | "print(x_train.shape)\n",
144 | "print(x_test.shape)"
145 | ]
146 | },
147 | {
148 | "cell_type": "markdown",
149 | "metadata": {
150 | "deletable": true,
151 | "editable": true
152 | },
153 | "source": [
154 | "And we'll one-hot encode the output."
155 | ]
156 | },
157 | {
158 | "cell_type": "code",
159 | "execution_count": 33,
160 | "metadata": {
161 | "collapsed": false,
162 | "deletable": true,
163 | "editable": true
164 | },
165 | "outputs": [
166 | {
167 | "name": "stdout",
168 | "output_type": "stream",
169 | "text": [
170 | "(25000, 2)\n",
171 | "(25000, 2)\n"
172 | ]
173 | }
174 | ],
175 | "source": [
176 | "# One-hot encoding the output\n",
177 | "num_classes = 2\n",
178 | "y_train = keras.utils.to_categorical(y_train, num_classes)\n",
179 | "y_test = keras.utils.to_categorical(y_test, num_classes)\n",
180 | "print(y_train.shape)\n",
181 | "print(y_test.shape)"
182 | ]
183 | },
184 | {
185 | "cell_type": "markdown",
186 | "metadata": {
187 | "deletable": true,
188 | "editable": true
189 | },
190 | "source": [
191 | "## 4. Building the model architecture\n",
192 | "Build a model here using sequential. Feel free to experiment with different layers and sizes! Also, experiment adding dropout to reduce overfitting."
193 | ]
194 | },
195 | {
196 | "cell_type": "code",
197 | "execution_count": 34,
198 | "metadata": {
199 | "collapsed": false,
200 | "deletable": true,
201 | "editable": true
202 | },
203 | "outputs": [
204 | {
205 | "name": "stdout",
206 | "output_type": "stream",
207 | "text": [
208 | "_________________________________________________________________\n",
209 | "Layer (type) Output Shape Param # \n",
210 | "=================================================================\n",
211 | "dense_3 (Dense) (None, 512) 512512 \n",
212 | "_________________________________________________________________\n",
213 | "dropout_2 (Dropout) (None, 512) 0 \n",
214 | "_________________________________________________________________\n",
215 | "dense_4 (Dense) (None, 2) 1026 \n",
216 | "=================================================================\n",
217 | "Total params: 513,538.0\n",
218 | "Trainable params: 513,538.0\n",
219 | "Non-trainable params: 0.0\n",
220 | "_________________________________________________________________\n"
221 | ]
222 | }
223 | ],
224 | "source": [
225 | "# Building the model architecture with one layer of length 100\n",
226 | "model = Sequential()\n",
227 | "model.add(Dense(512, activation='relu', input_dim=1000))\n",
228 | "model.add(Dropout(0.5))\n",
229 | "model.add(Dense(num_classes, activation='softmax'))\n",
230 | "model.summary()\n",
231 | "\n",
232 | "# Compiling the model using categorical_crossentropy loss, and rmsprop optimizer, and include 'accuracy' in metrics.\n",
233 | "model.compile(loss='categorical_crossentropy',\n",
234 | " optimizer='rmsprop',\n",
235 | " metrics=['accuracy'])"
236 | ]
237 | },
238 | {
239 | "cell_type": "markdown",
240 | "metadata": {
241 | "deletable": true,
242 | "editable": true
243 | },
244 | "source": [
245 | "## 5. Training the model\n",
246 | "Run the model here. Experiment with different batch_size, and number of epochs!"
247 | ]
248 | },
249 | {
250 | "cell_type": "code",
251 | "execution_count": 35,
252 | "metadata": {
253 | "collapsed": false,
254 | "deletable": true,
255 | "editable": true
256 | },
257 | "outputs": [
258 | {
259 | "name": "stdout",
260 | "output_type": "stream",
261 | "text": [
262 | "Train on 25000 samples, validate on 25000 samples\n",
263 | "Epoch 1/10\n",
264 | "9s - loss: 0.3969 - acc: 0.8260 - val_loss: 0.3429 - val_acc: 0.8568\n",
265 | "Epoch 2/10\n",
266 | "9s - loss: 0.3339 - acc: 0.8670 - val_loss: 0.3413 - val_acc: 0.8632\n",
267 | "Epoch 3/10\n",
268 | "9s - loss: 0.3219 - acc: 0.8778 - val_loss: 0.3552 - val_acc: 0.8614\n",
269 | "Epoch 4/10\n",
270 | "9s - loss: 0.3110 - acc: 0.8853 - val_loss: 0.3718 - val_acc: 0.8602\n",
271 | "Epoch 5/10\n",
272 | "9s - loss: 0.3056 - acc: 0.8920 - val_loss: 0.4086 - val_acc: 0.8542\n",
273 | "Epoch 6/10\n",
274 | "10s - loss: 0.2951 - acc: 0.8983 - val_loss: 0.3938 - val_acc: 0.8608\n",
275 | "Epoch 7/10\n",
276 | "9s - loss: 0.2864 - acc: 0.9037 - val_loss: 0.4258 - val_acc: 0.8566\n",
277 | "Epoch 8/10\n",
278 | "9s - loss: 0.2738 - acc: 0.9100 - val_loss: 0.4733 - val_acc: 0.8509\n",
279 | "Epoch 9/10\n",
280 | "8s - loss: 0.2622 - acc: 0.9162 - val_loss: 0.4658 - val_acc: 0.8536\n",
281 | "Epoch 10/10\n",
282 | "12s - loss: 0.2520 - acc: 0.9216 - val_loss: 0.4877 - val_acc: 0.8583\n"
283 | ]
284 | }
285 | ],
286 | "source": [
287 | "# Running and evaluating the model\n",
288 | "hist = model.fit(x_train, y_train,\n",
289 | " batch_size=32,\n",
290 | " epochs=10,\n",
291 | " validation_data=(x_test, y_test), \n",
292 | " verbose=2)"
293 | ]
294 | },
295 | {
296 | "cell_type": "markdown",
297 | "metadata": {
298 | "deletable": true,
299 | "editable": true
300 | },
301 | "source": [
302 | "## 6. Evaluating the model\n",
303 | "This will give you the accuracy of the model. Can you get something over 85%?"
304 | ]
305 | },
306 | {
307 | "cell_type": "code",
308 | "execution_count": 36,
309 | "metadata": {
310 | "collapsed": false,
311 | "deletable": true,
312 | "editable": true
313 | },
314 | "outputs": [
315 | {
316 | "name": "stdout",
317 | "output_type": "stream",
318 | "text": [
319 | "accuracy: 0.85828\n"
320 | ]
321 | }
322 | ],
323 | "source": [
324 | "score = model.evaluate(x_test, y_test, verbose=0)\n",
325 | "print(\"accuracy: \", score[1])"
326 | ]
327 | }
328 | ],
329 | "metadata": {
330 | "kernelspec": {
331 | "display_name": "Python 3",
332 | "language": "python",
333 | "name": "python3"
334 | },
335 | "language_info": {
336 | "codemirror_mode": {
337 | "name": "ipython",
338 | "version": 3
339 | },
340 | "file_extension": ".py",
341 | "mimetype": "text/x-python",
342 | "name": "python",
343 | "nbconvert_exporter": "python",
344 | "pygments_lexer": "ipython3",
345 | "version": "3.5.2"
346 | }
347 | },
348 | "nbformat": 4,
349 | "nbformat_minor": 2
350 | }
351 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # aind2-dl
2 |
3 | ### Instructions
4 |
5 | 1. Clone the repository and navigate to the downloaded folder.
6 |
7 | ```
8 | git clone https://github.com/udacity/aind2-dl.git
9 | cd aind2-dl
10 | ```
11 |
12 | 2. Obtain the necessary Python packages, and switch Keras backend to Tensorflow.
13 |
14 | For __Mac/OSX__:
15 | ```
16 | conda env create -f requirements/aind-dl-mac.yml
17 | source activate aind-dl
18 | KERAS_BACKEND=tensorflow python -c "from keras import backend"
19 | ```
20 |
21 | For __Windows__:
22 | ```
23 | conda env create -f requirements/aind-dl-windows.yml
24 | activate aind-dl
25 | set KERAS_BACKEND=tensorflow
26 | python -c "from keras import backend"
27 | ```
28 |
29 | For __Linux__:
30 | ```
31 | conda env create -f requirements/aind-dl-linux.yml
32 | source activate aind-dl
33 | KERAS_BACKEND=tensorflow python -c "from keras import backend"
34 | ```
35 |
36 | 3. Enjoy!
37 |
--------------------------------------------------------------------------------
/Student_Admissions.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "deletable": true,
7 | "editable": true
8 | },
9 | "source": [
10 | "# Predicting Student Admissions\n",
11 | "\n",
12 | "In this notebook, we predict student admissions to graduate school at UCLA based on three pieces of data:\n",
13 | "- GRE Scores (Test)\n",
14 | "- GPA Scores (Grades)\n",
15 | "- Class rank (1-4)\n",
16 | "\n",
17 | "The dataset originally came from here: http://www.ats.ucla.edu/\n",
18 | "\n",
19 | "_Note: Thanks Adam Uccello, for helping us debug!_"
20 | ]
21 | },
22 | {
23 | "cell_type": "markdown",
24 | "metadata": {
25 | "deletable": true,
26 | "editable": true
27 | },
28 | "source": [
29 | "## 1. Load and visualize the data\n",
30 | "\n",
31 | "To load the data, we will use a very useful data package called Pandas. You can read on Pandas documentation here:"
32 | ]
33 | },
34 | {
35 | "cell_type": "code",
36 | "execution_count": 287,
37 | "metadata": {
38 | "collapsed": false,
39 | "deletable": true,
40 | "editable": true
41 | },
42 | "outputs": [
43 | {
44 | "data": {
45 | "text/html": [
46 | "
\n",
47 | "
\n",
48 | " \n",
49 | " \n",
50 | " | \n",
51 | " admit | \n",
52 | " gre | \n",
53 | " gpa | \n",
54 | " rank | \n",
55 | "
\n",
56 | " \n",
57 | " \n",
58 | " \n",
59 | " 0 | \n",
60 | " 0 | \n",
61 | " 380.0 | \n",
62 | " 3.61 | \n",
63 | " 3.0 | \n",
64 | "
\n",
65 | " \n",
66 | " 1 | \n",
67 | " 1 | \n",
68 | " 660.0 | \n",
69 | " 3.67 | \n",
70 | " 3.0 | \n",
71 | "
\n",
72 | " \n",
73 | " 2 | \n",
74 | " 1 | \n",
75 | " 800.0 | \n",
76 | " 4.00 | \n",
77 | " 1.0 | \n",
78 | "
\n",
79 | " \n",
80 | " 3 | \n",
81 | " 1 | \n",
82 | " 640.0 | \n",
83 | " 3.19 | \n",
84 | " 4.0 | \n",
85 | "
\n",
86 | " \n",
87 | " 4 | \n",
88 | " 0 | \n",
89 | " 520.0 | \n",
90 | " 2.93 | \n",
91 | " 4.0 | \n",
92 | "
\n",
93 | " \n",
94 | " 5 | \n",
95 | " 1 | \n",
96 | " 760.0 | \n",
97 | " 3.00 | \n",
98 | " 2.0 | \n",
99 | "
\n",
100 | " \n",
101 | " 6 | \n",
102 | " 1 | \n",
103 | " 560.0 | \n",
104 | " 2.98 | \n",
105 | " 1.0 | \n",
106 | "
\n",
107 | " \n",
108 | " 7 | \n",
109 | " 0 | \n",
110 | " 400.0 | \n",
111 | " 3.08 | \n",
112 | " 2.0 | \n",
113 | "
\n",
114 | " \n",
115 | " 8 | \n",
116 | " 1 | \n",
117 | " 540.0 | \n",
118 | " 3.39 | \n",
119 | " 3.0 | \n",
120 | "
\n",
121 | " \n",
122 | " 9 | \n",
123 | " 0 | \n",
124 | " 700.0 | \n",
125 | " 3.92 | \n",
126 | " 2.0 | \n",
127 | "
\n",
128 | " \n",
129 | " 10 | \n",
130 | " 0 | \n",
131 | " 800.0 | \n",
132 | " 4.00 | \n",
133 | " 4.0 | \n",
134 | "
\n",
135 | " \n",
136 | " 11 | \n",
137 | " 0 | \n",
138 | " 440.0 | \n",
139 | " 3.22 | \n",
140 | " 1.0 | \n",
141 | "
\n",
142 | " \n",
143 | " 12 | \n",
144 | " 1 | \n",
145 | " 760.0 | \n",
146 | " 4.00 | \n",
147 | " 1.0 | \n",
148 | "
\n",
149 | " \n",
150 | " 13 | \n",
151 | " 0 | \n",
152 | " 700.0 | \n",
153 | " 3.08 | \n",
154 | " 2.0 | \n",
155 | "
\n",
156 | " \n",
157 | " 14 | \n",
158 | " 1 | \n",
159 | " 700.0 | \n",
160 | " 4.00 | \n",
161 | " 1.0 | \n",
162 | "
\n",
163 | " \n",
164 | " 15 | \n",
165 | " 0 | \n",
166 | " 480.0 | \n",
167 | " 3.44 | \n",
168 | " 3.0 | \n",
169 | "
\n",
170 | " \n",
171 | " 16 | \n",
172 | " 0 | \n",
173 | " 780.0 | \n",
174 | " 3.87 | \n",
175 | " 4.0 | \n",
176 | "
\n",
177 | " \n",
178 | " 17 | \n",
179 | " 0 | \n",
180 | " 360.0 | \n",
181 | " 2.56 | \n",
182 | " 3.0 | \n",
183 | "
\n",
184 | " \n",
185 | " 18 | \n",
186 | " 0 | \n",
187 | " 800.0 | \n",
188 | " 3.75 | \n",
189 | " 2.0 | \n",
190 | "
\n",
191 | " \n",
192 | " 19 | \n",
193 | " 1 | \n",
194 | " 540.0 | \n",
195 | " 3.81 | \n",
196 | " 1.0 | \n",
197 | "
\n",
198 | " \n",
199 | " 20 | \n",
200 | " 0 | \n",
201 | " 500.0 | \n",
202 | " 3.17 | \n",
203 | " 3.0 | \n",
204 | "
\n",
205 | " \n",
206 | " 21 | \n",
207 | " 1 | \n",
208 | " 660.0 | \n",
209 | " 3.63 | \n",
210 | " 2.0 | \n",
211 | "
\n",
212 | " \n",
213 | " 22 | \n",
214 | " 0 | \n",
215 | " 600.0 | \n",
216 | " 2.82 | \n",
217 | " 4.0 | \n",
218 | "
\n",
219 | " \n",
220 | " 23 | \n",
221 | " 0 | \n",
222 | " 680.0 | \n",
223 | " 3.19 | \n",
224 | " 4.0 | \n",
225 | "
\n",
226 | " \n",
227 | " 24 | \n",
228 | " 1 | \n",
229 | " 760.0 | \n",
230 | " 3.35 | \n",
231 | " 2.0 | \n",
232 | "
\n",
233 | " \n",
234 | " 25 | \n",
235 | " 1 | \n",
236 | " 800.0 | \n",
237 | " 3.66 | \n",
238 | " 1.0 | \n",
239 | "
\n",
240 | " \n",
241 | " 26 | \n",
242 | " 1 | \n",
243 | " 620.0 | \n",
244 | " 3.61 | \n",
245 | " 1.0 | \n",
246 | "
\n",
247 | " \n",
248 | " 27 | \n",
249 | " 1 | \n",
250 | " 520.0 | \n",
251 | " 3.74 | \n",
252 | " 4.0 | \n",
253 | "
\n",
254 | " \n",
255 | " 28 | \n",
256 | " 1 | \n",
257 | " 780.0 | \n",
258 | " 3.22 | \n",
259 | " 2.0 | \n",
260 | "
\n",
261 | " \n",
262 | " 29 | \n",
263 | " 0 | \n",
264 | " 520.0 | \n",
265 | " 3.29 | \n",
266 | " 1.0 | \n",
267 | "
\n",
268 | " \n",
269 | " ... | \n",
270 | " ... | \n",
271 | " ... | \n",
272 | " ... | \n",
273 | " ... | \n",
274 | "
\n",
275 | " \n",
276 | " 370 | \n",
277 | " 1 | \n",
278 | " 540.0 | \n",
279 | " 3.77 | \n",
280 | " 2.0 | \n",
281 | "
\n",
282 | " \n",
283 | " 371 | \n",
284 | " 1 | \n",
285 | " 680.0 | \n",
286 | " 3.76 | \n",
287 | " 3.0 | \n",
288 | "
\n",
289 | " \n",
290 | " 372 | \n",
291 | " 1 | \n",
292 | " 680.0 | \n",
293 | " 2.42 | \n",
294 | " 1.0 | \n",
295 | "
\n",
296 | " \n",
297 | " 373 | \n",
298 | " 1 | \n",
299 | " 620.0 | \n",
300 | " 3.37 | \n",
301 | " 1.0 | \n",
302 | "
\n",
303 | " \n",
304 | " 374 | \n",
305 | " 0 | \n",
306 | " 560.0 | \n",
307 | " 3.78 | \n",
308 | " 2.0 | \n",
309 | "
\n",
310 | " \n",
311 | " 375 | \n",
312 | " 0 | \n",
313 | " 560.0 | \n",
314 | " 3.49 | \n",
315 | " 4.0 | \n",
316 | "
\n",
317 | " \n",
318 | " 376 | \n",
319 | " 0 | \n",
320 | " 620.0 | \n",
321 | " 3.63 | \n",
322 | " 2.0 | \n",
323 | "
\n",
324 | " \n",
325 | " 377 | \n",
326 | " 1 | \n",
327 | " 800.0 | \n",
328 | " 4.00 | \n",
329 | " 2.0 | \n",
330 | "
\n",
331 | " \n",
332 | " 378 | \n",
333 | " 0 | \n",
334 | " 640.0 | \n",
335 | " 3.12 | \n",
336 | " 3.0 | \n",
337 | "
\n",
338 | " \n",
339 | " 379 | \n",
340 | " 0 | \n",
341 | " 540.0 | \n",
342 | " 2.70 | \n",
343 | " 2.0 | \n",
344 | "
\n",
345 | " \n",
346 | " 380 | \n",
347 | " 0 | \n",
348 | " 700.0 | \n",
349 | " 3.65 | \n",
350 | " 2.0 | \n",
351 | "
\n",
352 | " \n",
353 | " 381 | \n",
354 | " 1 | \n",
355 | " 540.0 | \n",
356 | " 3.49 | \n",
357 | " 2.0 | \n",
358 | "
\n",
359 | " \n",
360 | " 382 | \n",
361 | " 0 | \n",
362 | " 540.0 | \n",
363 | " 3.51 | \n",
364 | " 2.0 | \n",
365 | "
\n",
366 | " \n",
367 | " 383 | \n",
368 | " 0 | \n",
369 | " 660.0 | \n",
370 | " 4.00 | \n",
371 | " 1.0 | \n",
372 | "
\n",
373 | " \n",
374 | " 384 | \n",
375 | " 1 | \n",
376 | " 480.0 | \n",
377 | " 2.62 | \n",
378 | " 2.0 | \n",
379 | "
\n",
380 | " \n",
381 | " 385 | \n",
382 | " 0 | \n",
383 | " 420.0 | \n",
384 | " 3.02 | \n",
385 | " 1.0 | \n",
386 | "
\n",
387 | " \n",
388 | " 386 | \n",
389 | " 1 | \n",
390 | " 740.0 | \n",
391 | " 3.86 | \n",
392 | " 2.0 | \n",
393 | "
\n",
394 | " \n",
395 | " 387 | \n",
396 | " 0 | \n",
397 | " 580.0 | \n",
398 | " 3.36 | \n",
399 | " 2.0 | \n",
400 | "
\n",
401 | " \n",
402 | " 388 | \n",
403 | " 0 | \n",
404 | " 640.0 | \n",
405 | " 3.17 | \n",
406 | " 2.0 | \n",
407 | "
\n",
408 | " \n",
409 | " 389 | \n",
410 | " 0 | \n",
411 | " 640.0 | \n",
412 | " 3.51 | \n",
413 | " 2.0 | \n",
414 | "
\n",
415 | " \n",
416 | " 390 | \n",
417 | " 1 | \n",
418 | " 800.0 | \n",
419 | " 3.05 | \n",
420 | " 2.0 | \n",
421 | "
\n",
422 | " \n",
423 | " 391 | \n",
424 | " 1 | \n",
425 | " 660.0 | \n",
426 | " 3.88 | \n",
427 | " 2.0 | \n",
428 | "
\n",
429 | " \n",
430 | " 392 | \n",
431 | " 1 | \n",
432 | " 600.0 | \n",
433 | " 3.38 | \n",
434 | " 3.0 | \n",
435 | "
\n",
436 | " \n",
437 | " 393 | \n",
438 | " 1 | \n",
439 | " 620.0 | \n",
440 | " 3.75 | \n",
441 | " 2.0 | \n",
442 | "
\n",
443 | " \n",
444 | " 394 | \n",
445 | " 1 | \n",
446 | " 460.0 | \n",
447 | " 3.99 | \n",
448 | " 3.0 | \n",
449 | "
\n",
450 | " \n",
451 | " 395 | \n",
452 | " 0 | \n",
453 | " 620.0 | \n",
454 | " 4.00 | \n",
455 | " 2.0 | \n",
456 | "
\n",
457 | " \n",
458 | " 396 | \n",
459 | " 0 | \n",
460 | " 560.0 | \n",
461 | " 3.04 | \n",
462 | " 3.0 | \n",
463 | "
\n",
464 | " \n",
465 | " 397 | \n",
466 | " 0 | \n",
467 | " 460.0 | \n",
468 | " 2.63 | \n",
469 | " 2.0 | \n",
470 | "
\n",
471 | " \n",
472 | " 398 | \n",
473 | " 0 | \n",
474 | " 700.0 | \n",
475 | " 3.65 | \n",
476 | " 2.0 | \n",
477 | "
\n",
478 | " \n",
479 | " 399 | \n",
480 | " 0 | \n",
481 | " 600.0 | \n",
482 | " 3.89 | \n",
483 | " 3.0 | \n",
484 | "
\n",
485 | " \n",
486 | "
\n",
487 | "
400 rows × 4 columns
\n",
488 | "
"
489 | ],
490 | "text/plain": [
491 | " admit gre gpa rank\n",
492 | "0 0 380.0 3.61 3.0\n",
493 | "1 1 660.0 3.67 3.0\n",
494 | "2 1 800.0 4.00 1.0\n",
495 | "3 1 640.0 3.19 4.0\n",
496 | "4 0 520.0 2.93 4.0\n",
497 | "5 1 760.0 3.00 2.0\n",
498 | "6 1 560.0 2.98 1.0\n",
499 | "7 0 400.0 3.08 2.0\n",
500 | "8 1 540.0 3.39 3.0\n",
501 | "9 0 700.0 3.92 2.0\n",
502 | "10 0 800.0 4.00 4.0\n",
503 | "11 0 440.0 3.22 1.0\n",
504 | "12 1 760.0 4.00 1.0\n",
505 | "13 0 700.0 3.08 2.0\n",
506 | "14 1 700.0 4.00 1.0\n",
507 | "15 0 480.0 3.44 3.0\n",
508 | "16 0 780.0 3.87 4.0\n",
509 | "17 0 360.0 2.56 3.0\n",
510 | "18 0 800.0 3.75 2.0\n",
511 | "19 1 540.0 3.81 1.0\n",
512 | "20 0 500.0 3.17 3.0\n",
513 | "21 1 660.0 3.63 2.0\n",
514 | "22 0 600.0 2.82 4.0\n",
515 | "23 0 680.0 3.19 4.0\n",
516 | "24 1 760.0 3.35 2.0\n",
517 | "25 1 800.0 3.66 1.0\n",
518 | "26 1 620.0 3.61 1.0\n",
519 | "27 1 520.0 3.74 4.0\n",
520 | "28 1 780.0 3.22 2.0\n",
521 | "29 0 520.0 3.29 1.0\n",
522 | ".. ... ... ... ...\n",
523 | "370 1 540.0 3.77 2.0\n",
524 | "371 1 680.0 3.76 3.0\n",
525 | "372 1 680.0 2.42 1.0\n",
526 | "373 1 620.0 3.37 1.0\n",
527 | "374 0 560.0 3.78 2.0\n",
528 | "375 0 560.0 3.49 4.0\n",
529 | "376 0 620.0 3.63 2.0\n",
530 | "377 1 800.0 4.00 2.0\n",
531 | "378 0 640.0 3.12 3.0\n",
532 | "379 0 540.0 2.70 2.0\n",
533 | "380 0 700.0 3.65 2.0\n",
534 | "381 1 540.0 3.49 2.0\n",
535 | "382 0 540.0 3.51 2.0\n",
536 | "383 0 660.0 4.00 1.0\n",
537 | "384 1 480.0 2.62 2.0\n",
538 | "385 0 420.0 3.02 1.0\n",
539 | "386 1 740.0 3.86 2.0\n",
540 | "387 0 580.0 3.36 2.0\n",
541 | "388 0 640.0 3.17 2.0\n",
542 | "389 0 640.0 3.51 2.0\n",
543 | "390 1 800.0 3.05 2.0\n",
544 | "391 1 660.0 3.88 2.0\n",
545 | "392 1 600.0 3.38 3.0\n",
546 | "393 1 620.0 3.75 2.0\n",
547 | "394 1 460.0 3.99 3.0\n",
548 | "395 0 620.0 4.00 2.0\n",
549 | "396 0 560.0 3.04 3.0\n",
550 | "397 0 460.0 2.63 2.0\n",
551 | "398 0 700.0 3.65 2.0\n",
552 | "399 0 600.0 3.89 3.0\n",
553 | "\n",
554 | "[400 rows x 4 columns]"
555 | ]
556 | },
557 | "execution_count": 287,
558 | "metadata": {},
559 | "output_type": "execute_result"
560 | }
561 | ],
562 | "source": [
563 | "import pandas as pd\n",
564 | "data = pd.read_csv('student_data.csv')\n",
565 | "data"
566 | ]
567 | },
568 | {
569 | "cell_type": "markdown",
570 | "metadata": {
571 | "deletable": true,
572 | "editable": true
573 | },
574 | "source": [
575 | "Let's plot the data and see how it looks."
576 | ]
577 | },
578 | {
579 | "cell_type": "code",
580 | "execution_count": 288,
581 | "metadata": {
582 | "collapsed": false,
583 | "deletable": true,
584 | "editable": true
585 | },
586 | "outputs": [
587 | {
588 | "data": {
589 | "image/png": "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\nMkUaGhocx/rhhx/K1KlTJScnR6ZOndqjgTj2/VRUVPT6/eh+j7E56V5HOu0ikYh8BeRTIAX236+A\nbNq0qccx9EbaCYzB2ozAMOig+8PUxY1RV3d8ul5FQbJu3TpH42uy0dvx5n7VVY43d11B0NXVJRXV\n1ZJTWirU1EhOaalUVFcP6Bxlynn3+npzIzBMpLdh2BEKhaiurmb9+vVUV1cTCg0sxMeNUVeHxsZG\nmvfuZU9LC5tF2NPSwom9e1MM80GzY8cOR+NrsuG5vr6e6KJFCe2i1dWO9ob6+nqi1dWJbRctSmkb\nCoVoamig/hvfYFN+PvXf+AZNDQ0D+i4z5bxXVVVRWF5OeV4ea5WiPC+P8eXlVFVV+d63ERiGtMZN\nMFNQuDHq6uC1APKLgoICR2NystG7u7sbnnoqsd3TT1v7HchOOmZ2Q4NjOzeCX+c6ypTzHgqF2L5r\nF5FHHiEciRB55BG279o14AcfHYzAMKQt0WiUmxcupG7VKtrq6qhbtYqbFy5MO6Hh9ROf1wLIL778\n5S8TOnkSSkvhzjuhtJTQyZP8/d//fUK7iRMnwrvvQnk5rF1r/X33Xa644oqUYy5fvpyct98mXFKC\nqqkhXFLCqHfeYdmyZf0ep+51lCnnPR5LozTIHQ6VzdgwhhZe62r9xK1hUyfKXMdDK0i6urrkpvnz\nZWx2tlwOMjY7W26aPz9lnBs3bpSi0aMl59JLhU9+UnIuvVSKRo+Wu+++2/GYuh5Vuo4ButdRJp13\nXScLHTBGb8NQIBKJyF1KWZepvd2lVL+9QYLGTfoHrw3zbtH1FtIZ544dO6QsHJbtIJtAtoNMD4d7\nFPw6x3RjoHZzHQV93nVoaGiQKVlZsh0kYp/PKVlZPXqI9YUbgWFUUoa0JZNUBDo6ct0oc/DeMO+G\nzs5OCidO5N6tW3l+5kzu3bqVwokTHRPs6YyzqqqK8XPmEMnLo1UpInl5XDZnTp8qO+te5owbA3V/\nrqPe+g6arVu3orq72QS0AZsA1d3No48+6n/nupIlEzazwhhaZJKKQOdpNxKJiLrrroSLVt11V9qt\nmNzkStLFjcpOZxXmdtWgcx0F7Varq2KbN2+eY16wz3zmM/3qF7PCMAwFgvQGcYPu066b9A9B4iZX\nklukjyd33VWYm1WD7nXkZtXitfeeGwePcePGsYjEvGCL7f2+oytZMmEzKwxDEOg+7bqJMg8Sr1cY\n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\n",
590 | "text/plain": [
591 | ""
592 | ]
593 | },
594 | "metadata": {},
595 | "output_type": "display_data"
596 | }
597 | ],
598 | "source": [
599 | "import matplotlib.pyplot as plt\n",
600 | "import numpy as np\n",
601 | "def plot_points(data):\n",
602 | " X = np.array(data[[\"gre\",\"gpa\"]])\n",
603 | " y = np.array(data[\"admit\"])\n",
604 | " admitted = X[np.argwhere(y==1)]\n",
605 | " rejected = X[np.argwhere(y==0)]\n",
606 | " plt.scatter([s[0][0] for s in rejected], [s[0][1] for s in rejected], s = 25, color = 'red', edgecolor = 'k')\n",
607 | " plt.scatter([s[0][0] for s in admitted], [s[0][1] for s in admitted], s = 25, color = 'cyan', edgecolor = 'k')\n",
608 | " plt.xlabel('Test (GRE)')\n",
609 | " plt.ylabel('Grades (GPA)')\n",
610 | "plot_points(data)\n",
611 | "plt.show()"
612 | ]
613 | },
614 | {
615 | "cell_type": "markdown",
616 | "metadata": {
617 | "deletable": true,
618 | "editable": true
619 | },
620 | "source": [
621 | "The data, based on only GRE and GPA scores, doesn't seem very separable. Maybe if we make a plot for each of the ranks, the boundaries will be more clear."
622 | ]
623 | },
624 | {
625 | "cell_type": "code",
626 | "execution_count": 289,
627 | "metadata": {
628 | "collapsed": false,
629 | "deletable": true,
630 | "editable": true
631 | },
632 | "outputs": [
633 | {
634 | "data": {
635 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuYnHV99/H3h2U5OBMBJVBMSOMBsYqwkwQGxccqgSxr\nEzBPrZCerLXS+lCLh6pgubK6uXqhPp5qa2tTradqPKAJ7Oq6QUStj2ZDQkLCQS0gYOKBgAfYDZrs\n8n3+uO8dlmUPs5O5Z2ZnPq/rmitzn3/z28n9nft3VERgZmYGcFi9E2BmZo3DQcHMzEocFMzMrMRB\nwczMShwUzMysxEHBzMxKHBTMMiLpHZL+q97pMJsNBwVraZLukfSIpCFJP5P0CUn5OqTjpZJulPRr\nSffU+vpmYxwUzGBVROSBDqAAXFmHNAwD/wm8pQ7XNitxUDBLRcTPgAGS4ACApD+QtEPSQ5J+LOkd\n47YtlhSSXiXpPkkPSPqHyc4tqV3SBklfknTEJNfeGhGfBu6u/iczK5+DgllK0kKgC7hz3Oph4M+B\nY4E/AF4n6eUTDn0RcCqwHFgr6fcmnPdoYBPwW+CVEXEgm09gdugcFMxgk6SHgR8D9wPdYxsi4psR\nsTsiHo2IXcAG4PcnHP/OiHgkIm4BbgHOGLftycDXgLuAV0fEaJYfxOxQOSiYwcsjYh7wEuA5wPFj\nGyQV0wrgfZJ+DfzN+O2pn417vx8YX1F9NnA68K7w6JM2BzgomKUi4lvAJ4D3jlv9WeA64OSIOAb4\nCKBZnHYzcDVwg6QTq5RUs8w4KJg93geB8yWNFQHNA34REb+RdBbwx7M9YUS8hyS43CBp4lMGAJIO\nk3QU0J4s6qjJKqTNsuagYDZOROwDPgWsTVf9H6AnrXNYC3yhwvOuI6ls/rqkp0yyy4uBR4CvAovS\n95sruZbZoZCLOc3MbIyfFMzMrMRBwczMShwUzMysxEHBzMxKDq93Ambr+OOPj8WLF9c7GWZmc8r2\n7dsfiIj5M+0354LC4sWL2bZtW72TYWY2p0i6t5z9XHxkZmYlDgpmZlbioGBmZiUOCmZmVuKgYGZm\nJQ4KZmZW4qBgZmYlmQcFSW3pxOd9k2w7UtLnJd0paVDS4qzTY2ZmU6tF57XLgTtI5qqd6DXALyPi\nWZIuAd4NXFyDNFmTGB0dpb+/nx07dlAoFOjq6qKtra3eyQJql7Zmuw7AI488wqtf/Wq2bt3KWWed\nxcc//nGOPvroTK41W82Y348TEZm9gIXADcC5QN8k2weAF6TvDwceIJ3jYarX0qVLwywiYmRkJJav\nWhX5JUtCV1wR+SVLYvmqVTEyMlLvpMXIyEisWr48luTzcYUUS/L5WLV8edXTVqs8qNXniYjYv39/\ntB93XHDqqcFb3xqcemq0H3dc7N+/v+rXmq1a5ne1rwNsi3Lu2+XsVOkLuAZYSjIh+mRB4VZg4bjl\nu4Djpzung4KN6e3tjfySJcGBA8mX48CByBcK0dvbW++kRW9vbyzJ5+MAREAcgCjk81VPW63yoFaf\nJyLi4osvTgLCuM/EqafGxRdfXPVrzVYt87va1yk3KGRWpyBpJXB/RGyvwrkulbRN0rZ9+/ZVIXXW\nDHbs2MHwihXQ3p6saG9nuLOTnTt31jdhJGlbMTxMmjLagc7h4aqnrVZ5UKvPA7B161a46KLHfSYu\nuoibbrqp6tearVrm9/D55z/+OitW1OS7nWVF8znAhZLuAT4HnCvpvybssxc4GUDS4cAxwIMTTxQR\n6yNiWUQsmz9/xkH+rEUUCgVymzfDwYPJioMHyQ0M0NHRUd+EkaRtcy5HmjIOAgO5XNXTVqs8qNXn\nATjrrLPg2msf95m49lrOPPPMql9rtmqV36effjqHXXfd465z2LXX8vznP7+q15lUOY8Th/pi6uKj\ny4CPpO8vAb4w07lcfGRjSuWuhUJS7looNFydQiEtgy9kXaeQcR7U6vNEzJE6hYzze9OmTTFv3rzI\nnXJK6C1vidwpp0R+3rzYtGlTxeekzOIjJftmS9JLgL+PiJWSetLEXSfpKODTQAH4BXBJRNw93bmW\nLVsWHjrbxoy10Ni5cycdHR0N2foo67Q123XgsdZHN910E2eeeWZDtj7KMh/WrVvH0Nq1/C9gJ9AB\n/Dcwb906rrrqqorOKWl7RCybcb9aBIVqclAws2bX19dH95o1bBkaop2kuK6Yz9OzYQMrV66s6Jzl\nBgX3aDYzazBdXV0sKBYp5vNcKVHM51lYLNLV1ZX5tefczGtmZs2ura2NjQMDpWKqnhoWjbr4yMys\nBbj4yMzMZs3FR2aWqUYen8qeyEHBrIE02w10dHSU1Z2d7B0cZMXwMN25HOuLRTYODMzpz9XMXHxk\n1iBGR0fpXL2aNd3ddO/fz5rubjpXr2Z0dLTeSatYf38/ewcH2TI0xNURbBkaYs/gIP39/fVOmk3B\nQcGsQfT39zO4dy9DW7YQV1/N0JYtDO7ZM6dvoLUcM8mqw0HBrEE08gB/larlmElWHQ4KZg2ikQf4\nq1Q9O2FZZdxPwaxBjNUpDO7Zw3BnJ7mBAYoLFzKwceOcrpRt5PGpWonHPjKbg3wDtaw4KJiZWYl7\nNJuZ2aw5KJiZWYl7NNucVkkP4GbrNWxWTZnVKaSzqn0bOJIk+FwTEd0T9lkEfBI4FmgDroiIr053\nXtcp2JhSa529exlesYLc5s0UFyyYtrVOJceYNYNGqFP4LXBuRJxBMpvcBZLOnrDPVSTzMhdI5mj+\n1wzTY02mkh7Azdhr2KyaMgsK6VzRQ+lie/qa+FgSwJPT98cAP8kqPdZ8KukB3Iy9hs2qKdOKZklt\nknYC9wPXR8TghF3eAfyppD3AV4HXT3GeSyVtk7Rt3759WSbZ5pBKegA3Y69hs2rKNChExGhEdAAL\ngbMknTZhlzXAJyJiIfAy4NOSnpCmiFgfEcsiYtn8+fOzTLLNIV1dXRQXLCBfLKIrryRfLFJcuHDa\nIRQqOcasldSs85qktcD+iHjvuHW3ARdExI/T5buBsyPi/qnO44pmG6+SHsDuNWytqO49miXNBw5G\nxK8kHQ1sBt4dEX3j9ukHPh8Rn5D0e8ANwIKYJlEOCmZms1duUMiyn8JJwCcltZEUU30hIvok9QDb\nIuI64M3Af0h6I0ml819MFxDMzFpFvfrTeOwjM7MGk0V/mkbop2BmZhWYrD/Nlhr1p3FQMDNrMNu3\nb2fovPMe35/m/PO5+eabM7+2g4LZHDc6OkpfXx/r1q2jr6+P0dHReifJDtHo6CiHbdr0uP40h23c\nyMjISObX9oB4ZnPYE8qeu7sprl/vsZzmuLa2Nhbu2cP9z3sev3n5yzlq0yZO2LuXww/P/pbtJwWz\njNTiF7zHcmpOHR0d/OKww2B4GL73PRge5sHDDuOMM87I/Np+UjDLwOjoKKs7O9k7OMiK4WG6cznW\nF4tsHBio6i/46cZyWrlyZdWuY7X3yMknM3rLLdDezm8OHqTt9NNrcl0/KZhloL+/n72Dg2wZGuLq\nCLYMDbFncLDqv+A9llNz2rVrF49eeOHjgv2jF13E7t27M7+2g4JZBnbs2MGK4WHS/9K0A53Dw1Uf\njdVjOTWnQqFA7vrrHx/sN2+uSbB3UDDLQKFQYHMuR/pfmoPAQC5X9f/UbW1tDGzcyIaeHnpyOTb0\n9LiSuQl0dXVx1tOexlFLl8Lb3sZRS5dy1oIFNQn2rlMwy0BXVxfri0WKg4N0Dg8zkMuxsFjM5D91\nW1sbK1eudB1CM9q/P6lo3r+/Zpd0UDDLQFtbGxsHBkqjsfZ4NFabhf7+frb+5Cf85o47ShXNW4tF\n+vv7Mw/+Dgo2LU9yXzn/gq+tZvqu1rNVmesUbEpjHaPWdHfTvX8/a7q76Vy92j1mm0Cz9YJutu9q\nPVuVOSjYlNwxqjk12w0Umu+7Ws9WZQ4KNiVPcj83zPZXf7PdQKH5vqv1bFWWWVCQdJSkrZJukXSb\npHdOsd8rJd2e7vPZrNJjs+eOUY2vkl/9zXYDheb8ro7VSV111VWsXLmyZvUjWT4p/BY4NyLOADqA\nCySdPX4HSacAVwLnRMTzgDdkmB6bJXeManyV/Opvxhuov6vVk1nro3RazaF0sT19TZzm7bXAhyPi\nl+kx92eVHpu9sUfY0iT3PT1zukVHM6qklUpXVxfF9esZLBYZ7uwkNzAw52+g/q5WT6bTcabzM28H\nnkVy83/bhO2bgB8C5wBtwDsi4muTnOdS4FKARYsWLb333nszS7MdumZqGngoKsmH2R7T19fHmu5u\nhrZsSQLDwYPki0U29PRM23Rx7Do7d+6kw30oWkK503HWZI5mSccCG4HXR8St49b3kYwA8EpgIfBt\n4PkR8aupzuU5mhtbFnPLzkWV5MMhHbNnz+N+9bdaftvMGmqO5vQmfyNwwYRNe4DrIuJgRPyI5Knh\nlFqkybLRjC1bKlFJPlRyTLOOfdRs/SjmkixbH81PnxCQdDRwPvD9CbttAl6S7nM88Gzg7qzSZNlr\nxpYtlagkHyrNu3q1UslKM/ajmEuyfFI4CbhR0i7gJuD6iOiT1CPpwnSfAeBBSbeTPEm8JSIezDBN\nlrFmbNlSiUrywXmX8NNmfWUWFCJiV0QUIuL0iDgtInrS9Wsj4rr0fUTEmyLiuRHx/Ij4XFbpsdpw\n08BEJflQz+GSG0ktnzZdTPVEHhDPqspNAxOHlA91GC65kRQKBXLd3Qz19JRaVOUGBujo6anqdWo1\nZeqhpK8urfgiYk69li5dGmbNqLe3N/JLlgQHDiRf9gMHIl8oRG9vb72TVlMjIyOxfNWqyBcKoSuu\niHyhEMtXrYqRkZGqXqe3tzeW5PNxACIgDkAU8vmGyO9SHixZkuTBkiWHnAfAtijjHuuxj8wahCvp\nE7VqUVWrKVMrUc96FQcFswbhiubH1KJFVa2mTK1EPX8gOCiYNQhX0tdWV1cXC4pFivk8V0oU8/nM\npkydrXr+QKhJj+Zqco9mO1SNPAyHh5+orUbN7yx6qjfUMBfV5KBgh8LDcNhcUe2AVW5QcJNUaynj\nK/Bob2eop4fBGk2IbjYb9Zrj23UK1lLcwsdseg4K1lLcwsdseg4K1lLcwsdsemXVKUg6gWQinKcB\njwC3kvSOezTDtJlVnYfhMJvetK2PJL0UuAJ4CrADuB84imSI62cC1wDvi4iHsk9qwq2PzMxmr1qt\nj14GvDYi7pvkAocDK0nmSfhSRak0M7OGMm1QiIi3TLP5qRGxqcrpMTOzOppVRbOkYyW9RtINJMVJ\nZmbWRGYMCpKOlnSJpOuA3cD7gHXAwhmOO0rSVkm3SLpN0jun2fcPJYWkGcu7zMwsO9MGBUmfBX5I\nUm/wz8Bi4JcR8c0yWh79Fjg3Is4AOoALJJ09yTXmAZcDg7NPvpmZVdNMTwrPBX4J3AHcERGjQFmD\nJaXzOgyli+3pa7Jj1wHvBn5TVorNzCwz0waFiOgAXgnMA74u6TvAPEknlnNySW2SdpI0Zb0+IgYn\nbF8CnBwRX5nhPJdK2iZp2759+8q5tJmZVWDGOoWI+H5EdEfEc0iKeT4J3CTpu2UcO5oGloXAWZJO\nG9sm6TDg/cCbyzjP+ohYFhHL5s+fP9PuZi3Fk89bNZU1dLak4yPigXHLAv5XRHy77AtJa4H9EfHe\ndPkY4C5grIjpd4BfABdGxJS909x5zeqhUedg8FDgVq5yO6/NVNG8StI+YLekPZJeCKX6gmkDgqT5\nko5N3x9NUln9/bHtEfHriDg+IhZHxGJgCzMEBLN6GLvxrunupnv/ftZ0d9O5enVD/CKv51y+1pxm\nKj76R5IngpOAPwSunsW5TwJulLQLuImkTqFPUo+kCytLrlntNfKN10OBW7XNFBRGIuL7AGkl8bxy\nTxwRuyKiEBGnR8RpEdGTrl8bEddNsv9L/JRgjaiRb7weCtyqbaagcIKkN429Jlk2a3qNfOP1UOBW\nbTONkto93cERMWUv5ay4otlqLYtJ1KudvlpMPt+ole1WnnIrmstqfdRIHBSsHmp1421Uo6OjrO7s\nZO/gICuGh9mcy7GgWGTjwEDD5EMlQauVAl1VgoKk5wHPHKsDkPQB4Jh0879ExM3VSOxsOCiYPV4t\nbmx9fX10r1nDlqEh2oGDQDGfp2fDhppPLD+ZSoLWXAh01VSVJqnAu4AHxi13Al8BbgTWVp48s+po\n9Y5bYze27jVr2N/dTfeaNazu7Kx6PuzYsYMVw8OkVe20A53Dww1R2Q5JC7G9g4NsGRri6gi2DA2x\nZ3Bw2hZilRzTCmYKCidFxPieyw9FxJci4tPA8Rmmy2xGtbohNrJa3dgKhQKbcznSqnYOAgO5XENU\ntkNlQavRA129zBQUHtcENSLGj3J6QvWTY1a+Sm+IzfR0UasbW1dXFwuKRYr5PFdKFPN5FhaLmbVy\nmu3fqJKg1eiBrm4iYsoXSTFRcZL1ZwPfnO7YrF5Lly4Ns4iInp6euEKKgNLrCinWrVs35TEjIyOx\navnyWJLPxxVSLMnnY9Xy5TEyMlLDlFdPb29vLMnn40D6+Q9AFPL56O3trfq1RkZGore3N9atWxe9\nvb2Z5Vklf6OxYwrpMYWMjpnLgG1Rxj12pqBwFvAjoBtYlb7eka47q5wLVPvloGBjKrkh1vImWgvN\neGOr9G9USdCqVaBrBOUGhZnmaN4qqQj8LfAX6erbgLMj4udVfWQxm6Wuri7WF4sUBwfpHB5mIJeb\nsUhjuuKWareiqUWroLa2NjYODJSay/Y0QXPZSv9GbW1trFy5clZ/x0qOaXbTBgWAiLgftzSyBlTJ\nDbFQKNCdy9EzrmnlQC5HT5XLkSc2d+zO5VifUXPHZrux1epvZJObqZ9CL7Ae+FpEHJyw7RkkTw/3\nRMR/ZpnI8dxPwQ7F2M16z4Sni2rfrBu9XX8jq9XfqNWU209hpieF1wJvAj4o6RfAPuAokrma7yLp\nwHbtIabVrGZqVdxSy2KqZtOMRWJzSdnDXEhaTDIc9iPADyNif3bJmpqfFCrXSl36663SJwX/jWxM\ntb8LHvvIHqfVuvTXWyVFIP4b2ZgsZtQrNyhk1nSUpJhpK3ALSYuld06yz5uA24FdwA3A7850XjdJ\nrUyzNcU8FGPNEHt6ejJvbz+b5o7+G9mY3t7eyC9ZEhw4kNz4DhyIfKFwSN8FymySOlOP5kPxW+Dc\niDgD6AAukHT2hH12AMsi4nTgGuA9GaanpblLf6KWQ2OMtQq66qqrWLly5Yy/8Pw3sjH1nNhp1kFB\n0nGSTp9pvzQ4DaWL7ekrJuxzYzxWN7EFWDjb9Fh53KU/0ciDoPlvZGPqObFTWUFB0jclPVnSU4Cb\ngf+Q9P4yjmuTtBO4n2SO5sFpdn8NMOn/TEmXStomadu+ffvKSbJNUOuxaxpVI/8a99/IxtRzRr2y\nKpol7YiIgqS/Ak6OiG5Ju9Jin3KOPxbYCLw+Im6dZPufkvSa/v2I+O1053JFc+VafaIYSFoFrb3k\nEtYOD7MbeD7wzlyOdZ/7XEM0FfXfyMZU+7tQ1dZHknYDK4BPAv8QETfNJiik51gL7I+I905Yfx7w\nzyQB4f6ZzuOgYIfiwIEDLHjGM/hFLsejF13EYddey1OGh9l7990cccQRUx7npqI211Vrkp0xPcAA\ncFcaEJ4B/M8MCZifPiEg6WjgfOD7E/YpAP8OXFhOQDA7VJs3b+Y3J57Io7feCu95D4/eeiuPnHAC\nmzdvnvIYz9tgraSsoBARX4yI0yPideny3RHxhzMcdhJwo6RdwE0kdQp9knokXZju83+BPPBFSTsl\nXVfh5zAry2StOvbP0KqjkSunzaqt3IrmZ0u6QdKt6fLpkq6a7piI2BURhTSYnBYRPen6tZHO+RwR\n50XEiRHRkb4unO6ctdZMk7FYopJWHY1cOW1WbeUWH/0HcCVJKzkiYhdwSVaJagQuMmhOlbTqcFNR\nayXlBoUnRcTWCetGqp2YRuIig+bU1tbGV6+5hjeuXMlLt27ljStX8tVrrpm20thNRa2VzDifQuoB\nSc8k7Xwm6RXATzNLVQPwKJfNaXR0lFe87GWl8YW+snUrO7/73WnHF/KondZKyn1SuIykldBzJO0F\n3gC8LrNUNQAXGTSnSp8AZztkhdlcVW7ro7sj4jxgPvCciHhRRNyTacrqzEUGzcmVxmbTm7b4SNKb\nplgPQETMONTFXOUig+bkqR7NpjfTdJzd6dtTgTOBsX4Eq4CtEfGn2Sbvidyj2Q6Fp3q0VlXtYS6+\nDfxBRDycLs8DvhIRLz7klM6Sg4IdKo8vZK2oWnM0jzkRODBu+UC6zmzOGas0disysycqNyh8Ctgq\naWO6/HKSwfHMzKyJlBUUIuIfJX0NeFG66tURsSO7ZJmZWT2U+6RARGyX9GOSuZeRtCgi7sssZWYZ\n8TDYZlMrKyiko5q+D3gaySxqi0iGwX5edkkzq76x1kdjPZq7cznWu/WRWUm5PZrXAWcDP4yIpwPn\nkcypbHXSyCO4NnLaPKaV2fTKLT46GBEPSjpM0mERcaOkD2aaMptSI//aHR0dpXP1agb37mV4xQpy\n3d0U169nYOPGuqcNPKaV2UzKfVL4laQ88G3gM5L+CRjOLlk2nUb+tdvf38/g3r0MbdlCXH01Q1u2\nMLhnT0OkDTymldlMyg0KFwH7gTcCXwPuIunVPCVJR0naKukWSbdJeuck+xwp6fOS7pQ0KGnx7JLf\nmhp5/J7JZjYbnmFms1rymFZm05sxKEhqA/oi4tGIGImIT0bEhyLiwRkO/S1wbkScAXQAF0g6e8I+\nrwF+GRHPAj4AvLuCz9ByGvnXbiUzm9XS2JhWPRs2kOvpoWfDhoYodjNrFOUOc3ED8L8j4tcVXUR6\nEvAd4HURMThu/QDwjoj4nqTDgZ8B82OaRHmYi9qO3zPb5pulOoU9exju7CQ3MEBx4cKGqVOolJux\n2lxX7bGPrgUKwPWMq0uIiL+b4bg2YDvwLODDEfG2CdtvBS6IiD3p8l1AMSIemLDfpcClAIsWLVp6\n7733zpjmZleL8XsmVmhvzuVYUEbwabaxhZ5Qeb55M8UFC+Z8oLPWUm5QICJmfAGvmuxVzrHp8ccC\nNwKnTVh/K7Bw3PJdwPHTnWvp0qVhtdHb2xtL8vk4ABEQByAK+Xz09vbWO2k11dvbG/klS4IDB5Iv\n4YEDkS8UWi4fbG4DtkUZ9+tyh7k4pHGOIuJXkm4ELkgDwZi9wMnAnrT46BhgproKozbFGW6+mZiu\n8ryV8sFaw7QVzZIuknTZuOVBSXenr1fMcOx8Scem748GzifpBT3edSRPHQCvAL6RRjSbxlixTvea\nNezv7qZ7zRpWd3ZWvZNYI1do11KjV56bVdNMrY/eymMT6wAcSTLZzkuYeY7mk4AbJe0CbgKuj4g+\nST3psBkAHwOeKulO4E3AFbNMf0uqVT8FN99MdHV1UVywgHyxiK68knyxSHHhwpbLB2sNMxUfHRER\nPx63/J1ImqI+KCk33YERsYukcnri+rXj3v8G+KNZpNeoXbGOpyRNtLW1MbBx42OV5z09LZkP1hpm\nmo7zzkj6EEy27a6IeGZmKZuCm6RCX18f3WvWsGXcPMPFfJ6eDRtcxm1mkyq39dFMxUeDkl47ycn/\nGthaaeLs0LhYx8yyMtOTwgnAJpLeyTenq5eS1C28PCJ+nnkKJ/CTQqKR+wK4o5dZ46l257VzeWzu\nhNsi4huHmL6KVRIUfJOqHXf0MmtM5QaFcvspfAOoWyA4FI08zHQzGj9KKu3tDPX0MFgs0t/f7/oO\nszmg3FFS56xGHma6GTX6KKlmNr2mDwqNPMx0M3JHL7O5remDgnvl1pY7epnNbWVVNDeS2VY013KY\naUs0cssos1ZV1dZHjeRQWh/5JmVmrcpBwczMSqrVo9nMzFqIg4KZmZU4KJiZWUlZPZrNzCzR7MPm\nZPakIOlkSTdKul3SbZIun2SfYyT1Srol3efVWaXHzOxQjY3ttaa7m+79+1nT3U3n6tVVn/WwnrIs\nPhoB3hwRzwXOBi6T9NwJ+1wG3B4RZ5DM5vY+SUdkmCYzs4qNH9srrr6aoS1bGNyzp6mGzcksKETE\nTyPi5vT9w8AdwIKJuwHzJAnIA78gCSZmZg2nFcb2qklFs6TFJFNzDk7Y9C/A7wE/AXYDl0fEo5Mc\nf6mkbZK27du3L+PUmplNrhXG9so8KEjKA18C3hARD03Y3AnsBJ4GdAD/IunJE88REesjYllELJs/\nf37WSTYzm1QrjO2VaesjSe0kAeEzEfHlSXZ5NfCuSLpV3ynpR8Bz8FSfZtaA2traGNi48bFhc3p6\nmq71UWZBIa0n+BhwR0S8f4rd7gOWA/8t6UTgVODurNJkZnao2traWLlyZdNOGpXlk8I5wJ8BuyWN\n1cK8HVgEEBEfAdYBn5C0GxDwtoh4IMM0mZnZNDILChHxHZIb/XT7/ARYkVUazMxsdjzMhZmZlTgo\nmJlZiYOCmZmVOCiYmVmJg4KZmZU4KJiZWYmDgpmZlTgomJlZiYOCmZmVOCiYmVmJg4KZmZU4KJiZ\nWYmDgpmZlTgomJlZiYOCmZmVZBYUJJ0s6UZJt0u6TdLlU+z3Ekk7032+lVV6zMxsZlnOvDYCvDki\nbpY0D9gu6fqIuH1sB0nHAv8KXBAR90k6IcP0mJnZDDJ7UoiIn0bEzen7h4E7gAUTdvtj4MsRcV+6\n3/1ZpcfMzGZWkzoFSYuBAjA4YdOzgeMkfVPSdkl/Xov0mJnZ5LIsPgJAUh74EvCGiHhokusvBZYD\nRwPfk7QlIn444RyXApcCLFq0KOskm5m1rEyfFCS1kwSEz0TElyfZZQ8wEBHDEfEA8G3gjIk7RcT6\niFgWEcvmz5+fZZLNzFpalq2PBHwMuCMi3j/FbtcCL5J0uKQnAUWSugczM6uDLIuPzgH+DNgtaWe6\n7u3AIoCI+EhE3CHpa8Au4FHgoxFxa4ZpshoYHR2lv7+fHTt2UCgU6Orqoq2trd7JMrMyKCLqnYZZ\n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\n",
636 | "text/plain": [
637 | ""
638 | ]
639 | },
640 | "metadata": {},
641 | "output_type": "display_data"
642 | },
643 | {
644 | "data": {
645 | "image/png": "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\n",
646 | "text/plain": [
647 | ""
648 | ]
649 | },
650 | "metadata": {},
651 | "output_type": "display_data"
652 | },
653 | {
654 | "data": {
655 | "image/png": "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\n",
656 | "text/plain": [
657 | ""
658 | ]
659 | },
660 | "metadata": {},
661 | "output_type": "display_data"
662 | },
663 | {
664 | "data": {
665 | "image/png": "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\nRU5ErkJggg==\n",
666 | "text/plain": [
667 | ""
668 | ]
669 | },
670 | "metadata": {},
671 | "output_type": "display_data"
672 | }
673 | ],
674 | "source": [
675 | "data_rank1 = data[data[\"rank\"]==1]\n",
676 | "data_rank2 = data[data[\"rank\"]==2]\n",
677 | "data_rank3 = data[data[\"rank\"]==3]\n",
678 | "data_rank4 = data[data[\"rank\"]==4]\n",
679 | "plot_points(data_rank1)\n",
680 | "plt.title(\"Rank 1\")\n",
681 | "plt.show()\n",
682 | "plot_points(data_rank2)\n",
683 | "plt.title(\"Rank 2\")\n",
684 | "plt.show()\n",
685 | "plot_points(data_rank3)\n",
686 | "plt.title(\"Rank 3\")\n",
687 | "plt.show()\n",
688 | "plot_points(data_rank4)\n",
689 | "plt.title(\"Rank 4\")\n",
690 | "plt.show()\n"
691 | ]
692 | },
693 | {
694 | "cell_type": "markdown",
695 | "metadata": {
696 | "deletable": true,
697 | "editable": true
698 | },
699 | "source": [
700 | "These plots look a bit more linearly separable, although not completely. But it seems that using a multi-layer perceptron with the rank, gre, and gpa as inputs, may give us a decent solution."
701 | ]
702 | },
703 | {
704 | "cell_type": "markdown",
705 | "metadata": {
706 | "deletable": true,
707 | "editable": true
708 | },
709 | "source": [
710 | "# 2. Process the data\n",
711 | "We'll do the following steps to clean up the data for training:\n",
712 | "- One-hot encode the rank\n",
713 | "- Normalize the gre and the gpa scores, so they'll be in the interval (0,1)\n",
714 | "- Split the data into the input X, and the labels y."
715 | ]
716 | },
717 | {
718 | "cell_type": "code",
719 | "execution_count": 301,
720 | "metadata": {
721 | "collapsed": false,
722 | "deletable": true,
723 | "editable": true
724 | },
725 | "outputs": [],
726 | "source": [
727 | "import keras\n",
728 | "from keras.utils import np_utils\n",
729 | "\n",
730 | "# remove NaNs\n",
731 | "data = data.fillna(0)\n",
732 | "\n",
733 | "# One-hot encoding the rank\n",
734 | "processed_data = pd.get_dummies(data, columns=['rank'])\n",
735 | "\n",
736 | "# Normalizing the gre and the gpa scores to be in the interval (0,1)\n",
737 | "processed_data[\"gre\"] = processed_data[\"gre\"]/800\n",
738 | "processed_data[\"gpa\"] = processed_data[\"gpa\"]/4\n",
739 | "\n",
740 | "# Splitting the data input into X, and the labels y \n",
741 | "X = np.array(processed_data)[:,1:]\n",
742 | "X = X.astype('float32')\n",
743 | "y = keras.utils.to_categorical(data[\"admit\"],2)"
744 | ]
745 | },
746 | {
747 | "cell_type": "code",
748 | "execution_count": 302,
749 | "metadata": {
750 | "collapsed": false,
751 | "deletable": true,
752 | "editable": true
753 | },
754 | "outputs": [
755 | {
756 | "name": "stdout",
757 | "output_type": "stream",
758 | "text": [
759 | "Shape of X: (400, 7)\n",
760 | "\n",
761 | "Shape of y: (400, 2)\n",
762 | "\n",
763 | "First 10 rows of X\n",
764 | "[[ 0.47499999 0.90249997 0. 0. 0. 1. 0. ]\n",
765 | " [ 0.82499999 0.91750002 0. 0. 0. 1. 0. ]\n",
766 | " [ 1. 1. 0. 1. 0. 0. 0. ]\n",
767 | " [ 0.80000001 0.79750001 0. 0. 0. 0. 1. ]\n",
768 | " [ 0.64999998 0.73250002 0. 0. 0. 0. 1. ]\n",
769 | " [ 0.94999999 0.75 0. 0. 1. 0. 0. ]\n",
770 | " [ 0.69999999 0.745 0. 1. 0. 0. 0. ]\n",
771 | " [ 0.5 0.76999998 0. 0. 1. 0. 0. ]\n",
772 | " [ 0.67500001 0.84750003 0. 0. 0. 1. 0. ]\n",
773 | " [ 0.875 0.98000002 0. 0. 1. 0. 0. ]]\n",
774 | "\n",
775 | "First 10 rows of y\n",
776 | "[[ 1. 0.]\n",
777 | " [ 0. 1.]\n",
778 | " [ 0. 1.]\n",
779 | " [ 0. 1.]\n",
780 | " [ 1. 0.]\n",
781 | " [ 0. 1.]\n",
782 | " [ 0. 1.]\n",
783 | " [ 1. 0.]\n",
784 | " [ 0. 1.]\n",
785 | " [ 1. 0.]]\n"
786 | ]
787 | }
788 | ],
789 | "source": [
790 | "# Checking that the input and output look correct\n",
791 | "print(\"Shape of X:\", X.shape)\n",
792 | "print(\"\\nShape of y:\", y.shape)\n",
793 | "print(\"\\nFirst 10 rows of X\")\n",
794 | "print(X[:10])\n",
795 | "print(\"\\nFirst 10 rows of y\")\n",
796 | "print(y[:10])"
797 | ]
798 | },
799 | {
800 | "cell_type": "code",
801 | "execution_count": null,
802 | "metadata": {
803 | "collapsed": false,
804 | "deletable": true,
805 | "editable": true
806 | },
807 | "outputs": [],
808 | "source": []
809 | },
810 | {
811 | "cell_type": "markdown",
812 | "metadata": {
813 | "deletable": true,
814 | "editable": true
815 | },
816 | "source": [
817 | "# 3. Split the data into training and testing sets"
818 | ]
819 | },
820 | {
821 | "cell_type": "code",
822 | "execution_count": 292,
823 | "metadata": {
824 | "collapsed": false,
825 | "deletable": true,
826 | "editable": true
827 | },
828 | "outputs": [
829 | {
830 | "name": "stdout",
831 | "output_type": "stream",
832 | "text": [
833 | "x_train shape: (350, 7)\n",
834 | "350 train samples\n",
835 | "50 test samples\n"
836 | ]
837 | }
838 | ],
839 | "source": [
840 | "# break training set into training and validation sets\n",
841 | "(X_train, X_test) = X[50:], X[:50]\n",
842 | "(y_train, y_test) = y[50:], y[:50]\n",
843 | "\n",
844 | "# print shape of training set\n",
845 | "print('x_train shape:', X_train.shape)\n",
846 | "\n",
847 | "# print number of training, validation, and test images\n",
848 | "print(X_train.shape[0], 'train samples')\n",
849 | "print(X_test.shape[0], 'test samples')"
850 | ]
851 | },
852 | {
853 | "cell_type": "markdown",
854 | "metadata": {
855 | "deletable": true,
856 | "editable": true
857 | },
858 | "source": [
859 | "# 4. Define the model architecture"
860 | ]
861 | },
862 | {
863 | "cell_type": "code",
864 | "execution_count": 309,
865 | "metadata": {
866 | "collapsed": false,
867 | "deletable": true,
868 | "editable": true
869 | },
870 | "outputs": [
871 | {
872 | "name": "stdout",
873 | "output_type": "stream",
874 | "text": [
875 | "_________________________________________________________________\n",
876 | "Layer (type) Output Shape Param # \n",
877 | "=================================================================\n",
878 | "dense_75 (Dense) (None, 128) 1024 \n",
879 | "_________________________________________________________________\n",
880 | "dropout_21 (Dropout) (None, 128) 0 \n",
881 | "_________________________________________________________________\n",
882 | "dense_76 (Dense) (None, 64) 8256 \n",
883 | "_________________________________________________________________\n",
884 | "dropout_22 (Dropout) (None, 64) 0 \n",
885 | "_________________________________________________________________\n",
886 | "dense_77 (Dense) (None, 2) 130 \n",
887 | "=================================================================\n",
888 | "Total params: 9,410.0\n",
889 | "Trainable params: 9,410.0\n",
890 | "Non-trainable params: 0.0\n",
891 | "_________________________________________________________________\n"
892 | ]
893 | }
894 | ],
895 | "source": [
896 | "# Imports\n",
897 | "import numpy as np\n",
898 | "from keras.models import Sequential\n",
899 | "from keras.layers.core import Dense, Dropout, Activation\n",
900 | "from keras.optimizers import SGD\n",
901 | "from keras.utils import np_utils\n",
902 | "\n",
903 | "# Building the model\n",
904 | "# Note that filling out the empty rank as \"0\", gave us an extra column, for \"Rank 0\" students.\n",
905 | "# Thus, our input dimension is 7 instead of 6.\n",
906 | "model = Sequential()\n",
907 | "model.add(Dense(128, activation='relu', input_shape=(7,)))\n",
908 | "model.add(Dropout(.2))\n",
909 | "model.add(Dense(64, activation='relu'))\n",
910 | "model.add(Dropout(.1))\n",
911 | "model.add(Dense(2, activation='softmax'))\n",
912 | "\n",
913 | "# Compiling the model\n",
914 | "model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
915 | "model.summary()"
916 | ]
917 | },
918 | {
919 | "cell_type": "markdown",
920 | "metadata": {
921 | "deletable": true,
922 | "editable": true
923 | },
924 | "source": [
925 | "# 5. Train the model"
926 | ]
927 | },
928 | {
929 | "cell_type": "code",
930 | "execution_count": 310,
931 | "metadata": {
932 | "collapsed": false,
933 | "deletable": true,
934 | "editable": true
935 | },
936 | "outputs": [
937 | {
938 | "data": {
939 | "text/plain": [
940 | ""
941 | ]
942 | },
943 | "execution_count": 310,
944 | "metadata": {},
945 | "output_type": "execute_result"
946 | }
947 | ],
948 | "source": [
949 | "# Training the model\n",
950 | "model.fit(X_train, y_train, epochs=200, batch_size=100, verbose=0)"
951 | ]
952 | },
953 | {
954 | "cell_type": "markdown",
955 | "metadata": {
956 | "deletable": true,
957 | "editable": true
958 | },
959 | "source": [
960 | "# 6. Score the model"
961 | ]
962 | },
963 | {
964 | "cell_type": "code",
965 | "execution_count": 308,
966 | "metadata": {
967 | "collapsed": false,
968 | "deletable": true,
969 | "editable": true
970 | },
971 | "outputs": [
972 | {
973 | "name": "stdout",
974 | "output_type": "stream",
975 | "text": [
976 | " 32/350 [=>............................] - ETA: 2s\n",
977 | " Training Accuracy: 0.719999999659\n",
978 | "32/50 [==================>...........] - ETA: 0s\n",
979 | " Testing Accuracy: 0.679999997616\n"
980 | ]
981 | }
982 | ],
983 | "source": [
984 | "# Evaluating the model on the training and testing set\n",
985 | "score = model.evaluate(X_train, y_train)\n",
986 | "print(\"\\n Training Accuracy:\", score[1])\n",
987 | "score = model.evaluate(X_test, y_test)\n",
988 | "print(\"\\n Testing Accuracy:\", score[1])"
989 | ]
990 | },
991 | {
992 | "cell_type": "markdown",
993 | "metadata": {
994 | "deletable": true,
995 | "editable": true
996 | },
997 | "source": [
998 | "# 7. Play with parameters!\n",
999 | "You can see that we made several decisions in our training. For instance, the number of layers, the sizes of the layers, the number of epochs, etc.\n",
1000 | "\n",
1001 | "It's your turn to play with parameters! Can you improve the accuracy? The following are other suggestions for these parameters. We'll learn the definitions later in the class:\n",
1002 | "- Activation function: relu and sigmoid\n",
1003 | "- Loss function: categorical_crossentropy, mean_squared_error\n",
1004 | "- Optimizer: rmsprop, adam, ada"
1005 | ]
1006 | },
1007 | {
1008 | "cell_type": "code",
1009 | "execution_count": null,
1010 | "metadata": {
1011 | "collapsed": false,
1012 | "deletable": true,
1013 | "editable": true
1014 | },
1015 | "outputs": [],
1016 | "source": []
1017 | },
1018 | {
1019 | "cell_type": "code",
1020 | "execution_count": null,
1021 | "metadata": {
1022 | "collapsed": true,
1023 | "deletable": true,
1024 | "editable": true
1025 | },
1026 | "outputs": [],
1027 | "source": []
1028 | }
1029 | ],
1030 | "metadata": {
1031 | "kernelspec": {
1032 | "display_name": "Python 3",
1033 | "language": "python",
1034 | "name": "python3"
1035 | },
1036 | "language_info": {
1037 | "codemirror_mode": {
1038 | "name": "ipython",
1039 | "version": 3
1040 | },
1041 | "file_extension": ".py",
1042 | "mimetype": "text/x-python",
1043 | "name": "python",
1044 | "nbconvert_exporter": "python",
1045 | "pygments_lexer": "ipython3",
1046 | "version": "3.5.2"
1047 | }
1048 | },
1049 | "nbformat": 4,
1050 | "nbformat_minor": 2
1051 | }
1052 |
--------------------------------------------------------------------------------
/requirements/aind-dl-linux.yml:
--------------------------------------------------------------------------------
1 | name: aind-dl
2 | channels:
3 | - damianavila82
4 | - defaults
5 | dependencies:
6 | - rise=4.0.0b1=py35_0
7 | - _license=1.1=py35_1
8 | - alabaster=0.7.10=py35_0
9 | - anaconda-client=1.6.2=py35_0
10 | - anaconda=custom=py35_0
11 | - anaconda-navigator=1.5.0=py35_0
12 | - anaconda-project=0.4.1=py35_0
13 | - astroid=1.4.9=py35_0
14 | - astropy=1.3=np112py35_0
15 | - babel=2.3.4=py35_0
16 | - backports=1.0=py35_0
17 | - beautifulsoup4=4.5.3=py35_0
18 | - bitarray=0.8.1=py35_0
19 | - blaze=0.10.1=py35_0
20 | - bleach=1.5.0=py35_0
21 | - bokeh=0.12.4=py35_0
22 | - boto=2.46.1=py35_0
23 | - bottleneck=1.2.0=np112py35_0
24 | - cffi=1.9.1=py35_0
25 | - chardet=2.3.0=py35_0
26 | - chest=0.2.3=py35_0
27 | - click=6.7=py35_0
28 | - cloudpickle=0.2.2=py35_0
29 | - clyent=1.2.2=py35_0
30 | - colorama=0.3.7=py35_0
31 | - configobj=5.0.6=py35_0
32 | - contextlib2=0.5.4=py35_0
33 | - cryptography=1.7.1=py35_0
34 | - curl=7.52.1=0
35 | - cycler=0.10.0=py35_0
36 | - cython=0.25.2=py35_0
37 | - cytoolz=0.8.2=py35_0
38 | - dask=0.14.0=py35_0
39 | - datashape=0.5.4=py35_0
40 | - decorator=4.0.11=py35_0
41 | - dill=0.2.5=py35_0
42 | - docutils=0.13.1=py35_0
43 | - entrypoints=0.2.2=py35_1
44 | - et_xmlfile=1.0.1=py35_0
45 | - fastcache=1.0.2=py35_1
46 | - flask=0.12=py35_0
47 | - flask-cors=3.0.2=py35_0
48 | - freetype=2.5.5=2
49 | - get_terminal_size=1.0.0=py35_0
50 | - gevent=1.2.1=py35_0
51 | - greenlet=0.4.12=py35_0
52 | - h5py=2.6.0=np112py35_2
53 | - hdf5=1.8.17=1
54 | - heapdict=1.0.0=py35_1
55 | - html5lib=0.999=py35_0
56 | - icu=54.1=0
57 | - idna=2.2=py35_0
58 | - imagesize=0.7.1=py35_0
59 | - ipykernel=4.5.2=py35_0
60 | - ipython=5.3.0=py35_0
61 | - ipython_genutils=0.1.0=py35_0
62 | - ipywidgets=6.0.0=py35_0
63 | - isort=4.2.5=py35_0
64 | - itsdangerous=0.24=py35_0
65 | - jbig=2.1=0
66 | - jdcal=1.3=py35_0
67 | - jedi=0.9.0=py35_1
68 | - jinja2=2.9.5=py35_0
69 | - jpeg=8d=0
70 | - jsonschema=2.5.1=py35_0
71 | - jupyter=1.0.0=py35_3
72 | - jupyter_client=5.0.0=py35_0
73 | - jupyter_console=5.1.0=py35_0
74 | - jupyter_core=4.3.0=py35_0
75 | - lazy-object-proxy=1.2.2=py35_0
76 | - libiconv=1.14=0
77 | - libpng=1.6.27=0
78 | - libtiff=4.0.6=2
79 | - libxml2=2.9.4=0
80 | - libxslt=1.1.29=0
81 | - llvmlite=0.16.0=py35_0
82 | - locket=0.2.0=py35_1
83 | - lxml=3.7.3=py35_0
84 | - markupsafe=0.23=py35_2
85 | - matplotlib=2.0.0=np112py35_0
86 | - mistune=0.7.4=py35_0
87 | - mkl=2017.0.1=0
88 | - mkl-service=1.1.2=py35_3
89 | - mpmath=0.19=py35_1
90 | - multipledispatch=0.4.9=py35_0
91 | - nbconvert=5.1.1=py35_0
92 | - nbformat=4.3.0=py35_0
93 | - networkx=1.11=py35_0
94 | - nltk=3.2.2=py35_0
95 | - nose=1.3.7=py35_1
96 | - notebook=4.4.1=py35_0
97 | - numba=0.31.0=np112py35_0
98 | - numexpr=2.6.2=np112py35_0
99 | - numpy=1.12.0=py35_0
100 | - numpydoc=0.6.0=py35_0
101 | - odo=0.5.0=py35_1
102 | - olefile=0.44=py35_0
103 | - openpyxl=2.4.1=py35_0
104 | - openssl=1.0.2k=0
105 | - pandas=0.19.2=np112py35_1
106 | - pandocfilters=1.4.1=py35_0
107 | - partd=0.3.7=py35_0
108 | - path.py=10.1=py35_0
109 | - pathlib2=2.2.0=py35_0
110 | - patsy=0.4.1=py35_0
111 | - pep8=1.7.0=py35_0
112 | - pexpect=4.2.1=py35_0
113 | - pickleshare=0.7.4=py35_0
114 | - pillow=3.4.2=py35_0
115 | - pip=9.0.1=py35_1
116 | - ply=3.10=py35_0
117 | - prompt_toolkit=1.0.13=py35_0
118 | - psutil=5.2.0=py35_0
119 | - ptyprocess=0.5.1=py35_0
120 | - py=1.4.32=py35_0
121 | - pyasn1=0.2.3=py35_0
122 | - pycosat=0.6.1=py35_1
123 | - pycparser=2.17=py35_0
124 | - pycrypto=2.6.1=py35_4
125 | - pycurl=7.43.0=py35_2
126 | - pyflakes=1.5.0=py35_0
127 | - pygments=2.2.0=py35_0
128 | - pylint=1.6.4=py35_1
129 | - pyopenssl=16.2.0=py35_0
130 | - pyparsing=2.1.4=py35_0
131 | - pyqt=5.6.0=py35_2
132 | - pytables=3.3.0=np112py35_0
133 | - pytest=3.0.6=py35_0
134 | - python=3.5.3=1
135 | - python-dateutil=2.6.0=py35_0
136 | - pytz=2016.10=py35_0
137 | - pyyaml=3.12=py35_0
138 | - pyzmq=16.0.2=py35_0
139 | - qt=5.6.2=0
140 | - qtawesome=0.4.4=py35_0
141 | - qtconsole=4.2.1=py35_1
142 | - qtpy=1.2.1=py35_0
143 | - readline=6.2=2
144 | - redis=3.2.0=0
145 | - redis-py=2.10.5=py35_0
146 | - requests=2.13.0=py35_0
147 | - rope=0.9.4=py35_1
148 | - ruamel_yaml=0.11.14=py35_1
149 | - scikit-image=0.12.3=np112py35_1
150 | - scikit-learn=0.18.1=np112py35_1
151 | - scipy=0.19.0=np112py35_0
152 | - seaborn=0.7.1=py35_0
153 | - setuptools=27.2.0=py35_0
154 | - simplegeneric=0.8.1=py35_1
155 | - singledispatch=3.4.0.3=py35_0
156 | - sip=4.18=py35_0
157 | - six=1.10.0=py35_0
158 | - snowballstemmer=1.2.1=py35_0
159 | - sockjs-tornado=1.0.3=py35_0
160 | - sphinx=1.5.1=py35_0
161 | - spyder=3.1.3=py35_0
162 | - sqlalchemy=1.1.6=py35_0
163 | - sqlite=3.13.0=0
164 | - statsmodels=0.8.0=np112py35_0
165 | - sympy=1.0=py35_0
166 | - terminado=0.6=py35_0
167 | - testpath=0.3=py35_0
168 | - tk=8.5.18=0
169 | - toolz=0.8.2=py35_0
170 | - tornado=4.4.2=py35_0
171 | - traitlets=4.3.2=py35_0
172 | - unicodecsv=0.14.1=py35_0
173 | - wcwidth=0.1.7=py35_0
174 | - werkzeug=0.12=py35_0
175 | - wheel=0.29.0=py35_0
176 | - widgetsnbextension=2.0.0=py35_0
177 | - wrapt=1.10.8=py35_0
178 | - xlrd=1.0.0=py35_0
179 | - xlsxwriter=0.9.6=py35_0
180 | - xlwt=1.2.0=py35_0
181 | - xz=5.2.2=1
182 | - yaml=0.1.6=0
183 | - zlib=1.2.8=3
184 | - pip:
185 | - backports.shutil-get-terminal-size==1.0.0
186 | - cvxopt==1.1.9
187 | - et-xmlfile==1.0.1
188 | - ipython-genutils==0.1.0
189 | - jupyter-client==5.0.0
190 | - jupyter-console==5.1.0
191 | - jupyter-core==4.3.0
192 | - keras==2.0.0
193 | - opencv-python==3.2.0.6
194 | - prompt-toolkit==1.0.13
195 | - protobuf==3.2.0
196 | - rope-py3k==0.9.4.post1
197 | - tables==3.3.0
198 | - tensorflow==1.0.0
199 | - theano==0.8.2
200 | - tqdm==4.11.2
201 |
--------------------------------------------------------------------------------
/requirements/aind-dl-mac.yml:
--------------------------------------------------------------------------------
1 | name: aind-dl
2 | channels:
3 | - damianavila82
4 | - defaults
5 | dependencies:
6 | - rise=4.0.0b1=py35_0
7 | - _license=1.1=py35_1
8 | - alabaster=0.7.10=py35_0
9 | - anaconda-client=1.6.2=py35_0
10 | - anaconda=custom=py35_0
11 | - anaconda-navigator=1.5.0=py35_0
12 | - anaconda-project=0.4.1=py35_0
13 | - appnope=0.1.0=py35_0
14 | - appscript=1.0.1=py35_0
15 | - astroid=1.4.9=py35_0
16 | - astropy=1.3=np112py35_0
17 | - babel=2.3.4=py35_0
18 | - backports=1.0=py35_0
19 | - beautifulsoup4=4.5.3=py35_0
20 | - bitarray=0.8.1=py35_0
21 | - blaze=0.10.1=py35_0
22 | - bleach=1.5.0=py35_0
23 | - bokeh=0.12.4=py35_0
24 | - boto=2.46.1=py35_0
25 | - bottleneck=1.2.0=np112py35_0
26 | - cffi=1.9.1=py35_0
27 | - chardet=2.3.0=py35_0
28 | - chest=0.2.3=py35_0
29 | - click=6.7=py35_0
30 | - cloudpickle=0.2.2=py35_0
31 | - clyent=1.2.2=py35_0
32 | - colorama=0.3.7=py35_0
33 | - configobj=5.0.6=py35_0
34 | - contextlib2=0.5.4=py35_0
35 | - cryptography=1.7.1=py35_0
36 | - curl=7.52.1=0
37 | - cycler=0.10.0=py35_0
38 | - cython=0.25.2=py35_0
39 | - cytoolz=0.8.2=py35_0
40 | - dask=0.14.0=py35_0
41 | - datashape=0.5.4=py35_0
42 | - decorator=4.0.11=py35_0
43 | - dill=0.2.5=py35_0
44 | - docutils=0.13.1=py35_0
45 | - entrypoints=0.2.2=py35_1
46 | - et_xmlfile=1.0.1=py35_0
47 | - fastcache=1.0.2=py35_1
48 | - flask=0.12=py35_0
49 | - flask-cors=3.0.2=py35_0
50 | - freetype=2.5.5=2
51 | - get_terminal_size=1.0.0=py35_0
52 | - gevent=1.2.1=py35_0
53 | - greenlet=0.4.12=py35_0
54 | - h5py=2.6.0=np112py35_2
55 | - hdf5=1.8.17=1
56 | - heapdict=1.0.0=py35_1
57 | - html5lib=0.999=py35_0
58 | - icu=54.1=0
59 | - idna=2.2=py35_0
60 | - imagesize=0.7.1=py35_0
61 | - ipykernel=4.5.2=py35_0
62 | - ipython=5.3.0=py35_0
63 | - ipython_genutils=0.1.0=py35_0
64 | - ipywidgets=6.0.0=py35_0
65 | - isort=4.2.5=py35_0
66 | - itsdangerous=0.24=py35_0
67 | - jbig=2.1=0
68 | - jdcal=1.3=py35_0
69 | - jedi=0.9.0=py35_1
70 | - jinja2=2.9.5=py35_0
71 | - jpeg=9b=0
72 | - jsonschema=2.5.1=py35_0
73 | - jupyter=1.0.0=py35_3
74 | - jupyter_client=5.0.0=py35_0
75 | - jupyter_console=5.1.0=py35_0
76 | - jupyter_core=4.3.0=py35_0
77 | - lazy-object-proxy=1.2.2=py35_0
78 | - libiconv=1.14=0
79 | - libpng=1.6.27=0
80 | - libtiff=4.0.6=3
81 | - libxml2=2.9.4=0
82 | - libxslt=1.1.29=0
83 | - llvmlite=0.16.0=py35_0
84 | - locket=0.2.0=py35_1
85 | - lxml=3.7.3=py35_0
86 | - markupsafe=0.23=py35_2
87 | - matplotlib=2.0.0=np112py35_0
88 | - mistune=0.7.4=py35_0
89 | - mkl=2017.0.1=0
90 | - mkl-service=1.1.2=py35_3
91 | - mpmath=0.19=py35_1
92 | - multipledispatch=0.4.9=py35_0
93 | - nbconvert=5.1.1=py35_0
94 | - nbformat=4.3.0=py35_0
95 | - networkx=1.11=py35_0
96 | - nltk=3.2.2=py35_0
97 | - nose=1.3.7=py35_1
98 | - notebook=4.4.1=py35_0
99 | - numba=0.31.0=np112py35_0
100 | - numexpr=2.6.2=np112py35_0
101 | - numpy=1.12.0=py35_0
102 | - numpydoc=0.6.0=py35_0
103 | - odo=0.5.0=py35_1
104 | - olefile=0.44=py35_0
105 | - openpyxl=2.4.1=py35_0
106 | - openssl=1.0.2k=0
107 | - pandas=0.19.2=np112py35_1
108 | - pandocfilters=1.4.1=py35_0
109 | - partd=0.3.7=py35_0
110 | - path.py=10.1=py35_0
111 | - pathlib2=2.2.0=py35_0
112 | - patsy=0.4.1=py35_0
113 | - pep8=1.7.0=py35_0
114 | - pexpect=4.2.1=py35_0
115 | - pickleshare=0.7.4=py35_0
116 | - pillow=4.0.0=py35_1
117 | - pip=9.0.1=py35_1
118 | - ply=3.10=py35_0
119 | - prompt_toolkit=1.0.13=py35_0
120 | - psutil=5.2.0=py35_0
121 | - ptyprocess=0.5.1=py35_0
122 | - py=1.4.32=py35_0
123 | - pyasn1=0.2.3=py35_0
124 | - pycosat=0.6.1=py35_1
125 | - pycparser=2.17=py35_0
126 | - pycrypto=2.6.1=py35_4
127 | - pycurl=7.43.0=py35_2
128 | - pyflakes=1.5.0=py35_0
129 | - pygments=2.2.0=py35_0
130 | - pylint=1.6.4=py35_1
131 | - pyopenssl=16.2.0=py35_0
132 | - pyparsing=2.1.4=py35_0
133 | - pyqt=5.6.0=py35_2
134 | - pytables=3.3.0=np112py35_0
135 | - pytest=3.0.6=py35_0
136 | - python=3.5.3=1
137 | - python-dateutil=2.6.0=py35_0
138 | - python.app=1.2=py35_4
139 | - pytz=2016.10=py35_0
140 | - pyyaml=3.12=py35_0
141 | - pyzmq=16.0.2=py35_0
142 | - qt=5.6.2=0
143 | - qtawesome=0.4.4=py35_0
144 | - qtconsole=4.2.1=py35_1
145 | - qtpy=1.2.1=py35_0
146 | - readline=6.2=2
147 | - redis=3.2.0=0
148 | - redis-py=2.10.5=py35_0
149 | - requests=2.13.0=py35_0
150 | - rope=0.9.4=py35_1
151 | - ruamel_yaml=0.11.14=py35_1
152 | - scikit-image=0.12.3=np112py35_1
153 | - scikit-learn=0.18.1=np112py35_1
154 | - scipy=0.19.0=np112py35_0
155 | - seaborn=0.7.1=py35_0
156 | - setuptools=27.2.0=py35_0
157 | - simplegeneric=0.8.1=py35_1
158 | - singledispatch=3.4.0.3=py35_0
159 | - sip=4.18=py35_0
160 | - six=1.10.0=py35_0
161 | - snowballstemmer=1.2.1=py35_0
162 | - sockjs-tornado=1.0.3=py35_0
163 | - sphinx=1.5.1=py35_0
164 | - spyder=3.1.3=py35_0
165 | - sqlalchemy=1.1.6=py35_0
166 | - sqlite=3.13.0=0
167 | - statsmodels=0.8.0=np112py35_0
168 | - sympy=1.0=py35_0
169 | - terminado=0.6=py35_0
170 | - testpath=0.3=py35_0
171 | - tk=8.5.18=0
172 | - toolz=0.8.2=py35_0
173 | - tornado=4.4.2=py35_0
174 | - traitlets=4.3.2=py35_0
175 | - unicodecsv=0.14.1=py35_0
176 | - wcwidth=0.1.7=py35_0
177 | - werkzeug=0.12=py35_0
178 | - wheel=0.29.0=py35_0
179 | - widgetsnbextension=2.0.0=py35_0
180 | - wrapt=1.10.8=py35_0
181 | - xlrd=1.0.0=py35_0
182 | - xlsxwriter=0.9.6=py35_0
183 | - xlwings=0.10.2=py35_0
184 | - xlwt=1.2.0=py35_0
185 | - xz=5.2.2=1
186 | - yaml=0.1.6=0
187 | - zlib=1.2.8=3
188 | - pip:
189 | - backports.shutil-get-terminal-size==1.0.0
190 | - cvxopt==1.1.9
191 | - et-xmlfile==1.0.1
192 | - ipython-genutils==0.1.0
193 | - jupyter-client==5.0.0
194 | - jupyter-console==5.1.0
195 | - jupyter-core==4.3.0
196 | - keras==2.0.0
197 | - opencv-python==3.2.0.6
198 | - prompt-toolkit==1.0.13
199 | - protobuf==3.2.0
200 | - rope-py3k==0.9.4.post1
201 | - tables==3.3.0
202 | - tensorflow==1.0.0
203 | - theano==0.8.2
204 | - tqdm==4.11.2
205 |
--------------------------------------------------------------------------------
/requirements/aind-dl-windows.yml:
--------------------------------------------------------------------------------
1 | name: aind-dl
2 | channels:
3 | - defaults
4 | dependencies:
5 | - _nb_ext_conf=0.3.0=py35_0
6 | - anaconda-client=1.6.2=py35_0
7 | - bleach=1.5.0=py35_0
8 | - bzip2=1.0.6=vc14_3
9 | - clyent=1.2.2=py35_0
10 | - colorama=0.3.7=py35_0
11 | - cycler=0.10.0=py35_0
12 | - decorator=4.0.11=py35_0
13 | - entrypoints=0.2.2=py35_1
14 | - freetype=2.5.5=vc14_2
15 | - h5py=2.7.0=np112py35_0
16 | - hdf5=1.8.15.1=vc14_4
17 | - html5lib=0.999=py35_0
18 | - icu=57.1=vc14_0
19 | - ipykernel=4.5.2=py35_0
20 | - ipython=5.3.0=py35_0
21 | - ipython_genutils=0.1.0=py35_0
22 | - ipywidgets=6.0.0=py35_0
23 | - jinja2=2.9.5=py35_0
24 | - jpeg=9b=vc14_0
25 | - jsonschema=2.5.1=py35_0
26 | - jupyter=1.0.0=py35_3
27 | - jupyter_client=5.0.0=py35_0
28 | - jupyter_console=5.1.0=py35_0
29 | - jupyter_core=4.3.0=py35_0
30 | - libpng=1.6.27=vc14_0
31 | - libtiff=4.0.6=vc14_3
32 | - markupsafe=0.23=py35_2
33 | - matplotlib=2.0.0=np112py35_0
34 | - mistune=0.7.4=py35_0
35 | - mkl=2017.0.1=0
36 | - nb_anacondacloud=1.2.0=py35_0
37 | - nb_conda=2.0.0=py35_0
38 | - nb_conda_kernels=2.0.0=py35_0
39 | - nbconvert=5.1.1=py35_0
40 | - nbformat=4.3.0=py35_0
41 | - nbpresent=3.0.2=py35_0
42 | - notebook=4.4.1=py35_0
43 | - numpy=1.12.1=py35_0
44 | - olefile=0.44=py35_0
45 | - openssl=1.0.2k=vc14_0
46 | - pandocfilters=1.4.1=py35_0
47 | - path.py=10.1=py35_0
48 | - pickleshare=0.7.4=py35_0
49 | - pillow=4.0.0=py35_1
50 | - pip=9.0.1=py35_1
51 | - prompt_toolkit=1.0.13=py35_0
52 | - pygments=2.2.0=py35_0
53 | - pyparsing=2.1.4=py35_0
54 | - pyqt=5.6.0=py35_2
55 | - python=3.5.3=0
56 | - python-dateutil=2.6.0=py35_0
57 | - pytz=2016.10=py35_0
58 | - pyyaml=3.12=py35_0
59 | - pyzmq=16.0.2=py35_0
60 | - qt=5.6.2=vc14_3
61 | - qtconsole=4.2.1=py35_2
62 | - requests=2.13.0=py35_0
63 | - scikit-learn=0.18.1=np112py35_1
64 | - scipy=0.19.0=np112py35_0
65 | - setuptools=27.2.0=py35_1
66 | - simplegeneric=0.8.1=py35_1
67 | - sip=4.18=py35_0
68 | - six=1.10.0=py35_0
69 | - testpath=0.3=py35_0
70 | - tk=8.5.18=vc14_0
71 | - tornado=4.4.2=py35_0
72 | - traitlets=4.3.2=py35_0
73 | - vs2015_runtime=14.0.25123=0
74 | - wcwidth=0.1.7=py35_0
75 | - wheel=0.29.0=py35_0
76 | - widgetsnbextension=2.0.0=py35_0
77 | - win_unicode_console=0.5=py35_0
78 | - zlib=1.2.8=vc14_3
79 | - pip:
80 | - ipython-genutils==0.1.0
81 | - jupyter-client==5.0.0
82 | - jupyter-console==5.1.0
83 | - jupyter-core==4.3.0
84 | - keras==2.0.2
85 | - nb-anacondacloud==1.2.0
86 | - nb-conda==2.0.0
87 | - nb-conda-kernels==2.0.0
88 | - opencv-python==3.1.0.0
89 | - prompt-toolkit==1.0.13
90 | - protobuf==3.2.0
91 | - tensorflow==1.0.1
92 | - theano==0.9.0
93 | - tqdm==4.11.2
94 | - win-unicode-console==0.5
95 |
96 |
97 |
--------------------------------------------------------------------------------
/requirements/requirements.txt:
--------------------------------------------------------------------------------
1 | opencv-python==3.2.0.6
2 | h5py==2.6.0
3 | matplotlib==2.0.0
4 | numpy==1.12.0
5 | scipy==0.18.1
6 | tqdm==4.11.2
7 | keras==2.0.2
8 | scikit-learn==0.18.1
9 | pillow==4.0.0
10 | tensorflow==1.0.0
11 | pandas==0.19.2
12 |
--------------------------------------------------------------------------------
/student_data.csv:
--------------------------------------------------------------------------------
1 | admit,gre,gpa,rank
2 | 0,380,3.61,3
3 | 1,660,3.67,3
4 | 1,800,4,1
5 | 1,640,3.19,4
6 | 0,520,2.93,4
7 | 1,760,3,2
8 | 1,560,2.98,1
9 | 0,400,3.08,2
10 | 1,540,3.39,3
11 | 0,700,3.92,2
12 | 0,800,4,4
13 | 0,440,3.22,1
14 | 1,760,4,1
15 | 0,700,3.08,2
16 | 1,700,4,1
17 | 0,480,3.44,3
18 | 0,780,3.87,4
19 | 0,360,2.56,3
20 | 0,800,3.75,2
21 | 1,540,3.81,1
22 | 0,500,3.17,3
23 | 1,660,3.63,2
24 | 0,600,2.82,4
25 | 0,680,3.19,4
26 | 1,760,3.35,2
27 | 1,800,3.66,1
28 | 1,620,3.61,1
29 | 1,520,3.74,4
30 | 1,780,3.22,2
31 | 0,520,3.29,1
32 | 0,540,3.78,4
33 | 0,760,3.35,3
34 | 0,600,3.4,3
35 | 1,800,4,3
36 | 0,360,3.14,1
37 | 0,400,3.05,2
38 | 0,580,3.25,1
39 | 0,520,2.9,3
40 | 1,500,3.13,2
41 | 1,520,2.68,3
42 | 0,560,2.42,2
43 | 1,580,3.32,2
44 | 1,600,3.15,2
45 | 0,500,3.31,3
46 | 0,700,2.94,2
47 | 1,460,3.45,3
48 | 1,580,3.46,2
49 | 0,500,2.97,4
50 | 0,440,2.48,4
51 | 0,400,3.35,3
52 | 0,640,3.86,3
53 | 0,440,3.13,4
54 | 0,740,3.37,4
55 | 1,680,3.27,2
56 | 0,660,3.34,3
57 | 1,740,4,3
58 | 0,560,3.19,3
59 | 0,380,2.94,3
60 | 0,400,3.65,2
61 | 0,600,2.82,4
62 | 1,620,3.18,2
63 | 0,560,3.32,4
64 | 0,640,3.67,3
65 | 1,680,3.85,3
66 | 0,580,4,3
67 | 0,600,3.59,2
68 | 0,740,3.62,4
69 | 0,620,3.3,1
70 | 0,580,3.69,1
71 | 0,800,3.73,1
72 | 0,640,4,3
73 | 0,300,2.92,4
74 | 0,480,3.39,4
75 | 0,580,4,2
76 | 0,720,3.45,4
77 | 0,720,4,3
78 | 0,560,3.36,3
79 | 1,800,4,3
80 | 0,540,3.12,1
81 | 1,620,4,1
82 | 0,700,2.9,4
83 | 0,620,3.07,2
84 | 0,500,2.71,2
85 | 0,380,2.91,4
86 | 1,500,3.6,3
87 | 0,520,2.98,2
88 | 0,600,3.32,2
89 | 0,600,3.48,2
90 | 0,700,3.28,1
91 | 1,660,4,2
92 | 0,700,3.83,2
93 | 1,720,3.64,1
94 | 0,800,3.9,2
95 | 0,580,2.93,2
96 | 1,660,3.44,2
97 | 0,660,3.33,2
98 | 0,640,3.52,4
99 | 0,480,3.57,2
100 | 0,700,2.88,2
101 | 0,400,3.31,3
102 | 0,340,3.15,3
103 | 0,580,3.57,3
104 | 0,380,3.33,4
105 | 0,540,3.94,3
106 | 1,660,3.95,2
107 | 1,740,2.97,2
108 | 1,700,3.56,1
109 | 0,480,3.13,2
110 | 0,400,2.93,3
111 | 0,480,3.45,2
112 | 0,680,3.08,4
113 | 0,420,3.41,4
114 | 0,360,3,3
115 | 0,600,3.22,1
116 | 0,720,3.84,3
117 | 0,620,3.99,3
118 | 1,440,3.45,2
119 | 0,700,3.72,2
120 | 1,800,3.7,1
121 | 0,340,2.92,3
122 | 1,520,3.74,2
123 | 1,480,2.67,2
124 | 0,520,2.85,3
125 | 0,500,2.98,3
126 | 0,720,3.88,3
127 | 0,540,3.38,4
128 | 1,600,3.54,1
129 | 0,740,3.74,4
130 | 0,540,3.19,2
131 | 0,460,3.15,4
132 | 1,620,3.17,2
133 | 0,640,2.79,2
134 | 0,580,3.4,2
135 | 0,500,3.08,3
136 | 0,560,2.95,2
137 | 0,500,3.57,3
138 | 0,560,3.33,4
139 | 0,700,4,3
140 | 0,620,3.4,2
141 | 1,600,3.58,1
142 | 0,640,3.93,2
143 | 1,700,3.52,4
144 | 0,620,3.94,4
145 | 0,580,3.4,3
146 | 0,580,3.4,4
147 | 0,380,3.43,3
148 | 0,480,3.4,2
149 | 0,560,2.71,3
150 | 1,480,2.91,1
151 | 0,740,3.31,1
152 | 1,800,3.74,1
153 | 0,400,3.38,2
154 | 1,640,3.94,2
155 | 0,580,3.46,3
156 | 0,620,3.69,3
157 | 1,580,2.86,4
158 | 0,560,2.52,2
159 | 1,480,3.58,1
160 | 0,660,3.49,2
161 | 0,700,3.82,3
162 | 0,600,3.13,2
163 | 0,640,3.5,2
164 | 1,700,3.56,2
165 | 0,520,2.73,2
166 | 0,580,3.3,2
167 | 0,700,4,1
168 | 0,440,3.24,4
169 | 0,720,3.77,3
170 | 0,500,4,3
171 | 0,600,3.62,3
172 | 0,400,3.51,3
173 | 0,540,2.81,3
174 | 0,680,3.48,3
175 | 1,800,3.43,2
176 | 0,500,3.53,4
177 | 1,620,3.37,2
178 | 0,520,2.62,2
179 | 1,620,3.23,3
180 | 0,620,3.33,3
181 | 0,300,3.01,3
182 | 0,620,3.78,3
183 | 0,500,3.88,4
184 | 0,700,4,2
185 | 1,540,3.84,2
186 | 0,500,2.79,4
187 | 0,800,3.6,2
188 | 0,560,3.61,3
189 | 0,,,2
190 | 0,560,3.07,2
191 | 0,500,3.35,2
192 | 1,640,2.94,2
193 | 0,800,3.54,3
194 | 0,640,3.76,3
195 | 0,380,3.59,4
196 | 1,600,3.47,2
197 | 0,560,3.59,2
198 | 0,660,3.07,3
199 | 1,400,3.23,4
200 | 0,600,3.63,3
201 | 0,580,3.77,4
202 | 0,800,3.31,3
203 | 1,580,3.2,2
204 | 1,700,4,1
205 | 0,420,3.92,4
206 | 1,600,3.89,1
207 | 1,780,3.8,3
208 | 0,740,3.54,1
209 | 1,640,3.63,1
210 | 0,540,3.16,3
211 | 0,580,3.5,2
212 | 0,740,3.34,4
213 | 0,580,3.02,2
214 | 0,,2.87,2
215 | 0,640,3.38,3
216 | 1,600,3.56,2
217 | 1,660,2.91,3
218 | 0,340,2.9,1
219 | 1,460,3.64,1
220 | 0,460,2.98,1
221 | 1,560,3.59,2
222 | 0,540,3.28,3
223 | 0,680,3.99,3
224 | 1,480,3.02,1
225 | 0,800,3.47,3
226 | 0,800,2.9,2
227 | 1,720,3.5,3
228 | 0,620,3.58,2
229 | 0,540,3.02,4
230 | 0,480,3.43,2
231 | 1,720,3.42,2
232 | 0,580,3.29,4
233 | 0,600,3.28,3
234 | 0,380,3.38,2
235 | 0,420,2.67,3
236 | 1,800,3.53,1
237 | 0,620,3.05,2
238 | 1,660,,
239 | 0,480,4,2
240 | 0,500,2.86,4
241 | 0,700,3.45,3
242 | 0,440,2.76,2
243 | 1,520,3.81,1
244 | 1,680,2.96,3
245 | 0,620,3.22,2
246 | 0,540,3.04,1
247 | 0,800,3.91,3
248 | 0,680,3.34,2
249 | 0,440,3.17,2
250 | 0,680,3.64,3
251 | 0,640,3.73,3
252 | 0,660,3.31,4
253 | 0,620,3.21,4
254 | 1,520,4,2
255 | 1,540,3.55,4
256 | 1,740,3.52,4
257 | 0,640,3.35,3
258 | 1,520,3.3,2
259 | 1,620,3.95,3
260 | 0,520,3.51,2
261 | 0,640,3.81,2
262 | 0,680,3.11,2
263 | 0,440,3.15,2
264 | 1,520,3.19,3
265 | 1,620,3.95,3
266 | 1,520,3.9,3
267 | 0,380,3.34,3
268 | 0,560,3.24,4
269 | 1,600,3.64,3
270 | 1,680,3.46,2
271 | 0,500,2.81,3
272 | 1,640,3.95,2
273 | 0,540,3.33,3
274 | 1,680,3.67,2
275 | 0,660,3.32,1
276 | 0,520,3.12,2
277 | 1,600,2.98,2
278 | 0,460,3.77,3
279 | 1,580,3.58,1
280 | 1,680,3,4
281 | 1,660,3.14,2
282 | 0,660,3.94,2
283 | 0,360,3.27,3
284 | 0,660,3.45,4
285 | 0,520,3.1,4
286 | 1,440,3.39,2
287 | 0,600,3.31,4
288 | 1,800,3.22,1
289 | 1,660,3.7,4
290 | 0,800,3.15,4
291 | 0,420,2.26,4
292 | 1,620,3.45,2
293 | 0,800,2.78,2
294 | 0,680,3.7,2
295 | 0,800,3.97,1
296 | 0,480,2.55,1
297 | 0,520,3.25,3
298 | 0,560,3.16,1
299 | 0,460,3.07,2
300 | 0,540,3.5,2
301 | 0,720,3.4,3
302 | 0,640,3.3,2
303 | 1,660,3.6,3
304 | 1,400,3.15,2
305 | 1,680,3.98,2
306 | 0,220,2.83,3
307 | 0,580,3.46,4
308 | 1,540,3.17,1
309 | 0,580,3.51,2
310 | 0,540,3.13,2
311 | 0,440,2.98,3
312 | 0,560,4,3
313 | 0,660,3.67,2
314 | 0,660,3.77,3
315 | 1,520,3.65,4
316 | 0,540,3.46,4
317 | 1,300,2.84,2
318 | 1,340,3,2
319 | 1,780,3.63,4
320 | 1,480,3.71,4
321 | 0,540,3.28,1
322 | 0,460,3.14,3
323 | 0,460,3.58,2
324 | 0,500,3.01,4
325 | 0,420,2.69,2
326 | 0,520,2.7,3
327 | 0,680,3.9,1
328 | 0,680,3.31,2
329 | 1,560,3.48,2
330 | 0,580,3.34,2
331 | 0,500,2.93,4
332 | 0,740,4,3
333 | 0,660,3.59,3
334 | 0,420,2.96,1
335 | 0,560,3.43,3
336 | 1,460,3.64,3
337 | 1,620,3.71,1
338 | 0,520,3.15,3
339 | 0,620,3.09,4
340 | 0,540,3.2,1
341 | 1,660,3.47,3
342 | 0,500,3.23,4
343 | 1,560,2.65,3
344 | 0,500,3.95,4
345 | 0,580,3.06,2
346 | 0,520,3.35,3
347 | 0,500,3.03,3
348 | 0,600,3.35,2
349 | 0,580,3.8,2
350 | 0,400,3.36,2
351 | 0,620,2.85,2
352 | 1,780,4,2
353 | 0,620,3.43,3
354 | 1,580,3.12,3
355 | 0,700,3.52,2
356 | 1,540,3.78,2
357 | 1,760,2.81,1
358 | 0,700,3.27,2
359 | 0,720,3.31,1
360 | 1,560,3.69,3
361 | 0,720,3.94,3
362 | 1,520,4,1
363 | 1,540,3.49,1
364 | 0,680,3.14,2
365 | 0,460,3.44,2
366 | 1,560,3.36,1
367 | 0,480,2.78,3
368 | 0,460,2.93,3
369 | 0,620,3.63,3
370 | 0,580,4,1
371 | 0,800,3.89,2
372 | 1,540,3.77,2
373 | 1,680,3.76,3
374 | 1,680,2.42,1
375 | 1,620,3.37,1
376 | 0,560,3.78,2
377 | 0,560,3.49,4
378 | 0,620,3.63,2
379 | 1,800,4,2
380 | 0,640,3.12,3
381 | 0,540,2.7,2
382 | 0,700,3.65,2
383 | 1,540,3.49,2
384 | 0,540,3.51,2
385 | 0,660,4,1
386 | 1,480,2.62,2
387 | 0,420,3.02,1
388 | 1,740,3.86,2
389 | 0,580,3.36,2
390 | 0,640,3.17,2
391 | 0,640,3.51,2
392 | 1,800,3.05,2
393 | 1,660,3.88,2
394 | 1,600,3.38,3
395 | 1,620,3.75,2
396 | 1,460,3.99,3
397 | 0,620,4,2
398 | 0,560,3.04,3
399 | 0,460,2.63,2
400 | 0,700,3.65,2
401 | 0,600,3.89,3
--------------------------------------------------------------------------------