├── .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 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | "
admitgregparank
00380.03.613.0
11660.03.673.0
21800.04.001.0
31640.03.194.0
40520.02.934.0
51760.03.002.0
61560.02.981.0
70400.03.082.0
81540.03.393.0
90700.03.922.0
100800.04.004.0
110440.03.221.0
121760.04.001.0
130700.03.082.0
141700.04.001.0
150480.03.443.0
160780.03.874.0
170360.02.563.0
180800.03.752.0
191540.03.811.0
200500.03.173.0
211660.03.632.0
220600.02.824.0
230680.03.194.0
241760.03.352.0
251800.03.661.0
261620.03.611.0
271520.03.744.0
281780.03.222.0
290520.03.291.0
...............
3701540.03.772.0
3711680.03.763.0
3721680.02.421.0
3731620.03.371.0
3740560.03.782.0
3750560.03.494.0
3760620.03.632.0
3771800.04.002.0
3780640.03.123.0
3790540.02.702.0
3800700.03.652.0
3811540.03.492.0
3820540.03.512.0
3830660.04.001.0
3841480.02.622.0
3850420.03.021.0
3861740.03.862.0
3870580.03.362.0
3880640.03.172.0
3890640.03.512.0
3901800.03.052.0
3911660.03.882.0
3921600.03.383.0
3931620.03.752.0
3941460.03.993.0
3950620.04.002.0
3960560.03.043.0
3970460.02.632.0
3980700.03.652.0
3990600.03.893.0
\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": "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\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 --------------------------------------------------------------------------------