├── .gitignore ├── .ipynb_checkpoints └── Convolution_Op-checkpoint.ipynb ├── Class1 └── June_ML_Intro.pptx.pdf ├── Class10 ├── .ipynb_checkpoints │ └── PCA-checkpoint.ipynb └── PCA.ipynb ├── Class11 ├── .ipynb_checkpoints │ └── Linear_Regression-checkpoint.ipynb └── Linear_Regression.ipynb ├── Class12 ├── .ipynb_checkpoints │ └── Logistic_Regression-checkpoint.ipynb └── Logistic_Regression.ipynb ├── Class13 ├── .ipynb_checkpoints │ ├── Intro_to_NN-checkpoint.ipynb │ └── Non_Linear_Decision_Boundary-checkpoint.ipynb ├── Intro_to_NN.ipynb └── Non_Linear_Decision_Boundary.ipynb ├── Class15 ├── .ipynb_checkpoints │ ├── Classification_on_MNIST-checkpoint.ipynb │ └── Simple_Autoencoder-checkpoint.ipynb ├── Autoencoder_Sequential.ipynb ├── Classification_on_MNIST.ipynb └── Simple_Autoencoder.ipynb ├── Class16 ├── .ipynb_checkpoints │ ├── Conv_Op-checkpoint.ipynb │ └── Convolution_Networks-checkpoint.ipynb ├── Conv_Op.ipynb ├── Convolution_Networks.ipynb └── img.jpg ├── Class17 ├── Transfer_Learning.ipynb └── convolutional_network_tutorial.ipynb ├── Class18 ├── .ipynb_checkpoints │ ├── Markov_Chain-Text_Gen-checkpoint.ipynb │ └── Markov_Chains_text-generation-checkpoint.ipynb ├── Markov_Chains_text-generation.ipynb └── input.txt ├── Class19 ├── .ipynb_checkpoints │ └── LSTM_SentimentAnalysis-checkpoint.ipynb └── LSTM_Sentiment-Analysis.ipynb ├── Class2 ├── .ipynb_checkpoints │ ├── Intro_to_Python-checkpoint.ipynb │ ├── Libraries-checkpoint.ipynb │ └── Statistical_Computation-checkpoint.ipynb ├── Intro_to_Python.ipynb ├── Libraries.ipynb ├── Statistical_Computation.ipynb └── movie_metadata.csv ├── Class21 ├── .ipynb_checkpoints │ ├── Add_Boundary-checkpoint.ipynb │ └── Working_with_Segmentation_Masks-checkpoint.ipynb ├── Add_Boundary.ipynb ├── Working_with_Segmentation_Masks.ipynb ├── images │ ├── anf_64540_01_model1.jpg │ ├── anf_64540_01_model1_Mask_front_inspect.png │ ├── anf_65268_01_model1.jpg │ └── anf_65268_01_model1_Mask_front.png └── mask_wo_index │ ├── anf_64540_01_model1_Mask_front_inspect.png │ └── anf_65268_01_model1_Mask_front.png ├── Class3 ├── .ipynb_checkpoints │ ├── Doubts_and_Discussions-checkpoint.ipynb │ └── K_Nearest_Neighbors-checkpoint.ipynb ├── Doubts_and_Discussions.ipynb └── K_Nearest_Neighbors.ipynb ├── Class4 ├── .ipynb_checkpoints │ ├── Assignment-Color_Extraction-checkpoint.ipynb │ ├── Doubts-checkpoint.ipynb │ └── KMeans_Clustering-checkpoint.ipynb ├── Assignment-Color_Extraction.ipynb ├── Doubts.ipynb ├── KMeans_Clustering.ipynb └── im.jpg ├── Class5 ├── .ipynb_checkpoints │ └── Doubts-checkpoint.ipynb └── Doubts.ipynb ├── Class6 ├── .ipynb_checkpoints │ ├── Doubts_and_Discussions-checkpoint.ipynb │ ├── Untitled-checkpoint.ipynb │ └── Web_Scraping_to_CSV-checkpoint.ipynb ├── Doubts_and_Discussions.ipynb ├── Web_Scraping_to_CSV.ipynb └── imdb.csv ├── Class7 ├── .ipynb_checkpoints │ └── Decision_Tree_and_RF-checkpoint.ipynb ├── DT_Dataset.png ├── Decision_Tree_and_RF.ipynb └── titanic.csv ├── Class8 ├── .ipynb_checkpoints │ └── Naive_Bayes-checkpoint.ipynb ├── NB_dataset.png ├── Naive_Bayes.ipynb └── mushrooms.csv ├── Class9 ├── .ipynb_checkpoints │ ├── CamScanner-checkpoint.ipynb │ └── Challenge-checkpoint.ipynb ├── CamScanner.ipynb ├── CamScanner.py ├── CamScanner_Modular.ipynb ├── Challenge.ipynb ├── page.jpg ├── receipt.jpg ├── sales_data_test.csv ├── sales_data_training.csv └── test_s1.jpg ├── Project ├── Gesture_Record.py └── README.md ├── README.md └── assignments └── python_assignment.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/Convolution_Op-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class1/June_ML_Intro.pptx.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class1/June_ML_Intro.pptx.pdf -------------------------------------------------------------------------------- /Class10/.ipynb_checkpoints/PCA-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class11/.ipynb_checkpoints/Linear_Regression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "%matplotlib inline\n", 12 | "import pandas as pd\n", 13 | "from sklearn.datasets import make_regression" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": { 20 | "scrolled": true 21 | }, 22 | "outputs": [ 23 | { 24 | "name": "stdout", 25 | "output_type": "stream", 26 | "text": [ 27 | "(500, 1)\n", 28 | "(500,)\n" 29 | ] 30 | }, 31 | { 32 | "data": { 33 | "image/png": "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\n", 34 | "text/plain": [ 35 | "
" 36 | ] 37 | }, 38 | "metadata": {}, 39 | "output_type": "display_data" 40 | } 41 | ], 42 | "source": [ 43 | "(X, y) = make_regression(n_samples=500, noise=6.5, bias=7.5, n_features=1)\n", 44 | "print X.shape\n", 45 | "print y.shape\n", 46 | "\n", 47 | "plt.scatter(X, y)\n", 48 | "plt.show()" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": 8, 54 | "metadata": {}, 55 | "outputs": [], 56 | "source": [ 57 | "'''Functions Needed'''\n", 58 | "def hypothesis(x, w):\n", 59 | " x0 = 1\n", 60 | " h = w[0]*x0 + w[1]*x\n", 61 | " return h\n", 62 | "\n", 63 | "def get_error(x, w, y_true):\n", 64 | " error = 0.0\n", 65 | " m = x.shape[0]\n", 66 | " for ix in range(m):\n", 67 | " error += (hypothesis(x, w) - y_true)**2\n", 68 | " error = error/2*m\n", 69 | " return error" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": 4, 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [ 78 | "def get_grads(x, w, y_true):\n", 79 | " pass" 80 | ] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "execution_count": 6, 85 | "metadata": {}, 86 | "outputs": [], 87 | "source": [ 88 | "def gradient_descent(x, w, y_true, learning_rate=0.01):\n", 89 | " error = get_error(x, w, y_true)\n", 90 | " \n", 91 | " [grad_0, grad_1] = get_grads(x, w, y_true)\n", 92 | " \n", 93 | " w[0] = w[0] - learning_rate*grad_0\n", 94 | " w[1] = w[1] - learning_rate*grad_1\n", 95 | " \n", 96 | " return w, error" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": null, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [ 105 | "num_epochs = 100\n", 106 | "lr = 0.01\n", 107 | "error_logs = []\n", 108 | "W = np.array([0.1, 0.1])\n", 109 | "for ix in range(num_epochs):\n", 110 | " W, error = gradient_descent(X_train, W, Y_train, learning_rate=lr)\n", 111 | " error_logs.append(error)" 112 | ] 113 | }, 114 | { 115 | "cell_type": "code", 116 | "execution_count": null, 117 | "metadata": {}, 118 | "outputs": [], 119 | "source": [ 120 | "plt.plot(error_logs)\n", 121 | "plt.show()" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": null, 127 | "metadata": {}, 128 | "outputs": [], 129 | "source": [] 130 | } 131 | ], 132 | "metadata": { 133 | "kernelspec": { 134 | "display_name": "Python 2", 135 | "language": "python", 136 | "name": "python2" 137 | }, 138 | "language_info": { 139 | "codemirror_mode": { 140 | "name": "ipython", 141 | "version": 2 142 | }, 143 | "file_extension": ".py", 144 | "mimetype": "text/x-python", 145 | "name": "python", 146 | "nbconvert_exporter": "python", 147 | "pygments_lexer": "ipython2", 148 | "version": "2.7.15" 149 | } 150 | }, 151 | "nbformat": 4, 152 | "nbformat_minor": 2 153 | } 154 | -------------------------------------------------------------------------------- /Class12/.ipynb_checkpoints/Logistic_Regression-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class13/.ipynb_checkpoints/Intro_to_NN-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class13/.ipynb_checkpoints/Non_Linear_Decision_Boundary-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class13/Intro_to_NN.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "%matplotlib inline\n", 12 | "from sklearn.datasets import make_circles\n", 13 | "from keras.layers import Dense, Activation\n", 14 | "from keras.models import Sequential\n", 15 | "from keras.utils import np_utils" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 2, 21 | "metadata": {}, 22 | "outputs": [], 23 | "source": [ 24 | "X, y = make_circles(n_samples=1000, factor=0.4)" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 3, 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "name": "stdout", 34 | "output_type": "stream", 35 | "text": [ 36 | "(1000, 2) (1000,)\n" 37 | ] 38 | } 39 | ], 40 | "source": [ 41 | "print X.shape, y.shape" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 4, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "data": { 51 | "image/png": "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\n", 52 | "text/plain": [ 53 | "
" 54 | ] 55 | }, 56 | "metadata": {}, 57 | "output_type": "display_data" 58 | } 59 | ], 60 | "source": [ 61 | "for ix in range(X.shape[0]):\n", 62 | " if y[ix] == 0:\n", 63 | " plt.scatter(X[ix, 0], X[ix, 1], c='r')\n", 64 | " else:\n", 65 | " plt.scatter(X[ix, 0], X[ix, 1], c='b')\n", 66 | " \n", 67 | "plt.show()" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 7, 73 | "metadata": {}, 74 | "outputs": [ 75 | { 76 | "name": "stdout", 77 | "output_type": "stream", 78 | "text": [ 79 | "(700,)\n", 80 | "(300,)\n" 81 | ] 82 | } 83 | ], 84 | "source": [ 85 | "split = int(0.7*X.shape[0])\n", 86 | "X_train = X[:split]\n", 87 | "X_test = X[split:]\n", 88 | "\n", 89 | "y_train = y[:split]\n", 90 | "y_test = y[split:]\n", 91 | "\n", 92 | "print y_train.shape\n", 93 | "print y_test.shape" 94 | ] 95 | }, 96 | { 97 | "cell_type": "code", 98 | "execution_count": 9, 99 | "metadata": {}, 100 | "outputs": [ 101 | { 102 | "name": "stdout", 103 | "output_type": "stream", 104 | "text": [ 105 | "[0 1]\n" 106 | ] 107 | } 108 | ], 109 | "source": [ 110 | "print np.unique(y_train)" 111 | ] 112 | }, 113 | { 114 | "cell_type": "code", 115 | "execution_count": 10, 116 | "metadata": {}, 117 | "outputs": [ 118 | { 119 | "name": "stdout", 120 | "output_type": "stream", 121 | "text": [ 122 | "(700, 2)\n", 123 | "(300, 2)\n" 124 | ] 125 | } 126 | ], 127 | "source": [ 128 | "Y_train = np_utils.to_categorical(y_train)\n", 129 | "Y_test = np_utils.to_categorical(y_test)\n", 130 | "print Y_train.shape\n", 131 | "print Y_test.shape" 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 12, 137 | "metadata": {}, 138 | "outputs": [ 139 | { 140 | "name": "stdout", 141 | "output_type": "stream", 142 | "text": [ 143 | "0 [1. 0.]\n", 144 | "0 [1. 0.]\n", 145 | "0 [1. 0.]\n", 146 | "1 [0. 1.]\n", 147 | "1 [0. 1.]\n", 148 | "0 [1. 0.]\n", 149 | "0 [1. 0.]\n", 150 | "0 [1. 0.]\n", 151 | "0 [1. 0.]\n", 152 | "0 [1. 0.]\n" 153 | ] 154 | } 155 | ], 156 | "source": [ 157 | "for ix in range(10):\n", 158 | " print y_test[ix], Y_test[ix]" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": 29, 164 | "metadata": {}, 165 | "outputs": [ 166 | { 167 | "name": "stdout", 168 | "output_type": "stream", 169 | "text": [ 170 | "_________________________________________________________________\n", 171 | "Layer (type) Output Shape Param # \n", 172 | "=================================================================\n", 173 | "dense_12 (Dense) (None, 5) 15 \n", 174 | "_________________________________________________________________\n", 175 | "activation_7 (Activation) (None, 5) 0 \n", 176 | "_________________________________________________________________\n", 177 | "dense_13 (Dense) (None, 2) 12 \n", 178 | "_________________________________________________________________\n", 179 | "activation_8 (Activation) (None, 2) 0 \n", 180 | "=================================================================\n", 181 | "Total params: 27\n", 182 | "Trainable params: 27\n", 183 | "Non-trainable params: 0\n", 184 | "_________________________________________________________________\n" 185 | ] 186 | } 187 | ], 188 | "source": [ 189 | "model = Sequential()\n", 190 | "# model.add(Dense(2, input_shape=(2,)))\n", 191 | "# model.add(Activation('relu'))\n", 192 | "model.add(Dense(5, input_shape=(2,)))\n", 193 | "model.add(Activation('relu'))\n", 194 | "model.add(Dense(2))\n", 195 | "model.add(Activation('softmax'))\n", 196 | "\n", 197 | "model.summary()" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 30, 203 | "metadata": {}, 204 | "outputs": [], 205 | "source": [ 206 | "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": 31, 212 | "metadata": {}, 213 | "outputs": [ 214 | { 215 | "name": "stdout", 216 | "output_type": "stream", 217 | "text": [ 218 | "Train on 700 samples, validate on 300 samples\n", 219 | "Epoch 1/15\n", 220 | "700/700 [==============================] - 0s 38us/step - loss: 0.6311 - acc: 0.5529 - val_loss: 0.6124 - val_acc: 0.5633\n", 221 | "Epoch 2/15\n", 222 | "700/700 [==============================] - 0s 37us/step - loss: 0.6133 - acc: 0.5643 - val_loss: 0.5977 - val_acc: 0.5700\n", 223 | "Epoch 3/15\n", 224 | "700/700 [==============================] - 0s 36us/step - loss: 0.5962 - acc: 0.5914 - val_loss: 0.5820 - val_acc: 0.5867\n", 225 | "Epoch 4/15\n", 226 | "700/700 [==============================] - 0s 38us/step - loss: 0.5783 - acc: 0.6600 - val_loss: 0.5648 - val_acc: 0.6867\n", 227 | "Epoch 5/15\n", 228 | "700/700 [==============================] - 0s 35us/step - loss: 0.5600 - acc: 0.7400 - val_loss: 0.5467 - val_acc: 0.7633\n", 229 | "Epoch 6/15\n", 230 | "700/700 [==============================] - 0s 38us/step - loss: 0.5410 - acc: 0.8214 - val_loss: 0.5278 - val_acc: 0.8600\n", 231 | "Epoch 7/15\n", 232 | "700/700 [==============================] - 0s 36us/step - loss: 0.5214 - acc: 0.9257 - val_loss: 0.5080 - val_acc: 0.9367\n", 233 | "Epoch 8/15\n", 234 | "700/700 [==============================] - 0s 36us/step - loss: 0.5013 - acc: 0.9443 - val_loss: 0.4878 - val_acc: 0.9433\n", 235 | "Epoch 9/15\n", 236 | "700/700 [==============================] - 0s 36us/step - loss: 0.4808 - acc: 0.9543 - val_loss: 0.4669 - val_acc: 0.9567\n", 237 | "Epoch 10/15\n", 238 | "700/700 [==============================] - 0s 38us/step - loss: 0.4599 - acc: 0.9586 - val_loss: 0.4462 - val_acc: 0.9600\n", 239 | "Epoch 11/15\n", 240 | "700/700 [==============================] - 0s 35us/step - loss: 0.4388 - acc: 0.9700 - val_loss: 0.4256 - val_acc: 0.9767\n", 241 | "Epoch 12/15\n", 242 | "700/700 [==============================] - 0s 38us/step - loss: 0.4180 - acc: 0.9771 - val_loss: 0.4046 - val_acc: 0.9933\n", 243 | "Epoch 13/15\n", 244 | "700/700 [==============================] - 0s 37us/step - loss: 0.3978 - acc: 0.9900 - val_loss: 0.3849 - val_acc: 1.0000\n", 245 | "Epoch 14/15\n", 246 | "700/700 [==============================] - 0s 36us/step - loss: 0.3777 - acc: 0.9986 - val_loss: 0.3649 - val_acc: 1.0000\n", 247 | "Epoch 15/15\n", 248 | "700/700 [==============================] - 0s 38us/step - loss: 0.3582 - acc: 1.0000 - val_loss: 0.3454 - val_acc: 1.0000\n" 249 | ] 250 | }, 251 | { 252 | "data": { 253 | "text/plain": [ 254 | "" 255 | ] 256 | }, 257 | "execution_count": 31, 258 | "metadata": {}, 259 | "output_type": "execute_result" 260 | } 261 | ], 262 | "source": [ 263 | "model.fit(X_train, Y_train, batch_size=10, epochs=15, validation_data=[X_test, Y_test])" 264 | ] 265 | }, 266 | { 267 | "cell_type": "code", 268 | "execution_count": null, 269 | "metadata": {}, 270 | "outputs": [], 271 | "source": [] 272 | }, 273 | { 274 | "cell_type": "code", 275 | "execution_count": null, 276 | "metadata": {}, 277 | "outputs": [], 278 | "source": [] 279 | } 280 | ], 281 | "metadata": { 282 | "kernelspec": { 283 | "display_name": "Python 2", 284 | "language": "python", 285 | "name": "python2" 286 | }, 287 | "language_info": { 288 | "codemirror_mode": { 289 | "name": "ipython", 290 | "version": 2 291 | }, 292 | "file_extension": ".py", 293 | "mimetype": "text/x-python", 294 | "name": "python", 295 | "nbconvert_exporter": "python", 296 | "pygments_lexer": "ipython2", 297 | "version": "2.7.15" 298 | } 299 | }, 300 | "nbformat": 4, 301 | "nbformat_minor": 2 302 | } 303 | -------------------------------------------------------------------------------- /Class13/Non_Linear_Decision_Boundary.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "%matplotlib inline\n", 12 | "from sklearn.datasets import make_circles" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 3, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "X, y = make_circles(n_samples=1000, factor=0.4)" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 8, 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "name": "stdout", 31 | "output_type": "stream", 32 | "text": [ 33 | "(1000, 2)\n", 34 | "(1000,)\n" 35 | ] 36 | } 37 | ], 38 | "source": [ 39 | "print X.shape\n", 40 | "print y.shape" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 12, 46 | "metadata": {}, 47 | "outputs": [ 48 | { 49 | "name": "stdout", 50 | "output_type": "stream", 51 | "text": [ 52 | "(1000, 1)\n" 53 | ] 54 | } 55 | ], 56 | "source": [ 57 | "y2 = y.reshape((1000, 1))\n", 58 | "print y2.shape" 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 4, 64 | "metadata": {}, 65 | "outputs": [ 66 | { 67 | "data": { 68 | "image/png": "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\n", 69 | "text/plain": [ 70 | "
" 71 | ] 72 | }, 73 | "metadata": {}, 74 | "output_type": "display_data" 75 | } 76 | ], 77 | "source": [ 78 | "for ix in range(X.shape[0]):\n", 79 | " if y[ix] == 0:\n", 80 | " plt.scatter(X[ix, 0], X[ix, 1], c='r')\n", 81 | " else:\n", 82 | " plt.scatter(X[ix, 0], X[ix, 1], c='b')\n", 83 | "\n", 84 | "plt.show()" 85 | ] 86 | }, 87 | { 88 | "cell_type": "code", 89 | "execution_count": 13, 90 | "metadata": {}, 91 | "outputs": [ 92 | { 93 | "name": "stdout", 94 | "output_type": "stream", 95 | "text": [ 96 | "(1000, 3)\n" 97 | ] 98 | } 99 | ], 100 | "source": [ 101 | "data = np.hstack((X, y2))\n", 102 | "print data.shape" 103 | ] 104 | }, 105 | { 106 | "cell_type": "code", 107 | "execution_count": 14, 108 | "metadata": {}, 109 | "outputs": [ 110 | { 111 | "data": { 112 | "text/plain": [ 113 | "array([[-0.38865269, 0.0945996 , 1. ],\n", 114 | " [-0.03514048, -0.39845344, 1. ],\n", 115 | " [-0.19270147, 0.35052267, 1. ],\n", 116 | " [-0.27013312, -0.29500525, 1. ],\n", 117 | " [ 0.98865174, -0.15022559, 0. ],\n", 118 | " [ 0.65658576, 0.75425138, 0. ],\n", 119 | " [ 0.1140077 , -0.38340872, 1. ],\n", 120 | " [-0.1140077 , -0.38340872, 1. ],\n", 121 | " [ 0.38194582, 0.11881663, 1. ],\n", 122 | " [ 0.56726895, -0.8235326 , 0. ],\n", 123 | " [-0.96538164, 0.26084151, 0. ],\n", 124 | " [ 0.3954607 , -0.06009024, 1. ],\n", 125 | " [ 0.25882238, -0.304977 , 1. ],\n", 126 | " [-0.02009773, 0.39949478, 1. ],\n", 127 | " [-0.77051324, 0.63742399, 0. ]])" 128 | ] 129 | }, 130 | "execution_count": 14, 131 | "metadata": {}, 132 | "output_type": "execute_result" 133 | } 134 | ], 135 | "source": [ 136 | "data[:15]" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 5, 142 | "metadata": {}, 143 | "outputs": [ 144 | { 145 | "name": "stdout", 146 | "output_type": "stream", 147 | "text": [ 148 | "(700, 2) (700,)\n", 149 | "(300, 2) (300,)\n" 150 | ] 151 | } 152 | ], 153 | "source": [ 154 | "split = int(0.7*X.shape[0])\n", 155 | "X_train = X[:split]\n", 156 | "X_test = X[split:]\n", 157 | "\n", 158 | "Y_train = y[:split]\n", 159 | "Y_test = y[split:]\n", 160 | "\n", 161 | "print X_train.shape, Y_train.shape\n", 162 | "print X_test.shape, Y_test.shape" 163 | ] 164 | }, 165 | { 166 | "cell_type": "code", 167 | "execution_count": 15, 168 | "metadata": {}, 169 | "outputs": [], 170 | "source": [ 171 | "from sklearn.linear_model import LogisticRegression" 172 | ] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "execution_count": 16, 177 | "metadata": {}, 178 | "outputs": [ 179 | { 180 | "data": { 181 | "text/plain": [ 182 | "0.5866666666666667" 183 | ] 184 | }, 185 | "execution_count": 16, 186 | "metadata": {}, 187 | "output_type": "execute_result" 188 | } 189 | ], 190 | "source": [ 191 | "ls = LogisticRegression()\n", 192 | "ls.fit(X_train, Y_train)\n", 193 | "ls.score(X_test, Y_test)" 194 | ] 195 | }, 196 | { 197 | "cell_type": "code", 198 | "execution_count": null, 199 | "metadata": {}, 200 | "outputs": [], 201 | "source": [] 202 | } 203 | ], 204 | "metadata": { 205 | "kernelspec": { 206 | "display_name": "Python 2", 207 | "language": "python", 208 | "name": "python2" 209 | }, 210 | "language_info": { 211 | "codemirror_mode": { 212 | "name": "ipython", 213 | "version": 2 214 | }, 215 | "file_extension": ".py", 216 | "mimetype": "text/x-python", 217 | "name": "python", 218 | "nbconvert_exporter": "python", 219 | "pygments_lexer": "ipython2", 220 | "version": "2.7.15" 221 | } 222 | }, 223 | "nbformat": 4, 224 | "nbformat_minor": 2 225 | } 226 | -------------------------------------------------------------------------------- /Class15/.ipynb_checkpoints/Classification_on_MNIST-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class15/.ipynb_checkpoints/Simple_Autoencoder-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class15/Classification_on_MNIST.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "%matplotlib inline\n", 12 | "import pandas as pd\n", 13 | "from keras.utils import np_utils\n", 14 | "from keras.models import Sequential\n", 15 | "from keras.layers import Dense, Activation, Input" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 2, 21 | "metadata": {}, 22 | "outputs": [], 23 | "source": [ 24 | "ds = pd.read_csv('/Users/ayush/Downloads/all/train.csv')" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 3, 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "data": { 34 | "text/html": [ 35 | "
\n", 36 | "\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 | "
labelpixel0pixel1pixel2pixel3pixel4pixel5pixel6pixel7pixel8...pixel774pixel775pixel776pixel777pixel778pixel779pixel780pixel781pixel782pixel783
01000000000...0000000000
10000000000...0000000000
21000000000...0000000000
34000000000...0000000000
40000000000...0000000000
\n", 199 | "

5 rows × 785 columns

\n", 200 | "
" 201 | ], 202 | "text/plain": [ 203 | " label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n", 204 | "0 1 0 0 0 0 0 0 0 0 \n", 205 | "1 0 0 0 0 0 0 0 0 0 \n", 206 | "2 1 0 0 0 0 0 0 0 0 \n", 207 | "3 4 0 0 0 0 0 0 0 0 \n", 208 | "4 0 0 0 0 0 0 0 0 0 \n", 209 | "\n", 210 | " pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 \\\n", 211 | "0 0 ... 0 0 0 0 0 \n", 212 | "1 0 ... 0 0 0 0 0 \n", 213 | "2 0 ... 0 0 0 0 0 \n", 214 | "3 0 ... 0 0 0 0 0 \n", 215 | "4 0 ... 0 0 0 0 0 \n", 216 | "\n", 217 | " pixel779 pixel780 pixel781 pixel782 pixel783 \n", 218 | "0 0 0 0 0 0 \n", 219 | "1 0 0 0 0 0 \n", 220 | "2 0 0 0 0 0 \n", 221 | "3 0 0 0 0 0 \n", 222 | "4 0 0 0 0 0 \n", 223 | "\n", 224 | "[5 rows x 785 columns]" 225 | ] 226 | }, 227 | "execution_count": 3, 228 | "metadata": {}, 229 | "output_type": "execute_result" 230 | } 231 | ], 232 | "source": [ 233 | "ds.head()" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 4, 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "name": "stdout", 243 | "output_type": "stream", 244 | "text": [ 245 | "(42000, 785)\n" 246 | ] 247 | } 248 | ], 249 | "source": [ 250 | "data = ds.values\n", 251 | "print data.shape" 252 | ] 253 | }, 254 | { 255 | "cell_type": "code", 256 | "execution_count": 8, 257 | "metadata": {}, 258 | "outputs": [ 259 | { 260 | "name": "stdout", 261 | "output_type": "stream", 262 | "text": [ 263 | "6400\n", 264 | "(6400, 784) (6400,)\n", 265 | "(1600, 784) (1600,)\n" 266 | ] 267 | } 268 | ], 269 | "source": [ 270 | "## data Preperation\n", 271 | "split_data = data[:8000]\n", 272 | "split = int(0.8*split_data.shape[0])\n", 273 | "print split\n", 274 | "X_train = split_data[:split, 1:]\n", 275 | "y_train = split_data[:split, 0]\n", 276 | "\n", 277 | "X_test = split_data[split:, 1:]\n", 278 | "y_test = split_data[split:, 0]\n", 279 | "print X_train.shape, y_train.shape\n", 280 | "print X_test.shape, y_test.shape" 281 | ] 282 | }, 283 | { 284 | "cell_type": "code", 285 | "execution_count": 9, 286 | "metadata": {}, 287 | "outputs": [ 288 | { 289 | "name": "stdout", 290 | "output_type": "stream", 291 | "text": [ 292 | "(6400, 10)\n", 293 | "(1600, 10)\n" 294 | ] 295 | } 296 | ], 297 | "source": [ 298 | "## One Hot Encodings\n", 299 | "Y_train = np_utils.to_categorical(y_train)\n", 300 | "Y_test = np_utils.to_categorical(y_test)\n", 301 | "print Y_train.shape\n", 302 | "print Y_test.shape" 303 | ] 304 | }, 305 | { 306 | "cell_type": "code", 307 | "execution_count": 10, 308 | "metadata": {}, 309 | "outputs": [ 310 | { 311 | "name": "stdout", 312 | "output_type": "stream", 313 | "text": [ 314 | "1 [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 315 | "0 [1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 316 | "0 [1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 317 | "8 [0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n", 318 | "9 [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n" 319 | ] 320 | } 321 | ], 322 | "source": [ 323 | "for ix in range(5):\n", 324 | " print y_test[ix], Y_test[ix]" 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "execution_count": 13, 330 | "metadata": {}, 331 | "outputs": [], 332 | "source": [ 333 | "def to_categories(y_test):\n", 334 | " rows = y_test.shape[0]\n", 335 | " cols = len(np.unique(y_test))\n", 336 | " \n", 337 | " mat = np.zeros((rows, cols))\n", 338 | " for ix in range(y_test.shape[0]):\n", 339 | " indx = y_test[ix]\n", 340 | " mat[ix][indx] = 1.0\n", 341 | " return mat" 342 | ] 343 | }, 344 | { 345 | "cell_type": "code", 346 | "execution_count": 18, 347 | "metadata": {}, 348 | "outputs": [ 349 | { 350 | "name": "stdout", 351 | "output_type": "stream", 352 | "text": [ 353 | "_________________________________________________________________\n", 354 | "Layer (type) Output Shape Param # \n", 355 | "=================================================================\n", 356 | "dense_8 (Dense) (None, 256) 200960 \n", 357 | "_________________________________________________________________\n", 358 | "activation_6 (Activation) (None, 256) 0 \n", 359 | "_________________________________________________________________\n", 360 | "dense_9 (Dense) (None, 100) 25700 \n", 361 | "_________________________________________________________________\n", 362 | "activation_7 (Activation) (None, 100) 0 \n", 363 | "_________________________________________________________________\n", 364 | "dense_10 (Dense) (None, 10) 1010 \n", 365 | "_________________________________________________________________\n", 366 | "activation_8 (Activation) (None, 10) 0 \n", 367 | "=================================================================\n", 368 | "Total params: 227,670\n", 369 | "Trainable params: 227,670\n", 370 | "Non-trainable params: 0\n", 371 | "_________________________________________________________________\n" 372 | ] 373 | } 374 | ], 375 | "source": [ 376 | "model = Sequential()\n", 377 | "model.add(Dense(256, input_shape=(784,)))\n", 378 | "model.add(Activation('relu'))\n", 379 | "model.add(Dense(100))\n", 380 | "model.add(Activation('relu'))\n", 381 | "model.add(Dense(10))\n", 382 | "model.add(Activation('softmax'))\n", 383 | "\n", 384 | "model.summary()" 385 | ] 386 | }, 387 | { 388 | "cell_type": "code", 389 | "execution_count": 17, 390 | "metadata": {}, 391 | "outputs": [], 392 | "source": [ 393 | "model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=)" 394 | ] 395 | }, 396 | { 397 | "cell_type": "code", 398 | "execution_count": null, 399 | "metadata": {}, 400 | "outputs": [], 401 | "source": [] 402 | }, 403 | { 404 | "cell_type": "code", 405 | "execution_count": null, 406 | "metadata": {}, 407 | "outputs": [], 408 | "source": [] 409 | } 410 | ], 411 | "metadata": { 412 | "kernelspec": { 413 | "display_name": "Python 2", 414 | "language": "python", 415 | "name": "python2" 416 | }, 417 | "language_info": { 418 | "codemirror_mode": { 419 | "name": "ipython", 420 | "version": 2 421 | }, 422 | "file_extension": ".py", 423 | "mimetype": "text/x-python", 424 | "name": "python", 425 | "nbconvert_exporter": "python", 426 | "pygments_lexer": "ipython2", 427 | "version": "2.7.15" 428 | } 429 | }, 430 | "nbformat": 4, 431 | "nbformat_minor": 2 432 | } 433 | -------------------------------------------------------------------------------- /Class16/.ipynb_checkpoints/Conv_Op-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class16/.ipynb_checkpoints/Convolution_Networks-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class16/Convolution_Networks.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "%matplotlib inline\n", 12 | "import pandas as pd\n", 13 | "import cv2\n", 14 | "from keras.models import Sequential\n", 15 | "from keras.layers import Dense, Activation, Convolution2D, Flatten, MaxPooling2D\n", 16 | "from keras.utils import np_utils" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 22, 22 | "metadata": {}, 23 | "outputs": [ 24 | { 25 | "data": { 26 | "text/html": [ 27 | "
\n", 28 | "\n", 41 | "\n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 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 | "
labelpixel0pixel1pixel2pixel3pixel4pixel5pixel6pixel7pixel8...pixel774pixel775pixel776pixel777pixel778pixel779pixel780pixel781pixel782pixel783
01000000000...0000000000
10000000000...0000000000
21000000000...0000000000
34000000000...0000000000
40000000000...0000000000
\n", 191 | "

5 rows × 785 columns

\n", 192 | "
" 193 | ], 194 | "text/plain": [ 195 | " label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n", 196 | "0 1 0 0 0 0 0 0 0 0 \n", 197 | "1 0 0 0 0 0 0 0 0 0 \n", 198 | "2 1 0 0 0 0 0 0 0 0 \n", 199 | "3 4 0 0 0 0 0 0 0 0 \n", 200 | "4 0 0 0 0 0 0 0 0 0 \n", 201 | "\n", 202 | " pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 \\\n", 203 | "0 0 ... 0 0 0 0 0 \n", 204 | "1 0 ... 0 0 0 0 0 \n", 205 | "2 0 ... 0 0 0 0 0 \n", 206 | "3 0 ... 0 0 0 0 0 \n", 207 | "4 0 ... 0 0 0 0 0 \n", 208 | "\n", 209 | " pixel779 pixel780 pixel781 pixel782 pixel783 \n", 210 | "0 0 0 0 0 0 \n", 211 | "1 0 0 0 0 0 \n", 212 | "2 0 0 0 0 0 \n", 213 | "3 0 0 0 0 0 \n", 214 | "4 0 0 0 0 0 \n", 215 | "\n", 216 | "[5 rows x 785 columns]" 217 | ] 218 | }, 219 | "execution_count": 22, 220 | "metadata": {}, 221 | "output_type": "execute_result" 222 | } 223 | ], 224 | "source": [ 225 | "ds = pd.read_csv('/Users/ayush/Downloads/all/train.csv')\n", 226 | "ds.head()" 227 | ] 228 | }, 229 | { 230 | "cell_type": "code", 231 | "execution_count": 23, 232 | "metadata": {}, 233 | "outputs": [], 234 | "source": [ 235 | "data = ds.values[:8000]" 236 | ] 237 | }, 238 | { 239 | "cell_type": "code", 240 | "execution_count": 24, 241 | "metadata": {}, 242 | "outputs": [ 243 | { 244 | "name": "stdout", 245 | "output_type": "stream", 246 | "text": [ 247 | "(6400, 784) (1600, 784)\n", 248 | "(6400,) (1600,)\n" 249 | ] 250 | } 251 | ], 252 | "source": [ 253 | "split = int(0.8*data.shape[0])\n", 254 | "X_train = data[:split, 1:]\n", 255 | "X_test = data[split:, 1:]\n", 256 | "\n", 257 | "y_train = data[:split, 0]\n", 258 | "y_test = data[split:, 0]\n", 259 | "\n", 260 | "print X_train.shape, X_test.shape\n", 261 | "print y_train.shape, y_test.shape" 262 | ] 263 | }, 264 | { 265 | "cell_type": "code", 266 | "execution_count": 25, 267 | "metadata": {}, 268 | "outputs": [ 269 | { 270 | "name": "stdout", 271 | "output_type": "stream", 272 | "text": [ 273 | "(6400, 10)\n", 274 | "(1600, 10)\n" 275 | ] 276 | } 277 | ], 278 | "source": [ 279 | "Y_train = np_utils.to_categorical(y_train)\n", 280 | "Y_test = np_utils.to_categorical(y_test)\n", 281 | "print Y_train.shape\n", 282 | "print Y_test.shape" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": 26, 288 | "metadata": {}, 289 | "outputs": [ 290 | { 291 | "name": "stdout", 292 | "output_type": "stream", 293 | "text": [ 294 | "[0 1 2 3 4 5 6 7 8 9]\n" 295 | ] 296 | } 297 | ], 298 | "source": [ 299 | "print np.unique(y_train)" 300 | ] 301 | }, 302 | { 303 | "cell_type": "code", 304 | "execution_count": 27, 305 | "metadata": {}, 306 | "outputs": [ 307 | { 308 | "name": "stdout", 309 | "output_type": "stream", 310 | "text": [ 311 | "(6400, 784)\n" 312 | ] 313 | } 314 | ], 315 | "source": [ 316 | "X_train = X_train/255.0\n", 317 | "X_test = X_test/255.0\n", 318 | "print X_train.shape" 319 | ] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "execution_count": 28, 324 | "metadata": {}, 325 | "outputs": [ 326 | { 327 | "name": "stdout", 328 | "output_type": "stream", 329 | "text": [ 330 | "(6400, 28, 28, 1)\n", 331 | "(1600, 28, 28, 1)\n" 332 | ] 333 | } 334 | ], 335 | "source": [ 336 | "## Because layer 1 is convolution\n", 337 | "X_train = X_train.reshape((-1, 28, 28, 1))\n", 338 | "X_test = X_test.reshape((-1, 28, 28, 1))\n", 339 | "print X_train.shape\n", 340 | "print X_test.shape" 341 | ] 342 | }, 343 | { 344 | "cell_type": "code", 345 | "execution_count": 29, 346 | "metadata": {}, 347 | "outputs": [ 348 | { 349 | "name": "stdout", 350 | "output_type": "stream", 351 | "text": [ 352 | "_________________________________________________________________\n", 353 | "Layer (type) Output Shape Param # \n", 354 | "=================================================================\n", 355 | "conv2d_10 (Conv2D) (None, 26, 26, 32) 320 \n", 356 | "_________________________________________________________________\n", 357 | "activation_14 (Activation) (None, 26, 26, 32) 0 \n", 358 | "_________________________________________________________________\n", 359 | "conv2d_11 (Conv2D) (None, 24, 24, 16) 4624 \n", 360 | "_________________________________________________________________\n", 361 | "activation_15 (Activation) (None, 24, 24, 16) 0 \n", 362 | "_________________________________________________________________\n", 363 | "max_pooling2d_3 (MaxPooling2 (None, 12, 12, 16) 0 \n", 364 | "_________________________________________________________________\n", 365 | "conv2d_12 (Conv2D) (None, 10, 10, 8) 1160 \n", 366 | "_________________________________________________________________\n", 367 | "activation_16 (Activation) (None, 10, 10, 8) 0 \n", 368 | "_________________________________________________________________\n", 369 | "conv2d_13 (Conv2D) (None, 8, 8, 8) 584 \n", 370 | "_________________________________________________________________\n", 371 | "activation_17 (Activation) (None, 8, 8, 8) 0 \n", 372 | "_________________________________________________________________\n", 373 | "flatten_3 (Flatten) (None, 512) 0 \n", 374 | "_________________________________________________________________\n", 375 | "dense_5 (Dense) (None, 256) 131328 \n", 376 | "_________________________________________________________________\n", 377 | "activation_18 (Activation) (None, 256) 0 \n", 378 | "_________________________________________________________________\n", 379 | "dense_6 (Dense) (None, 10) 2570 \n", 380 | "_________________________________________________________________\n", 381 | "activation_19 (Activation) (None, 10) 0 \n", 382 | "=================================================================\n", 383 | "Total params: 140,586\n", 384 | "Trainable params: 140,586\n", 385 | "Non-trainable params: 0\n", 386 | "_________________________________________________________________\n" 387 | ] 388 | } 389 | ], 390 | "source": [ 391 | "model = Sequential()\n", 392 | "\n", 393 | "## Shape Here - (b, 28, 28, 1)\n", 394 | "model.add(Convolution2D(32, kernel_size=(3, 3), input_shape=(28, 28, 1)))\n", 395 | "model.add(Activation('relu'))\n", 396 | "## Shape Here - (b, 26, 26, 32)\n", 397 | "model.add(Convolution2D(16, kernel_size=(3, 3)))\n", 398 | "model.add(Activation('relu'))\n", 399 | "## Shape Here - (b, 24, 24, 16)\n", 400 | "model.add(MaxPooling2D(pool_size=(2, 2)))\n", 401 | "## Shape Here - (b, 12, 12, 16)\n", 402 | "model.add(Convolution2D(8, (3, 3)))\n", 403 | "model.add(Activation('relu'))\n", 404 | "## Shape Here - (b, 10, 10, 8)\n", 405 | "model.add(Convolution2D(8, (3, 3)))\n", 406 | "model.add(Activation('relu'))\n", 407 | "## Shape Here - (b, 8, 8, 8)\n", 408 | "model.add(Flatten())\n", 409 | "## Shape Here - (b, 512)\n", 410 | "model.add(Dense(256))\n", 411 | "model.add(Activation('relu'))\n", 412 | "## Shape Here - (b, 256)\n", 413 | "model.add(Dense(10))\n", 414 | "## Shape Here - (b, 10)\n", 415 | "model.add(Activation('softmax'))\n", 416 | "model.summary()" 417 | ] 418 | }, 419 | { 420 | "cell_type": "code", 421 | "execution_count": 30, 422 | "metadata": {}, 423 | "outputs": [], 424 | "source": [ 425 | "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": 31, 431 | "metadata": {}, 432 | "outputs": [ 433 | { 434 | "name": "stdout", 435 | "output_type": "stream", 436 | "text": [ 437 | "Train on 6400 samples, validate on 1600 samples\n", 438 | "Epoch 1/20\n", 439 | "6400/6400 [==============================] - 9s 1ms/step - loss: 0.3764 - acc: 0.8794 - val_loss: 0.2260 - val_acc: 0.9325\n", 440 | "Epoch 2/20\n", 441 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.1243 - acc: 0.9622 - val_loss: 0.1975 - val_acc: 0.9450\n", 442 | "Epoch 3/20\n", 443 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0738 - acc: 0.9770 - val_loss: 0.1271 - val_acc: 0.9606\n", 444 | "Epoch 4/20\n", 445 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0580 - acc: 0.9819 - val_loss: 0.1729 - val_acc: 0.9550\n", 446 | "Epoch 5/20\n", 447 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0399 - acc: 0.9859 - val_loss: 0.1514 - val_acc: 0.9569\n", 448 | "Epoch 6/20\n", 449 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0271 - acc: 0.9906 - val_loss: 0.1355 - val_acc: 0.9650\n", 450 | "Epoch 7/20\n", 451 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0324 - acc: 0.9888 - val_loss: 0.2425 - val_acc: 0.9425\n", 452 | "Epoch 8/20\n", 453 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0188 - acc: 0.9947 - val_loss: 0.1501 - val_acc: 0.9669\n", 454 | "Epoch 9/20\n", 455 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0210 - acc: 0.9936 - val_loss: 0.1515 - val_acc: 0.9694\n", 456 | "Epoch 10/20\n", 457 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0171 - acc: 0.9948 - val_loss: 0.1614 - val_acc: 0.9669\n", 458 | "Epoch 11/20\n", 459 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0149 - acc: 0.9959 - val_loss: 0.1401 - val_acc: 0.9719\n", 460 | "Epoch 12/20\n", 461 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0158 - acc: 0.9958 - val_loss: 0.1594 - val_acc: 0.9681\n", 462 | "Epoch 13/20\n", 463 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0139 - acc: 0.9953 - val_loss: 0.1701 - val_acc: 0.9637\n", 464 | "Epoch 14/20\n", 465 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0127 - acc: 0.9967 - val_loss: 0.2112 - val_acc: 0.9613\n", 466 | "Epoch 15/20\n", 467 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0120 - acc: 0.9964 - val_loss: 0.1560 - val_acc: 0.9731\n", 468 | "Epoch 16/20\n", 469 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0097 - acc: 0.9966 - val_loss: 0.2243 - val_acc: 0.9619\n", 470 | "Epoch 17/20\n", 471 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0153 - acc: 0.9955 - val_loss: 0.1684 - val_acc: 0.9613\n", 472 | "Epoch 18/20\n", 473 | "6400/6400 [==============================] - 11s 2ms/step - loss: 0.0124 - acc: 0.9969 - val_loss: 0.1564 - val_acc: 0.9712\n", 474 | "Epoch 19/20\n", 475 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0032 - acc: 0.9994 - val_loss: 0.1899 - val_acc: 0.9681\n", 476 | "Epoch 20/20\n", 477 | "6400/6400 [==============================] - 10s 2ms/step - loss: 0.0044 - acc: 0.9984 - val_loss: 0.1879 - val_acc: 0.9706\n" 478 | ] 479 | }, 480 | { 481 | "data": { 482 | "text/plain": [ 483 | "" 484 | ] 485 | }, 486 | "execution_count": 31, 487 | "metadata": {}, 488 | "output_type": "execute_result" 489 | } 490 | ], 491 | "source": [ 492 | "model.fit(X_train, Y_train, epochs=20, batch_size=8, validation_data=[X_test, Y_test])" 493 | ] 494 | }, 495 | { 496 | "cell_type": "code", 497 | "execution_count": null, 498 | "metadata": {}, 499 | "outputs": [], 500 | "source": [] 501 | } 502 | ], 503 | "metadata": { 504 | "kernelspec": { 505 | "display_name": "Python 2", 506 | "language": "python", 507 | "name": "python2" 508 | }, 509 | "language_info": { 510 | "codemirror_mode": { 511 | "name": "ipython", 512 | "version": 2 513 | }, 514 | "file_extension": ".py", 515 | "mimetype": "text/x-python", 516 | "name": "python", 517 | "nbconvert_exporter": "python", 518 | "pygments_lexer": "ipython2", 519 | "version": "2.7.15" 520 | } 521 | }, 522 | "nbformat": 4, 523 | "nbformat_minor": 2 524 | } 525 | -------------------------------------------------------------------------------- /Class16/img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class16/img.jpg -------------------------------------------------------------------------------- /Class18/.ipynb_checkpoints/Markov_Chain-Text_Gen-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class18/.ipynb_checkpoints/Markov_Chains_text-generation-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np\n", 12 | "import random" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": { 19 | "collapsed": true 20 | }, 21 | "outputs": [], 22 | "source": [ 23 | "f = open('input.txt')\n", 24 | "ds = f.read()\n", 25 | "f.close()" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 5, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "name": "stdout", 35 | "output_type": "stream", 36 | "text": [ 37 | "3382026\n", 38 | "\n" 39 | ] 40 | } 41 | ], 42 | "source": [ 43 | "print len(ds)\n", 44 | "print type(ds)\n", 45 | "\n", 46 | "start = 2500\n", 47 | "length = 50000\n", 48 | "\n", 49 | "data = ' '.join([ix.strip() for ix in ds[start:start+length].split('\\n')]).lower()" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 8, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "name": "stdout", 59 | "output_type": "stream", 60 | "text": [ 61 | "45844\n", 62 | "48\n", 63 | "set(['!', ' ', '\"', \"'\", ')', '(', '-', ',', '.', '1', '0', '3', '2', '5', '4', '7', '6', '9', '8', ';', ':', '?', 'a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j', 'm', 'l', 'o', 'n', 'q', 'p', 's', 'r', 'u', 't', 'w', 'v', 'y', 'x', 'z'])\n" 64 | ] 65 | } 66 | ], 67 | "source": [ 68 | "print len(data)\n", 69 | "\n", 70 | "x = set()\n", 71 | "for ix in data:\n", 72 | " x.add(ix)\n", 73 | "print len(x)\n", 74 | "print x" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": 16, 80 | "metadata": { 81 | "collapsed": true 82 | }, 83 | "outputs": [], 84 | "source": [ 85 | "## Transition Matrix - Frequency Values\n", 86 | "T = {}\n", 87 | "\n", 88 | "## order context\n", 89 | "order = 3\n", 90 | "\n", 91 | "for cx in range(len(data) - order):\n", 92 | " cntx = data[cx:cx+order] ## Current State\n", 93 | " \n", 94 | " future_val = data[cx+order] ## Next State\n", 95 | " if T.get(cntx) is None:\n", 96 | " T[cntx] = {}\n", 97 | " T[cntx][future_val] = 1\n", 98 | " else:\n", 99 | " if T[cntx].get(future_val) is None:\n", 100 | " T[cntx][future_val] = 1\n", 101 | " else:\n", 102 | " T[cntx][future_val] = T[cntx][future_val] + 1" 103 | ] 104 | }, 105 | { 106 | "cell_type": "code", 107 | "execution_count": 17, 108 | "metadata": {}, 109 | "outputs": [], 110 | "source": [ 111 | "## Transition Matrix Probabilities\n", 112 | "count = 0\n", 113 | "for key in T.keys():\n", 114 | " #if count>4:\n", 115 | " #break\n", 116 | " count+=1\n", 117 | " possible = T[key] ## Dict of all next states for this \"key\" current state\n", 118 | " \n", 119 | " total = float(sum(T[key].values()))\n", 120 | " #print key, \"---\", T[key], \"---\", total\n", 121 | " \n", 122 | " for k in T[key].keys():\n", 123 | " T[key][k] = T[key][k]/total\n", 124 | " \n", 125 | " #print key, \"---\", T[key], \"---\", total\n", 126 | " #print \"---------------\"" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 35, 132 | "metadata": { 133 | "collapsed": true 134 | }, 135 | "outputs": [], 136 | "source": [ 137 | "def generate_next_character(cntx):\n", 138 | " '''Returns next state given an input current state'''\n", 139 | " possible = T.get(cntx) ## Dict of possible next states for the input current state\n", 140 | " \n", 141 | " if possible is None:\n", 142 | " return ' '\n", 143 | " shuffled_keys = possible.keys()\n", 144 | " \n", 145 | " ## Only exploration\n", 146 | " random.shuffle(shuffled_keys)\n", 147 | " \n", 148 | " ## For exploitation also\n", 149 | " ## shuffled_keys = sorted(shuffled_keys, key=shuffled_keys.values(), reverse=True)\n", 150 | " \n", 151 | " r = np.random.random()\n", 152 | " #print r\n", 153 | " #print shuffled_keys\n", 154 | " key_probs = [possible[kx] for kx in shuffled_keys]\n", 155 | " #print key_probs\n", 156 | " for k in range(len(key_probs)):\n", 157 | " if r< key_probs[k]:\n", 158 | " return shuffled_keys[k]\n", 159 | " return random.choice(shuffled_keys)" 160 | ] 161 | }, 162 | { 163 | "cell_type": "code", 164 | "execution_count": 36, 165 | "metadata": {}, 166 | "outputs": [ 167 | { 168 | "data": { 169 | "text/plain": [ 170 | "'p'" 171 | ] 172 | }, 173 | "execution_count": 36, 174 | "metadata": {}, 175 | "output_type": "execute_result" 176 | } 177 | ], 178 | "source": [ 179 | "generate_next_character('sco')" 180 | ] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "execution_count": 39, 185 | "metadata": {}, 186 | "outputs": [ 187 | { 188 | "name": "stdout", 189 | "output_type": "stream", 190 | "text": [ 191 | " entrial marked; \"it of nose ove could facumstable tes glaned the save deten. ween to me so the plained\n" 192 | ] 193 | } 194 | ], 195 | "source": [ 196 | "## Main Loop\n", 197 | "index = int(np.random.random()*(len(data)-order))\n", 198 | "initial = data[index:index+order]\n", 199 | "context = initial\n", 200 | "sentence = ' '+context\n", 201 | "num_chars = 100\n", 202 | "for ix in range(num_chars):\n", 203 | " next_char = generate_next_character(context)\n", 204 | " sentence+=next_char\n", 205 | " context = sentence[-order:]\n", 206 | "print sentence" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": null, 212 | "metadata": { 213 | "collapsed": true 214 | }, 215 | "outputs": [], 216 | "source": [] 217 | } 218 | ], 219 | "metadata": { 220 | "kernelspec": { 221 | "display_name": "Python 2", 222 | "language": "python", 223 | "name": "python2" 224 | }, 225 | "language_info": { 226 | "codemirror_mode": { 227 | "name": "ipython", 228 | "version": 2 229 | }, 230 | "file_extension": ".py", 231 | "mimetype": "text/x-python", 232 | "name": "python", 233 | "nbconvert_exporter": "python", 234 | "pygments_lexer": "ipython2", 235 | "version": "2.7.15" 236 | } 237 | }, 238 | "nbformat": 4, 239 | "nbformat_minor": 2 240 | } 241 | -------------------------------------------------------------------------------- /Class18/Markov_Chains_text-generation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import random" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "f = open('input.txt')\n", 20 | "ds = f.read()\n", 21 | "f.close()" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 3, 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "name": "stdout", 31 | "output_type": "stream", 32 | "text": [ 33 | "3382026\n", 34 | "\n" 35 | ] 36 | } 37 | ], 38 | "source": [ 39 | "print len(ds)\n", 40 | "print type(ds)\n", 41 | "\n", 42 | "start = 2500\n", 43 | "length = 50000\n", 44 | "\n", 45 | "data = ' '.join([ix.strip() for ix in ds[start:start+length].split('\\n')]).lower()" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 4, 51 | "metadata": {}, 52 | "outputs": [ 53 | { 54 | "name": "stdout", 55 | "output_type": "stream", 56 | "text": [ 57 | "45844\n", 58 | "48\n", 59 | "set(['!', ' ', '\"', \"'\", ')', '(', '-', ',', '.', '1', '0', '3', '2', '5', '4', '7', '6', '9', '8', ';', ':', '?', 'a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j', 'm', 'l', 'o', 'n', 'q', 'p', 's', 'r', 'u', 't', 'w', 'v', 'y', 'x', 'z'])\n" 60 | ] 61 | } 62 | ], 63 | "source": [ 64 | "print len(data)\n", 65 | "\n", 66 | "x = set()\n", 67 | "for ix in data:\n", 68 | " x.add(ix)\n", 69 | "print len(x)\n", 70 | "print x" 71 | ] 72 | }, 73 | { 74 | "cell_type": "code", 75 | "execution_count": 5, 76 | "metadata": {}, 77 | "outputs": [], 78 | "source": [ 79 | "## Transition Matrix - Frequency Values\n", 80 | "T = {}\n", 81 | "\n", 82 | "## order context\n", 83 | "order = 3\n", 84 | "\n", 85 | "for cx in range(len(data) - order):\n", 86 | " cntx = data[cx:cx+order] ## Current State\n", 87 | " \n", 88 | " future_val = data[cx+order] ## Next State\n", 89 | " if T.get(cntx) is None:\n", 90 | " T[cntx] = {}\n", 91 | " T[cntx][future_val] = 1\n", 92 | " else:\n", 93 | " if T[cntx].get(future_val) is None:\n", 94 | " T[cntx][future_val] = 1\n", 95 | " else:\n", 96 | " T[cntx][future_val] = T[cntx][future_val] + 1" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 6, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [ 105 | "## Transition Matrix Probabilities\n", 106 | "count = 0\n", 107 | "for key in T.keys():\n", 108 | " #if count>4:\n", 109 | " #break\n", 110 | " count+=1\n", 111 | " possible = T[key] ## Dict of all next states for this \"key\" current state\n", 112 | " \n", 113 | " total = float(sum(T[key].values()))\n", 114 | " #print key, \"---\", T[key], \"---\", total\n", 115 | " \n", 116 | " for k in T[key].keys():\n", 117 | " T[key][k] = T[key][k]/total\n", 118 | " \n", 119 | " #print key, \"---\", T[key], \"---\", total\n", 120 | " #print \"---------------\"" 121 | ] 122 | }, 123 | { 124 | "cell_type": "code", 125 | "execution_count": 7, 126 | "metadata": {}, 127 | "outputs": [], 128 | "source": [ 129 | "def generate_next_character(cntx):\n", 130 | " '''Returns next state given an input current state'''\n", 131 | " possible = T.get(cntx) ## Dict of possible next states for the input current state\n", 132 | " \n", 133 | " if possible is None:\n", 134 | " return ' '\n", 135 | " shuffled_keys = possible.keys()\n", 136 | " \n", 137 | " ## Only exploration\n", 138 | " random.shuffle(shuffled_keys)\n", 139 | " \n", 140 | " ## For exploitation also\n", 141 | " ## shuffled_keys = sorted(shuffled_keys, key=shuffled_keys.values(), reverse=True)\n", 142 | " \n", 143 | " r = np.random.random()\n", 144 | " #print r\n", 145 | " #print shuffled_keys\n", 146 | " key_probs = [possible[kx] for kx in shuffled_keys]\n", 147 | " #print key_probs\n", 148 | " for k in range(len(key_probs)):\n", 149 | " if r< key_probs[k]:\n", 150 | " return shuffled_keys[k]\n", 151 | " return random.choice(shuffled_keys)" 152 | ] 153 | }, 154 | { 155 | "cell_type": "code", 156 | "execution_count": 8, 157 | "metadata": {}, 158 | "outputs": [ 159 | { 160 | "data": { 161 | "text/plain": [ 162 | "'v'" 163 | ] 164 | }, 165 | "execution_count": 8, 166 | "metadata": {}, 167 | "output_type": "execute_result" 168 | } 169 | ], 170 | "source": [ 171 | "generate_next_character('sco')" 172 | ] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "execution_count": 9, 177 | "metadata": {}, 178 | "outputs": [ 179 | { 180 | "name": "stdout", 181 | "output_type": "stream", 182 | "text": [ 183 | " commontinge who what?\" i direcial. is eariosity. i obtainst ver, is kness hazine?\" you re-agent.\" \"q\n" 184 | ] 185 | } 186 | ], 187 | "source": [ 188 | "## Main Loop\n", 189 | "index = int(np.random.random()*(len(data)-order))\n", 190 | "initial = data[index:index+order]\n", 191 | "context = initial\n", 192 | "sentence = ' '+context\n", 193 | "num_chars = 100\n", 194 | "for ix in range(num_chars):\n", 195 | " next_char = generate_next_character(context)\n", 196 | " sentence+=next_char\n", 197 | " context = sentence[-order:]\n", 198 | "print sentence" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": null, 204 | "metadata": { 205 | "collapsed": true 206 | }, 207 | "outputs": [], 208 | "source": [] 209 | } 210 | ], 211 | "metadata": { 212 | "kernelspec": { 213 | "display_name": "Python 2", 214 | "language": "python", 215 | "name": "python2" 216 | }, 217 | "language_info": { 218 | "codemirror_mode": { 219 | "name": "ipython", 220 | "version": 2 221 | }, 222 | "file_extension": ".py", 223 | "mimetype": "text/x-python", 224 | "name": "python", 225 | "nbconvert_exporter": "python", 226 | "pygments_lexer": "ipython2", 227 | "version": "2.7.15" 228 | } 229 | }, 230 | "nbformat": 4, 231 | "nbformat_minor": 2 232 | } 233 | -------------------------------------------------------------------------------- /Class19/.ipynb_checkpoints/LSTM_SentimentAnalysis-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class2/.ipynb_checkpoints/Intro_to_Python-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class2/.ipynb_checkpoints/Libraries-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class2/.ipynb_checkpoints/Statistical_Computation-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class2/Intro_to_Python.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 4, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "\n", 13 | "\n", 14 | "\n" 15 | ] 16 | } 17 | ], 18 | "source": [ 19 | "## Variables\n", 20 | "a = 6\n", 21 | "print type(a)\n", 22 | "a = '6'\n", 23 | "print type(a)\n", 24 | "a = 10.0\n", 25 | "print type(a)" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 8, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "name": "stdout", 35 | "output_type": "stream", 36 | "text": [ 37 | "5\n", 38 | "[1, 2, 3, 4, 5, 10]\n", 39 | "[1, 33, 2, 3, 4, 5, 10]\n", 40 | "\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "## Lists\n", 46 | "a = [1,2,3,4,5]\n", 47 | "print len(a)\n", 48 | "a.append(10)\n", 49 | "print a\n", 50 | "a.insert(1,33)\n", 51 | "print a\n", 52 | "\n", 53 | "a = list()\n", 54 | "print type(a)" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 13, 60 | "metadata": {}, 61 | "outputs": [ 62 | { 63 | "name": "stdout", 64 | "output_type": "stream", 65 | "text": [ 66 | "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", 67 | "\n", 68 | "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n", 69 | "[1, 3, 5, 7, 9]\n" 70 | ] 71 | } 72 | ], 73 | "source": [ 74 | "## Range\n", 75 | "x = list(range(10))\n", 76 | "print x\n", 77 | "print type(x)\n", 78 | "\n", 79 | "x2 = range(1, 10)\n", 80 | "print x2\n", 81 | "x3 = range(1, 10, 2)\n", 82 | "print x3" 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "execution_count": 29, 88 | "metadata": {}, 89 | "outputs": [ 90 | { 91 | "name": "stdout", 92 | "output_type": "stream", 93 | "text": [ 94 | "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n", 95 | "[2, 3, 4]\n", 96 | "9\n", 97 | "9\n", 98 | "[1, 2, 3, 4, 5, 6, 7, 8]\n", 99 | "[]\n", 100 | "[2, 4, 6, 8]\n" 101 | ] 102 | } 103 | ], 104 | "source": [ 105 | "## Slicing\n", 106 | "x = range(1, 10)\n", 107 | "print x\n", 108 | "x2 = x[1:4]\n", 109 | "print x2\n", 110 | "x[4]\n", 111 | "print x[-1]\n", 112 | "print x[8]\n", 113 | "print x[:-1]\n", 114 | "print x[-1:-3]\n", 115 | "print x[1::2]" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 33, 121 | "metadata": {}, 122 | "outputs": [ 123 | { 124 | "name": "stdout", 125 | "output_type": "stream", 126 | "text": [ 127 | "\n", 128 | "\n", 129 | "1233 hello\n" 130 | ] 131 | } 132 | ], 133 | "source": [ 134 | "## Strings - are Immutable\n", 135 | "a = '1233'\n", 136 | "print type(a)\n", 137 | "a = \"1233\"\n", 138 | "print type(a)\n", 139 | "b = ' hello'\n", 140 | "print a + b" 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 49, 146 | "metadata": {}, 147 | "outputs": [ 148 | { 149 | "name": "stdout", 150 | "output_type": "stream", 151 | "text": [ 152 | "1 3 5 7 9 " 153 | ] 154 | } 155 | ], 156 | "source": [ 157 | "## Loops\n", 158 | "for ix in xrange(1, 11, 2):\n", 159 | " print(ix, end=' ')" 160 | ] 161 | }, 162 | { 163 | "cell_type": "code", 164 | "execution_count": 53, 165 | "metadata": {}, 166 | "outputs": [ 167 | { 168 | "name": "stdout", 169 | "output_type": "stream", 170 | "text": [ 171 | "6\n", 172 | "8\n" 173 | ] 174 | } 175 | ], 176 | "source": [ 177 | "print(2*3)\n", 178 | "print(2**3)" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 54, 184 | "metadata": {}, 185 | "outputs": [ 186 | { 187 | "name": "stdout", 188 | "output_type": "stream", 189 | "text": [ 190 | "30\n" 191 | ] 192 | } 193 | ], 194 | "source": [ 195 | "## Functions\n", 196 | "def my_func(arg1):\n", 197 | " return arg1*10\n", 198 | "print(my_func(3))" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 57, 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "name": "stdout", 208 | "output_type": "stream", 209 | "text": [ 210 | "set([10])\n", 211 | "set([10, 12])\n" 212 | ] 213 | } 214 | ], 215 | "source": [ 216 | "## Sets\n", 217 | "x = set()\n", 218 | "x.add(10)\n", 219 | "print(x)\n", 220 | "x.add(12)\n", 221 | "print(x)" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": 71, 227 | "metadata": {}, 228 | "outputs": [ 229 | { 230 | "name": "stdout", 231 | "output_type": "stream", 232 | "text": [ 233 | "\n", 234 | "{}\n", 235 | "22\n", 236 | "\n", 237 | "{'a': 4, 'b': 5}\n" 238 | ] 239 | }, 240 | { 241 | "data": { 242 | "text/plain": [ 243 | "61" 244 | ] 245 | }, 246 | "execution_count": 71, 247 | "metadata": {}, 248 | "output_type": "execute_result" 249 | } 250 | ], 251 | "source": [ 252 | "## Arguments and Keyword Arguments\n", 253 | "def add(a1, a2,*args, **kwargs):\n", 254 | " ret_sum = a1+a2\n", 255 | " print(type(args))\n", 256 | " print(type(kwargs))\n", 257 | " for ix in args:\n", 258 | " ret_sum += ix\n", 259 | " for ix in kwargs.keys():\n", 260 | " ret_sum += kwargs[ix]\n", 261 | " return ret_sum\n", 262 | "print(add(10, 12))\n", 263 | "add(10, 12, 14, 16, a=4,b=5)" 264 | ] 265 | }, 266 | { 267 | "cell_type": "code", 268 | "execution_count": 78, 269 | "metadata": {}, 270 | "outputs": [ 271 | { 272 | "name": "stdout", 273 | "output_type": "stream", 274 | "text": [ 275 | "{'k2': 100.0, 'key': 10}\n", 276 | "['k2', 'key']\n", 277 | "[100.0, 10]\n", 278 | "\n" 279 | ] 280 | } 281 | ], 282 | "source": [ 283 | "## Dictionary - Entirely Heterogenous\n", 284 | "d = dict()\n", 285 | "d = {}\n", 286 | "d['key'] = 10\n", 287 | "d['k2'] = 100.0\n", 288 | "print(d)\n", 289 | "print(d.keys())\n", 290 | "print(d.values())\n", 291 | "print(type(d.values()))" 292 | ] 293 | }, 294 | { 295 | "cell_type": "code", 296 | "execution_count": 79, 297 | "metadata": {}, 298 | "outputs": [ 299 | { 300 | "data": { 301 | "text/plain": [ 302 | "'This is a \\nmultiline comment\\n'" 303 | ] 304 | }, 305 | "execution_count": 79, 306 | "metadata": {}, 307 | "output_type": "execute_result" 308 | } 309 | ], 310 | "source": [ 311 | "# This is a comment\n", 312 | "\n", 313 | "\"\"\"This is a \n", 314 | "multiline comment\n", 315 | "\"\"\"" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": 86, 321 | "metadata": {}, 322 | "outputs": [], 323 | "source": [ 324 | "## Classes in Python\n", 325 | "class MyClass:\n", 326 | " class_list = [] \n", 327 | " def __init__(self, arg1):\n", 328 | " '''This is the constructor'''\n", 329 | " self.object_list = []\n", 330 | " self.class_list.append(arg1)\n", 331 | " self.object_list.append(arg1)" 332 | ] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": 87, 337 | "metadata": {}, 338 | "outputs": [ 339 | { 340 | "name": "stdout", 341 | "output_type": "stream", 342 | "text": [ 343 | "[10]\n", 344 | "[10]\n", 345 | "[12]\n", 346 | "[10, 12]\n", 347 | "[10, 12]\n" 348 | ] 349 | } 350 | ], 351 | "source": [ 352 | "o1 = MyClass(10)\n", 353 | "print(o1.object_list)\n", 354 | "print(o1.class_list)\n", 355 | "o2 = MyClass(12)\n", 356 | "print(o2.object_list)\n", 357 | "print(o2.class_list)\n", 358 | "print(MyClass.class_list)" 359 | ] 360 | }, 361 | { 362 | "cell_type": "code", 363 | "execution_count": null, 364 | "metadata": {}, 365 | "outputs": [], 366 | "source": [] 367 | } 368 | ], 369 | "metadata": { 370 | "kernelspec": { 371 | "display_name": "Python 3", 372 | "language": "python", 373 | "name": "python3" 374 | }, 375 | "language_info": { 376 | "codemirror_mode": { 377 | "name": "ipython", 378 | "version": 3 379 | }, 380 | "file_extension": ".py", 381 | "mimetype": "text/x-python", 382 | "name": "python", 383 | "nbconvert_exporter": "python", 384 | "pygments_lexer": "ipython3", 385 | "version": "3.7.3" 386 | } 387 | }, 388 | "nbformat": 4, 389 | "nbformat_minor": 2 390 | } 391 | -------------------------------------------------------------------------------- /Class21/.ipynb_checkpoints/Add_Boundary-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class21/.ipynb_checkpoints/Working_with_Segmentation_Masks-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class21/images/anf_64540_01_model1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class21/images/anf_64540_01_model1.jpg -------------------------------------------------------------------------------- /Class21/images/anf_64540_01_model1_Mask_front_inspect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class21/images/anf_64540_01_model1_Mask_front_inspect.png -------------------------------------------------------------------------------- /Class21/images/anf_65268_01_model1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class21/images/anf_65268_01_model1.jpg -------------------------------------------------------------------------------- /Class21/images/anf_65268_01_model1_Mask_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class21/images/anf_65268_01_model1_Mask_front.png -------------------------------------------------------------------------------- /Class21/mask_wo_index/anf_64540_01_model1_Mask_front_inspect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class21/mask_wo_index/anf_64540_01_model1_Mask_front_inspect.png -------------------------------------------------------------------------------- /Class21/mask_wo_index/anf_65268_01_model1_Mask_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class21/mask_wo_index/anf_65268_01_model1_Mask_front.png -------------------------------------------------------------------------------- /Class3/.ipynb_checkpoints/K_Nearest_Neighbors-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "%matplotlib inline" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 8, 17 | "metadata": {}, 18 | "outputs": [ 19 | { 20 | "name": "stdout", 21 | "output_type": "stream", 22 | "text": [ 23 | "(500, 2)\n", 24 | "(500, 2)\n" 25 | ] 26 | } 27 | ], 28 | "source": [ 29 | "## Input data generation\n", 30 | "mean_01 = np.array([0.0, 0.0])\n", 31 | "cov_01 = np.array([[1.0, 0.1], [0.1, 1.1]])\n", 32 | "\n", 33 | "mean_02 = np.array([5.0, 6.0])\n", 34 | "cov_02 = np.array([[1.3, 0.2], [0.2, 1.5]])\n", 35 | "\n", 36 | "dist_01 = np.random.multivariate_normal(mean_01, cov_01, 500)\n", 37 | "dist_02 = np.random.multivariate_normal(mean_02, cov_02, 500)\n", 38 | "\n", 39 | "print dist_01.shape\n", 40 | "print dist_02.shape" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 9, 46 | "metadata": {}, 47 | "outputs": [ 48 | { 49 | "data": { 50 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztnX9sHOd557/PLpcRV7LpaCX0UjtcGhdfijSqkpookvOhwFktzpbj2BHujARrhbVTMKKuLVMcYCQlEJ0K8HpIDwcT6MkGkUhlxEUKw5WT+Cq3SdUWB/TcIHQSh7GdxkYiKk6Ti0jZsiUyJrl874/hkLOz877zc3d2Zr8fYCFxOfvOu7PL7/vM8z4/RCkFQggh+aGQ9gQIIYQkC4WdEEJyBoWdEEJyBoWdEEJyBoWdEEJyBoWdEEJyBoWdEEJyBoWdEEJyBoWdEEJyRl8aJ923b58aHh5O49SEEJJZnnvuuSWl1H6/41IR9uHhYczPz6dxakIIySwishjkOLpiCCEkZ1DYCSEkZ1DYCSEkZ1DYCSEkZ1DYCSEkZ1DYCSEkZ1DYCSEkZ1DYCSEkZ1DYCSFtpb5Qx/CjwyicLGD40WHUF+ppTyn3pJJ5SgjpDeoLdYw9PYaV9RUAwOLVRYw9PQYAqB2opTm1XEOLnRDSNiYvTG6Lus3K+gomL0ymNKPegMJOCGkbl65eCvU8SQYKOyGkbQwNDoV6niQDhZ0Q0jamDk2hXCo3PVculTF1aCqlGfUGFHZCSNuoHahh5t4ZVAerEAiqg1XM3DvDjdM2I0qpjp90ZGREsR47IYSEQ0SeU0qN+B1Hi50QQnIGhZ0QQnIGhZ0QQnIGhZ0QQnIGhZ0QQnJGYGEXkdMi8nMR+Z7jub0i8nUReXnr37e3Z5qEEEKCEsZi/3MAd7me+zSAC0qp2wBc2PqZEEJIigQWdqXU/wFwxfX0fQBmt/4/C+D+hOZFCCEkInF97L+klPrp1v9/BuCXYo5HCCEkJoltniorhVWbxioiYyIyLyLzly9fTuq0hBBCXMQV9v8nIu8AgK1/f647UCk1o5QaUUqN7N+/P+ZpCSGE6Igr7F8FMLr1/1EAX4k5HiGEkJiECXf8EoBnAbxbRF4VkU8A+O8AfltEXgbwW1s/E0IISZHAPU+VUh/T/OpQQnMhhBCSAMw8JYSQnEFhJ5mkvlDH8KPDKJwsYPjRYdQX6mlPiZCugcJOMkd9oY6xp8eweHURCgqLVxcx9vQYxb3NcDHNDhR2kjkmL0xiZX2l6bmV9RVMXphMaUb5h4tptqCwk8xx6eqlUM+T+HAxzRYUdpI5hgaHQj1P4sPFNFtQ2EnmmDo0hXKp3PRcuVTG1KGplGaUf7iYZgsKO8kctQM1zNw7g+pgFQJBZaCCgb4BHD13lJt6bYKLabagsJNMUjtQw8VPXcTZI2exurGK5dXl3G/qpRmV4l5Mq4NVzNw7g9qBWsfmQIJDYSeZJo1NvTQEthuiUuzFdPPEJi5+6iIAMPyxS6Gwk0zT6U29tAS226JSumGhIXoo7CTTdHpTLy2B7baolG5baEgzFHaSaTq9qZeWwLZrAYvqVkryOjCjNXko7CTTdHpTL4zAJilY7VjA4rhT4i409rWRk4Kj547SpZMwFHaSedybeu2M1AgqsEn5oG0BPHruKAb6BlAZqCS2gMVxpxy+7TAE0vRc0IXGeW0AQLk6atKlEx8KOyEhCHqH4CeaQax59+KwvLqM1Y1VnD1yNpEFzOROMc2vvlDH7POzTYIsEIweHA00J69rE3RuJBhi9aDuLCMjI2p+fr7j5yWkUxROFlosUcASwLNHzmLs6bEmcSuXytsLRH2hjskLk9sWrZvqYHU73NA+9tLVSxgaHMLUoanAgj/86LDnOSoDFaxurGrnp3udPTe/OeiujXsc+z2SHUTkOaXUiN9xtNgJaQMmH7TJmne7Kbywrdmw7h63FX74tsMtbiUAeO0XrxnvNkzWdBCXk58fnhmt8aGwE9IGTL54kwskiJvCFsYwPnKvRWD2+VmMHhxFZaDSdOym2tTOz3l+HX4+cq9rY/vrmdGaDIkIu4j8oYi8ICLfE5EviciuJMYlJKvUDtQwenAUBdn5E7PFy2TN+/mWndZsmJBD3SJw9rtn8fovXjee0zk/wHvj1M3i1UXISUHfH/dBTkqLn36gb2D7/5WBCs4eOQt1QrV987tXiC3sInIzgD8AMKKUei+AIoCPxh2XkCxTX6jjC9/+QpP1e339Oh768kOeLhBbsE3WsG3NApZ/XOen9hpDtwhcW7uGhmr4vh97fl4bpybssW0XzfG/Oo6xp8ewvLq8fczqxmqgsUhwknLF9AEYEJE+AGUA/5LQuIRkkskLk1hrrLU8v765jvMvn9dG1uhcOHNH5rY3E00+eJ1/OkoiU1GKLdUzR58a9XUV6VhZX8HMczPMWO0AiUTFiMgEgCkAqwC+ppQy3ksxKobkHVPkh0CweaLVj+2MhilKEQ3VaIkyMUWkAJZb44FffQDnXz7fFCkDAA+eezDUe9hd2o3r69chkMAWelSc1yROpE/e6VhUjIi8HcB9AG4F8MsAdotIyzdIRMZEZF5E5i9fvhz3tIR0NSYLWZel6rTEG6qxbX3bolZfqBtFHQCWV5fx2PxjLZEyANBf6A/1Hq6vXwfQmkAUh6IUPZ+3rwmLiyVDbItdRP4TgLuUUp/Y+vnjAD6glDquew0tdpJHnJbm3oG9uPrWVWxsbjQdUyqUcOb+My0WqM4SL0oRm2oTewf24s21Nz3dO0HY078H19auRXptUpRLZYweHMXs87NN7phSoYQb33YjrqxeQUEKnj5/xrVbdDKO/RKAD4hIWUQEwCEALyUwLiGZwStLVCDY079n+5jKQMVT1AH95mZDNbbHiyrqAIyiXh2shh7P6X+3wyVta3x3abfnawpSwOPzjzeVRqgMVCAi241SdBu5zEQNR2xhV0p9A8CTAL4FYGFrzJm44xKSJbzCCdc311EZqECdUFAnFJYeWQLg3Zwizd6hFz91sSWW3US5VMbsR2axeWITS48sYemRJagTChuf3YA6obCvvM/zddfWrm0vUldWr+DYyDHs6d8TaMEKW1ys1ytFsqQAIQlg2iydOzIHAJh4ZqIpzA/YSdUH0FJmoFPMHZnznJsTewPVXgCurF7RbmwGKRngHNMPZzkDE/Zdk64UQh5gSQFCXLTLmqsv1JsSkdw89OWH8PBXHvYUTjvUz11cTLfJ2A7cceVuqoNVnD1yFnNH5gL1l907sDfQeU2ibrt6wmSisvnHDhR20hO0K9rCHteU5LO+uW50NyxeXdwuzXtt7Rr2DuxFQzVasjtLhVKsuepYWV/RLiTOTcuPP/VxX+GsL9TxxltvxJ5TQzWwd2Avrq1dw9FzRwMtxN3WZSpNKOykJ2iXNRektosfAmnadLWtZ6dFa2+8RtnoDIIdXuk1r32f24ePn/u4bw0ZwLoe65vriczJvhb2QvzwVx6OVFwszf2LtKCwk56gXdZc3NcH9TMvry5j4pkJbUVGHc6oFRPVwSpGD442We72vJZXl7EJb1EHmoWzndbxWmMNE89MaH/f6TaJ3QyFnfQE7bLm4rx+d2l3qOSf5dVlz4qMOv9+dbCKpUeW8MCvPmAcVyA4fNthzD4/G6hujBuncLbbOjbtBXS6TWI3Q2EnidHNoWbtsua8xg2KM8okKCvrK3jihSeaCmf5uUjOv3zedx5ffP6LkVxK9vztz/3a2jX0F8NluIbF9B3rZJvEbobhjiQRshBq1q4aJH4dj0x4dStKkoIUtMKfBOMj48ZM0qB3JALBnbfeiQs/uhDq/P3FfpQKpe3yB5WBCqbvnu6a71zSBA13pLCTRNClxPdKKnh9oY7Rp0Y9XRmVgYrRhXDo1kN45cor26UI3nzrTaxtRs8y7SS692Z/7n5Fy5yUS2Wsrq/Grk2jK9uQBxjHTjpKL4eamUIey6Uypu+eNkazXPjRBRy+7TA2T2xi+u5p9BX72jndRNEtWItXF1E4WcDSylLgsVbWV7RuLV2ZAi/WN9d7MnbdCYWdJEIvh5rpQh6LUjTWWXcy89yMcawsoqC2XSRBWVlfwfjI+HZ0TlGKGB8Zx7U/uhYq1LMXDAoTFHaSCL0YamZvFutcDZtqc9sdYEds6LCt/V4XpKHBIZy659R23ZmNz27g1D2nAITbqO4Fg8JEdu75SFdjC1ivNEjw2ix2o6AgJ2W7aYYpAkYgxnZ3ecQdw+9nCDi/Yya/falQyrVBEQRunpKex9S5CPBerMJsCgahr9DXUru9F6gOVo2GQH2h3lSgzI56OXruqLHoWlCDwh0pdfi2wy3dp7rJOGFUDCEBMFnepUIJItJU58UO4TQJCwmG3UTEJOoPffmhlhIF/cV+3NB/gzEaJwhB7rq6LWSXUTGEBMC0WelVvMuuL9PrPtwksJuIeBVks8NHverO2J9J3D2dIBvVWa0OSWEnPU2UzcpLVy95buS5qzGSZkwhiyvrK5h4ZgLDjw5DTgqOnjtqLG9wZfUKZu6dadq3GOgbCDWfoJ99Fje0Keykp4lieQ8NDnnWJbnz1jsp7gb8rOPl1eXtfQs/N9fegb0tzUGWV5eNpZjdJS+C1o3P4t0Zo2JITzN1aCq0j92+3a8dqG37Xm1/Lf3uepK8NrrEKKfrxL0p6ix9sHh1cbscganMcFZDdrl5SnqeKFExbpKOkskqQcsQt5tyqdy0WOvmZbty7IVid2k3dvXtMrb+SxNGxRDSQYL2+ew2KgMVvO9fvS908a1OE2bBsBfnoLgXgW6LhHHS0agYEblJRJ4Uke+LyEsi8sEkxiUkC/j1PO1mlleXExX1dvRqrQ5WA4t6uVQOJepFKXp21jI19MgCSX0bpwH8tVLqVwAcBPBSQuMS0tUE6XnaK5QKJYzdPha6Pr1pUbTj0oPWiRk9OKo91r2xbVoElleXE+knkFaPgtjCLiKDAH4TwBcAQCm1ppR6Pe64pPfo5kYdOvJUtCsu65vreOKFJ1o6PPlhqhdvhxoGrRNz/uXz2rpFx0aOtXRXMi0YcePX29VAPQixfewi8j4AMwBehGWtPwdgQil13XXcGIAxABgaGrp9cZEbTWSHNBt1xGnAkVXfelZwZpI6PyfTNRfIdiij3yZofaGOB889qB1n80T0JiXt6FHQSR97H4BfB/CYUur9AK4D+LT7IKXUjFJqRCk1sn///gROS/KEl+Xbiay/uFZV0FhooqcyUPFsp2cX87Lv5I6eOwoAOHvkrNHSVlBYXl3G6sYqzh45a2yRVztQ095dxI1fT7NHQRLC/iqAV5VS39j6+UlYQk9IYJL8Iwjj0omzoNQX6njjrTd8jyuXyhgfGfefeA8iEEzfPY3T951uEtjKQAVn7j8DAJ4L7+HbDvu6ZoJ+jtN3T7el5HSaPQpiC7tS6mcAfiwi79566hAstwwhgQnyRxBEsMNa4HEWlMkLk9rkFjs6pDpYxejB0e1GGt1MOyJaTAgEx0aObSd6LT2yBHVCQZ1QWHpkCbUDNUw8M+G58J5/+XxT5q+OIJ+jVxZxEi7ANHsUJBUV8/sA6iLyXQDvA/DfEhqX9Ah+fwRBBTusBR7HqjKJRkM1UCqUtjMesxA1s/HZjVCbnnHZO7AXdwzdof19faGuzTC9dPUSagdquPipi9g8sal1zSioQBvxzrFMrpswtGvBCAITlEjXYNrEDLoRpdvM1G2Exdm03fe5fcYm1fZ5s7C5WpQiNj67Eeg9JYldgtdrk9OUzev+3P1K8HZz0lEYgm6eslYM6RqctVfc6KzjxauLGH50eHsx2Duw11OYdBZ41M5P9YU63lx703gMkGx9lHbSUA3UF+q4snqlo+dda6xtf172XRhgfS6mOyK3O6N2oIZ/vPSPeHz+cc9rbt+1ZV3Yg0JhJ5lgaHDI03oTyPbzusJOQVqu6f7gdXVkrq1da6nVnnXGnraSi8I2oE4SpwDrPnMd518+b1xITQtFnJDXbiSbedCk59DVP3f/Ia811nDj225MxK/p9OsDOw2nF68uBnZX7OnfEzoTMy1W1lfalmwlkMD+e2dSkm5j1GvPxG+jVHfXlmYiUbugsJNM4LURpbPOrqxeCbURpou2iZtV2l/sx+MferylIYSbbqrh3i7XkYLCa794LdCxtgDXDtS08/EScdOGt+muLa0cinZCYSeZwR25oIuECBMnbLLWosTQ23VPqoNVnL7v9LabZ0//Hu1rsuKHj4updICNW4DDfMa6sgOVgYrxri3NRKJ2QWEnmSVunLDdV1NnrfktEJWBSoslvqk2t+fgFJJuEgl78fEqimVqX9cJ3AIc5jP2uqubOzK3HROvI81EonZBYSeZJU6csF9VRl1fU5tyqYzpu6c9LXGvsq/dJBL24uMuijV6cBS7+nalNq/qYLXlswv7GUeJR08zkahdMI6d9CR+8dp2nLSpu1LtQM1YBKwyUMH03dOoHaihvlDH0XNHu8rt4i6wZYoD7wRzR+ZSi0TJSlQM49gJ0WDKaAT0fU29MIXk2c2V7XFMcdZJIZDAYYK2e8h2SaWZHVuQQqpC6v6c7Q31bhd6HXTFkJ7DFO1QlOL2rX6Q2jR+t+sr6ysYfWoU9YU6Tt1zarsyoUDaUptFQeHa2jWUCiXfY4cGh7qmUcgnb/9kqud3kofwRwo76TlMG5mzH5ndFvUgf9ymsq82DdXYfq3TBxwkSiQKy6vLvmP3F/sxdWiq441CqoNVjI+MN3VN2l3abawZ02nyEP5IYSc9h24jszJQ2RZ1U7SMG6+yr268XtvODVU/C/yG/ht80/aTxnZx3TF0R9Mm7fX163jw3IPY97l9XWEV5yH8kcJOeg5dFMT03dOoL9Tx0JcfMkbLuLEjN/ws98Wri03ClWbUhV0Txm9xiesuskMqndEsuruE5dVlPPyVh3H8r46n2iIxD+GPFHbSc3iF0I0eHMXkhUk8eO5BbY11wFxMbOmRJcwdmTOKodOdE8SN0y7s9zF1aAp9Be8Yiv5if6Tm1DbVwSrOHjkLdUI1hR6aLN+1xhoem38sVf92HsIfKeykJ3H6uqcOTWH2+VnfSBLTH7ezfdtNu27ybPUG7MS4Dz86DDkpntUU+4v9bRV89/vY2NzwPO6G/htw6p5TLYvg+Mh40/z29O9BZaDSlBTkFnMnYS3fTvu306yjnhSMYyc9j6nutxNdnLVXDLi7wmRQnLHvQecVdXzA/N7bUcNe93o/4jaWzgudbGZNSKYJsilmb6x64dW+bX1zPbJ/evLCJAonC4HDFsOwp39P4FIHukbdcaNGbIs4TPGzLPm3uwEKO+l5/ESjv9iP6bunPX9nSnZqqEZo//Ty6vK2f3l5dRnrm+uJVn90C7lOvAHgzbU3PX3bSUSN1A7UcPbI2ZaFq4BCixsra/7tboDCTnoeXa13oLlKoxcmK9X2zTp9tVGKbPllqr5n33tQCPin7G4ObuoCtdZYw+hToy3RKbqF0LlIBEnuqh2o4cz9Z5quzxePfBGn7zudaf92N5CYj11EigDmAfxEKfUh07H0sZNuw68mjA5TrRgvn3w7eooKBMdGjuGJF57YHvttxbfhrcZbTce5/eBh52K/HgAe/srDLR2kSoUSztx/BgBi+eCJnjR87BMAXkpwPEI6Ru1Abdtyd3ZKOnruKOSkaK1Ov2QnN+3oKaqgcP7l81h6ZAnqhLJCLgvN/n2BYPTg6Pac/OrleOFsW3dD/w0tv1/fXMfkhclcZG5mnUSEXURuAXAPgM8nMR4haeAlSLY1rounNiU7eRFnE9C0GeuMbNG9j/Mvn286Jgq2H123QF26esm38Xg3ZJfmnaQs9kcBPAJAG48kImMiMi8i85cvX07otITEw+kL9gst9LI6TTHPXn5mr4XAbsDtx9jtY9rfOUU/yOam33vVLSL2wmTKzjQtXlksqJVFYgu7iHwIwM+VUs+ZjlNKzSilRpRSI/v37497WkJi4y70FQRdSQF3cwddETEALQvB6ftOb28imjAVymqoxvZConsvtuDWF+raSJvKQAXqhMLsR2aN2Zem7ExTgxKAbplOEHvzVET+BMBRABsAdgG4EcA5pdSDutdw85R0A1ESgJzNKaKMXRmoYOmRpUhzsoVfN+7qxqo26ce5eWk6R2WggiurVzA0OIR37X0X/uHiP6ChGihKEWO3j+HUPae2jzU1p3BuRnvBhKNodGzzVCn1GaXULUqpYQAfBfB3JlEnpFvwi7v26gnqjKc2hfSZmm+Y3BCmeO3Fq4s4fNthT0sZgFbU3SGDpve9vLq8fYdx4UcXtjeSG6qB2ednm+ZuakNn/y6JhuMkPIxjJz2LTlyqg1WoE6qpKYZbHP3qtZs2Ok1uCL/CYLPPz2L04GjLvMJE20QV1SgulDwU1MoirBVDepY4NU907gzbVSMn9dmifm4Iv1oqXu4gP7eS833F6W8axYWSlX6iWYC1YgjxIU4VP7/IE9NGqN2STufGsecV5txhNiy93nfQapJRrH2Ty4a0B1rshETAz2K3G3a4Kzz2F/vxifd/ArPPz/reKfidw02cDcsgVjyzR9OHFjshbeTwbYeNz9t1UJyWcGWggtP3ncb5l88HyswM65+Os2HpZcWPj4yzZktGocVOSATCWtNOdPVlvCzqKP5pL+tbIFBQgerfkO4lqMXu3ROLEGIkTunaocEhz0XBy6KuHaiFFmH7eNstY4s6gKZEKYp7fqErhpAIxGl43IkQQKdbxn13ECZsMUj5XdJ9UNgJiUAccY4ajWOLrJwU9P1xn7HqpE2cOwu/WH3SvdDHTkhE/PzfScVv1xfqmHhmQltm1xStEmcvwFQWYU//Hsalp0BQHzuFnZA2ELfhs2kcL0whkFHnYWoi4oRhkJ2D4Y6kc9TrwPAwUChY/9Yj3KonMUYXkVSzCa9xvNC5VuIkYQVNRmK1xu6Dwk7iUa8DY2PA4iKglPXv2FizMPuJdpAxMkYSDZ/DHO8Xox4l89MvmzXKPElnoLCTeExOAisui3JlxXoeCCbafmNkkDhRM2GPjxpR4xfxEqb0AKs1dhcUdhKPSxpLzX4+iGj7jZFBkgpp1FnNBbH+dKNmhAaNeHFb+9N3T7NaYwagsJN4DGksNfv5IKLtN0YSONxB9X+/D8NT+9oamx3Ht+03ztyROTQ+24A6oSIX1Yq6B5DU+yLthVExRE+9blnWly5ZIjs1BdRqrceMjTVb5eUyMDNjHTs8bLlf3FSrwMWLwcZI4n1sjV8/AIzdC6z0O07Vg1EdYcoakO6BUTFkB9taFQH6+qx//SJPgm5o1mqWAFer1rjVarMgT01ZIu2kXLaeDzpGXBzuoMlDzaIO9GZUR1J7AKQ7obB3irTC+ZwCDQANq9WZb+RJmA3NWs2yvjc3LcGenNx5n0Aw0XaOcfFicqIONLl9Lg1qDumxqA52Nso3FPZO0M5wPr8Fw0ugbUyRJybfuO6cuvcJtE+0g+Dw1Q9d1RzSY5YqfeX5hj72ThDEzxyFIL7pQsESWR0iluAGnXOlAqyuti4Wla0wuGWPtPdi0TqHzk/fbuhjJzmhYz52EXmniPy9iLwoIi+IyETcMXNHO8L56nVgdNTfXbJ3r3kcXeSJl28cAF57zfsOYHnZW9QBy/2TZuKRw4df+55g5v9WUO2r0FIluSW2xS4i7wDwDqXUt0TkBgDPAbhfKfWi7jW02LeIarF7WepOnFb4vn16wfWLPKnXgYkJ/eujEvdOhZAepWMWu1Lqp0qpb239/00ALwG4Oe64qZPkZmeQyJAwmPzmgGWl23M3ibJf5EmtBuzZE22OJpx3KjmrEUNIV6CUSuwBYBjAJQA3mo67/fbbVVczN6dUuayU5UCwHuWy9XycMatVpUSsf4OMpXuNSPPcnI/+fqVKJf3vnY8g8zCdy+tRqezMuVjUn9d+f0lfZ0JyDIB5FUSLgxwUaCBgDyw3zBHN78cAzAOYHxoaav8ViEO1ahakTjA3pxdonWAWi5awhhFiPyHVXQuvh0jzWH7C3Q3XmZAMEVTYEwl3FJESgL8EUFdKndPcGcwopUaUUiP79+9P4rTtI8nNzjCuBuexR48C6+vex9mx6E7KZWB2Nrw/3K/YVhh30e7dzT/7JR75XWe6aQiJRhD1Nz0ACIAvAng06Gu63hWTlCXpZbHa7gq3law7NqxLRWfNBxnDeTdg/1utWu6dpO4Agl5numkIaQGdcsUA+HcAFIDvAvjO1uOw6TVdL+xeomL7mm3RCeIzN7kx3CIVxuXhHmd8fGcuUcaI+jrTIhH1OtvXhW4aQloIKuxMUNJhF8BaXLTcCM7r1N9v/ex0lXiFDvolBznD/vyONeGenxfFouXCcR8b5LVR5uOV9OSFrtCY7nqEGZuQnMEiYHGxa5dUq60Cs7bW6v/28lX7lZ0NUro2CEGEudGw3suxY80+73Ys7GHei65GTNBSvseP7xQ26+uzfiakx6Gw+xFmw9R9rC5708YpUl7Hlko7qfpJsLhobbBOTe0IabWa3PhAvPh8J0Fi/48fBx57bGczudGwfqa4kx6Hwu5HGOvTfawdFeIlzkFK1545Aywtmc8pEnx+QOudhd/iE4Zi0XoPQPxoliClfO1zuXn8cUbTkN4miCM+6UfXb5468drg6+vz3wy1X2tvalYq1iNMgpI9hmmjcnw8fDSNSPM5xseT20DdvVt/baIkaZkIs8HMaBqSA9DpBKUwj0wJu1KtAu1OHBKxxNH9mrjhen4hkJXKznFhwhwLhZ15xAmzDPOoVLwjjdzXLcy1CXN+RtOQHEBhbxdBw/CSCNcLEgJZrVriGDXjNGqYZdIP+30EtejDztt9l0JIBgkq7Ax3DEvQMDyT73turtlXfPy45S9uNCw/9dgYcOpUvBDIIFQqwJUr7T1HHEzVJ8NeG1aUJDmA4Y7tImgYXrGoH8NZk9wU2eFXSz0uy8vtP0cc3Bu9zhIDBc1Xt1JJtpImIRmEFntYgnQtAvyjVSoVqySuV532TtKOBKUkse+E/GrQAzufA+Cd9ERIxglqsfd1YjK5whYIP+GoVs2ibeo41Em6WdSBnTshvxr0u3YBAwOvj/nAAAANwUlEQVRW8TSKOelx6IqJgi5b0kmS8eHdQNh4+SRwulD8EsV+8QtroVQqvRZ8hHQJFPao+JWUrdWsnqRpCGI76LRlX6k0u7fCllzwK0dMSI6hsJvQibft711c1FuI9bqVvt/tro5u5fXXLbeKfd2j3AHFaRZOSIahsDtxCvm+fcDDD3uLt5e/120h+vmEiZlGo/m6A5YFH+YOKE5htaiwOQjpBoIEuyf96MoEpaAZmH51z+3EmrQTfpwPu5xB2vOIm8Bkf06Fgv/xaZQRYHMQ0mbABKWQDA8HCz0UsSxB07H9/VZp325h924raqTTUTh9fcDgYHLntb+r9TowMbEzbqUCPPAAcP58uiGOuu8Qk6NIQjBBKSxB/bF79wLXrpmP6SZRB4Dr19MJrWw0rMzWJBDZcWvUalbVy7k5SzSvXLFE3VmOOI1QxyR75RISg2wKezv8mEH8sf39wBtvdEf8eRZQSp8hGmUsdxaqewP7wQetvZG0/NpBs5IJaTPZE/YgESlRMDW6sOuB33BDa+ckYsYulZAETstXtzm9vJxeDHuQ5iCEdIBEhF1E7hKRfxaRV0Tk00mMqSVIREoUvBo7/O7vWmn/NrTU08W2fOt18x5HWjHsQZqDENIBYm+eikgRwA8A/DaAVwF8E8DHlFIv6l4Ta/O0U02OvWqT6Oqq2HVf7I27pSXLr038GR8H7rijeTN0927rzsi5V+GsA+NXMwZg02uSSzq5efobAF5RSv1QKbUG4C8A3JfAuN50yo/pdWegVGscdbkMTE83lxjIS7ZpJ7jjDuvf1dWd565ft6717t07zw0MWP8GzQ+gX5v0MEkI+80Afuz4+dWt59pDp/yYukgGpXZutSuVncJTzk1cv6gZssPYmGWtu8V6fb35ueVl6zoHCUmlX5v0OB3bPBWRMRGZF5H5y5cvRx+oU35MncVnxySfPWtZmSw8FY+VFf3ehdvtZXIbFov0axOyRRI+9g8C+K9Kqf+w9fNnAEAp9Se613RlgpIbv7rrumSUSoWbrJ3G1GmJkBzRSR/7NwHcJiK3ikg/gI8C+GoC46aL352BzlVDUdfTjr2HYpGiToiL2MKulNoA8HsA/gbASwCeUEq9EHfcrsBUdz3K5ly5bEWB9Ormati7wyDXaXOzVdRZiIv0OIn42JVS55VS/0Yp9a+VUvndtXIKxrVrViaqk3LZcsXoWFmxUt9TqM/TVZj6wTqxN6r9jglbUpmQnJO9zNO0cAuGvWnqzEydmbFCH011wxcXgwtbXtnc9BdsYGejWinznU7YksqE5Bz2PA2Kl2Csr1uJSUtLrcePjnqn04skm2afRUSAw4etRiS6mHR3yOKpU1bM++Sk96a1Ld4sxEUILfbABBEM21Vz9Chw003exytFi31z0xL10dHmnAD33Y/bd27veegsdzvz1wsmLJEeghZ7UHQ12J31S5zhkabomF632IGd/YYodcpNn8XUlHeYKhOWSA9Biz0ofhmvbIUXnsXF5siVoNEsps+ChbgIgW+LpXY8EmuNNze306rObknXTkznM7XLS/pRKmW/1Z3Xe+rvb35ORKnx8eCfRae/D4R0GARsjZddYe+2/pLVqrdgtUOA+/rSF+JOPUSCfabd9n0gpA0EFfbsumK6JazNdh8sLuorPybNxkbyY3YrSlmfqZ+bplu+D4R0AdltZt2puuwmTDXbq9Udn69uriQ45bK+bg/QHd8HQtpM/ptZd0NYm65mu51YY4vOsWPhxi2XgUOH8l16IMx7Kxb9rfFu+D4Q0iVkV9i7ob+kX2y77T54/HGraUSQxs7VqhXf/eyz+bXyy2Xgzjtbxd0rvr9c1oeHOq9/N3wfCOkSsivs3RDWZrIS3SUIrl8Hdu0C5uas9HgTTzyR39BJ+3N65ZXWhavRsJKU3J+prvyA8/p3w/eBkG4hyA5r0o/Ewh3TxhSJoYuSqVb1v8vzwx2hogsPFQl3nQnpIZD7qJhuwGQlmtw0vVa3RMRyLwUpe+x+3lnYy3bV0BonxAiF3Ysw9bx1NdtNm3bt9J37lQ5OA6Ws2jDO6xjEJ+50ZwGWq8aZYUoI8SaIWZ/0o6tdMUnd9s/NWdmUUV0XhUL419jJPHNznc2EBYIlYlWrrdfIlClqcmcR0oOArpiIJJXoUqsBN94YbQ7lMvDJT5rrunth3wnUauFDLONQLAJXrvhXrXQX7tLd7TiTvrzoNVcWISGhsLtJsp73lSvhX1OpWP7jO+4ABgbCv35iwvr31KnOuWQaDWtR8ataGaRcsdv94gVj0wkxQmF3k2SiSxwBGhvTl/51t+Rzsry848uOsrC0kyDliv2qZDI2nRBfYgm7iPypiHxfRL4rIk+JiKa7RIZIMtHFayw/lpfN4latAqdPm61x223UbZZtkHZ4pjsjRsMQEoi4FvvXAbxXKfVrAH4A4DPxp5QySSa6uMdydgkyoRM3kR1ftKm4mP36KAtLu7Db4TmjjY4fb40+0i1G7jINhBAtiRUBE5GPAPiPSinfv7xEioBlnX37vF0tlYrVR9XLx2yLW5Ax7D6s9bq+/6oX9p2AqQNUuWz5/3XHlEpWP1gbEauEwLPP+rtZRkdbe6G6C34R0qOkUQTsYQDPJDhevpmebvWV9/dbzwd1Bz3wgPfYr72242ev1SyhdI9XKrWe3y4zvLRklT4w9SOdnm4dU8Qql3DmTPMdz9mzVgkBvzIJdrs8lgYgJB5+8ZAA/hbA9zwe9zmOmQTwFLbuADTjjAGYBzA/NDTUkZjPrscUxx2kG5CpNIEpZrxS2Yk7LxZ3jo8Sqx90/mFi8QkhnqBTHZQA/A6AZwGUg76mqxOUOk2cdm6mJCSdQHai7orXOYImTDH5iBAtQYU9blTMXQAeAfBhpVROyxG2EXcFyMVF62dTCQMnpqgX3e860WlIV6feb9OYoYyEJEJcH/ufAbgBwNdF5Dsi8ngCc+od4ors1JR3THuppBfIqAlYYern6MZSqtl3Pj5OXzohbaAvzouVUu9KaiI9SdwsV1sEJyZ2IlRErIgUe3FwC+XQkHfEjcn6d7cAtO8svMY3ncMd1UMIaQvMPE0TnZgWCsHdMbXaThRLubxTL0bn1tFF3LhjzJ2vC3tnMTVl3TU4Md1FEEIShcKeJroEokYjnK8dCC6+XglYduy4ztcf5c7C7U/Pc/9WQrqMxBKUwsAEJQfHjwOPPeb9uzCui0LBu867iFU90YSukqJ9fr/fhx2PEBKJNBKUSFjqdctS1hGmomSc4mV+FnnY+jlJVsgkhISGwp4mfpUMwxTxilO8zG9RCFs/J8kKmYSQ0FDY08RkwYaN6Y5TvCzIoqBrihF1PEJI26Cwp4nOgi0Wo8V0hxFf9+uSrM+S9HiEkFBw8zRN3PHhACsZEkK0cPM0C9CyJYS0gViZpyQBajUKOSEkUWixE0JIzqCwE0JIzqCwE0JIzqCwE0JIzqCwE0JIzqCwE0JIzqCwE0JIzkgl81RELgPwqOuaGfYBWEp7EgnA99E95OE9AHwf7aaqlNrvd1Aqwp51RGQ+SFpvt8P30T3k4T0AfB/dAl0xhBCSMyjshBCSMyjs0ZhJewIJwffRPeThPQB8H10BfeyEEJIzaLETQkjOoLBHRET+VES+LyLfFZGnROSmtOcUFBG5S0T+WUReEZFPpz2fKIjIO0Xk70XkRRF5QUQm0p5THESkKCLfFpH/nfZcoiIiN4nIk1t/Fy+JyAfTnlNYROQPt75P3xORL4nIrrTnFAUKe3S+DuC9SqlfA/ADAJ9JeT6BEJEigP8F4G4A7wHwMRF5T7qzisQGgP+ilHoPgA8A+M8ZfR82EwBeSnsSMZkG8NdKqV8BcBAZez8icjOAPwAwopR6L4AigI+mO6toUNgjopT6mlJqY+vHfwJwS5rzCcFvAHhFKfVDpdQagL8AcF/KcwqNUuqnSqlvbf3/TVgicnO6s4qGiNwC4B4An097LlERkUEAvwngCwCglFpTSr2e7qwi0QdgQET6AJQB/EvK84kEhT0ZHgbwTNqTCMjNAH7s+PlVZFQQbURkGMD7AXwj3ZlE5lEAjwDYTHsiMbgVwGUAZ7ZcSp8Xkd1pTyoMSqmfAPgfAC4B+CmAq0qpr6U7q2hQ2A2IyN9u+drcj/scx0zCcgvU05tp7yIiewD8JYBPKaXeSHs+YRGRDwH4uVLqubTnEpM+AL8O4DGl1PsBXAeQqf0bEXk7rLvXWwH8MoDdIvJgurOKBnueGlBK/Zbp9yLyOwA+BOCQyk7c6E8AvNPx8y1bz2UOESnBEvW6Uupc2vOJyB0APiwihwHsAnCjiMwppbImKK8CeFUpZd81PYmMCTuA3wLwI6XUZQAQkXMA/i2AuVRnFQFa7BERkbtg3T5/WCm1kvZ8QvBNALeJyK0i0g9rc+irKc8pNCIisPy5Lyml/mfa84mKUuozSqlblFLDsD6Lv8ugqEMp9TMAPxaRd289dQjAiylOKQqXAHxARMpb369DyNgGsA0t9uj8GYC3Afi69R3APymljqU7JX+UUhsi8nsA/gbWrv9ppdQLKU8rCncAOApgQUS+s/XcHymlzqc4p17n9wHUtwyGHwJ4KOX5hEIp9Q0ReRLAt2C5V7+NjGagMvOUEEJyBl0xhBCSMyjshBCSMyjshBCSMyjshBCSMyjshBCSMyjshBCSMyjshBCSMyjshBCSM/4/Ajy6GKIlw1AAAAAASUVORK5CYII=\n", 51 | "text/plain": [ 52 | "
" 53 | ] 54 | }, 55 | "metadata": {}, 56 | "output_type": "display_data" 57 | } 58 | ], 59 | "source": [ 60 | "for ix in range(dist_01.shape[0]):\n", 61 | " plt.scatter(dist_01[ix, 0], dist_01[ix, 1], c='r')\n", 62 | " plt.scatter(dist_02[ix, 0], dist_02[ix, 1], c='g')\n", 63 | "plt.show()" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "execution_count": 16, 69 | "metadata": {}, 70 | "outputs": [ 71 | { 72 | "name": "stdout", 73 | "output_type": "stream", 74 | "text": [ 75 | "(1000, 3)\n", 76 | "float64\n" 77 | ] 78 | } 79 | ], 80 | "source": [ 81 | "rows = dist_01.shape[0] + dist_02.shape[0]\n", 82 | "cols = dist_01.shape[1] + 1\n", 83 | "\n", 84 | "data = np.zeros((rows, cols))\n", 85 | "print data.shape\n", 86 | "print data.dtype" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 21, 92 | "metadata": {}, 93 | "outputs": [], 94 | "source": [ 95 | "data[:dist_01.shape[0], :-1] = dist_01\n", 96 | "data[dist_01.shape[0]: rows, :-1] = dist_02\n", 97 | "\n", 98 | "data[dist_01.shape[0]:rows, -1] = 1.0" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 22, 104 | "metadata": {}, 105 | "outputs": [ 106 | { 107 | "name": "stdout", 108 | "output_type": "stream", 109 | "text": [ 110 | "(1000, 3)\n" 111 | ] 112 | } 113 | ], 114 | "source": [ 115 | "print data.shape" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": null, 121 | "metadata": {}, 122 | "outputs": [], 123 | "source": [ 124 | "## Testing Training Split" 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": null, 130 | "metadata": {}, 131 | "outputs": [], 132 | "source": [] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": null, 137 | "metadata": {}, 138 | "outputs": [], 139 | "source": [] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": null, 144 | "metadata": {}, 145 | "outputs": [], 146 | "source": [] 147 | } 148 | ], 149 | "metadata": { 150 | "kernelspec": { 151 | "display_name": "Python 2", 152 | "language": "python", 153 | "name": "python2" 154 | }, 155 | "language_info": { 156 | "codemirror_mode": { 157 | "name": "ipython", 158 | "version": 2 159 | }, 160 | "file_extension": ".py", 161 | "mimetype": "text/x-python", 162 | "name": "python", 163 | "nbconvert_exporter": "python", 164 | "pygments_lexer": "ipython2", 165 | "version": "2.7.15" 166 | } 167 | }, 168 | "nbformat": 4, 169 | "nbformat_minor": 2 170 | } 171 | -------------------------------------------------------------------------------- /Class4/.ipynb_checkpoints/Assignment-Color_Extraction-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class4/.ipynb_checkpoints/Doubts-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class4/Doubts.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 3, 15 | "metadata": {}, 16 | "outputs": [ 17 | { 18 | "name": "stdout", 19 | "output_type": "stream", 20 | "text": [ 21 | "(array([1, 2, 3]), array([2, 2, 1]))\n" 22 | ] 23 | } 24 | ], 25 | "source": [ 26 | "x = [1,2,3,1,2]\n", 27 | "print np.unique(np.array(x), return_counts=True)" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": null, 33 | "metadata": {}, 34 | "outputs": [], 35 | "source": [] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": null, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [] 43 | } 44 | ], 45 | "metadata": { 46 | "kernelspec": { 47 | "display_name": "Python 2", 48 | "language": "python", 49 | "name": "python2" 50 | }, 51 | "language_info": { 52 | "codemirror_mode": { 53 | "name": "ipython", 54 | "version": 2 55 | }, 56 | "file_extension": ".py", 57 | "mimetype": "text/x-python", 58 | "name": "python", 59 | "nbconvert_exporter": "python", 60 | "pygments_lexer": "ipython2", 61 | "version": "2.7.15" 62 | } 63 | }, 64 | "nbformat": 4, 65 | "nbformat_minor": 2 66 | } 67 | -------------------------------------------------------------------------------- /Class4/im.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class4/im.jpg -------------------------------------------------------------------------------- /Class5/.ipynb_checkpoints/Doubts-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class5/Doubts.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class6/.ipynb_checkpoints/Doubts_and_Discussions-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class6/.ipynb_checkpoints/Untitled-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class6/.ipynb_checkpoints/Web_Scraping_to_CSV-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class6/Doubts_and_Discussions.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "abcdefigh\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "x = '123(abcdefigh)'\n", 18 | "print x.split('(')[-1].split(')')[0]" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 5, 24 | "metadata": {}, 25 | "outputs": [ 26 | { 27 | "name": "stdout", 28 | "output_type": "stream", 29 | "text": [ 30 | "1+2+3+4+5\n" 31 | ] 32 | } 33 | ], 34 | "source": [ 35 | "x2 = ['1', '2', '3', '4', '5']\n", 36 | "ans = '+'.join(x2)\n", 37 | "print ans" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 7, 43 | "metadata": {}, 44 | "outputs": [ 45 | { 46 | "name": "stdout", 47 | "output_type": "stream", 48 | "text": [ 49 | "name1\n", 50 | "name2, name3\n" 51 | ] 52 | } 53 | ], 54 | "source": [ 55 | "my_string = 'name1, name2, name3'\n", 56 | "part1 = my_string.split(',')[0]\n", 57 | "part2 = ','.join(my_string.split(',')[1:]).strip()\n", 58 | "\n", 59 | "print part1\n", 60 | "print part2" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": null, 66 | "metadata": {}, 67 | "outputs": [], 68 | "source": [] 69 | } 70 | ], 71 | "metadata": { 72 | "kernelspec": { 73 | "display_name": "Python 2", 74 | "language": "python", 75 | "name": "python2" 76 | }, 77 | "language_info": { 78 | "codemirror_mode": { 79 | "name": "ipython", 80 | "version": 2 81 | }, 82 | "file_extension": ".py", 83 | "mimetype": "text/x-python", 84 | "name": "python", 85 | "nbconvert_exporter": "python", 86 | "pygments_lexer": "ipython2", 87 | "version": "2.7.15" 88 | } 89 | }, 90 | "nbformat": 4, 91 | "nbformat_minor": 2 92 | } 93 | -------------------------------------------------------------------------------- /Class6/Web_Scraping_to_CSV.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "import pandas as pd\n", 12 | "import requests\n", 13 | "from bs4 import BeautifulSoup" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [ 21 | { 22 | "name": "stdout", 23 | "output_type": "stream", 24 | "text": [ 25 | "\n" 26 | ] 27 | } 28 | ], 29 | "source": [ 30 | "url = 'https://www.imdb.com/chart/top'\n", 31 | "\n", 32 | "## Fetch the webpage\n", 33 | "r = requests.get(url)\n", 34 | "print type(r)" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 3, 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "data": { 44 | "text/plain": [ 45 | "200" 46 | ] 47 | }, 48 | "execution_count": 3, 49 | "metadata": {}, 50 | "output_type": "execute_result" 51 | } 52 | ], 53 | "source": [ 54 | "r.status_code" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 4, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "info = r.text" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "execution_count": 5, 69 | "metadata": {}, 70 | "outputs": [], 71 | "source": [ 72 | "soup = BeautifulSoup(r.text, 'html.parser')" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 6, 78 | "metadata": {}, 79 | "outputs": [ 80 | { 81 | "name": "stdout", 82 | "output_type": "stream", 83 | "text": [ 84 | "\n" 85 | ] 86 | } 87 | ], 88 | "source": [ 89 | "print type(soup)" 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "execution_count": 7, 95 | "metadata": {}, 96 | "outputs": [], 97 | "source": [ 98 | "TITLES = []\n", 99 | "YEARS = []\n", 100 | "RATINGS = []\n", 101 | "URLS = []\n", 102 | "\n", 103 | "ACTORS = []\n", 104 | "DIRECTORS = []" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 8, 110 | "metadata": {}, 111 | "outputs": [ 112 | { 113 | "name": "stdout", 114 | "output_type": "stream", 115 | "text": [ 116 | "1\n", 117 | "\n" 118 | ] 119 | } 120 | ], 121 | "source": [ 122 | "table_inf = soup.find_all('tbody', {'class': 'lister-list'})\n", 123 | "print len(table_inf)\n", 124 | "print type(table_inf[0])\n", 125 | "\n", 126 | "doc = table_inf[0]" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 9, 132 | "metadata": {}, 133 | "outputs": [ 134 | { 135 | "name": "stdout", 136 | "output_type": "stream", 137 | "text": [ 138 | "250\n" 139 | ] 140 | } 141 | ], 142 | "source": [ 143 | "rows = doc.find_all('tr')\n", 144 | "print len(rows)" 145 | ] 146 | }, 147 | { 148 | "cell_type": "code", 149 | "execution_count": 13, 150 | "metadata": {}, 151 | "outputs": [ 152 | { 153 | "name": "stdout", 154 | "output_type": "stream", 155 | "text": [ 156 | "\n", 157 | " 1.\n", 158 | " The Shawshank Redemption\n", 159 | "(1994)\n", 160 | "\n" 161 | ] 162 | } 163 | ], 164 | "source": [ 165 | "test_row = rows[0]\n", 166 | "title_column = test_row.find('td', {'class' : 'titleColumn'})\n", 167 | "print title_column\n", 168 | "#print title_column.a.text\n", 169 | "#print type(title_column.a.text.encode('utf-8'))" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 14, 175 | "metadata": {}, 176 | "outputs": [ 177 | { 178 | "name": "stdout", 179 | "output_type": "stream", 180 | "text": [ 181 | "[(1994)]\n" 182 | ] 183 | } 184 | ], 185 | "source": [ 186 | "list_of_span = title_column.find_all('span')\n", 187 | "print list_of_span" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 47, 193 | "metadata": {}, 194 | "outputs": [ 195 | { 196 | "name": "stdout", 197 | "output_type": "stream", 198 | "text": [ 199 | "250\n" 200 | ] 201 | } 202 | ], 203 | "source": [ 204 | "count = 0\n", 205 | "movie_root_url = 'https://www.imdb.com'\n", 206 | "for row in rows:\n", 207 | " #if count>1:\n", 208 | " #break\n", 209 | " count+=1\n", 210 | " title_column = row.find('td', {'class': 'titleColumn'})\n", 211 | " rating_column = row.find('td', {'class' : 'ratingColumn'})\n", 212 | " \n", 213 | " movie_title = title_column.a.text\n", 214 | " year = title_column.span.text.split('(')[-1].split(')')[0]\n", 215 | " movie_rel_url = title_column.a['href']\n", 216 | " movie_url = movie_root_url + movie_rel_url\n", 217 | " \n", 218 | " imp_people = title_column.a['title']\n", 219 | " director = imp_people.split(',')[0].split('(')[0].strip()\n", 220 | " \n", 221 | " actors = ','.join(imp_people.split(',')[1:]).strip()\n", 222 | " \n", 223 | " rating = rating_column.strong.text\n", 224 | " \n", 225 | " TITLES.append(movie_title.encode('utf-8'))\n", 226 | " YEARS.append(year.encode('utf-8'))\n", 227 | " URLS.append(movie_url.encode('utf-8'))\n", 228 | " RATINGS.append(rating.encode('utf-8'))\n", 229 | " \n", 230 | " ACTORS.append(actors.encode('utf-8'))\n", 231 | " DIRECTORS.append(director.encode('utf-8'))\n", 232 | " \n", 233 | "# print movie_title\n", 234 | "# print year\n", 235 | "# print rating\n", 236 | "# print movie_url\n", 237 | "# print director\n", 238 | "# print actors\n", 239 | " #print '--------'\n", 240 | "print count" 241 | ] 242 | }, 243 | { 244 | "cell_type": "code", 245 | "execution_count": 35, 246 | "metadata": {}, 247 | "outputs": [], 248 | "source": [ 249 | "print type(title_column)" 250 | ] 251 | }, 252 | { 253 | "cell_type": "code", 254 | "execution_count": 48, 255 | "metadata": {}, 256 | "outputs": [ 257 | { 258 | "name": "stdout", 259 | "output_type": "stream", 260 | "text": [ 261 | "250\n", 262 | "250\n", 263 | "250\n", 264 | "250\n" 265 | ] 266 | } 267 | ], 268 | "source": [ 269 | "print len(TITLES)\n", 270 | "print len(DIRECTORS)\n", 271 | "print len(ACTORS)\n", 272 | "print len(RATINGS)" 273 | ] 274 | }, 275 | { 276 | "cell_type": "code", 277 | "execution_count": 69, 278 | "metadata": {}, 279 | "outputs": [], 280 | "source": [ 281 | "empty_df = pd.DataFrame({'Title': TITLES, 'Rating': RATINGS, 'Year': YEARS, 'URL': URLS, 'Director': DIRECTORS, 'Actors': ACTORS}, columns=['Title', 'Year', 'Rating', 'Director', 'Actors', 'URL'])" 282 | ] 283 | }, 284 | { 285 | "cell_type": "code", 286 | "execution_count": 15, 287 | "metadata": {}, 288 | "outputs": [], 289 | "source": [ 290 | "pd.DataFrame?" 291 | ] 292 | }, 293 | { 294 | "cell_type": "code", 295 | "execution_count": 70, 296 | "metadata": {}, 297 | "outputs": [ 298 | { 299 | "data": { 300 | "text/html": [ 301 | "
\n", 302 | "\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 | "
TitleYearRatingDirectorActorsURL
0The Shawshank Redemption19949.2Frank DarabontTim Robbins, Morgan Freemanhttps://www.imdb.com/title/tt0111161/?pf_rd_m=...
1The Godfather19729.2Francis Ford CoppolaMarlon Brando, Al Pacinohttps://www.imdb.com/title/tt0068646/?pf_rd_m=...
2The Godfather: Part II19749.0Francis Ford CoppolaAl Pacino, Robert De Nirohttps://www.imdb.com/title/tt0071562/?pf_rd_m=...
3The Dark Knight20089.0Christopher NolanChristian Bale, Heath Ledgerhttps://www.imdb.com/title/tt0468569/?pf_rd_m=...
\n", 366 | "
" 367 | ], 368 | "text/plain": [ 369 | " Title Year Rating Director \\\n", 370 | "0 The Shawshank Redemption 1994 9.2 Frank Darabont \n", 371 | "1 The Godfather 1972 9.2 Francis Ford Coppola \n", 372 | "2 The Godfather: Part II 1974 9.0 Francis Ford Coppola \n", 373 | "3 The Dark Knight 2008 9.0 Christopher Nolan \n", 374 | "\n", 375 | " Actors \\\n", 376 | "0 Tim Robbins, Morgan Freeman \n", 377 | "1 Marlon Brando, Al Pacino \n", 378 | "2 Al Pacino, Robert De Niro \n", 379 | "3 Christian Bale, Heath Ledger \n", 380 | "\n", 381 | " URL \n", 382 | "0 https://www.imdb.com/title/tt0111161/?pf_rd_m=... \n", 383 | "1 https://www.imdb.com/title/tt0068646/?pf_rd_m=... \n", 384 | "2 https://www.imdb.com/title/tt0071562/?pf_rd_m=... \n", 385 | "3 https://www.imdb.com/title/tt0468569/?pf_rd_m=... " 386 | ] 387 | }, 388 | "execution_count": 70, 389 | "metadata": {}, 390 | "output_type": "execute_result" 391 | } 392 | ], 393 | "source": [ 394 | "empty_df.head(n=4)" 395 | ] 396 | }, 397 | { 398 | "cell_type": "code", 399 | "execution_count": 71, 400 | "metadata": {}, 401 | "outputs": [], 402 | "source": [ 403 | "empty_df.to_csv('./imdb.csv', index=False)" 404 | ] 405 | }, 406 | { 407 | "cell_type": "code", 408 | "execution_count": 72, 409 | "metadata": {}, 410 | "outputs": [ 411 | { 412 | "data": { 413 | "text/html": [ 414 | "
\n", 415 | "\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 | " \n", 487 | "
TitleYearRatingDirectorActorsURL
0The Shawshank Redemption19949.2Frank DarabontTim Robbins, Morgan Freemanhttps://www.imdb.com/title/tt0111161/?pf_rd_m=...
1The Godfather19729.2Francis Ford CoppolaMarlon Brando, Al Pacinohttps://www.imdb.com/title/tt0068646/?pf_rd_m=...
2The Godfather: Part II19749.0Francis Ford CoppolaAl Pacino, Robert De Nirohttps://www.imdb.com/title/tt0071562/?pf_rd_m=...
3The Dark Knight20089.0Christopher NolanChristian Bale, Heath Ledgerhttps://www.imdb.com/title/tt0468569/?pf_rd_m=...
412 Angry Men19578.9Sidney LumetHenry Fonda, Lee J. Cobbhttps://www.imdb.com/title/tt0050083/?pf_rd_m=...
\n", 488 | "
" 489 | ], 490 | "text/plain": [ 491 | " Title Year Rating Director \\\n", 492 | "0 The Shawshank Redemption 1994 9.2 Frank Darabont \n", 493 | "1 The Godfather 1972 9.2 Francis Ford Coppola \n", 494 | "2 The Godfather: Part II 1974 9.0 Francis Ford Coppola \n", 495 | "3 The Dark Knight 2008 9.0 Christopher Nolan \n", 496 | "4 12 Angry Men 1957 8.9 Sidney Lumet \n", 497 | "\n", 498 | " Actors \\\n", 499 | "0 Tim Robbins, Morgan Freeman \n", 500 | "1 Marlon Brando, Al Pacino \n", 501 | "2 Al Pacino, Robert De Niro \n", 502 | "3 Christian Bale, Heath Ledger \n", 503 | "4 Henry Fonda, Lee J. Cobb \n", 504 | "\n", 505 | " URL \n", 506 | "0 https://www.imdb.com/title/tt0111161/?pf_rd_m=... \n", 507 | "1 https://www.imdb.com/title/tt0068646/?pf_rd_m=... \n", 508 | "2 https://www.imdb.com/title/tt0071562/?pf_rd_m=... \n", 509 | "3 https://www.imdb.com/title/tt0468569/?pf_rd_m=... \n", 510 | "4 https://www.imdb.com/title/tt0050083/?pf_rd_m=... " 511 | ] 512 | }, 513 | "execution_count": 72, 514 | "metadata": {}, 515 | "output_type": "execute_result" 516 | } 517 | ], 518 | "source": [ 519 | "movie_data = pd.read_csv('imdb.csv')\n", 520 | "movie_data.head(n=5)" 521 | ] 522 | }, 523 | { 524 | "cell_type": "code", 525 | "execution_count": 73, 526 | "metadata": {}, 527 | "outputs": [ 528 | { 529 | "name": "stdout", 530 | "output_type": "stream", 531 | "text": [ 532 | "(250, 6)\n" 533 | ] 534 | } 535 | ], 536 | "source": [ 537 | "print movie_data.values.shape" 538 | ] 539 | }, 540 | { 541 | "cell_type": "code", 542 | "execution_count": 66, 543 | "metadata": {}, 544 | "outputs": [], 545 | "source": [ 546 | "pd.DataFrame?" 547 | ] 548 | }, 549 | { 550 | "cell_type": "code", 551 | "execution_count": null, 552 | "metadata": {}, 553 | "outputs": [], 554 | "source": [] 555 | } 556 | ], 557 | "metadata": { 558 | "kernelspec": { 559 | "display_name": "Python 2", 560 | "language": "python", 561 | "name": "python2" 562 | }, 563 | "language_info": { 564 | "codemirror_mode": { 565 | "name": "ipython", 566 | "version": 2 567 | }, 568 | "file_extension": ".py", 569 | "mimetype": "text/x-python", 570 | "name": "python", 571 | "nbconvert_exporter": "python", 572 | "pygments_lexer": "ipython2", 573 | "version": "2.7.15" 574 | } 575 | }, 576 | "nbformat": 4, 577 | "nbformat_minor": 2 578 | } 579 | -------------------------------------------------------------------------------- /Class7/.ipynb_checkpoints/Decision_Tree_and_RF-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class7/DT_Dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class7/DT_Dataset.png -------------------------------------------------------------------------------- /Class7/Decision_Tree_and_RF.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "%matplotlib inline\n", 13 | "from sklearn.tree import DecisionTreeClassifier\n", 14 | "from sklearn.ensemble import RandomForestClassifier" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "metadata": {}, 21 | "outputs": [ 22 | { 23 | "data": { 24 | "text/html": [ 25 | "
\n", 26 | "\n", 39 | "\n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 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 | "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
\n", 135 | "
" 136 | ], 137 | "text/plain": [ 138 | " PassengerId Survived Pclass \\\n", 139 | "0 1 0 3 \n", 140 | "1 2 1 1 \n", 141 | "2 3 1 3 \n", 142 | "3 4 1 1 \n", 143 | "4 5 0 3 \n", 144 | "\n", 145 | " Name Sex Age SibSp \\\n", 146 | "0 Braund, Mr. Owen Harris male 22.0 1 \n", 147 | "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", 148 | "2 Heikkinen, Miss. Laina female 26.0 0 \n", 149 | "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", 150 | "4 Allen, Mr. William Henry male 35.0 0 \n", 151 | "\n", 152 | " Parch Ticket Fare Cabin Embarked \n", 153 | "0 0 A/5 21171 7.2500 NaN S \n", 154 | "1 0 PC 17599 71.2833 C85 C \n", 155 | "2 0 STON/O2. 3101282 7.9250 NaN S \n", 156 | "3 0 113803 53.1000 C123 S \n", 157 | "4 0 373450 8.0500 NaN S " 158 | ] 159 | }, 160 | "execution_count": 2, 161 | "metadata": {}, 162 | "output_type": "execute_result" 163 | } 164 | ], 165 | "source": [ 166 | "ds = pd.read_csv('./titanic.csv')\n", 167 | "ds.head(n=5)" 168 | ] 169 | }, 170 | { 171 | "cell_type": "code", 172 | "execution_count": 3, 173 | "metadata": {}, 174 | "outputs": [ 175 | { 176 | "name": "stdout", 177 | "output_type": "stream", 178 | "text": [ 179 | "(891, 12)\n" 180 | ] 181 | } 182 | ], 183 | "source": [ 184 | "print ds.values.shape" 185 | ] 186 | }, 187 | { 188 | "cell_type": "code", 189 | "execution_count": 6, 190 | "metadata": {}, 191 | "outputs": [ 192 | { 193 | "name": "stdout", 194 | "output_type": "stream", 195 | "text": [ 196 | "(891, 7)\n" 197 | ] 198 | } 199 | ], 200 | "source": [ 201 | "dk = ds.drop(columns=['PassengerId', 'Name', 'Ticket', 'Cabin', 'Embarked'])\n", 202 | "dk.head()\n", 203 | "\n", 204 | "print dk.values.shape" 205 | ] 206 | }, 207 | { 208 | "cell_type": "code", 209 | "execution_count": 7, 210 | "metadata": {}, 211 | "outputs": [ 212 | { 213 | "name": "stdout", 214 | "output_type": "stream", 215 | "text": [ 216 | "(714, 7)\n" 217 | ] 218 | } 219 | ], 220 | "source": [ 221 | "df = dk.dropna(axis=0)\n", 222 | "print df.values.shape" 223 | ] 224 | }, 225 | { 226 | "cell_type": "code", 227 | "execution_count": 8, 228 | "metadata": {}, 229 | "outputs": [ 230 | { 231 | "data": { 232 | "text/html": [ 233 | "
\n", 234 | "\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 | "
SurvivedPclassSexAgeSibSpParchFare
003male22.0107.2500
111female38.01071.2833
213female26.0007.9250
311female35.01053.1000
403male35.0008.0500
\n", 313 | "
" 314 | ], 315 | "text/plain": [ 316 | " Survived Pclass Sex Age SibSp Parch Fare\n", 317 | "0 0 3 male 22.0 1 0 7.2500\n", 318 | "1 1 1 female 38.0 1 0 71.2833\n", 319 | "2 1 3 female 26.0 0 0 7.9250\n", 320 | "3 1 1 female 35.0 1 0 53.1000\n", 321 | "4 0 3 male 35.0 0 0 8.0500" 322 | ] 323 | }, 324 | "execution_count": 8, 325 | "metadata": {}, 326 | "output_type": "execute_result" 327 | } 328 | ], 329 | "source": [ 330 | "df.head()" 331 | ] 332 | }, 333 | { 334 | "cell_type": "code", 335 | "execution_count": 9, 336 | "metadata": {}, 337 | "outputs": [ 338 | { 339 | "name": "stderr", 340 | "output_type": "stream", 341 | "text": [ 342 | "/usr/local/lib/python2.7/site-packages/pandas/core/generic.py:4401: SettingWithCopyWarning: \n", 343 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 344 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 345 | "\n", 346 | "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", 347 | " self[name] = value\n" 348 | ] 349 | } 350 | ], 351 | "source": [ 352 | "sex_mapping = {\n", 353 | " 'male': 0,\n", 354 | " 'female': 1\n", 355 | "}\n", 356 | "df.Sex = df.Sex.map(sex_mapping)" 357 | ] 358 | }, 359 | { 360 | "cell_type": "code", 361 | "execution_count": 10, 362 | "metadata": {}, 363 | "outputs": [ 364 | { 365 | "data": { 366 | "text/html": [ 367 | "
\n", 368 | "\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 | "
SurvivedPclassSexAgeSibSpParchFare
003022.0107.2500
111138.01071.2833
213126.0007.9250
311135.01053.1000
403035.0008.0500
\n", 447 | "
" 448 | ], 449 | "text/plain": [ 450 | " Survived Pclass Sex Age SibSp Parch Fare\n", 451 | "0 0 3 0 22.0 1 0 7.2500\n", 452 | "1 1 1 1 38.0 1 0 71.2833\n", 453 | "2 1 3 1 26.0 0 0 7.9250\n", 454 | "3 1 1 1 35.0 1 0 53.1000\n", 455 | "4 0 3 0 35.0 0 0 8.0500" 456 | ] 457 | }, 458 | "execution_count": 10, 459 | "metadata": {}, 460 | "output_type": "execute_result" 461 | } 462 | ], 463 | "source": [ 464 | "df.head()" 465 | ] 466 | }, 467 | { 468 | "cell_type": "code", 469 | "execution_count": 11, 470 | "metadata": {}, 471 | "outputs": [ 472 | { 473 | "name": "stdout", 474 | "output_type": "stream", 475 | "text": [ 476 | "(571, 6)\n", 477 | "(143, 6)\n", 478 | "(571,)\n", 479 | "(143,)\n" 480 | ] 481 | } 482 | ], 483 | "source": [ 484 | "data = df.values\n", 485 | "## Training and Testing split\n", 486 | "split = int(data.shape[0]*0.8)\n", 487 | "train_data = data[:split]\n", 488 | "test_data = data[split:]\n", 489 | "\n", 490 | "X_train = train_data[:, 1:]\n", 491 | "Y_train = train_data[:, 0]\n", 492 | "\n", 493 | "X_test = test_data[:, 1:]\n", 494 | "Y_test = test_data[:, 0]\n", 495 | "\n", 496 | "print X_train.shape\n", 497 | "print X_test.shape\n", 498 | "print Y_train.shape\n", 499 | "print Y_test.shape" 500 | ] 501 | }, 502 | { 503 | "cell_type": "code", 504 | "execution_count": 14, 505 | "metadata": {}, 506 | "outputs": [ 507 | { 508 | "name": "stdout", 509 | "output_type": "stream", 510 | "text": [ 511 | "0.7832167832167832\n" 512 | ] 513 | } 514 | ], 515 | "source": [ 516 | "## Using Sklearn DT and RF\n", 517 | "dt = DecisionTreeClassifier()\n", 518 | "dt.fit(X_train, Y_train)\n", 519 | "print dt.score(X_test, Y_test)" 520 | ] 521 | }, 522 | { 523 | "cell_type": "code", 524 | "execution_count": 15, 525 | "metadata": {}, 526 | "outputs": [ 527 | { 528 | "name": "stdout", 529 | "output_type": "stream", 530 | "text": [ 531 | "0.8321678321678322\n" 532 | ] 533 | } 534 | ], 535 | "source": [ 536 | "rf = RandomForestClassifier(n_estimators=5)\n", 537 | "rf.fit(X_train, Y_train)\n", 538 | "print rf.score(X_test, Y_test)" 539 | ] 540 | }, 541 | { 542 | "cell_type": "code", 543 | "execution_count": null, 544 | "metadata": {}, 545 | "outputs": [], 546 | "source": [] 547 | }, 548 | { 549 | "cell_type": "code", 550 | "execution_count": null, 551 | "metadata": {}, 552 | "outputs": [], 553 | "source": [] 554 | } 555 | ], 556 | "metadata": { 557 | "kernelspec": { 558 | "display_name": "Python 2", 559 | "language": "python", 560 | "name": "python2" 561 | }, 562 | "language_info": { 563 | "codemirror_mode": { 564 | "name": "ipython", 565 | "version": 2 566 | }, 567 | "file_extension": ".py", 568 | "mimetype": "text/x-python", 569 | "name": "python", 570 | "nbconvert_exporter": "python", 571 | "pygments_lexer": "ipython2", 572 | "version": "2.7.15" 573 | } 574 | }, 575 | "nbformat": 4, 576 | "nbformat_minor": 2 577 | } 578 | -------------------------------------------------------------------------------- /Class8/NB_dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class8/NB_dataset.png -------------------------------------------------------------------------------- /Class9/.ipynb_checkpoints/CamScanner-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class9/.ipynb_checkpoints/Challenge-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 2 6 | } 7 | -------------------------------------------------------------------------------- /Class9/CamScanner.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | # In[87]: 4 | 5 | 6 | import numpy as np 7 | import matplotlib.pyplot as plt 8 | import cv2 9 | #get_ipython().magic(u'matplotlib inline') 10 | 11 | 12 | # In[88]: 13 | 14 | 15 | im_path = './receipt.jpg' 16 | img = cv2.imread(im_path) 17 | print img.shape 18 | img = cv2.resize(img, (1500, 800)) 19 | print img.shape 20 | plt.imshow(img) 21 | plt.show() 22 | 23 | 24 | # ## Image Blurring 25 | # ## Edge Detection 26 | # ## Contour Extraction 27 | # ## Best contour selection 28 | # ## Projection to fixed size screen 29 | 30 | # In[89]: 31 | 32 | 33 | ## Image Blurring 34 | orig = img.copy() 35 | gray = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY) 36 | plt.imshow(gray) 37 | plt.show() 38 | blurred = cv2.GaussianBlur(gray, (5,5), 0) 39 | plt.imshow(blurred) 40 | plt.show() 41 | print blurred.shape 42 | 43 | 44 | # In[90]: 45 | 46 | 47 | regen = cv2.cvtColor(blurred,cv2.COLOR_GRAY2BGR) 48 | plt.imshow(orig) 49 | plt.show() 50 | plt.imshow(regen) 51 | plt.show() 52 | 53 | 54 | # In[91]: 55 | 56 | 57 | ## Edge Detection 58 | edged = cv2.Canny(blurred, 0, 50) 59 | orig_edged = edged.copy() 60 | 61 | plt.imshow(orig_edged) 62 | plt.show() 63 | 64 | 65 | # In[92]: 66 | 67 | 68 | ## Contours Extraction 69 | _, contours, _ = cv2.findContours(edged, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) 70 | print len(contours) 71 | contours = sorted(contours, reverse=True, key=cv2.contourArea) 72 | 73 | 74 | # In[93]: 75 | 76 | 77 | ## Best Contour Selection 78 | for c in contours: 79 | p = cv2.arcLength(c, True) 80 | approx = cv2.approxPolyDP(c, 0.02*p, True) 81 | 82 | if len(approx) == 4: 83 | target = approx 84 | break 85 | 86 | print target.shape 87 | 88 | 89 | # In[94]: 90 | 91 | 92 | ## Reorder target contour 93 | def reorder(h): 94 | h = h.reshape((4,2)) 95 | print h 96 | 97 | hnew = np.zeros((4,2), dtype=np.float32) 98 | 99 | add = h.sum(axis=1) 100 | hnew[3] = h[np.argmin(add)] 101 | hnew[1] = h[np.argmax(add)] 102 | 103 | diff = np.diff(h, axis=1) 104 | hnew[0] = h[np.argmin(diff)] 105 | hnew[2] = h[np.argmax(diff)] 106 | 107 | return hnew 108 | 109 | 110 | # In[95]: 111 | 112 | 113 | reorderd = reorder(target) 114 | print '----------' 115 | print reorderd 116 | 117 | 118 | # In[96]: 119 | 120 | 121 | ## Project to a fixed size screen 122 | input_represent = reorderd 123 | output_map = np.float32([[0,0],[800,0],[800,800],[0,800]]) 124 | 125 | 126 | # In[97]: 127 | 128 | 129 | M = cv2.getPerspectiveTransform(input_represent, output_map) 130 | ans = cv2.warpPerspective(orig, M, (800,800)) 131 | 132 | 133 | # In[98]: 134 | 135 | 136 | plt.imshow(ans) 137 | plt.show() 138 | 139 | 140 | # In[84]: 141 | 142 | 143 | ans2 = cv2.cvtColor(ans, cv2.COLOR_BGR2GRAY) 144 | temp = cv2.GaussianBlur(ans2, (3,3), 0) 145 | temp2 = cv2.GaussianBlur(ans2, (5,5), 0) 146 | temp3 = cv2.GaussianBlur(ans2, (1,1), 0) 147 | #plt.imshow(temp) 148 | #plt.show() 149 | 150 | # In[83]: 151 | 152 | 153 | now = cv2.cvtColor(temp, cv2.COLOR_GRAY2BGR) 154 | #plt.imshow(now) 155 | #plt.show() 156 | 157 | -------------------------------------------------------------------------------- /Class9/CamScanner_Modular.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "import cv2\n", 12 | "%matplotlib inline" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": {}, 19 | "outputs": [], 20 | "source": [ 21 | "import pytesseract\n", 22 | "from PIL import Image, ImageEnhance, ImageFilter" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 3, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "## Reorder target contour\n", 32 | "def reorder(h):\n", 33 | " h = h.reshape((4,2))\n", 34 | "\n", 35 | " \n", 36 | " hnew = np.zeros((4,2), dtype=np.float32)\n", 37 | " \n", 38 | " add = h.sum(axis=1)\n", 39 | " hnew[3] = h[np.argmin(add)]\n", 40 | " hnew[1] = h[np.argmax(add)]\n", 41 | " \n", 42 | " diff = np.diff(h, axis=1)\n", 43 | " hnew[0] = h[np.argmin(diff)]\n", 44 | " hnew[2] = h[np.argmax(diff)]\n", 45 | " \n", 46 | " return hnew" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 6, 52 | "metadata": {}, 53 | "outputs": [], 54 | "source": [ 55 | "#img_path is path of the image needed to \n", 56 | "def convert_img_text(img_path):\n", 57 | " img = cv2.imread(img_path)\n", 58 | " print(img.shape)\n", 59 | " img = cv2.resize(img, (1500, 800))\n", 60 | " \n", 61 | " ## Image Blurring\n", 62 | " orig = img.copy()\n", 63 | " gray = cv2.cvtColor(orig, cv2.COLOR_BGR2GRAY)\n", 64 | " blurred = cv2.GaussianBlur(gray, (5,5), 0)\n", 65 | " \n", 66 | " ## Edge Detection\n", 67 | " edged = cv2.Canny(blurred, 0, 50)\n", 68 | " orig_edged = edged.copy()\n", 69 | " \n", 70 | " \n", 71 | " ## Contours Extraction\n", 72 | " _, contours, _ = cv2.findContours(edged, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)\n", 73 | " contours = sorted(contours, reverse=True, key=cv2.contourArea)\n", 74 | " \n", 75 | " ## Best Contour Selection\n", 76 | " for c in contours:\n", 77 | " p = cv2.arcLength(c, True)\n", 78 | " approx = cv2.approxPolyDP(c, 0.02*p, True)\n", 79 | " \n", 80 | " if len(approx) == 4:\n", 81 | " target = approx\n", 82 | " break\n", 83 | " \n", 84 | " #reordering points \n", 85 | " reorderd = reorder(target)\n", 86 | " \n", 87 | " ## Project to a fixed size screen\n", 88 | " input_represent = reorderd\n", 89 | " output_map = np.float32([[0,0],[800,0],[800,800],[0,800]])\n", 90 | " \n", 91 | " M = cv2.getPerspectiveTransform(input_represent, output_map)\n", 92 | " ans = cv2.warpPerspective(orig, M, (800,800))\n", 93 | " \n", 94 | " \n", 95 | " #blurring again to increase readability\n", 96 | " ans2 = cv2.cvtColor(ans, cv2.COLOR_BGR2GRAY)\n", 97 | " temp = cv2.GaussianBlur(ans2, (1,1), 0)\n", 98 | " now = cv2.cvtColor(temp, cv2.COLOR_GRAY2BGR)\n", 99 | " \n", 100 | " #converting into text\n", 101 | " img=Image.fromarray(now)\n", 102 | " img.save(\"refined_receipt.jpg\")\n", 103 | " text = pytesseract.image_to_string(Image.open(\"refined_receipt.jpg\"))\n", 104 | " print(text)\n", 105 | " " 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 7, 111 | "metadata": {}, 112 | "outputs": [ 113 | { 114 | "name": "stdout", 115 | "output_type": "stream", 116 | "text": [ 117 | "(2448, 3264, 3)\n", 118 | "WHfiLE\n", 119 | "WHFOODS\n", 120 | "\n", 121 | "UHDLE FOODS HflRKET — UESTPDRT.CT 05880\n", 122 | "399 POST RD NEST — (203) 227—6858\n", 123 | "\n", 124 | " \n", 125 | "\n", 126 | "365 BRCON LS NF 4 99\n", 127 | "365 BHCDN LS NP 4.99\n", 128 | "365 BQCON LS NP 4 99\n", 129 | "365 BHCON LS NF 4 99\n", 130 | "\n", 131 | "BROTH CHIC NP 2 19\n", 132 | "\n", 133 | "FLOUR RLNOND NP 1!.99\n", 134 | "\n", 135 | "CHKN BRST BNLSS SK NF 18 80\n", 136 | "HEAVY CRERH NP 3.39\n", 137 | "\n", 138 | "BHLSHC REDUCT NP 6.49\n", 139 | "\n", 140 | "BEEF ERND 85/15 NP 5.01\n", 141 | "JUICE CUP CRSHEU L NP 8.99\n", 142 | "DOCS PINT DRGHNIC NP 14.49\n", 143 | "\n", 144 | "HNY HLHDND BUTTER NP 9.99\n", 145 | "\n", 146 | "lI-l Yfix .00 BBL ‘01.33\n", 147 | "\n", 148 | ".“.l'ttlilti\n", 149 | "\n", 150 | "‘nn'nfl-n-n-n-nmflflwfl\n" 151 | ] 152 | } 153 | ], 154 | "source": [ 155 | "convert_img_text('./receipt.jpg')" 156 | ] 157 | }, 158 | { 159 | "cell_type": "code", 160 | "execution_count": null, 161 | "metadata": {}, 162 | "outputs": [], 163 | "source": [] 164 | }, 165 | { 166 | "cell_type": "code", 167 | "execution_count": null, 168 | "metadata": {}, 169 | "outputs": [], 170 | "source": [] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": null, 175 | "metadata": {}, 176 | "outputs": [], 177 | "source": [] 178 | }, 179 | { 180 | "cell_type": "code", 181 | "execution_count": null, 182 | "metadata": {}, 183 | "outputs": [], 184 | "source": [] 185 | } 186 | ], 187 | "metadata": { 188 | "kernelspec": { 189 | "display_name": "Python 3", 190 | "language": "python", 191 | "name": "python3" 192 | }, 193 | "language_info": { 194 | "codemirror_mode": { 195 | "name": "ipython", 196 | "version": 3 197 | }, 198 | "file_extension": ".py", 199 | "mimetype": "text/x-python", 200 | "name": "python", 201 | "nbconvert_exporter": "python", 202 | "pygments_lexer": "ipython3", 203 | "version": "3.6.5" 204 | } 205 | }, 206 | "nbformat": 4, 207 | "nbformat_minor": 2 208 | } 209 | -------------------------------------------------------------------------------- /Class9/Challenge.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "name": "stdout", 20 | "output_type": "stream", 21 | "text": [ 22 | "(1000, 10)\n" 23 | ] 24 | }, 25 | { 26 | "data": { 27 | "text/html": [ 28 | "
\n", 29 | "\n", 42 | "\n", 43 | " \n", 44 | " \n", 45 | " \n", 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 | "
critic_ratingis_actionis_exclusive_to_usis_portableis_role_playingis_sequelis_sportssuitable_for_kidstotal_earningsunit_price
03.5101010013271759.99
14.500001108340749.99
23.000001106242349.99
34.510000016988939.99
44.0101010116138259.99
\n", 126 | "
" 127 | ], 128 | "text/plain": [ 129 | " critic_rating is_action is_exclusive_to_us is_portable is_role_playing \\\n", 130 | "0 3.5 1 0 1 0 \n", 131 | "1 4.5 0 0 0 0 \n", 132 | "2 3.0 0 0 0 0 \n", 133 | "3 4.5 1 0 0 0 \n", 134 | "4 4.0 1 0 1 0 \n", 135 | "\n", 136 | " is_sequel is_sports suitable_for_kids total_earnings unit_price \n", 137 | "0 1 0 0 132717 59.99 \n", 138 | "1 1 1 0 83407 49.99 \n", 139 | "2 1 1 0 62423 49.99 \n", 140 | "3 0 0 1 69889 39.99 \n", 141 | "4 1 0 1 161382 59.99 " 142 | ] 143 | }, 144 | "execution_count": 2, 145 | "metadata": {}, 146 | "output_type": "execute_result" 147 | } 148 | ], 149 | "source": [ 150 | "ds = pd.read_csv('./sales_data_training.csv')\n", 151 | "print ds.shape\n", 152 | "ds.head()" 153 | ] 154 | }, 155 | { 156 | "cell_type": "code", 157 | "execution_count": 3, 158 | "metadata": {}, 159 | "outputs": [ 160 | { 161 | "name": "stdout", 162 | "output_type": "stream", 163 | "text": [ 164 | "(400, 10)\n" 165 | ] 166 | }, 167 | { 168 | "data": { 169 | "text/html": [ 170 | "
\n", 171 | "\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 | "
critic_ratingis_actionis_exclusive_to_usis_portableis_role_playingis_sequelis_sportssuitable_for_kidstotal_earningsunit_price
03.5111010124753759.99
12.500011007396059.99
23.500001108267159.99
34.0110010013745639.99
42.010101008963959.99
\n", 268 | "
" 269 | ], 270 | "text/plain": [ 271 | " critic_rating is_action is_exclusive_to_us is_portable is_role_playing \\\n", 272 | "0 3.5 1 1 1 0 \n", 273 | "1 2.5 0 0 0 1 \n", 274 | "2 3.5 0 0 0 0 \n", 275 | "3 4.0 1 1 0 0 \n", 276 | "4 2.0 1 0 1 0 \n", 277 | "\n", 278 | " is_sequel is_sports suitable_for_kids total_earnings unit_price \n", 279 | "0 1 0 1 247537 59.99 \n", 280 | "1 1 0 0 73960 59.99 \n", 281 | "2 1 1 0 82671 59.99 \n", 282 | "3 1 0 0 137456 39.99 \n", 283 | "4 1 0 0 89639 59.99 " 284 | ] 285 | }, 286 | "execution_count": 3, 287 | "metadata": {}, 288 | "output_type": "execute_result" 289 | } 290 | ], 291 | "source": [ 292 | "ds_test = pd.read_csv('./sales_data_test.csv')\n", 293 | "print ds_test.shape\n", 294 | "ds_test.head()" 295 | ] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "execution_count": null, 300 | "metadata": {}, 301 | "outputs": [], 302 | "source": [] 303 | } 304 | ], 305 | "metadata": { 306 | "kernelspec": { 307 | "display_name": "Python 2", 308 | "language": "python", 309 | "name": "python2" 310 | }, 311 | "language_info": { 312 | "codemirror_mode": { 313 | "name": "ipython", 314 | "version": 2 315 | }, 316 | "file_extension": ".py", 317 | "mimetype": "text/x-python", 318 | "name": "python", 319 | "nbconvert_exporter": "python", 320 | "pygments_lexer": "ipython2", 321 | "version": "2.7.15" 322 | } 323 | }, 324 | "nbformat": 4, 325 | "nbformat_minor": 2 326 | } 327 | -------------------------------------------------------------------------------- /Class9/page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class9/page.jpg -------------------------------------------------------------------------------- /Class9/receipt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class9/receipt.jpg -------------------------------------------------------------------------------- /Class9/sales_data_test.csv: -------------------------------------------------------------------------------- 1 | critic_rating,is_action,is_exclusive_to_us,is_portable,is_role_playing,is_sequel,is_sports,suitable_for_kids,total_earnings,unit_price 2 | 3.5,1,1,1,0,1,0,1,247537,59.99 3 | 2.5,0,0,0,1,1,0,0,73960,59.99 4 | 3.5,0,0,0,0,1,1,0,82671,59.99 5 | 4.0,1,1,0,0,1,0,0,137456,39.99 6 | 2.0,1,0,1,0,1,0,0,89639,59.99 7 | 3.5,1,0,1,0,0,0,1,103734,59.99 8 | 4.0,1,0,0,0,0,0,1,96766,59.99 9 | 3.5,1,1,1,0,1,0,0,223148,59.99 10 | 4.0,1,1,0,0,0,0,0,149979,59.99 11 | 2.5,0,1,0,1,1,0,1,138418,59.99 12 | 5.0,1,0,0,0,1,0,0,96810,39.99 13 | 4.0,1,0,0,0,1,0,0,122264,59.99 14 | 3.5,0,1,0,0,0,1,0,101834,59.99 15 | 4.0,0,0,1,1,1,0,0,126065,59.99 16 | 4.5,0,1,1,0,1,1,0,138090,39.99 17 | 4.0,0,0,0,0,1,1,0,92173,59.99 18 | 3.5,0,0,1,0,1,1,1,109436,59.99 19 | 3.5,0,0,0,1,0,0,0,45607,39.99 20 | 5.0,1,0,0,0,1,0,0,97444,39.99 21 | 2.5,1,0,1,0,1,0,0,105476,59.99 22 | 3.0,0,0,0,1,1,0,0,85838,59.99 23 | 3.5,0,1,0,1,1,0,0,107157,39.99 24 | 2.5,0,1,0,1,1,0,1,141427,59.99 25 | 4.0,0,0,1,1,0,0,0,89481,59.99 26 | 3.5,1,0,1,0,1,0,1,146337,59.99 27 | 3.5,0,0,1,0,1,1,1,108485,59.99 28 | 3.0,1,1,0,0,1,0,0,139760,49.99 29 | 3.5,1,0,0,0,1,0,1,82241,39.99 30 | 3.0,1,0,0,0,0,0,0,70001,59.99 31 | 4.5,1,0,1,0,0,0,1,105182,49.99 32 | 2.5,0,0,0,1,1,0,0,75069,59.99 33 | 3.5,1,1,0,0,1,0,0,189098,59.99 34 | 4.0,1,0,0,0,1,0,0,82347,39.99 35 | 4.5,0,1,0,1,1,0,0,196858,59.99 36 | 5.0,0,0,0,1,1,0,0,82558,39.99 37 | 3.5,0,0,0,1,0,0,0,68575,59.99 38 | 5.0,0,1,0,0,1,1,0,124787,39.99 39 | 2.5,0,0,0,1,1,0,1,68098,49.99 40 | 5.0,0,1,1,0,1,1,1,162900,39.99 41 | 5.0,0,1,0,1,1,0,1,234234,59.99 42 | 2.0,0,0,0,1,1,0,0,42862,39.99 43 | 3.5,0,0,0,1,1,0,0,62816,39.99 44 | 2.5,1,1,0,0,0,0,0,106427,59.99 45 | 3.5,0,0,1,0,0,1,0,58992,49.99 46 | 3.5,0,1,0,0,1,1,0,95332,39.99 47 | 3.0,1,0,1,0,1,0,0,80130,39.99 48 | 2.0,0,0,0,1,0,0,0,46561,59.99 49 | 5.0,1,1,1,0,1,0,0,246394,49.99 50 | 3.5,1,0,0,0,1,0,1,81502,39.99 51 | 4.5,0,0,0,0,1,1,0,101359,59.99 52 | 2.5,0,0,0,1,0,0,0,54005,59.99 53 | 5.0,1,1,1,0,0,0,1,232809,59.99 54 | 2.5,1,0,0,0,1,0,0,87897,59.99 55 | 4.0,1,0,0,0,1,0,0,82347,39.99 56 | 2.5,0,0,1,0,1,1,0,65194,49.99 57 | 4.0,1,0,0,0,1,0,0,120997,59.99 58 | 3.0,1,0,1,0,1,0,1,131925,59.99 59 | 2.0,0,0,0,1,1,0,1,70159,59.99 60 | 3.0,1,1,1,0,1,0,0,202559,59.99 61 | 4.5,1,1,0,0,1,0,0,228216,59.99 62 | 4.0,1,0,0,0,0,0,0,72321,49.99 63 | 4.5,1,1,1,0,1,0,0,270660,59.99 64 | 4.5,0,0,0,1,1,0,0,114504,59.99 65 | 3.5,0,0,0,0,0,1,0,60023,59.99 66 | 2.5,0,0,0,1,1,0,1,82037,59.99 67 | 4.5,1,0,1,0,1,0,0,135140,49.99 68 | 4.5,1,1,0,0,1,0,0,191493,49.99 69 | 4.0,1,0,0,0,1,0,0,123848,59.99 70 | 3.5,0,1,1,1,1,0,0,129644,39.99 71 | 4.0,0,0,1,1,1,0,0,124798,59.99 72 | 4.0,1,0,0,0,1,0,0,100827,49.99 73 | 3.5,0,0,0,1,1,0,1,105793,59.99 74 | 3.5,1,1,0,0,1,0,1,206835,59.99 75 | 2.5,0,0,0,1,1,0,0,62555,49.99 76 | 3.5,1,0,0,0,1,0,0,74323,39.99 77 | 3.0,0,1,1,0,1,1,0,153780,59.99 78 | 4.0,1,1,1,0,1,0,1,272244,59.99 79 | 4.0,0,0,0,1,1,0,1,116404,59.99 80 | 3.0,1,0,1,0,0,0,0,55848,39.99 81 | 5.0,1,0,0,0,1,0,0,144278,59.99 82 | 4.5,0,0,1,0,1,1,0,119888,59.99 83 | 4.0,0,0,0,0,1,1,0,77204,49.99 84 | 4.5,0,0,1,0,1,1,0,119572,59.99 85 | 3.5,0,0,0,1,1,0,1,86838,49.99 86 | 3.5,1,1,1,0,1,0,0,225048,59.99 87 | 3.0,1,0,1,0,1,0,1,87942,39.99 88 | 2.5,1,0,0,0,1,0,0,87263,59.99 89 | 2.5,1,0,0,0,1,0,0,57748,39.99 90 | 3.5,0,1,0,1,1,0,1,146886,49.99 91 | 2.5,0,0,0,1,1,0,0,74277,59.99 92 | 4.5,1,0,0,0,1,0,0,89843,39.99 93 | 2.0,0,0,0,0,1,1,0,56539,59.99 94 | 5.0,1,0,0,0,1,0,0,96388,39.99 95 | 3.5,1,0,0,0,1,0,0,92381,49.99 96 | 5.0,0,1,1,0,1,1,0,149386,39.99 97 | 5.0,0,0,0,0,1,1,1,79285,39.99 98 | 3.5,0,1,0,0,1,1,1,128938,49.99 99 | 3.5,0,1,0,1,1,0,0,133953,49.99 100 | 4.0,1,0,1,0,0,0,0,70206,39.99 101 | 3.5,0,0,0,0,1,1,1,61654,39.99 102 | 4.0,0,0,1,1,0,0,0,90906,59.99 103 | 4.5,0,0,0,1,1,0,1,127332,59.99 104 | 4.0,0,1,0,1,0,0,0,127174,59.99 105 | 2.5,1,0,0,0,1,0,0,86947,59.99 106 | 4.0,1,0,0,0,0,0,1,96449,59.99 107 | 4.0,1,0,0,0,1,0,0,103203,49.99 108 | 5.0,0,0,1,1,0,0,1,117829,59.99 109 | 4.0,1,0,0,0,1,0,0,121630,59.99 110 | 2.0,1,1,0,0,0,0,0,91856,59.99 111 | 2.5,1,0,0,0,0,0,0,61924,59.99 112 | 4.5,1,0,0,0,1,0,1,146653,59.99 113 | 4.0,0,0,1,1,0,0,1,99300,59.99 114 | 2.5,1,0,0,0,1,0,0,58593,39.99 115 | 3.5,1,0,0,0,1,0,0,112128,59.99 116 | 3.5,0,0,0,0,0,1,0,39484,39.99 117 | 5.0,1,1,0,0,1,0,0,245795,59.99 118 | 2.5,1,1,0,0,1,0,0,150613,59.99 119 | 3.5,1,0,1,0,1,0,0,88681,39.99 120 | 4.5,0,0,0,1,1,0,1,125590,59.99 121 | 3.5,1,0,1,0,1,0,0,131291,59.99 122 | 2.5,0,1,0,0,0,1,0,78711,59.99 123 | 3.5,0,1,0,1,1,0,0,132765,49.99 124 | 4.5,1,1,0,0,1,0,0,151075,39.99 125 | 4.5,1,0,0,0,0,0,0,96291,59.99 126 | 4.5,0,0,0,1,1,0,0,116087,59.99 127 | 3.5,0,0,0,0,1,1,0,83779,59.99 128 | 2.0,1,0,0,0,1,0,0,75385,59.99 129 | 4.5,1,0,1,0,1,0,1,148998,49.99 130 | 4.5,0,0,1,0,1,1,0,120680,59.99 131 | 3.5,0,0,0,1,0,0,0,68259,59.99 132 | 4.5,1,0,0,0,1,0,0,134775,59.99 133 | 3.5,0,1,0,1,1,0,1,175319,59.99 134 | 4.0,0,0,0,1,0,0,0,74593,59.99 135 | 4.5,0,0,0,1,1,0,0,114187,59.99 136 | 4.0,0,1,0,1,1,0,1,198442,59.99 137 | 4.0,0,0,0,0,1,1,0,91856,59.99 138 | 4.0,0,1,0,1,1,0,0,149526,49.99 139 | 4.5,0,0,0,0,1,1,0,101042,59.99 140 | 4.0,0,0,0,0,1,1,0,92648,59.99 141 | 3.5,1,0,0,0,0,0,0,78078,59.99 142 | 3.5,0,0,0,1,1,0,0,95499,59.99 143 | 4.0,1,1,0,0,1,0,0,139251,39.99 144 | 2.5,1,0,1,0,0,0,0,50569,39.99 145 | 4.5,1,0,1,0,1,0,1,175477,59.99 146 | 4.0,1,0,1,0,1,0,0,146337,59.99 147 | 4.0,1,0,0,0,1,0,0,80869,39.99 148 | 5.0,0,0,0,0,1,1,1,100827,49.99 149 | 4.0,0,1,0,0,1,1,0,102828,39.99 150 | 3.5,1,0,1,0,1,0,1,145228,59.99 151 | 3.5,0,0,0,1,1,0,0,96132,59.99 152 | 2.5,0,0,0,0,1,1,0,55164,49.99 153 | 4.0,1,1,0,0,1,0,0,138934,39.99 154 | 2.5,1,0,0,0,1,0,0,88214,59.99 155 | 4.5,0,0,1,1,1,0,1,151405,59.99 156 | 2.0,1,0,0,0,1,0,0,50675,39.99 157 | 4.0,1,0,0,0,1,0,0,122897,59.99 158 | 4.0,1,0,1,0,1,0,0,145228,59.99 159 | 3.0,1,1,0,0,1,0,1,153749,49.99 160 | 4.5,1,0,0,0,1,0,0,90054,39.99 161 | 2.0,1,0,1,0,1,0,0,92648,59.99 162 | 3.5,0,0,0,1,1,0,0,95340,59.99 163 | 3.5,0,0,0,0,1,1,0,82671,59.99 164 | 4.0,0,0,0,0,0,1,0,65725,59.99 165 | 4.0,0,1,0,1,1,0,0,147678,49.99 166 | 4.0,0,0,0,1,0,0,1,82037,59.99 167 | 4.5,1,0,0,0,1,0,0,133192,59.99 168 | 3.0,0,1,0,0,0,1,1,99141,59.99 169 | 4.0,1,0,1,0,1,0,0,147445,59.99 170 | 4.0,1,1,0,0,1,0,0,206835,59.99 171 | 2.5,1,0,0,0,1,0,0,57537,39.99 172 | 4.0,1,1,0,0,0,0,0,148079,59.99 173 | 4.5,0,0,1,0,1,1,1,88787,39.99 174 | 4.5,1,1,0,0,1,0,0,229166,59.99 175 | 4.0,0,0,1,1,1,0,1,139685,59.99 176 | 4.5,1,0,0,0,1,0,0,134459,59.99 177 | 3.5,0,0,0,1,0,0,0,56088,49.99 178 | 3.0,0,1,0,1,1,0,0,144595,59.99 179 | 4.0,1,0,1,0,1,0,1,106523,39.99 180 | 4.0,0,0,0,1,1,0,0,105793,59.99 181 | 4.5,1,0,0,0,1,0,0,89843,39.99 182 | 3.0,1,0,0,0,1,0,0,99300,59.99 183 | 2.0,0,0,1,1,1,0,0,76494,59.99 184 | 4.5,1,0,0,0,1,0,0,133508,59.99 185 | 2.5,0,0,1,1,0,0,0,63191,59.99 186 | 3.0,0,0,1,0,0,1,0,63507,59.99 187 | 4.5,1,1,0,0,0,0,1,120565,39.99 188 | 2.5,0,1,0,0,1,1,1,124164,59.99 189 | 4.0,0,0,0,1,1,0,1,116721,59.99 190 | 4.0,0,0,1,0,1,1,1,101355,49.99 191 | 5.0,0,0,0,0,0,1,1,86155,59.99 192 | 4.0,1,0,1,0,0,0,0,104684,59.99 193 | 3.0,1,0,0,0,0,0,0,71584,59.99 194 | 4.5,1,0,1,0,1,0,1,175953,59.99 195 | 2.5,1,0,0,0,0,0,1,57144,49.99 196 | 4.0,1,0,0,0,0,0,0,87580,59.99 197 | 4.5,0,0,0,1,1,0,1,127015,59.99 198 | 2.0,0,0,0,0,1,1,1,63666,59.99 199 | 4.0,0,0,0,0,0,1,0,43918,39.99 200 | 2.0,1,0,0,0,1,0,1,69418,49.99 201 | 4.0,0,0,0,0,1,1,0,91856,59.99 202 | 5.0,1,0,0,0,1,0,1,161065,59.99 203 | 3.5,0,1,0,1,0,0,0,114820,59.99 204 | 4.0,0,1,0,0,1,1,0,154731,59.99 205 | 3.5,1,0,0,0,1,0,0,111178,59.99 206 | 3.5,1,0,1,0,1,0,0,88998,39.99 207 | 2.5,0,0,0,1,1,0,0,62951,49.99 208 | 2.0,0,0,1,1,0,0,0,36739,39.99 209 | 3.5,1,0,0,0,1,0,0,74323,39.99 210 | 5.0,0,0,0,1,1,0,0,125748,59.99 211 | 4.5,0,1,0,1,1,0,0,193690,59.99 212 | 3.0,0,1,0,1,1,0,0,146495,59.99 213 | 4.0,0,0,1,0,1,1,0,110544,59.99 214 | 4.0,0,0,0,0,1,1,0,91223,59.99 215 | 4.5,1,1,0,0,1,0,1,252764,59.99 216 | 3.0,0,0,0,0,1,1,1,81879,59.99 217 | 5.0,1,0,0,0,1,0,0,144278,59.99 218 | 4.0,0,0,0,1,0,0,1,54475,39.99 219 | 4.0,0,0,0,0,1,1,0,92173,59.99 220 | 4.0,0,0,0,0,1,1,0,92648,59.99 221 | 2.0,0,1,1,1,0,0,1,69573,39.99 222 | 4.0,1,0,0,0,0,0,0,58065,39.99 223 | 3.5,0,0,0,1,1,0,0,64083,39.99 224 | 3.5,1,0,0,0,1,0,0,109277,59.99 225 | 3.5,0,0,0,0,0,1,1,65725,59.99 226 | 4.5,1,1,0,0,0,0,1,178803,59.99 227 | 4.0,0,0,0,1,1,0,0,105476,59.99 228 | 4.5,1,1,0,0,1,0,0,188854,49.99 229 | 4.0,0,0,1,1,1,0,0,83191,39.99 230 | 2.5,1,0,0,0,1,0,1,94707,59.99 231 | 3.5,1,1,0,0,0,0,0,133192,59.99 232 | 5.0,1,0,0,0,1,0,0,96810,39.99 233 | 4.0,0,0,1,1,0,0,0,59860,39.99 234 | 5.0,1,0,0,0,1,0,1,160432,59.99 235 | 4.5,0,0,0,1,1,0,0,116087,59.99 236 | 5.0,0,1,0,1,1,0,0,210636,59.99 237 | 2.5,1,0,0,0,1,0,0,73773,49.99 238 | 3.0,1,1,0,0,1,0,0,170885,59.99 239 | 3.5,0,1,1,0,1,1,0,168351,59.99 240 | 2.0,1,0,0,0,1,0,1,69418,49.99 241 | 4.5,1,1,0,0,1,0,0,228691,59.99 242 | 3.5,1,0,1,0,1,0,0,134142,59.99 243 | 3.5,0,1,0,1,1,0,0,134349,49.99 244 | 5.0,0,1,0,0,1,1,0,185613,59.99 245 | 4.5,1,1,0,0,1,0,0,151392,39.99 246 | 4.0,1,0,0,0,1,0,0,120997,59.99 247 | 2.0,0,0,1,1,1,0,0,66118,49.99 248 | 2.5,1,0,0,0,1,0,0,87580,59.99 249 | 3.0,1,0,0,0,1,0,0,100250,59.99 250 | 4.0,1,1,0,0,1,0,1,190569,49.99 251 | 3.5,0,0,1,1,1,0,0,94757,49.99 252 | 2.0,0,0,0,1,1,0,1,71901,59.99 253 | 4.5,0,0,0,1,0,0,0,81562,59.99 254 | 4.5,1,0,1,0,1,0,0,159957,59.99 255 | 3.5,0,1,0,1,0,0,1,127015,59.99 256 | 4.0,0,0,0,0,1,1,1,84595,49.99 257 | 3.0,0,0,0,0,1,1,0,48986,39.99 258 | 5.0,0,0,0,0,1,1,0,91721,49.99 259 | 3.5,1,1,0,0,0,0,0,112177,49.99 260 | 3.0,1,1,0,0,0,0,0,120839,59.99 261 | 3.0,0,1,1,0,1,1,1,111063,39.99 262 | 3.5,1,1,0,0,1,0,0,190206,59.99 263 | 4.5,0,0,0,1,0,0,0,81562,59.99 264 | 4.0,0,0,0,1,1,0,0,87762,49.99 265 | 3.0,0,1,1,1,1,0,0,173102,59.99 266 | 4.0,0,1,0,0,0,1,0,93965,49.99 267 | 3.5,0,1,1,1,1,0,1,214596,59.99 268 | 3.0,0,0,1,1,0,0,0,72851,59.99 269 | 3.5,1,0,0,0,1,0,1,123373,59.99 270 | 3.5,0,0,0,1,1,0,0,95499,59.99 271 | 3.0,1,0,0,0,1,0,0,98983,59.99 272 | 3.5,1,0,0,0,1,0,0,92117,49.99 273 | 4.5,0,0,0,1,1,0,0,115771,59.99 274 | 5.0,1,1,0,0,1,0,0,246429,59.99 275 | 4.0,0,0,0,0,0,1,1,71743,59.99 276 | 3.5,1,0,0,0,0,0,0,79820,59.99 277 | 3.5,1,0,0,0,0,0,1,58276,39.99 278 | 4.5,1,0,0,0,1,0,1,146970,59.99 279 | 3.5,0,0,0,1,1,0,1,104843,59.99 280 | 4.0,0,0,1,1,0,0,0,89481,59.99 281 | 4.5,0,1,0,1,1,0,0,196383,59.99 282 | 3.5,0,0,0,1,0,0,0,45079,39.99 283 | 3.0,1,0,0,0,1,0,1,89874,49.99 284 | 3.5,0,1,1,1,1,0,0,192265,59.99 285 | 2.0,0,1,0,1,1,0,0,111178,59.99 286 | 3.5,1,1,1,0,1,0,1,246904,59.99 287 | 4.0,1,0,0,0,1,0,1,136201,59.99 288 | 4.0,0,0,0,1,1,0,0,103734,59.99 289 | 3.5,0,0,0,0,1,1,0,55320,39.99 290 | 2.5,1,1,0,0,0,0,0,106427,59.99 291 | 3.5,1,1,0,0,1,0,0,189573,59.99 292 | 2.5,0,1,1,1,1,0,0,152672,59.99 293 | 3.5,1,0,1,0,1,0,0,131608,59.99 294 | 4.5,0,0,0,0,1,1,0,83275,49.99 295 | 4.0,1,0,1,0,1,0,0,97233,39.99 296 | 4.0,1,0,1,0,1,0,1,162966,59.99 297 | 3.5,0,0,0,1,0,0,1,75227,59.99 298 | 4.5,0,0,1,1,0,0,0,98825,59.99 299 | 4.0,1,0,1,0,1,0,1,160115,59.99 300 | 3.5,0,0,0,0,1,1,1,75092,49.99 301 | 3.5,1,0,0,0,1,0,1,101883,49.99 302 | 2.0,0,1,0,1,1,0,0,91193,49.99 303 | 3.5,1,0,1,0,1,0,1,146812,59.99 304 | 3.0,0,0,1,1,1,0,1,111970,59.99 305 | 3.5,1,0,0,0,1,0,0,110544,59.99 306 | 4.5,1,0,0,0,0,0,0,95182,59.99 307 | 2.0,0,0,1,1,1,0,0,79028,59.99 308 | 4.0,1,1,0,0,1,0,0,210478,59.99 309 | 4.0,0,1,0,1,1,0,1,129961,39.99 310 | 4.0,0,0,0,0,0,1,0,66200,59.99 311 | 3.5,1,0,0,0,1,0,0,110861,59.99 312 | 3.5,1,1,0,0,1,0,0,126054,39.99 313 | 4.0,0,0,0,1,0,0,1,81720,59.99 314 | 3.5,1,1,1,0,1,0,0,228216,59.99 315 | 4.0,0,0,0,1,1,0,0,105793,59.99 316 | 3.5,0,1,0,0,1,1,0,143011,59.99 317 | 4.0,0,0,0,1,1,0,1,115771,59.99 318 | 4.0,1,1,0,0,1,0,0,171829,49.99 319 | 4.0,1,0,1,0,1,0,0,145862,59.99 320 | 3.0,0,0,1,0,1,1,0,73905,49.99 321 | 2.5,1,0,0,0,1,0,1,97083,59.99 322 | 2.5,1,0,0,0,1,0,0,72717,49.99 323 | 4.5,0,1,1,1,1,0,0,232967,59.99 324 | 4.5,1,0,0,0,1,0,0,111517,49.99 325 | 4.0,0,0,0,1,1,0,0,106110,59.99 326 | 4.5,1,1,0,0,1,0,1,248646,59.99 327 | 4.0,0,0,0,0,1,1,0,92331,59.99 328 | 4.0,1,1,0,0,1,0,1,192945,49.99 329 | 4.0,0,0,1,0,1,1,0,109436,59.99 330 | 3.5,0,1,0,1,0,0,0,116087,59.99 331 | 4.0,0,0,1,1,0,0,0,89322,59.99 332 | 4.0,1,0,1,0,1,0,0,148237,59.99 333 | 3.0,1,0,0,0,0,0,1,77919,59.99 334 | 5.0,1,0,0,0,1,0,0,121547,49.99 335 | 2.0,1,0,1,0,1,0,0,91223,59.99 336 | 2.5,1,0,0,0,0,0,1,45185,39.99 337 | 3.5,0,0,0,1,1,0,1,103101,59.99 338 | 2.0,0,0,1,0,1,1,0,68417,59.99 339 | 2.5,1,1,0,0,1,0,0,146812,59.99 340 | 4.5,0,1,1,0,1,1,1,188194,49.99 341 | 3.0,0,1,0,0,1,1,1,136993,59.99 342 | 3.5,1,0,0,0,0,0,1,86155,59.99 343 | 4.0,1,0,1,0,1,0,0,97233,39.99 344 | 4.5,1,0,0,0,1,0,0,110725,49.99 345 | 3.5,1,0,0,0,1,0,0,110228,59.99 346 | 3.0,1,1,0,0,1,0,1,185138,59.99 347 | 3.5,1,1,0,0,1,0,1,208578,59.99 348 | 5.0,0,0,1,1,1,0,0,149663,59.99 349 | 5.0,0,0,1,0,0,1,1,68728,39.99 350 | 4.0,0,1,1,1,1,0,0,142524,39.99 351 | 3.5,1,0,0,0,1,0,0,111811,59.99 352 | 4.5,0,0,0,1,1,0,0,95416,49.99 353 | 2.0,1,0,0,0,0,0,0,36211,39.99 354 | 2.5,0,0,1,0,1,1,1,56798,39.99 355 | 2.0,1,0,0,0,1,0,0,49619,39.99 356 | 4.5,1,0,0,0,1,0,1,123263,49.99 357 | 3.0,0,1,0,1,1,0,0,146020,59.99 358 | 2.5,0,1,0,0,0,1,0,53525,39.99 359 | 3.5,1,1,0,0,1,0,1,205093,59.99 360 | 3.5,0,0,0,1,1,0,0,95340,59.99 361 | 4.5,0,0,1,1,1,0,1,100928,39.99 362 | 3.5,1,0,0,0,1,0,0,110544,59.99 363 | 3.5,1,0,1,0,1,0,0,133508,59.99 364 | 4.0,1,1,0,0,1,0,0,206835,59.99 365 | 4.0,1,0,0,0,0,0,1,63872,39.99 366 | 2.5,1,1,0,0,1,0,0,151088,59.99 367 | 4.5,1,0,0,0,1,0,0,89420,39.99 368 | 5.0,0,0,0,0,1,1,0,109752,59.99 369 | 3.0,0,1,1,1,0,0,1,135567,59.99 370 | 3.0,1,0,0,0,1,0,1,110228,59.99 371 | 2.0,1,0,0,0,1,0,0,75702,59.99 372 | 2.5,1,0,0,0,1,0,1,97399,59.99 373 | 4.0,1,0,0,0,0,0,0,72189,49.99 374 | 3.5,0,0,1,1,1,0,0,113395,59.99 375 | 2.5,0,1,0,1,0,0,0,76280,49.99 376 | 2.5,0,0,1,1,1,0,1,82879,49.99 377 | 4.0,1,0,1,0,1,0,1,160590,59.99 378 | 3.5,0,0,1,1,0,0,1,88530,59.99 379 | 3.5,0,0,0,1,0,0,1,49302,39.99 380 | 4.0,0,0,0,1,1,0,0,105476,59.99 381 | 3.5,0,0,0,1,1,0,0,94232,59.99 382 | 3.5,1,0,0,0,1,0,1,120680,59.99 383 | 4.0,0,0,0,1,0,0,0,74435,59.99 384 | 4.5,0,0,0,1,1,0,0,76435,39.99 385 | 3.0,0,0,0,0,0,1,1,58123,59.99 386 | 4.5,0,1,0,0,1,1,0,171043,59.99 387 | 3.5,0,1,0,0,1,1,0,140160,59.99 388 | 3.0,0,0,0,1,1,0,0,84729,59.99 389 | 2.0,0,0,0,1,1,0,0,42546,39.99 390 | 4.0,1,0,0,0,0,0,1,95974,59.99 391 | 2.0,1,0,0,0,1,0,0,76019,59.99 392 | 4.0,0,0,0,1,0,0,0,75069,59.99 393 | 4.5,1,0,0,0,0,0,0,79448,49.99 394 | 4.0,0,0,0,0,1,1,0,61549,39.99 395 | 3.0,0,1,0,1,1,0,0,95544,39.99 396 | 2.5,0,0,1,1,0,0,1,69842,59.99 397 | 4.5,1,0,0,0,0,0,0,95816,59.99 398 | 4.0,1,0,0,0,1,0,0,121947,59.99 399 | 5.0,1,1,1,0,0,0,0,142313,39.99 400 | 2.0,1,1,0,0,0,0,0,61549,39.99 401 | 3.5,1,0,1,0,0,0,0,80107,49.99 402 | -------------------------------------------------------------------------------- /Class9/test_s1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/Class9/test_s1.jpg -------------------------------------------------------------------------------- /Project/Gesture_Record.py: -------------------------------------------------------------------------------- 1 | 2 | # coding: utf-8 3 | 4 | # In[77]: 5 | 6 | 7 | import os 8 | import cv2 9 | import time 10 | 11 | 12 | # In[78]: 13 | 14 | 15 | gesture_name = raw_input("Enter Gesture Name ") 16 | 17 | 18 | # In[79]: 19 | 20 | 21 | images = [] 22 | num_frames = 60 23 | 24 | 25 | # In[80]: 26 | 27 | 28 | capture_start = False 29 | cv2.namedWindow("Video", cv2.WINDOW_NORMAL) 30 | 31 | vc = cv2.VideoCapture(0) 32 | vc.set(cv2.CAP_PROP_FPS, 5) 33 | 34 | rval, frame = vc.read() 35 | 36 | cnt = 0 37 | 38 | while True: 39 | 40 | if frame is not None: 41 | 42 | frame = cv2.flip(frame, 1) 43 | cv2.imshow("Video", frame) 44 | 45 | rval, frame = vc.read() 46 | keypress = cv2.waitKey(1) 47 | 48 | if keypress == ord('q'): 49 | break 50 | elif keypress == ord('c'): 51 | capture_start = True 52 | 53 | if ( capture_start ): 54 | img = cv2.flip(frame, 1) 55 | #img = cv2.cvtColor( img, cv2.COLOR_RGB2BGR ) 56 | images.append(img) 57 | cnt += 1 58 | if ( cnt > num_frames ): 59 | break 60 | 61 | vc.release() 62 | cv2.destroyAllWindows() 63 | cv2.waitKey(1) 64 | 65 | 66 | # In[81]: 67 | 68 | 69 | if len(images) == 0: 70 | print(" ERROR !! No Frames Recorded" ) 71 | exit() 72 | 73 | 74 | # In[83]: 75 | 76 | 77 | last_num = 0 78 | folder_name = gesture_name 79 | gestures_rec = os.listdir('./') 80 | 81 | for i in gestures_rec: 82 | 83 | if i[0] == '.': 84 | continue 85 | if '_'.join( i.split('_')[:-1] ) == gesture_name: 86 | last_num = max(last_num, int( i.split('_')[-1] ) ) 87 | 88 | last_num += 1 89 | folder_name = gesture_name + '_' + str(last_num) 90 | try: 91 | print('[i] Creating directory {}...'.format(folder_name)) 92 | os.makedirs(folder_name) 93 | except (IOError) as e: 94 | print('[!]', str(e)) 95 | exit() 96 | 97 | 98 | # In[84]: 99 | 100 | 101 | print ("[i] Creating Video") 102 | output = './' + folder_name + '/output.mp4' 103 | fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use lower case 104 | out = cv2.VideoWriter(output, fourcc, 5.0, (images[0].shape[1], images[0].shape[0]) ) 105 | 106 | for image in images: 107 | 108 | f = image 109 | #print (f.shape) 110 | out.write(f) # Write out frame to video 111 | 112 | #cv2.imshow('video',frame) 113 | if (cv2.waitKey(1) & 0xFF) == ord('q'): # Hit `q` to exit 114 | break 115 | 116 | # Release everything if job is finished 117 | out.release() 118 | cv2.destroyAllWindows() 119 | 120 | 121 | # In[ ]: 122 | 123 | 124 | print ("Output Video is in", output) 125 | 126 | -------------------------------------------------------------------------------- /Project/README.md: -------------------------------------------------------------------------------- 1 | ## Recording Gesture 2 | 1. Run `python Gesture_Record.py` 3 | 2. Enter Gesture Name 4 | 3. In the Webcam window, Press 'c' to start capturing 5 | 4. 5 sec of video will be recorded and saved to a folder in same directory 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Machine Learning Course with Python 2 | -------------------------------------------------------------------------------- /assignments/python_assignment.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks-archives/machine-learning-june-2018/f0772da9a9a2aec974c1c1daf7aa1f482d764962/assignments/python_assignment.pdf --------------------------------------------------------------------------------