├── Neural Network.pdf
├── Neural Network using TensorFlow Sequential
└── Readme.md
├── README.md
├── Implementing Single Neuron with Raw Python Code.ipynb
├── Activation Functions in Deep Learning.ipynb
├── SL_Perceptron.ipynb
├── LSTM_.ipynb
└── 1_Handwritten_digits.ipynb
/Neural Network.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rashakil-ds/Deep-Learning-with-Python/master/Neural Network.pdf
--------------------------------------------------------------------------------
/Neural Network using TensorFlow Sequential/Readme.md:
--------------------------------------------------------------------------------
1 | # MNIST Neural Network with TensorFlow Sequential API
2 |
3 | This project demonstrates how to build, train, and evaluate a simple neural network using TensorFlow's Sequential API. The model is trained on the **MNIST dataset**, which consists of handwritten digits (0-9). [Watch Tutorial.](https://youtu.be/3TLEDkcW-nE)
4 | ## Features
5 | - Preprocessing and normalization of MNIST data
6 | - Building a fully connected neural network using the Sequential API
7 | - Training the model with a validation split
8 | - Visualizing training and validation performance
9 | - Evaluating the model on the test dataset
10 | - Saving and loading the trained model
11 |
12 | ---
13 |
14 | ## Dataset
15 | The [MNIST dataset](http://yann.lecun.com/exdb/mnist/) is a collection of 28x28 grayscale images of handwritten digits. It contains:
16 | - **60,000 training images**
17 | - **10,000 test images**
18 |
19 | ---
20 |
21 | ## Getting Started
22 |
23 | ### Prerequisites
24 | Ensure you have Python and the required libraries installed:
25 | - TensorFlow
26 | - Matplotlib
27 | - NumPy
28 |
29 | You can install the dependencies using:
30 | ```bash
31 | pip install tensorflow matplotlib numpy
32 |
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Complete Deep Learning
5 | Welcome to the Complete Deep Learning repository! This repository contains video materials ranging from basic to advanced deep learning concepts, curated by Study Mart and aiQuest Intelligence.
6 |
7 | Topics Covered
8 |
9 | Introduction to Deep Learning
10 | Neural Networks and Backpropagation
11 | Convolutional Neural Networks (CNNs)
12 | Recurrent Neural Networks (RNNs)
13 | Long Short-Term Memory (LSTM)
14 | Understanding GRU Networks
15 | Deep Learning Frameworks
16 | Advanced Deep Learning Techniques
17 |
18 |
19 | YouTube Video Playlist
20 | Watch the complete video playlist on YouTube: Complete Deep Learning Playlist
21 |
22 | Repository Link
23 | Check out the collection of video materials here .
24 |
25 | Additional Resources
26 | We also offer a variety of paid courses on data science on our website. Visit AIQuest for more details.
27 | For free resources, check out our YouTube channel: StudyMart .
28 | Join our Facebook group for more discussions and resources: StudyMart Facebook Group .
29 |
30 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/Implementing Single Neuron with Raw Python Code.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "id": "4adce7a4",
6 | "metadata": {},
7 | "source": [
8 | "# Single Neuron Implementation\n",
9 | "\n",
10 | "This notebook demonstrates the implementation of a single neuron. The neuron will take weighted inputs, add a bias, and apply a sigmoid activation function to produce an output.\n",
11 | "\n",
12 | "## Neuron Implementation\n",
13 | "\n",
14 | "We will define the `sigmoid` function and the `feedforward` function to calculate the output of the neuron.\n"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "id": "f6fc7922",
21 | "metadata": {},
22 | "outputs": [],
23 | "source": [
24 | "import math"
25 | ]
26 | },
27 | {
28 | "cell_type": "markdown",
29 | "id": "87a46f7e",
30 | "metadata": {},
31 | "source": [
32 | "Activation Function: Computes the sigmoid activation function."
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": 2,
38 | "id": "890d844a",
39 | "metadata": {},
40 | "outputs": [],
41 | "source": [
42 | "def sigmoid(z):\n",
43 | " return 1 / (1 + math.exp(-z))"
44 | ]
45 | },
46 | {
47 | "cell_type": "markdown",
48 | "id": "3cc9ae2c",
49 | "metadata": {},
50 | "source": [
51 | "Feedforward Network: \n",
52 | "1. Calculates the weighted sum of inputs plus the bias.\n",
53 | "2. Applies the sigmoid activation function to the total."
54 | ]
55 | },
56 | {
57 | "cell_type": "code",
58 | "execution_count": 3,
59 | "id": "694118b2",
60 | "metadata": {},
61 | "outputs": [],
62 | "source": [
63 | "def feedforward(weights, bias, inputs):\n",
64 | " \n",
65 | " total = sum(w * x for w, x in zip(weights, inputs)) + bias\n",
66 | " \n",
67 | " return sigmoid(total)"
68 | ]
69 | },
70 | {
71 | "cell_type": "markdown",
72 | "id": "42a3aadf",
73 | "metadata": {},
74 | "source": [
75 | "classify(): Converts the sigmoid output to a class label based on a threshold (default is 0.5)."
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": 4,
81 | "id": "d61c0319",
82 | "metadata": {},
83 | "outputs": [],
84 | "source": [
85 | "def classify(output, threshold=0.5):\n",
86 | " return 1 if output >= threshold else 0"
87 | ]
88 | },
89 | {
90 | "cell_type": "markdown",
91 | "id": "a0914ac4",
92 | "metadata": {},
93 | "source": [
94 | "We will define the weights, bias, and inputs, and then calculate the output of the neuron using the `feedforward` function.\n"
95 | ]
96 | },
97 | {
98 | "cell_type": "code",
99 | "execution_count": 5,
100 | "id": "8f7949b9",
101 | "metadata": {},
102 | "outputs": [
103 | {
104 | "name": "stdout",
105 | "output_type": "stream",
106 | "text": [
107 | "Output of the neuron for inputs [2, 3] is: 0.9706877692486436\n"
108 | ]
109 | }
110 | ],
111 | "source": [
112 | "weights = [0, 1]\n",
113 | "bias = 0.5\n",
114 | "\n",
115 | "inputs = [2, 3]\n",
116 | "\n",
117 | "output = feedforward(weights, bias, inputs)\n",
118 | "print(f\"Output of the neuron for inputs {inputs} is: {output}\")"
119 | ]
120 | },
121 | {
122 | "cell_type": "code",
123 | "execution_count": 6,
124 | "id": "1736516e",
125 | "metadata": {},
126 | "outputs": [
127 | {
128 | "name": "stdout",
129 | "output_type": "stream",
130 | "text": [
131 | "Class label for the output is: 1\n"
132 | ]
133 | }
134 | ],
135 | "source": [
136 | "class_label = classify(output)\n",
137 | "print(f\"Class label for the output is: {class_label}\")"
138 | ]
139 | },
140 | {
141 | "cell_type": "code",
142 | "execution_count": null,
143 | "id": "c1f23be1",
144 | "metadata": {},
145 | "outputs": [],
146 | "source": []
147 | }
148 | ],
149 | "metadata": {
150 | "kernelspec": {
151 | "display_name": "Python 3 (ipykernel)",
152 | "language": "python",
153 | "name": "python3"
154 | },
155 | "language_info": {
156 | "codemirror_mode": {
157 | "name": "ipython",
158 | "version": 3
159 | },
160 | "file_extension": ".py",
161 | "mimetype": "text/x-python",
162 | "name": "python",
163 | "nbconvert_exporter": "python",
164 | "pygments_lexer": "ipython3",
165 | "version": "3.9.13"
166 | }
167 | },
168 | "nbformat": 4,
169 | "nbformat_minor": 5
170 | }
171 |
--------------------------------------------------------------------------------
/Activation Functions in Deep Learning.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "3caf694a",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "# !pip install numpy"
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "execution_count": 2,
16 | "id": "55ac3bc2",
17 | "metadata": {},
18 | "outputs": [],
19 | "source": [
20 | "import numpy as np"
21 | ]
22 | },
23 | {
24 | "cell_type": "markdown",
25 | "id": "c0d809a6",
26 | "metadata": {},
27 | "source": [
28 | "# 1. ReLU - Rectified Linear Unit (Hidden Layer)"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": 3,
34 | "id": "47f174a7",
35 | "metadata": {},
36 | "outputs": [],
37 | "source": [
38 | "def relu(x):\n",
39 | " return np.maximum(0, x)\n"
40 | ]
41 | },
42 | {
43 | "cell_type": "code",
44 | "execution_count": 4,
45 | "id": "04873e16",
46 | "metadata": {},
47 | "outputs": [
48 | {
49 | "data": {
50 | "text/plain": [
51 | "10"
52 | ]
53 | },
54 | "execution_count": 4,
55 | "metadata": {},
56 | "output_type": "execute_result"
57 | }
58 | ],
59 | "source": [
60 | "relu(10)"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": 5,
66 | "id": "81560793",
67 | "metadata": {},
68 | "outputs": [
69 | {
70 | "data": {
71 | "text/plain": [
72 | "0"
73 | ]
74 | },
75 | "execution_count": 5,
76 | "metadata": {},
77 | "output_type": "execute_result"
78 | }
79 | ],
80 | "source": [
81 | "relu(-10)"
82 | ]
83 | },
84 | {
85 | "cell_type": "code",
86 | "execution_count": 6,
87 | "id": "e914d442",
88 | "metadata": {},
89 | "outputs": [
90 | {
91 | "data": {
92 | "text/plain": [
93 | "array([0, 0, 1, 2])"
94 | ]
95 | },
96 | "execution_count": 6,
97 | "metadata": {},
98 | "output_type": "execute_result"
99 | }
100 | ],
101 | "source": [
102 | "relu(np.array([-1, 0, 1, 2]))"
103 | ]
104 | },
105 | {
106 | "cell_type": "markdown",
107 | "id": "e6ea50d7",
108 | "metadata": {},
109 | "source": [
110 | "# 2. Leaky ReLU (Hidden Layer)"
111 | ]
112 | },
113 | {
114 | "cell_type": "markdown",
115 | "id": "a19d2b17",
116 | "metadata": {},
117 | "source": [
118 | "Leaky ReLU allows a small, positive gradient when the unit is not active."
119 | ]
120 | },
121 | {
122 | "cell_type": "code",
123 | "execution_count": 7,
124 | "id": "0a2a2eb6",
125 | "metadata": {},
126 | "outputs": [],
127 | "source": [
128 | "def leaky_relu(x, alpha=0.01):\n",
129 | " return np.where(x > 0, x, x * alpha)\n"
130 | ]
131 | },
132 | {
133 | "cell_type": "code",
134 | "execution_count": 8,
135 | "id": "c4212806",
136 | "metadata": {},
137 | "outputs": [
138 | {
139 | "data": {
140 | "text/plain": [
141 | "array(-0.01)"
142 | ]
143 | },
144 | "execution_count": 8,
145 | "metadata": {},
146 | "output_type": "execute_result"
147 | }
148 | ],
149 | "source": [
150 | "leaky_relu(-1)"
151 | ]
152 | },
153 | {
154 | "cell_type": "code",
155 | "execution_count": 9,
156 | "id": "d243f562",
157 | "metadata": {},
158 | "outputs": [
159 | {
160 | "data": {
161 | "text/plain": [
162 | "array([-0.01, 0. , 1. , 2. ])"
163 | ]
164 | },
165 | "execution_count": 9,
166 | "metadata": {},
167 | "output_type": "execute_result"
168 | }
169 | ],
170 | "source": [
171 | "leaky_relu(np.array([-1, 0, 1, 2]))"
172 | ]
173 | },
174 | {
175 | "cell_type": "markdown",
176 | "id": "6393bc6a",
177 | "metadata": {},
178 | "source": [
179 | "# 3. ELU - Exponential Linear Unit (Hidden Layer)"
180 | ]
181 | },
182 | {
183 | "cell_type": "markdown",
184 | "id": "cd1277d3",
185 | "metadata": {},
186 | "source": [
187 | "ELU has a small slope for negative values, unlike ReLU, to avoid the dying ReLU problem."
188 | ]
189 | },
190 | {
191 | "cell_type": "code",
192 | "execution_count": 10,
193 | "id": "ae19a635",
194 | "metadata": {},
195 | "outputs": [],
196 | "source": [
197 | "def elu(x, alpha=1.0):\n",
198 | " return np.where(x > 0, x, alpha * (np.exp(x) - 1))"
199 | ]
200 | },
201 | {
202 | "cell_type": "code",
203 | "execution_count": 11,
204 | "id": "8120ec43",
205 | "metadata": {},
206 | "outputs": [
207 | {
208 | "data": {
209 | "text/plain": [
210 | "array(5.)"
211 | ]
212 | },
213 | "execution_count": 11,
214 | "metadata": {},
215 | "output_type": "execute_result"
216 | }
217 | ],
218 | "source": [
219 | "elu(5)"
220 | ]
221 | },
222 | {
223 | "cell_type": "code",
224 | "execution_count": 12,
225 | "id": "dc0d1b39",
226 | "metadata": {},
227 | "outputs": [
228 | {
229 | "data": {
230 | "text/plain": [
231 | "array([-0.63212056, 0. , 1. , 2. ])"
232 | ]
233 | },
234 | "execution_count": 12,
235 | "metadata": {},
236 | "output_type": "execute_result"
237 | }
238 | ],
239 | "source": [
240 | "elu(np.array([-1, 0, 1, 2]))"
241 | ]
242 | },
243 | {
244 | "cell_type": "markdown",
245 | "id": "02a66821",
246 | "metadata": {},
247 | "source": [
248 | "# 4. Sigmoid (Output Layer & Binaryclass Problem)"
249 | ]
250 | },
251 | {
252 | "cell_type": "code",
253 | "execution_count": 13,
254 | "id": "037e9cb3",
255 | "metadata": {},
256 | "outputs": [],
257 | "source": [
258 | "def sigmoid(x):\n",
259 | " return 1 / (1 + np.exp(-x))\n"
260 | ]
261 | },
262 | {
263 | "cell_type": "code",
264 | "execution_count": 14,
265 | "id": "408f0b7f",
266 | "metadata": {},
267 | "outputs": [
268 | {
269 | "data": {
270 | "text/plain": [
271 | "array([0.26894142, 0.5 , 0.73105858, 0.88079708])"
272 | ]
273 | },
274 | "execution_count": 14,
275 | "metadata": {},
276 | "output_type": "execute_result"
277 | }
278 | ],
279 | "source": [
280 | "sigmoid(np.array([-1, 0, 1, 2]))"
281 | ]
282 | },
283 | {
284 | "cell_type": "markdown",
285 | "id": "d6afd65e",
286 | "metadata": {},
287 | "source": [
288 | "# 5. Softmax (Output Layer & Multiclass Problem)"
289 | ]
290 | },
291 | {
292 | "cell_type": "markdown",
293 | "id": "6d7f80ba",
294 | "metadata": {},
295 | "source": [
296 | "Softmax converts a real vector to a vector of categorical probabilities."
297 | ]
298 | },
299 | {
300 | "cell_type": "code",
301 | "execution_count": 15,
302 | "id": "1bd42072",
303 | "metadata": {},
304 | "outputs": [],
305 | "source": [
306 | "def softmax(x):\n",
307 | " e_x = np.exp(x - np.max(x)) \n",
308 | " return e_x / e_x.sum(axis=0)\n"
309 | ]
310 | },
311 | {
312 | "cell_type": "code",
313 | "execution_count": 16,
314 | "id": "136ead8b",
315 | "metadata": {},
316 | "outputs": [
317 | {
318 | "data": {
319 | "text/plain": [
320 | "array([0.0320586 , 0.08714432, 0.23688282, 0.64391426])"
321 | ]
322 | },
323 | "execution_count": 16,
324 | "metadata": {},
325 | "output_type": "execute_result"
326 | }
327 | ],
328 | "source": [
329 | "proba = softmax(np.array([-1, 0, 1, 2]))\n",
330 | "proba"
331 | ]
332 | },
333 | {
334 | "cell_type": "code",
335 | "execution_count": 17,
336 | "id": "2388c5b0",
337 | "metadata": {},
338 | "outputs": [
339 | {
340 | "data": {
341 | "text/plain": [
342 | "1.0"
343 | ]
344 | },
345 | "execution_count": 17,
346 | "metadata": {},
347 | "output_type": "execute_result"
348 | }
349 | ],
350 | "source": [
351 | "sum(proba)"
352 | ]
353 | },
354 | {
355 | "cell_type": "markdown",
356 | "id": "b7977ddf",
357 | "metadata": {},
358 | "source": [
359 | "# 6. Swish (Hidden Layer)"
360 | ]
361 | },
362 | {
363 | "cell_type": "markdown",
364 | "id": "31667369",
365 | "metadata": {},
366 | "source": [
367 | "Swish is a self-gated activation function."
368 | ]
369 | },
370 | {
371 | "cell_type": "code",
372 | "execution_count": 18,
373 | "id": "94bcf6dc",
374 | "metadata": {},
375 | "outputs": [],
376 | "source": [
377 | "def swish(x, beta=1.0):\n",
378 | " return x * sigmoid(beta * x)\n"
379 | ]
380 | },
381 | {
382 | "cell_type": "code",
383 | "execution_count": 19,
384 | "id": "aa3867fb",
385 | "metadata": {},
386 | "outputs": [
387 | {
388 | "data": {
389 | "text/plain": [
390 | "4.966535745378576"
391 | ]
392 | },
393 | "execution_count": 19,
394 | "metadata": {},
395 | "output_type": "execute_result"
396 | }
397 | ],
398 | "source": [
399 | "swish(5)"
400 | ]
401 | },
402 | {
403 | "cell_type": "code",
404 | "execution_count": 20,
405 | "id": "ac227b4a",
406 | "metadata": {},
407 | "outputs": [
408 | {
409 | "data": {
410 | "text/plain": [
411 | "array([-0.26894142, 0. , 0.73105858, 1.76159416])"
412 | ]
413 | },
414 | "execution_count": 20,
415 | "metadata": {},
416 | "output_type": "execute_result"
417 | }
418 | ],
419 | "source": [
420 | "swish(np.array([-1, 0, 1, 2]))"
421 | ]
422 | },
423 | {
424 | "cell_type": "markdown",
425 | "id": "38e55866",
426 | "metadata": {},
427 | "source": [
428 | "# 7. Linear (Output Layer)"
429 | ]
430 | },
431 | {
432 | "cell_type": "markdown",
433 | "id": "4049385f",
434 | "metadata": {},
435 | "source": [
436 | "Linear or identity activation function returns the input directly."
437 | ]
438 | },
439 | {
440 | "cell_type": "code",
441 | "execution_count": 21,
442 | "id": "8f680b33",
443 | "metadata": {},
444 | "outputs": [],
445 | "source": [
446 | "def linear(x):\n",
447 | " return x"
448 | ]
449 | },
450 | {
451 | "cell_type": "code",
452 | "execution_count": 22,
453 | "id": "c6abc3a2",
454 | "metadata": {},
455 | "outputs": [
456 | {
457 | "data": {
458 | "text/plain": [
459 | "10"
460 | ]
461 | },
462 | "execution_count": 22,
463 | "metadata": {},
464 | "output_type": "execute_result"
465 | }
466 | ],
467 | "source": [
468 | "linear(10)"
469 | ]
470 | },
471 | {
472 | "cell_type": "markdown",
473 | "id": "ef852cf7",
474 | "metadata": {},
475 | "source": [
476 | "# 8. Tanh (Hyperbolic Tangent)"
477 | ]
478 | },
479 | {
480 | "cell_type": "code",
481 | "execution_count": 23,
482 | "id": "26e87100",
483 | "metadata": {},
484 | "outputs": [],
485 | "source": [
486 | "def tanh(x):\n",
487 | " return np.tanh(x)"
488 | ]
489 | },
490 | {
491 | "cell_type": "code",
492 | "execution_count": 24,
493 | "id": "e3ce4a70",
494 | "metadata": {},
495 | "outputs": [
496 | {
497 | "data": {
498 | "text/plain": [
499 | "0.9999999958776927"
500 | ]
501 | },
502 | "execution_count": 24,
503 | "metadata": {},
504 | "output_type": "execute_result"
505 | }
506 | ],
507 | "source": [
508 | "tanh(10)"
509 | ]
510 | },
511 | {
512 | "cell_type": "code",
513 | "execution_count": 25,
514 | "id": "dbd65fac",
515 | "metadata": {},
516 | "outputs": [
517 | {
518 | "data": {
519 | "text/plain": [
520 | "array([-0.76159416, 0. , 0.76159416, 0.96402758])"
521 | ]
522 | },
523 | "execution_count": 25,
524 | "metadata": {},
525 | "output_type": "execute_result"
526 | }
527 | ],
528 | "source": [
529 | "tanh([-1, 0, 1, 2])"
530 | ]
531 | },
532 | {
533 | "cell_type": "code",
534 | "execution_count": 26,
535 | "id": "ae2dc284",
536 | "metadata": {},
537 | "outputs": [],
538 | "source": [
539 | "import math"
540 | ]
541 | },
542 | {
543 | "cell_type": "code",
544 | "execution_count": 27,
545 | "id": "8560c99c",
546 | "metadata": {},
547 | "outputs": [],
548 | "source": [
549 | "def tanh(x):\n",
550 | " result = (math.exp(x) - math.exp(-x)) / (math.exp(x) + math.exp(-x))\n",
551 | " return result"
552 | ]
553 | },
554 | {
555 | "cell_type": "code",
556 | "execution_count": 28,
557 | "id": "48ef9ce5",
558 | "metadata": {},
559 | "outputs": [
560 | {
561 | "data": {
562 | "text/plain": [
563 | "-0.7615941559557649"
564 | ]
565 | },
566 | "execution_count": 28,
567 | "metadata": {},
568 | "output_type": "execute_result"
569 | }
570 | ],
571 | "source": [
572 | "tanh(-1)"
573 | ]
574 | }
575 | ],
576 | "metadata": {
577 | "kernelspec": {
578 | "display_name": "Python 3 (ipykernel)",
579 | "language": "python",
580 | "name": "python3"
581 | },
582 | "language_info": {
583 | "codemirror_mode": {
584 | "name": "ipython",
585 | "version": 3
586 | },
587 | "file_extension": ".py",
588 | "mimetype": "text/x-python",
589 | "name": "python",
590 | "nbconvert_exporter": "python",
591 | "pygments_lexer": "ipython3",
592 | "version": "3.9.13"
593 | }
594 | },
595 | "nbformat": 4,
596 | "nbformat_minor": 5
597 | }
598 |
--------------------------------------------------------------------------------
/SL_Perceptron.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Single Layer Perceptron",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "authorship_tag": "ABX9TyMqD+WCN6558J61L5Ck0pPd",
10 | "include_colab_link": true
11 | },
12 | "kernelspec": {
13 | "name": "python3",
14 | "display_name": "Python 3"
15 | },
16 | "language_info": {
17 | "name": "python"
18 | }
19 | },
20 | "cells": [
21 | {
22 | "cell_type": "markdown",
23 | "metadata": {
24 | "id": "view-in-github",
25 | "colab_type": "text"
26 | },
27 | "source": [
28 | " "
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": 1,
34 | "metadata": {
35 | "colab": {
36 | "resources": {
37 | "http://localhost:8080/nbextensions/google.colab/files.js": {
38 | "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgZG8gewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwoKICAgICAgbGV0IHBlcmNlbnREb25lID0gZmlsZURhdGEuYnl0ZUxlbmd0aCA9PT0gMCA/CiAgICAgICAgICAxMDAgOgogICAgICAgICAgTWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCk7CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPSBgJHtwZXJjZW50RG9uZX0lIGRvbmVgOwoKICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCk7CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK",
39 | "ok": true,
40 | "headers": [
41 | [
42 | "content-type",
43 | "application/javascript"
44 | ]
45 | ],
46 | "status": 200,
47 | "status_text": ""
48 | }
49 | },
50 | "base_uri": "https://localhost:8080/",
51 | "height": 73
52 | },
53 | "id": "JbBsj2VpdlB0",
54 | "outputId": "bc033ad7-8f3e-4397-aa63-9b2eea18cedf"
55 | },
56 | "outputs": [
57 | {
58 | "output_type": "display_data",
59 | "data": {
60 | "text/html": [
61 | "\n",
62 | " \n",
64 | " \n",
65 | " Upload widget is only available when the cell has been executed in the\n",
66 | " current browser session. Please rerun this cell to enable.\n",
67 | " \n",
68 | " "
69 | ],
70 | "text/plain": [
71 | ""
72 | ]
73 | },
74 | "metadata": {}
75 | },
76 | {
77 | "output_type": "stream",
78 | "name": "stdout",
79 | "text": [
80 | "Saving iris.csv to iris (4).csv\n"
81 | ]
82 | }
83 | ],
84 | "source": [
85 | "import numpy as np\n",
86 | "import pandas as pd\n",
87 | "from google.colab import files\n",
88 | "uploaded = files.upload()"
89 | ]
90 | },
91 | {
92 | "cell_type": "code",
93 | "source": [
94 | "df=pd.read_csv('iris.csv')\n",
95 | "df.head()"
96 | ],
97 | "metadata": {
98 | "colab": {
99 | "base_uri": "https://localhost:8080/",
100 | "height": 206
101 | },
102 | "id": "3kjpmXrRd6DM",
103 | "outputId": "1721d8ae-900c-4aab-e9e0-4c70bef279d7"
104 | },
105 | "execution_count": 2,
106 | "outputs": [
107 | {
108 | "output_type": "execute_result",
109 | "data": {
110 | "text/html": [
111 | "\n",
112 | " \n",
113 | "
\n",
114 | "
\n",
115 | "\n",
128 | "
\n",
129 | " \n",
130 | " \n",
131 | " \n",
132 | " 5.1 \n",
133 | " 3.5 \n",
134 | " 1.4 \n",
135 | " 0.2 \n",
136 | " 0 \n",
137 | " \n",
138 | " \n",
139 | " \n",
140 | " \n",
141 | " 0 \n",
142 | " 4.9 \n",
143 | " 3.0 \n",
144 | " 1.4 \n",
145 | " 0.2 \n",
146 | " 0 \n",
147 | " \n",
148 | " \n",
149 | " 1 \n",
150 | " 4.7 \n",
151 | " 3.2 \n",
152 | " 1.3 \n",
153 | " 0.2 \n",
154 | " 0 \n",
155 | " \n",
156 | " \n",
157 | " 2 \n",
158 | " 4.6 \n",
159 | " 3.1 \n",
160 | " 1.5 \n",
161 | " 0.2 \n",
162 | " 0 \n",
163 | " \n",
164 | " \n",
165 | " 3 \n",
166 | " 5.0 \n",
167 | " 3.6 \n",
168 | " 1.4 \n",
169 | " 0.2 \n",
170 | " 0 \n",
171 | " \n",
172 | " \n",
173 | " 4 \n",
174 | " 5.4 \n",
175 | " 3.9 \n",
176 | " 1.7 \n",
177 | " 0.4 \n",
178 | " 0 \n",
179 | " \n",
180 | " \n",
181 | "
\n",
182 | "
\n",
183 | "
\n",
186 | " \n",
187 | " \n",
189 | " \n",
190 | " \n",
191 | " \n",
192 | " \n",
193 | " \n",
194 | " \n",
231 | "\n",
232 | " \n",
256 | "
\n",
257 | "
\n",
258 | " "
259 | ],
260 | "text/plain": [
261 | " 5.1 3.5 1.4 0.2 0\n",
262 | "0 4.9 3.0 1.4 0.2 0\n",
263 | "1 4.7 3.2 1.3 0.2 0\n",
264 | "2 4.6 3.1 1.5 0.2 0\n",
265 | "3 5.0 3.6 1.4 0.2 0\n",
266 | "4 5.4 3.9 1.7 0.4 0"
267 | ]
268 | },
269 | "metadata": {},
270 | "execution_count": 2
271 | }
272 | ]
273 | },
274 | {
275 | "cell_type": "code",
276 | "source": [
277 | "df.columns=['SepalLen','SepalWidth','PetalLen','PetalWidth','Class']\n",
278 | "df.head(10)"
279 | ],
280 | "metadata": {
281 | "colab": {
282 | "base_uri": "https://localhost:8080/",
283 | "height": 363
284 | },
285 | "id": "m3FFRSjKeF_c",
286 | "outputId": "7644bf35-27ce-4a76-8560-0aedc645ef60"
287 | },
288 | "execution_count": 3,
289 | "outputs": [
290 | {
291 | "output_type": "execute_result",
292 | "data": {
293 | "text/html": [
294 | "\n",
295 | " \n",
296 | "
\n",
297 | "
\n",
298 | "\n",
311 | "
\n",
312 | " \n",
313 | " \n",
314 | " \n",
315 | " SepalLen \n",
316 | " SepalWidth \n",
317 | " PetalLen \n",
318 | " PetalWidth \n",
319 | " Class \n",
320 | " \n",
321 | " \n",
322 | " \n",
323 | " \n",
324 | " 0 \n",
325 | " 4.9 \n",
326 | " 3.0 \n",
327 | " 1.4 \n",
328 | " 0.2 \n",
329 | " 0 \n",
330 | " \n",
331 | " \n",
332 | " 1 \n",
333 | " 4.7 \n",
334 | " 3.2 \n",
335 | " 1.3 \n",
336 | " 0.2 \n",
337 | " 0 \n",
338 | " \n",
339 | " \n",
340 | " 2 \n",
341 | " 4.6 \n",
342 | " 3.1 \n",
343 | " 1.5 \n",
344 | " 0.2 \n",
345 | " 0 \n",
346 | " \n",
347 | " \n",
348 | " 3 \n",
349 | " 5.0 \n",
350 | " 3.6 \n",
351 | " 1.4 \n",
352 | " 0.2 \n",
353 | " 0 \n",
354 | " \n",
355 | " \n",
356 | " 4 \n",
357 | " 5.4 \n",
358 | " 3.9 \n",
359 | " 1.7 \n",
360 | " 0.4 \n",
361 | " 0 \n",
362 | " \n",
363 | " \n",
364 | " 5 \n",
365 | " 4.6 \n",
366 | " 3.4 \n",
367 | " 1.4 \n",
368 | " 0.3 \n",
369 | " 0 \n",
370 | " \n",
371 | " \n",
372 | " 6 \n",
373 | " 5.0 \n",
374 | " 3.4 \n",
375 | " 1.5 \n",
376 | " 0.2 \n",
377 | " 0 \n",
378 | " \n",
379 | " \n",
380 | " 7 \n",
381 | " 4.4 \n",
382 | " 2.9 \n",
383 | " 1.4 \n",
384 | " 0.2 \n",
385 | " 0 \n",
386 | " \n",
387 | " \n",
388 | " 8 \n",
389 | " 4.9 \n",
390 | " 3.1 \n",
391 | " 1.5 \n",
392 | " 0.1 \n",
393 | " 0 \n",
394 | " \n",
395 | " \n",
396 | " 9 \n",
397 | " 5.4 \n",
398 | " 3.7 \n",
399 | " 1.5 \n",
400 | " 0.2 \n",
401 | " 0 \n",
402 | " \n",
403 | " \n",
404 | "
\n",
405 | "
\n",
406 | "
\n",
409 | " \n",
410 | " \n",
412 | " \n",
413 | " \n",
414 | " \n",
415 | " \n",
416 | " \n",
417 | " \n",
454 | "\n",
455 | " \n",
479 | "
\n",
480 | "
\n",
481 | " "
482 | ],
483 | "text/plain": [
484 | " SepalLen SepalWidth PetalLen PetalWidth Class\n",
485 | "0 4.9 3.0 1.4 0.2 0\n",
486 | "1 4.7 3.2 1.3 0.2 0\n",
487 | "2 4.6 3.1 1.5 0.2 0\n",
488 | "3 5.0 3.6 1.4 0.2 0\n",
489 | "4 5.4 3.9 1.7 0.4 0\n",
490 | "5 4.6 3.4 1.4 0.3 0\n",
491 | "6 5.0 3.4 1.5 0.2 0\n",
492 | "7 4.4 2.9 1.4 0.2 0\n",
493 | "8 4.9 3.1 1.5 0.1 0\n",
494 | "9 5.4 3.7 1.5 0.2 0"
495 | ]
496 | },
497 | "metadata": {},
498 | "execution_count": 3
499 | }
500 | ]
501 | },
502 | {
503 | "cell_type": "code",
504 | "source": [
505 | "df.head()"
506 | ],
507 | "metadata": {
508 | "colab": {
509 | "base_uri": "https://localhost:8080/",
510 | "height": 206
511 | },
512 | "id": "e1V0htBUeOtt",
513 | "outputId": "8e883d41-0bdc-4807-c834-18a1cb0a869b"
514 | },
515 | "execution_count": 4,
516 | "outputs": [
517 | {
518 | "output_type": "execute_result",
519 | "data": {
520 | "text/html": [
521 | "\n",
522 | " \n",
523 | "
\n",
524 | "
\n",
525 | "\n",
538 | "
\n",
539 | " \n",
540 | " \n",
541 | " \n",
542 | " SepalLen \n",
543 | " SepalWidth \n",
544 | " PetalLen \n",
545 | " PetalWidth \n",
546 | " Class \n",
547 | " \n",
548 | " \n",
549 | " \n",
550 | " \n",
551 | " 0 \n",
552 | " 4.9 \n",
553 | " 3.0 \n",
554 | " 1.4 \n",
555 | " 0.2 \n",
556 | " 0 \n",
557 | " \n",
558 | " \n",
559 | " 1 \n",
560 | " 4.7 \n",
561 | " 3.2 \n",
562 | " 1.3 \n",
563 | " 0.2 \n",
564 | " 0 \n",
565 | " \n",
566 | " \n",
567 | " 2 \n",
568 | " 4.6 \n",
569 | " 3.1 \n",
570 | " 1.5 \n",
571 | " 0.2 \n",
572 | " 0 \n",
573 | " \n",
574 | " \n",
575 | " 3 \n",
576 | " 5.0 \n",
577 | " 3.6 \n",
578 | " 1.4 \n",
579 | " 0.2 \n",
580 | " 0 \n",
581 | " \n",
582 | " \n",
583 | " 4 \n",
584 | " 5.4 \n",
585 | " 3.9 \n",
586 | " 1.7 \n",
587 | " 0.4 \n",
588 | " 0 \n",
589 | " \n",
590 | " \n",
591 | "
\n",
592 | "
\n",
593 | "
\n",
596 | " \n",
597 | " \n",
599 | " \n",
600 | " \n",
601 | " \n",
602 | " \n",
603 | " \n",
604 | " \n",
641 | "\n",
642 | " \n",
666 | "
\n",
667 | "
\n",
668 | " "
669 | ],
670 | "text/plain": [
671 | " SepalLen SepalWidth PetalLen PetalWidth Class\n",
672 | "0 4.9 3.0 1.4 0.2 0\n",
673 | "1 4.7 3.2 1.3 0.2 0\n",
674 | "2 4.6 3.1 1.5 0.2 0\n",
675 | "3 5.0 3.6 1.4 0.2 0\n",
676 | "4 5.4 3.9 1.7 0.4 0"
677 | ]
678 | },
679 | "metadata": {},
680 | "execution_count": 4
681 | }
682 | ]
683 | },
684 | {
685 | "cell_type": "markdown",
686 | "source": [
687 | "\n",
688 | "\n",
689 | "```\n",
690 | "# Training\n",
691 | "```\n",
692 | "\n"
693 | ],
694 | "metadata": {
695 | "id": "Q7KwCc1DeZWd"
696 | }
697 | },
698 | {
699 | "cell_type": "code",
700 | "source": [
701 | "#I am using Sigmoid function as the activation function\n",
702 | "def activation_func(value): #Tangent Hypotenuse\n",
703 | " #return (1/(1+np.exp(-value)))\n",
704 | " return ((np.exp(value)-np.exp(-value))/(np.exp(value)+np.exp(-value)))"
705 | ],
706 | "metadata": {
707 | "id": "tNHRdBU6eR8F"
708 | },
709 | "execution_count": 5,
710 | "outputs": []
711 | },
712 | {
713 | "cell_type": "code",
714 | "source": [
715 | "def perceptron_train(in_data,labels,alpha):\n",
716 | " X=np.array(in_data)\n",
717 | " y=np.array(labels)\n",
718 | " weights=np.random.random(X.shape[1])\n",
719 | " original=weights\n",
720 | " bias=np.random.random_sample()\n",
721 | " for key in range(X.shape[0]):\n",
722 | " a=activation_func(np.matmul(np.transpose(weights),X[key])) \n",
723 | " yn=0\n",
724 | " if a>=0.7:\n",
725 | " yn=1\n",
726 | " elif a<=(-0.7):\n",
727 | " yn=-1\n",
728 | " weights=weights+alpha*(yn-y[key])*X[key]\n",
729 | " print('Iteration '+str(key)+': '+str(weights))\n",
730 | " print('Difference: '+str(weights-original))\n",
731 | " return weights"
732 | ],
733 | "metadata": {
734 | "id": "ACZYsWiJfuef"
735 | },
736 | "execution_count": 6,
737 | "outputs": []
738 | },
739 | {
740 | "cell_type": "markdown",
741 | "source": [
742 | "#Testing and **Score**"
743 | ],
744 | "metadata": {
745 | "id": "_n5EPVmCgb3p"
746 | }
747 | },
748 | {
749 | "cell_type": "code",
750 | "source": [
751 | "\n",
752 | "def perceptron_test(in_data,label_shape,weights):\n",
753 | " X=np.array(in_data)\n",
754 | " y=np.zeros(label_shape)\n",
755 | " for key in range(X.shape[1]):\n",
756 | " a=activation_func((weights*X[key]).sum())\n",
757 | " y[key]=0\n",
758 | " if a>=0.7:\n",
759 | " y[key]=1\n",
760 | " elif a<=(-0.7):\n",
761 | " y[key]=-1\n",
762 | " return y"
763 | ],
764 | "metadata": {
765 | "id": "Hc9RMDB3eyIQ"
766 | },
767 | "execution_count": 7,
768 | "outputs": []
769 | },
770 | {
771 | "cell_type": "code",
772 | "source": [
773 | "def score(result,labels):\n",
774 | " difference=result-np.array(labels) \n",
775 | " correct_ctr=0\n",
776 | " for elem in range(difference.shape[0]):\n",
777 | " if difference[elem]==0:\n",
778 | " correct_ctr+=1\n",
779 | " score=correct_ctr*100/difference.size\n",
780 | " print('Score='+str(score))"
781 | ],
782 | "metadata": {
783 | "id": "32fTQkoLfNcW"
784 | },
785 | "execution_count": 8,
786 | "outputs": []
787 | },
788 | {
789 | "cell_type": "markdown",
790 | "source": [
791 | "#Main **codes**"
792 | ],
793 | "metadata": {
794 | "id": "GFEFamRNgkzu"
795 | }
796 | },
797 | {
798 | "cell_type": "code",
799 | "source": [
800 | "# Dividing DataFrame \"data\" into \"d_train\" (60%) and \"d_test\" (40%)\n",
801 | "divider = np.random.rand(len(df)) < 0.60\n",
802 | "d_train=df[divider]\n",
803 | "d_test=df[~divider]"
804 | ],
805 | "metadata": {
806 | "id": "Fo64Cfm0fPuU"
807 | },
808 | "execution_count": 9,
809 | "outputs": []
810 | },
811 | {
812 | "cell_type": "code",
813 | "source": [
814 | "# Dividing d_train into data and labels/targets\n",
815 | "d_train_y=d_train['Class']\n",
816 | "d_train_X=d_train.drop(['Class'],axis=1)\n",
817 | "\n",
818 | "# Dividing d_train into data and labels/targets\n",
819 | "d_test_y=d_test['Class']\n",
820 | "d_test_X=d_test.drop(['Class'],axis=1)"
821 | ],
822 | "metadata": {
823 | "id": "G5ch48H5fVvH"
824 | },
825 | "execution_count": 10,
826 | "outputs": []
827 | },
828 | {
829 | "cell_type": "code",
830 | "source": [
831 | "# Learning rate\n",
832 | "alpha = 0.001\n",
833 | "\n",
834 | "# Train\n",
835 | "weights = perceptron_train(d_train_X, d_train_y, alpha)"
836 | ],
837 | "metadata": {
838 | "colab": {
839 | "base_uri": "https://localhost:8080/"
840 | },
841 | "id": "CVqN8RGMfeuf",
842 | "outputId": "ddafaef3-80cd-4b44-eb60-f8f0c6189501"
843 | },
844 | "execution_count": 11,
845 | "outputs": [
846 | {
847 | "output_type": "stream",
848 | "name": "stdout",
849 | "text": [
850 | "Iteration 0: [0.45168832 0.39015584 0.81917719 0.22836588]\n",
851 | "Iteration 1: [0.45668832 0.39375584 0.82057719 0.22856588]\n",
852 | "Iteration 2: [0.46208832 0.39765584 0.82227719 0.22896588]\n",
853 | "Iteration 3: [0.46668832 0.40105584 0.82367719 0.22926588]\n",
854 | "Iteration 4: [0.47168832 0.40445584 0.82517719 0.22946588]\n",
855 | "Iteration 5: [0.47608832 0.40735584 0.82657719 0.22966588]\n",
856 | "Iteration 6: [0.48148832 0.41105584 0.82807719 0.22986588]\n",
857 | "Iteration 7: [0.48628832 0.41405584 0.82947719 0.22996588]\n",
858 | "Iteration 8: [0.49208832 0.41805584 0.83067719 0.23016588]\n",
859 | "Iteration 9: [0.49778832 0.42245584 0.83217719 0.23056588]\n",
860 | "Iteration 10: [0.50288832 0.42625584 0.83367719 0.23086588]\n",
861 | "Iteration 11: [0.50828832 0.42965584 0.83537719 0.23106588]\n",
862 | "Iteration 12: [0.51288832 0.43325584 0.83637719 0.23126588]\n",
863 | "Iteration 13: [0.51768832 0.43665584 0.83827719 0.23146588]\n",
864 | "Iteration 14: [0.52288832 0.44015584 0.83977719 0.23166588]\n",
865 | "Iteration 15: [0.52758832 0.44335584 0.84137719 0.23186588]\n",
866 | "Iteration 16: [0.53298832 0.44675584 0.84287719 0.23226588]\n",
867 | "Iteration 17: [0.53818832 0.45085584 0.84437719 0.23236588]\n",
868 | "Iteration 18: [0.54368832 0.45505584 0.84577719 0.23256588]\n",
869 | "Iteration 19: [0.54858832 0.45815584 0.84727719 0.23266588]\n",
870 | "Iteration 20: [0.55358832 0.46135584 0.84847719 0.23286588]\n",
871 | "Iteration 21: [0.55858832 0.46485584 0.84977719 0.23316588]\n",
872 | "Iteration 22: [0.56308832 0.46715584 0.85107719 0.23346588]\n",
873 | "Iteration 23: [0.56748832 0.47035584 0.85237719 0.23366588]\n",
874 | "Iteration 24: [0.57248832 0.47385584 0.85397719 0.23426588]\n",
875 | "Iteration 25: [0.57758832 0.47765584 0.85587719 0.23466588]\n",
876 | "Iteration 26: [0.58238832 0.48065584 0.85727719 0.23496588]\n",
877 | "Iteration 27: [0.58698832 0.48385584 0.85867719 0.23516588]\n",
878 | "Iteration 28: [0.59228832 0.48755584 0.86017719 0.23536588]\n",
879 | "Iteration 29: [0.59728832 0.49085584 0.86157719 0.23556588]\n",
880 | "Iteration 30: [0.61108832 0.49705584 0.87137719 0.23856588]\n",
881 | "Iteration 31: [0.62208832 0.50165584 0.87937719 0.24116588]\n",
882 | "Iteration 32: [0.63508832 0.50725584 0.88857719 0.24416588]\n",
883 | "Iteration 33: [0.64648832 0.51285584 0.89757719 0.24676588]\n",
884 | "Iteration 34: [0.65648832 0.51685584 0.90457719 0.24876588]\n",
885 | "Iteration 35: [0.66828832 0.52285584 0.91297719 0.25176588]\n",
886 | "Iteration 36: [0.68028832 0.52725584 0.92097719 0.25376588]\n",
887 | "Iteration 37: [0.69248832 0.53305584 0.93037719 0.25656588]\n",
888 | "Iteration 38: [0.70588832 0.53925584 0.93917719 0.25936588]\n",
889 | "Iteration 39: [0.71708832 0.54525584 0.94817719 0.26236588]\n",
890 | "Iteration 40: [0.72948832 0.54965584 0.95717719 0.26536588]\n",
891 | "Iteration 41: [0.74128832 0.55605584 0.96677719 0.26896588]\n",
892 | "Iteration 42: [0.75348832 0.56165584 0.97477719 0.27156588]\n",
893 | "Iteration 43: [0.76608832 0.56665584 0.98457719 0.27456588]\n",
894 | "Iteration 44: [0.77828832 0.57225584 0.99397719 0.27696588]\n",
895 | "Iteration 45: [0.79108832 0.57805584 1.00257719 0.27956588]\n",
896 | "Iteration 46: [0.80468832 0.58365584 1.01217719 0.28236588]\n",
897 | "Iteration 47: [0.81668832 0.58945584 1.02117719 0.28536588]\n",
898 | "Iteration 48: [0.82768832 0.59425584 1.02877719 0.28756588]\n",
899 | "Iteration 49: [0.83868832 0.59905584 1.03617719 0.28956588]\n",
900 | "Iteration 50: [0.85028832 0.60445584 1.04397719 0.29196588]\n",
901 | "Iteration 51: [0.86108832 0.61045584 1.05297719 0.29496588]\n",
902 | "Iteration 52: [0.87448832 0.61665584 1.06237719 0.29796588]\n",
903 | "Iteration 53: [0.88708832 0.62125584 1.07117719 0.30056588]\n",
904 | "Iteration 54: [0.89808832 0.62625584 1.07917719 0.30316588]\n",
905 | "Iteration 55: [0.91028832 0.63225584 1.08837719 0.30596588]\n",
906 | "Iteration 56: [0.92168832 0.63825584 1.09677719 0.30836588]\n",
907 | "Iteration 57: [0.93408832 0.64405584 1.10537719 0.31096588]\n",
908 | "Iteration 58: [0.94428832 0.64905584 1.11137719 0.31316588]\n",
909 | "Iteration 59: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
910 | "Iteration 60: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
911 | "Iteration 61: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
912 | "Iteration 62: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
913 | "Iteration 63: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
914 | "Iteration 64: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
915 | "Iteration 65: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
916 | "Iteration 66: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
917 | "Iteration 67: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
918 | "Iteration 68: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
919 | "Iteration 69: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
920 | "Iteration 70: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
921 | "Iteration 71: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
922 | "Iteration 72: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
923 | "Iteration 73: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
924 | "Iteration 74: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
925 | "Iteration 75: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
926 | "Iteration 76: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
927 | "Iteration 77: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
928 | "Iteration 78: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
929 | "Iteration 79: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
930 | "Iteration 80: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
931 | "Iteration 81: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
932 | "Iteration 82: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
933 | "Iteration 83: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
934 | "Iteration 84: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
935 | "Iteration 85: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
936 | "Iteration 86: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
937 | "Iteration 87: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
938 | "Iteration 88: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
939 | "Iteration 89: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
940 | "Iteration 90: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
941 | "Iteration 91: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
942 | "Iteration 92: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
943 | "Iteration 93: [0.95568832 0.65465584 1.11957719 0.31576588]\n",
944 | "Difference: [0.5089 0.2675 0.3018 0.0876]\n"
945 | ]
946 | }
947 | ]
948 | },
949 | {
950 | "cell_type": "code",
951 | "source": [
952 | "# Test\n",
953 | "result_test=perceptron_test(d_test_X,d_test_y.shape,weights)"
954 | ],
955 | "metadata": {
956 | "id": "xw9fvsiUfho3"
957 | },
958 | "execution_count": 12,
959 | "outputs": []
960 | },
961 | {
962 | "cell_type": "code",
963 | "source": [
964 | "# Calculate score\n",
965 | "score(result_test,d_test_y)"
966 | ],
967 | "metadata": {
968 | "colab": {
969 | "base_uri": "https://localhost:8080/"
970 | },
971 | "id": "owJYm8HbgDAG",
972 | "outputId": "c1483dbd-da1f-4acb-ddc6-8b570f2caa63"
973 | },
974 | "execution_count": 13,
975 | "outputs": [
976 | {
977 | "output_type": "stream",
978 | "name": "stdout",
979 | "text": [
980 | "Score=27.272727272727273\n"
981 | ]
982 | }
983 | ]
984 | }
985 | ]
986 | }
--------------------------------------------------------------------------------
/LSTM_.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "LSTM .ipynb",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | }
18 | },
19 | "cells": [
20 | {
21 | "cell_type": "markdown",
22 | "metadata": {
23 | "id": "view-in-github",
24 | "colab_type": "text"
25 | },
26 | "source": [
27 | " "
28 | ]
29 | },
30 | {
31 | "cell_type": "code",
32 | "execution_count": 1,
33 | "metadata": {
34 | "colab": {
35 | "resources": {
36 | "http://localhost:8080/nbextensions/google.colab/files.js": {
37 | "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgZG8gewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwoKICAgICAgbGV0IHBlcmNlbnREb25lID0gZmlsZURhdGEuYnl0ZUxlbmd0aCA9PT0gMCA/CiAgICAgICAgICAxMDAgOgogICAgICAgICAgTWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCk7CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPSBgJHtwZXJjZW50RG9uZX0lIGRvbmVgOwoKICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCk7CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK",
38 | "ok": true,
39 | "headers": [
40 | [
41 | "content-type",
42 | "application/javascript"
43 | ]
44 | ],
45 | "status": 200,
46 | "status_text": ""
47 | }
48 | },
49 | "base_uri": "https://localhost:8080/",
50 | "height": 73
51 | },
52 | "id": "Z2J8wSDhrIiI",
53 | "outputId": "21631cca-741e-48ab-c64a-ed17ff5fd114"
54 | },
55 | "outputs": [
56 | {
57 | "output_type": "display_data",
58 | "data": {
59 | "text/html": [
60 | "\n",
61 | " \n",
63 | " \n",
64 | " Upload widget is only available when the cell has been executed in the\n",
65 | " current browser session. Please rerun this cell to enable.\n",
66 | " \n",
67 | " "
68 | ],
69 | "text/plain": [
70 | ""
71 | ]
72 | },
73 | "metadata": {}
74 | },
75 | {
76 | "output_type": "stream",
77 | "name": "stdout",
78 | "text": [
79 | "Saving lstm data.csv to lstm data.csv\n"
80 | ]
81 | }
82 | ],
83 | "source": [
84 | "from google.colab import files\n",
85 | "UP = files.upload()"
86 | ]
87 | },
88 | {
89 | "cell_type": "code",
90 | "source": [
91 | "import pandas as pd\n",
92 | "df =pd.read_csv ('lstm data.csv', header=None, index_col=None, delimiter=',')"
93 | ],
94 | "metadata": {
95 | "id": "PMOvK5C7rUYZ"
96 | },
97 | "execution_count": 2,
98 | "outputs": []
99 | },
100 | {
101 | "cell_type": "code",
102 | "source": [
103 | "import numpy as np\n",
104 | "import matplotlib.pyplot as plt\n",
105 | "import pandas as pd\n",
106 | "from pandas import read_csv\n",
107 | "import math\n",
108 | "from keras.models import Sequential\n",
109 | "from keras.layers import Dense\n",
110 | "from keras.layers import LSTM\n",
111 | "from sklearn.preprocessing import MinMaxScaler\n",
112 | "from sklearn.metrics import mean_squared_error\n",
113 | "from keras.layers.core import Dense, Activation, Dropout\n",
114 | "import time #helper libraries"
115 | ],
116 | "metadata": {
117 | "id": "t2CJLppGrtnB"
118 | },
119 | "execution_count": 3,
120 | "outputs": []
121 | },
122 | {
123 | "cell_type": "code",
124 | "source": [
125 | "input_file = df\n",
126 | "\n",
127 | "# convert an array of values into a dataset matrix\n",
128 | "def create_dataset(dataset, look_back=1):\n",
129 | "\tdataX, dataY = [], []\n",
130 | "\tfor i in range(len(dataset)-look_back-1):\n",
131 | "\t\ta = dataset[i:(i+look_back), 0]\n",
132 | "\t\tdataX.append(a)\n",
133 | "\t\tdataY.append(dataset[i + look_back, 0])\n",
134 | "\treturn np.array(dataX), np.array(dataY)"
135 | ],
136 | "metadata": {
137 | "id": "a5PWkTy_rymw"
138 | },
139 | "execution_count": 5,
140 | "outputs": []
141 | },
142 | {
143 | "cell_type": "code",
144 | "source": [
145 | "# fix random seed for reproducibility\n",
146 | "np.random.seed(5)"
147 | ],
148 | "metadata": {
149 | "id": "i7EbCXasr9ju"
150 | },
151 | "execution_count": 6,
152 | "outputs": []
153 | },
154 | {
155 | "cell_type": "code",
156 | "source": [
157 | "# take close price column[5]\n",
158 | "all_y = df[5].values\n",
159 | "dataset=all_y.reshape(-1, 1)"
160 | ],
161 | "metadata": {
162 | "id": "4jtGVdaUsCCG"
163 | },
164 | "execution_count": 7,
165 | "outputs": []
166 | },
167 | {
168 | "cell_type": "code",
169 | "source": [
170 | "# take close price column[5]\n",
171 | "all_y = df[5].values\n",
172 | "dataset=all_y.reshape(-1, 1)\n",
173 | "\n",
174 | "# normalize the dataset\n",
175 | "scaler = MinMaxScaler(feature_range=(0, 1))\n",
176 | "dataset = scaler.fit_transform(dataset)"
177 | ],
178 | "metadata": {
179 | "id": "qfjD1xsdsFUm"
180 | },
181 | "execution_count": 8,
182 | "outputs": []
183 | },
184 | {
185 | "cell_type": "code",
186 | "source": [
187 | "# split into train and test sets, 50% test data, 50% training data\n",
188 | "train_size = int(len(dataset) * 0.5)\n",
189 | "test_size = len(dataset) - train_size\n",
190 | "train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]"
191 | ],
192 | "metadata": {
193 | "id": "KNMdyLtEskxx"
194 | },
195 | "execution_count": 9,
196 | "outputs": []
197 | },
198 | {
199 | "cell_type": "code",
200 | "source": [
201 | "# reshape into X=t and Y=t+1, timestep 240\n",
202 | "look_back = 240\n",
203 | "trainX, trainY = create_dataset(train, look_back)\n",
204 | "testX, testY = create_dataset(test, look_back)"
205 | ],
206 | "metadata": {
207 | "id": "TGc6gEAisk0f"
208 | },
209 | "execution_count": 10,
210 | "outputs": []
211 | },
212 | {
213 | "cell_type": "code",
214 | "source": [
215 | "# reshape input to be [samples, time steps, features]\n",
216 | "trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))\n",
217 | "testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))"
218 | ],
219 | "metadata": {
220 | "id": "56Zv-8oOsk3m"
221 | },
222 | "execution_count": 11,
223 | "outputs": []
224 | },
225 | {
226 | "cell_type": "code",
227 | "source": [
228 | "# create and fit the LSTM network, optimizer=adam, 25 neurons, dropout 0.1\n",
229 | "model = Sequential()\n",
230 | "model.add(LSTM(25, input_shape=(1, look_back)))\n",
231 | "model.add(Dropout(0.1))\n",
232 | "model.add(Dense(1))\n",
233 | "model.compile(loss='mse', optimizer='adam')\n",
234 | "model.fit(trainX, trainY, epochs=20, batch_size=240, verbose=1)"
235 | ],
236 | "metadata": {
237 | "colab": {
238 | "base_uri": "https://localhost:8080/"
239 | },
240 | "id": "BbqCQ1yPsrcH",
241 | "outputId": "a3cb729b-a3b0-4df4-d478-28b0a8b396f6"
242 | },
243 | "execution_count": 12,
244 | "outputs": [
245 | {
246 | "output_type": "stream",
247 | "name": "stdout",
248 | "text": [
249 | "Epoch 1/20\n",
250 | "10/10 [==============================] - 3s 7ms/step - loss: 0.0060\n",
251 | "Epoch 2/20\n",
252 | "10/10 [==============================] - 0s 5ms/step - loss: 0.0019\n",
253 | "Epoch 3/20\n",
254 | "10/10 [==============================] - 0s 4ms/step - loss: 0.0013\n",
255 | "Epoch 4/20\n",
256 | "10/10 [==============================] - 0s 10ms/step - loss: 0.0010\n",
257 | "Epoch 5/20\n",
258 | "10/10 [==============================] - 0s 10ms/step - loss: 7.3312e-04\n",
259 | "Epoch 6/20\n",
260 | "10/10 [==============================] - 0s 11ms/step - loss: 6.2153e-04\n",
261 | "Epoch 7/20\n",
262 | "10/10 [==============================] - 0s 10ms/step - loss: 5.4827e-04\n",
263 | "Epoch 8/20\n",
264 | "10/10 [==============================] - 0s 13ms/step - loss: 4.9733e-04\n",
265 | "Epoch 9/20\n",
266 | "10/10 [==============================] - 0s 8ms/step - loss: 4.8755e-04\n",
267 | "Epoch 10/20\n",
268 | "10/10 [==============================] - 0s 8ms/step - loss: 4.4003e-04\n",
269 | "Epoch 11/20\n",
270 | "10/10 [==============================] - 0s 5ms/step - loss: 3.9734e-04\n",
271 | "Epoch 12/20\n",
272 | "10/10 [==============================] - 0s 4ms/step - loss: 3.7042e-04\n",
273 | "Epoch 13/20\n",
274 | "10/10 [==============================] - 0s 4ms/step - loss: 3.6348e-04\n",
275 | "Epoch 14/20\n",
276 | "10/10 [==============================] - 0s 5ms/step - loss: 3.4665e-04\n",
277 | "Epoch 15/20\n",
278 | "10/10 [==============================] - 0s 5ms/step - loss: 3.1516e-04\n",
279 | "Epoch 16/20\n",
280 | "10/10 [==============================] - 0s 5ms/step - loss: 3.0348e-04\n",
281 | "Epoch 17/20\n",
282 | "10/10 [==============================] - 0s 5ms/step - loss: 2.9378e-04\n",
283 | "Epoch 18/20\n",
284 | "10/10 [==============================] - 0s 5ms/step - loss: 2.8015e-04\n",
285 | "Epoch 19/20\n",
286 | "10/10 [==============================] - 0s 5ms/step - loss: 2.6199e-04\n",
287 | "Epoch 20/20\n",
288 | "10/10 [==============================] - 0s 5ms/step - loss: 2.6265e-04\n"
289 | ]
290 | },
291 | {
292 | "output_type": "execute_result",
293 | "data": {
294 | "text/plain": [
295 | ""
296 | ]
297 | },
298 | "metadata": {},
299 | "execution_count": 12
300 | }
301 | ]
302 | },
303 | {
304 | "cell_type": "code",
305 | "source": [
306 | "# make predictions\n",
307 | "trainPredict = model.predict(trainX)\n",
308 | "testPredict = model.predict(testX)"
309 | ],
310 | "metadata": {
311 | "id": "ZfzhbSXusren"
312 | },
313 | "execution_count": 13,
314 | "outputs": []
315 | },
316 | {
317 | "cell_type": "code",
318 | "source": [
319 | "trainPredict"
320 | ],
321 | "metadata": {
322 | "colab": {
323 | "base_uri": "https://localhost:8080/"
324 | },
325 | "id": "2lhYVWWksrhO",
326 | "outputId": "67442fbb-a72b-4c20-ce35-d542fdd7fcdf"
327 | },
328 | "execution_count": 14,
329 | "outputs": [
330 | {
331 | "output_type": "execute_result",
332 | "data": {
333 | "text/plain": [
334 | "array([[0.11482746],\n",
335 | " [0.11490844],\n",
336 | " [0.11595166],\n",
337 | " ...,\n",
338 | " [0.15892781],\n",
339 | " [0.15970123],\n",
340 | " [0.16205542]], dtype=float32)"
341 | ]
342 | },
343 | "metadata": {},
344 | "execution_count": 14
345 | }
346 | ]
347 | },
348 | {
349 | "cell_type": "code",
350 | "source": [
351 | "testPredict"
352 | ],
353 | "metadata": {
354 | "colab": {
355 | "base_uri": "https://localhost:8080/"
356 | },
357 | "id": "HTwEaLNss9ov",
358 | "outputId": "bd75745f-9632-4b3b-ccc6-a0af514cb267"
359 | },
360 | "execution_count": 15,
361 | "outputs": [
362 | {
363 | "output_type": "execute_result",
364 | "data": {
365 | "text/plain": [
366 | "array([[0.15497756],\n",
367 | " [0.15336645],\n",
368 | " [0.15448435],\n",
369 | " ...,\n",
370 | " [0.6446615 ],\n",
371 | " [0.6525498 ],\n",
372 | " [0.65636975]], dtype=float32)"
373 | ]
374 | },
375 | "metadata": {},
376 | "execution_count": 15
377 | }
378 | ]
379 | },
380 | {
381 | "cell_type": "code",
382 | "source": [
383 | "# invert predictions\n",
384 | "trainPredict = scaler.inverse_transform(trainPredict)\n",
385 | "trainY = scaler.inverse_transform([trainY])\n",
386 | "testPredict = scaler.inverse_transform(testPredict)\n",
387 | "testY = scaler.inverse_transform([testY])"
388 | ],
389 | "metadata": {
390 | "id": "iqpKkHvRs-_d"
391 | },
392 | "execution_count": 16,
393 | "outputs": []
394 | },
395 | {
396 | "cell_type": "code",
397 | "source": [
398 | "# calculate root mean squared error\n",
399 | "trainScore = math.sqrt(mean_squared_error(trainY[0], trainPredict[:,0]))\n",
400 | "print('Train Score: %.2f RMSE' % (trainScore))\n",
401 | "testScore = math.sqrt(mean_squared_error(testY[0], testPredict[:,0]))\n",
402 | "print('Test Score: %.2f RMSE' % (testScore))"
403 | ],
404 | "metadata": {
405 | "colab": {
406 | "base_uri": "https://localhost:8080/"
407 | },
408 | "id": "HzZbZSiMtBV-",
409 | "outputId": "af8ce5cd-91b1-49a7-b0bc-8d34f0b93ffd"
410 | },
411 | "execution_count": 17,
412 | "outputs": [
413 | {
414 | "output_type": "stream",
415 | "name": "stdout",
416 | "text": [
417 | "Train Score: 1.38 RMSE\n",
418 | "Test Score: 11.82 RMSE\n"
419 | ]
420 | }
421 | ]
422 | },
423 | {
424 | "cell_type": "code",
425 | "source": [
426 | "# shift train predictions for plotting\n",
427 | "trainPredictPlot = np.empty_like(dataset)\n",
428 | "trainPredictPlot[:, :] = np.nan\n",
429 | "trainPredictPlot[look_back:len(trainPredict)+look_back, :] = trainPredict"
430 | ],
431 | "metadata": {
432 | "id": "FVfU8pvctDNP"
433 | },
434 | "execution_count": 18,
435 | "outputs": []
436 | },
437 | {
438 | "cell_type": "code",
439 | "source": [
440 | "# shift test predictions for plotting\n",
441 | "testPredictPlot = np.empty_like(dataset)\n",
442 | "testPredictPlot[:, :] = np.nan\n",
443 | "testPredictPlot[len(trainPredict)+(look_back*2)+1:len(dataset)-1, :] = testPredict"
444 | ],
445 | "metadata": {
446 | "id": "sz-hs9BTtFYe"
447 | },
448 | "execution_count": 19,
449 | "outputs": []
450 | },
451 | {
452 | "cell_type": "code",
453 | "source": [
454 | "# plot baseline and predictions\n",
455 | "plt.plot(scaler.inverse_transform(dataset))\n",
456 | "plt.plot(trainPredictPlot)\n",
457 | "print('testPrices:')\n",
458 | "testPrices=scaler.inverse_transform(dataset[test_size+look_back:])"
459 | ],
460 | "metadata": {
461 | "colab": {
462 | "base_uri": "https://localhost:8080/",
463 | "height": 284
464 | },
465 | "id": "9qa_shrstHGu",
466 | "outputId": "8455d889-a07f-4c75-c3e9-df05c59d75d9"
467 | },
468 | "execution_count": 20,
469 | "outputs": [
470 | {
471 | "output_type": "stream",
472 | "name": "stdout",
473 | "text": [
474 | "testPrices:\n"
475 | ]
476 | },
477 | {
478 | "output_type": "display_data",
479 | "data": {
480 | "image/png": "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\n",
481 | "text/plain": [
482 | ""
483 | ]
484 | },
485 | "metadata": {
486 | "needs_background": "light"
487 | }
488 | }
489 | ]
490 | },
491 | {
492 | "cell_type": "code",
493 | "source": [
494 | "print('testPredictions:')\n",
495 | "print(testPredict)"
496 | ],
497 | "metadata": {
498 | "colab": {
499 | "base_uri": "https://localhost:8080/"
500 | },
501 | "id": "d3GE7v1LtJEG",
502 | "outputId": "b7102d9a-b9d7-4169-83b1-ad96a7e16284"
503 | },
504 | "execution_count": 21,
505 | "outputs": [
506 | {
507 | "output_type": "stream",
508 | "name": "stdout",
509 | "text": [
510 | "testPredictions:\n",
511 | "[[27.462803]\n",
512 | " [27.291517]\n",
513 | " [27.41037 ]\n",
514 | " ...\n",
515 | " [79.52366 ]\n",
516 | " [80.36231 ]\n",
517 | " [80.768425]]\n"
518 | ]
519 | }
520 | ]
521 | },
522 | {
523 | "cell_type": "code",
524 | "source": [
525 | "# export prediction and actual prices\n",
526 | "df = pd.DataFrame(data={\"prediction\": np.around(list(testPredict.reshape(-1)), decimals=2), \"test_price\": np.around(list(testPrices.reshape(-1)), decimals=2)})\n",
527 | "df.to_csv(\"lstm_result.csv\", sep=';', index=None)"
528 | ],
529 | "metadata": {
530 | "id": "ljiX4jy8tLZO"
531 | },
532 | "execution_count": 22,
533 | "outputs": []
534 | },
535 | {
536 | "cell_type": "code",
537 | "source": [
538 | "# plot the actual price, prediction in test data=red line, actual price=blue line\n",
539 | "plt.plot(testPredictPlot)\n",
540 | "plt.show()\n",
541 | "\n"
542 | ],
543 | "metadata": {
544 | "colab": {
545 | "base_uri": "https://localhost:8080/",
546 | "height": 265
547 | },
548 | "id": "XR04UYeQtQmv",
549 | "outputId": "22093f6e-8052-4784-9102-c51233f30aad"
550 | },
551 | "execution_count": 23,
552 | "outputs": [
553 | {
554 | "output_type": "display_data",
555 | "data": {
556 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU1dnA8d+TfYOQjTVA2HcBDQgqboCyuPBa92ppa4u12upbW9dW27pra9XWt4papXXBvVgFLUZU3ICA7ItsYYckkIRAyDrn/ePemcwkk2SSzJJJnu/nk0/uPffOzJnL8OTMuec8R4wxKKWUCj8Roa6AUkqpltEArpRSYUoDuFJKhSkN4EopFaY0gCulVJiKCuaLpaenm6ysrGC+pFJKhb2VK1cWGmMy6pYHNYBnZWWRm5sbzJdUSqmwJyK7vJVrF4pSSoUpDeBKKRWmNIArpVSY0gCulFJhSgO4UkqFKQ3gSikVpjSAK6VUmNIArpRq81buOsKaPcWhrkabE9SJPEop1RLf+/vXAOQ9PDPENWlbtAWulFJhSgO4Uips6ApinnwK4CJys4isF5ENInKLXZYqIotFZKv9OyWwVVVKdUSV1Q7XduGxyhDWpO1pMoCLyEjgp8B4YDRwgYgMBO4Acowxg4Ace18ppfyqtLzKtf3qst0hrEnb40sLfBiwzBhTZoypBj4DLgEuBubZ58wDZgWmikqpjuxoebVre9eR4yGsSdvjSwBfD0wSkTQRSQBmAL2BbsaYA/Y5B4Fu3h4sInNEJFdEcgsKCvxSaaVU+7Ry1xGOurW4wbMF/s6qfcGuUpvW5DBCY8wmEXkE+C9wHFgN1NQ5x4iI17sLxpi5wFyA7OxsvQOhlPJQUV1DSVkVhtrhgh/eMomh3Tuzt6iMWU9/6XG+w2GIiJAQ1LTt8ekmpjHmBWPMKcaYM4Ei4DvgkIj0ALB/5weumkqp9ubxxd/xzGfbufWNNYx/MIc9R8pcx6Y9sRSAz78rxFGn2XekTG9kOvk0kUdEuhpj8kWkD1b/9wSgHzAbeNj+vSBgtVRKtTtP5Wz12F+1u8i1PTozGYAN+0tcZecN78Z/Nx4i/2gF6UmxwalkG+frOPC3RWQj8B/gRmNMMVbgnioiW4Ep9r5SSjUp/2h5vbIHF24GYHxWKmv2lvDoh5t5xW3UyZwz+1uPLa3/2I7Kpxa4MWaSl7LDwGS/10gp1e6NfzCnwWP9MxJZnneE//t0OwCjeiXz1g0TOVhiBe6C0oqg1DEc6ExMpVRQNTabMjEmst4olB+fkUVsVCRdO8UBkK8B3EUDuFIqqNbsLWnw2Lf3nMdt5w/1KOudkgBAfEwkqYkx5BU2PRa8tLyKf3yxk6oaR5PnhjMN4EqpoPrJvNwGj8VERZCVnsja35/nKhO3EYO9U+IpONZ0C/yvn2zjj+9v5M3cva2qa1unAVwpFVRZaVaL+okrxpAUG8WsMT0Ba5SJU2JMFN06x9K9cxwn96lNsxQbHcmJyhoa88aKPcz9fAcAd727zt/Vb1M0H7hSKqhOG5hO7q4iLhrdk6nDu5EQE8mDl4wiOrK2PRkZISy7a0q9x8ZHR1J8oqpeubvb3l7r2k5LjPFfxdsgDeBKqaA6UVlNXHQEERFCYqwVghJifAtFcdERVBxtvAXurqSJYB/utAtFKRVUzy3dSXlVy24uxkVHcqLK9wBe7TAcOd5+Z25qAFdKBU1N3XnxzVTtMOw6XNbg8ZIyq8V969TBrrLfv7ehVa/ZlmkAV0oFTWsn4Xyw1kqAuuVgqdfjd75r9X8fKatk2ojuAOwoPNaq12zLNIArpYJmt52wakzvLi16/OXZmQAUNZDQKi46EoDrzxzAHy8eAcCkQRkteq1woAFcKRU0e4usAP745aNb9PgrxvUBoNxLP3h1jcOVL7x7chxdO8cRGSG058SzGsCVUkFTaE/C6do5rkWPj4u2Qpa3m6D//HpXvbIah6HUbUWf9kYDuFIqaApKK4iPjiQxJrJFj4+3u0jq5kuB2hukAzISPcr/9U39wN5eaABXSgXN6j3FZKbEI9Kyjo0+qQnER0ey+UD9m5jVdgB//xf1kqdS3U5zomgAV0oFxcpdR1iRV9Sscdx1RUVG0C89kZ1eRpacqKxGpLabBXAt/PByO22FawBXSgVFziZr1cVbpgxu4szGpSXFeKxU73Siqob46EiP1v3vLhgGQOf46Fa9ZlulAVwpFRSHj1XStVMsl56S2arniYoQr2linQHcnTMRVnUrJxC1VT4FcBH5XxHZICLrReQ1EYkTkX4iskxEtonI6yLSvrPGKKVa5fDxSlL9kFwqOjKCymovAbzS4RoH7tQpzsqxciyEI1E27C/h3gXrOVBywu/P3WQAF5FewC+BbGPMSCASuBJ4BPiLMWYg1kr11/m9dkqpdqOozD8BfH/JCTZ7mYl5oqqa+DqjW5zJso5VhC6Ar91bwryvd7U6jYA3vnahRAHxIhIFJAAHgHOBt+zj84BZfq+dUqrdOOKnFvj6fUcBa9UdJ2MMC9cdZFu+583N6MgIYqMiQhrAnWt5dm/h2PfGNBnAjTH7gD8Bu7ECdwmwEig2xjivyl6gl7fHi8gcEckVkdyCggL/1FopFXYOH6vwa35u9xuZxxtZ5CEpNiqkAbzkRBWd46KIivT/LUdfulBSgIuBfkBPIBGY5usLGGPmGmOyjTHZGRntNyeBUqphVTUOjpZXk5oY2+rnuumcgUBt5kGAX7y6CoBkL6NNkuKiQtoHXlxWSZeEwNwi9OVPwhRgpzGmwBhTBbwDnA50sbtUADKBfQGpoVIq7DmTT6Umtn4432kD0gDPxRqWbLG+3d83a2S985NiozgewhZ48YkquiQEZhijLwF8NzBBRBLEGmA5GdgILAEutc+ZDSwISA2VUmFvt53D2x8tcOeY7qVb63fJRkfUn+GZGBtFqZ8C+NmPLeG15bub9Zjisiqv3wz8wZc+8GVYNytXAevsx8wFbgd+JSLbgDTghYDUUCkV9v76yTYAhnRPavVzOYcG/t+n2+sd69Elvv75fmqBl5ZXkXe4jDvfad5CySUnqgLWheLTQnTGmHuBe+sU7wDG+71GSql257PvrNZyRqfWj8To1shoDm95xhP9dBPzuaU7XdvvrNrLJSf7NiGpuKySLqFqgSullL90jmv9Oupx0ZGM7t2FSYPSXWWpiTF8/9Q+Xs9PivNPC7xb59run5zN+T49xuEwdgtcA7hSKgwZYxCBK7J7tzgLYV1JsZGuoGyMFSQb6mdOio3yS07wSLe6O5d2a0rhsQocBrp2an3fvzcawJVSAXWsohpjYEDXxKZP9lFiTBRl9tjv45U11DhMowG8otrBrsPHW/WaLfkjsN+exNMjuX7fvD9oAFdKBZRzIeMMP7ZC3SfnOIcTNhTAnXlTrpr7Tates9TLIhJN2Vdk5T/p6eXmqj9oAFdKBVThMWsMeEaS/6aSJ7qNLHFO6GkogDvzjztbwy1VN4Wt+zj0hjgXce6TltCq126IBnClVEA5W+Dpnfw3lC4pLoqSE1UUlFY02QKP8jI2vLk+/66Al77K8ygrOl7Z5OMe+XAzYH1jCAQN4EqpZikoreCN3D0Y03h2vdLyKh5etJkdBVaCqYwk/3WhGAMOA+Me+JgCe6HkhhZtuOlca+r9tBHdW/x6f3cbc/7Hi0cAtGplIX8JzJ8FpVS7Ne6BjwE4uU8XBnbt1OB5o37/X9d2ZISQ4sfJLJ9uqR3G9+3uIqDhFninuGiG9+hMtaPl62LuKSpzbcfYSaleWbaL+2eNavAxjiAsIqEtcKWUz1buOuLaXrbzSL3jf/jPBsb+8b/sdQt4YK0YH+GHrgynu2cOc22/+GUeAMmNjLWOj4lkX3HL+sAXbzzEXvtm5NxrT6FbstWXv7Ow8VEtlfaqQb85f0iLXtcXGsCVUj773t+/dm3f/e76esdf/DKPorIqXvhiZ71j/uQtt3ZSTMMdCt/uLmLTgaMs8XECjruf/jMXsKbwnzeiO2cNsrKqfrntcKOPq7BHv8RGBS7MagBXSvmk3Eufb36p91ats1V8n91f7G8JXm4KNtbCd/ZmrLK7W1rCOQ7c/XUauw9QUW1dr9g6y7z5kwZwpZRP7nh7LWAlh3IuTHzls42PrT57SFc+/tWZLL3tHL/WJaGBtS+b0pyZoNU1DnYfLiMxpuEA3NiNzEptgSul2op/r94PwL0XjXCN6Njh1g/srYWelhTDwK6d6J3q33HQCbGeQfWSsV4XBKunOTlRXvwyjzMfW+J1tZ8bzxkAQFFZw2PB9xyx+s0j/JQ+wBsN4EqpJv01ZysAQ7t34nsn92LysK4AnNovFbAmtTz20RYAhvXozCVje/H45aNJaKRfujViIiO4anxt8ipvXSruXp8zAaBZWQH/tmRbg8dG9bKyHjY2FvyOd6xvLO43fv1NA7hSqlEHS8r58+LvALhynJWQytkV4RyJcv/7G103Lm+dOpjHrxjjc7rVlhARHnBbfaepLpSu9k1P5/vwRWMzLVPsES+N9ak77P7xrDT/5YCpSwO4UqpRv35zjWu7f0b9BRkOlpR7BLtA5f2oy/1mYv7RikbP7dXMOj320eZ6ZWcMrE1fm2IvznzPgg0NPsfY3ikA/GRS/2a9dnNoAFdKeXWwpJzXV+zmi22FANw1Y6hrPUqA26cNBeD3722gX3ptK7NnF//lPPHVuKzURo/HREUwtHvDk47cbdhfwtNLPFf7+eXkQfzrutr1a3xZIm31nmJOykwm0o/j3+vyZVX6ISKy2u3nqIjcIiKpIrJYRLbav1MCVkulVFD9+9t9THgoh9vfrl0+bM6ZA4iKrA0ZPzo9C4APNxz0eGyg1n9szEmZyU2eM75f40HeaeZTX9QrG52Z7DGCJc1ugTcUnKtqHOw+UsbavSU+vWZL+bIm5hZjzBhjzBjgFKAMeBe4A8gxxgwCcux9pVQb53AYttv5SRpyy+urPfZf++mEeufERUcyZVg3AJ79fAcAObee5bdFG5oj3Yc8K85FFZzD+9wtWneAO95eS9YdH3iU/3bmMNbcex6T7ffpFBUZwcT+aQ3eFD1mjxl3/2YSCM3tQpkMbDfG7AIuBubZ5fOAWf6smFIqMJ5buoPJf/7M66ruACe8DJtrqPV6w9kDPPYHeOkjD6S5157Cj0/vR3wjY7WdnCNivA0lvOGVVcxfscej7MpxvbnujH4NfqP4esdhDh+vZPfhsnrHnLnKf17n+vhbcwP4lcBr9nY3Y4xzXaGDQDdvDxCROSKSKyK5BQXePzBKqeCoqnG4RmL88MUVXs/ZX3KiXllDXQVj3RYRbmzCS6CcN6I791w43Kdzt9nfOq6Y+3UTZ1rSkmIa/TYRY0/Q8TZaxTlrM1BpZJ18DuAiEgNcBLxZ95ix5pN6nVNqjJlrjMk2xmRnZGS0uKJKqdZ7fulOVxdCjcPUm3xTVlnNF1utm5aPXz4agKxGFiOIiBDmz5nApEHprLn3vADV2j+Ky6wx298d8uw+8talAtA5rvG+/Od/kA1Y16wu5/DCuABOo4fmtcCnA6uMMYfs/UMi0gPA/t38LDFKqaByLjDgNK/OIgU/mZfLve9ZQ+POHdqVhb+cxDs/P73R55zQP41/XXeqxw3Otuh8L/nA9xwpY/BvF3k9f/ZpWY0+n7Nr5Yq539Rbbu2VZbuBwE6jh+YF8Kuo7T4BeA+YbW/PBhb4q1JKKf/7cH39ldTdR0m8sWIPX22vzbDXJSGG4T07k5rovzzeoXTxmF5kdIplij2LFGB/cf3uIoBRvZKbbD0nuHUZLVrnORJn0iBrzPhpbmPHA8GnAC4iicBU4B234oeBqSKyFZhi7yul2qifvbwKgFljerpGlRyxp4I7HIbb7GRVYI17bo/6piZ4JKBy5ux2cnYXXX9W05Nv3PO7REV69pUfOV5Jz+TAj4f3qYfdGHMcSKtTdhhrVIpSKozcN2skneKiOW94N9eiu5sOHnUd/+3MYQGdPRhK8TGRrlEoFdU1LKzTcu4UF03ewzN9ei73Fnrdm7yFxypITQr8N5e23WmllPKLLQdLAThrcAad7JtzqYkxbD5YyrOfbWdHgZVV8M2fTWy3wRusoHuiymp1P790J68t3+1xvLqZy6CN7NUZqF28wWn34TIyuwRmJXp3GsCV6gDOf+JzAC4c3dNV5uzbfmjRZg6WWAszDPFxunm4io+OpLyqhtLyKhauq39PoLnrWL74Q2t6fYVbt0xpeRU7Co/Tp5HRO/6iixor1Y4VHa/ktwtqlz5zLsQAUOY2YedASTmJMZF0CvC45VCLj47kRGUNY/64mBovwbpLI+tqeuO8kener15s5wgfGIRJTe37X0upDmzJ5nx+9FLtZJ1pdYbRXXBSD16yhxH+48ud9E1LCMk0+GA6UVXDwaPel4H71dTBXDm+d7Oez9kPfqKytgvFOba+7qITgaBdKEq1U2+t2uuxf/v0oR772VmpPPq9k1z7u7xMCW9v3luzv8Fjvzh3IF07NW/kSGSEEBMZ4dECd27HB3gSD2gAV6rd+mCt1cd73vBubH1gutfESkk+riXZXlw8pqfX8qW3ndPibx+x0REeM1qduWQCPQsTNIAr1e799eqxRDcwS/L0AekMyEhk0qB0Xr7u1CDXLPh+fd6QemUvzM5u1ZqdiTFRHgmyyu0RKcEI4B3rz69SHcQt878FrBmBsVENB5LkhGhybj07SLUKva6dPdPOjstKqZcqtrmS46M56jaV3tkCD0YXigZwpdoh5wryO91WjVd4/DG7anwfv6R77Rwf5ZGR0NmdEhcd+A4O7UJRqp1xDyZXn9qnkTM7pgx7YYcHZo1sVdeJU2JsFMcrrKC96/Bx7nt/I4BPOcpbS1vgSrUza/cWA9ZEnRvOCuyCAuHonRtOY3vBMY9FkVsjMTbKtajDL+ev5rCdX0a7UJRSzfaDfywH4DfnD2n347pbondqgl9a3k5JMVHsKDzOj15czk63pep0FIpSqtl6dLbGMn/v5MwmzlT+4EwEtmRLAUfLa0ejBDoXOGgAV6pdyT9azv6Sci44qYdryS8VWO7LyrkLxrcf/RdWqh3Zlm99hR/bJyXENek4bps2tF7ZndPrlwWCBnCl2pGCYxWAlTZWBUdibBQXuWV5TEuM4fog3TzWAK5UO3LPAms9y251JqyowPrdBcNd285RKMHg65JqXUTkLRHZLCKbRGSiiKSKyGIR2Wr/1u9sSoWYcwx4pyZWVFf+ldEpllP7pQb9dX1tgT8JfGiMGQqMBjYBdwA5xphBQI69r5QKEWOs/NbuX+dV8DgnTd174fAmzvSfJseBi0gycCbwQwBjTCVQKSIXA2fbp80DPgVuD0QllVJN21tkrbCenqTdJ6Fw0eiepCXGctqAtKZP9hNfWuD9gALgRRH5VkSet1ep72aMca5JdBDwmhFGROaISK6I5BYUFPin1kqpevJLrRuYkwalh7gmHZOIcMagdL/N8PSFLwE8CjgZ+LsxZixwnDrdJcb67uZ1MTljzFxjTLYxJjsjQ++MK+VN0fFKcjYdatVzfLolH4Duyc1blECFL18C+F5grzFmmb3/FlZAPyQiPQDs3/mBqaJS7ZfDYXhr5V7G3reY6+blsnLXkRY9jzGGv36yDYBeKfH+rKJqw5oM4MaYg8AeEXFmQp8MbATeA2bbZbOBBQGpoVLt2Jsr9/DrN9e49l/8Mq9Fz7N0a6Fru7OOQOkwfB2F8gvgFRFZC4wBHgQeBqaKyFZgir2vlGqGl7/Z7bH//toDHstz+eLtlXtdCazeu+l0v9VNtX0+ZSM0xqwGsr0cmuzf6ijVsTiX4kpLjHFNAHkjdw8/mJjl83PcarfgIyOEkzK95+VQ7ZPOxFQqRIwxHDxazo9P78fK3011lR9zW1+xKW+s2OPafmG2tzaWas80gCsVIgWlFZRV1rhuOi640er+ePTDLRwsKffpOW57ey0AL/5wHGcP6RqYiqo2SwO4UiGyclcRAGP7WN0eo93Skk54KIf9xSdcsyu9WbyxdtjhhP7Bmzyi2g4N4EqFyPK8I8RERjCiZ2evx097+BNG3vsRO9xWeXEqPFbBT/+ZC8CE/qlBWX9RtT0awJUKkQ37j3JSZrLHSukrfzvF45zjlTW8++2+eo9dv6/Etf2LcwcFrpKqTdMArlSIFJZW0K2z56zJtKRYV1+4kzPHiTv3jpWBXZMCUT0VBjSAKxUCJSeq2FF4nPSkmHrHRvfuQs6tZ7n23/12HycqPceGF5dZQw6fvHJMvT8CquPQAK5UCHy5zZo5Oa6BHNL90xO5anwf1/6wez70OL73iNUqP39E9wDVUIUDDeBKhcCWg6WIwJRhXpN4IiI8dMko+qcnej2+bl8JvbrEExetNy87Mg3gSoVA3uHjPgXgv1wxBoBBdfq5/7vxkKaNVRrAlQqFvMLjZKV5b127G927C9dM6OOxzqIz7WxzZmyq9kkDuFJBVlZZzZq9JSTH+5Y1MC0xlqKySqprHGzLP8Z+e5bmleP6NPFI1d75lMxKKeU/972/CbAWwvVFbHQExsDAuxd5lI8PwSK6qm3RFrhSQTZ/hZVC9vLs3j6dX+TWfeIuJkr/+3Z0+glQKoiMMRgDZw7OYHgDU+jruu6M/vXK7p4xzN9VU2FIu1CUCqJPv7MW9j53iO/rw3ZPjmPnQzP4/vPLGNQ1id6pCfxkUv2grjoeDeBKBdGyHdaal5f52H3iJCK8+tMJgaiSCmM+BXARyQNKgRqg2hiTLSKpwOtAFpAHXG6MKQpMNZUKfzUOwzOfbadvWgKJsdp2Uq3XnD7wc4wxY4wxzmU/7gByjDGDgBx7XynlRXFZJRf97Qug/qQcpVqqNTcxLwbm2dvzgFmtr45S7dPfP93Ohv1HAXj6+yeHuDaqvfA1gBvgvyKyUkTm2GXdjDEH7O2DgNekDiIyR0RyRSS3oKCgldVVKjztK7aST6UnxXjk/1aqNXztiDvDGLNPRLoCi0Vks/tBY4wREa9rPxlj5gJzAbKzsxteH0qpdqyi2gHA/DkTQ1wT1Z741AI3xuyzf+cD7wLjgUMi0gPA/p0fqEoqFc7yj5az2E4+pYsvKH9qMoCLSKKIdHJuA+cB64H3gNn2abOBBYGqpFLhbPyDOQDsKDge4pqo9saXLpRuwLsi4jz/VWPMhyKyAnhDRK4DdgGXB66aSoW/+2eNDHUVVDvTZAA3xuwARnspPwxMDkSllGovHA5DZIRww1kDOGdo11BXR7UzmgtFqQBxOAwvfpVHjcOQ5mXtS6VaSwO4UgHy6Xf53Pf+RgAyUxJCXBvVHul8XqV8tHLXEeZ9tYuTMpOZNCiDId07NXr+hn1HXdsje/mWeVCp5tAArpQP1u8r4Xt//xqA99bsBzYxf84EJvRPa/AxhccqXNs9kuMDXUXVAWkXilJNKC6r5K2Ve+uVXzn3mwYfs7PwOPO+3gXA2zfo5B0VGNoCV6oJkx5ZQqm9gPB/bjqDr7YX8tCizcRGRWCMwR5i62HeV3mA1XVySl9d+kwFhgZwpRphjHEFb4BRmcmMykwmKS6Ku99dz54jJ+iTVv8GZXlVDQBzr82ud0wpf9EArpQX1TUO/veNNZTZwbtXl3iW/Pps1/ERPZMB2HigxGsA315wjPFZqfTson3fKnC0D1wpL5ZuK+Q/a/aTs9lK8fOny0Z7LCI81B6B8rOXV1Hj8MzRtmRLPivyirwGdqX8SQO4Ul7844udHvuDunkmoYqLrk0J+7dPtnkc+9GLKwBITdTJOyqwNIArVcdHGw6ydGuhR1mal2D80o/GAbDl0NF6xwBuOGuA/yunlBvtA1eqjheWWq3vayb04fcXjqCyxuF1pMnZQ6zcJgvXHeSVZbvo2SXe1fr+/ql9SNEWuAowDeBKuVm07gDL844wvEdn7p81CoCoyKa/qN797nqP/UtPyQxI/ZRyp10oStkcDsMNr6wCYOZJPXx6zIY/nO+xn903hWevPYWxfVL8Xj+l6tIArpTNuW4lWF0gvkiMjeIHE/u69if0T+P8Ed39XjelvNEuFKVsTy+xRpO8fcNEuiT43n99+7ShDMhIIjYqgsuyeweqekrV43MAF5FIIBfYZ4y5QET6AfOBNGAlcK0xpjIw1VQqsKprHMxfsQeonaTjq8TYKGaflhWAWinVuOZ0odwMbHLbfwT4izFmIFAEXOfPiikVLCUnqhh49yLXvvsYb6XaMp8CuIhkAjOB5+19Ac4F3rJPmQfMCkQFlQq0P7y3wbX9zx+PD2FNlGoeX1vgTwC3AQ57Pw0oNsY4s/zsBXr5uW5KBd2ZgzNCXQWlfNZkABeRC4B8Y8zKlryAiMwRkVwRyS0oKGjJUyjVaiVlVTz72fZ6eUsAvtxeyPh+qeQ9PDMENVOq5Xy5iXk6cJGIzADigM7Ak0AXEYmyW+GZwD5vDzbGzAXmAmRnZ9f/36NUEPz+Pxt499t9PPrRFiYP7coz15xCRITw9fbDHDpaQXFZVairqFSzNdkCN8bcaYzJNMZkAVcCnxhjvg8sAS61T5sNLAhYLZVqhdy8I7z7rdW+qHEY/rvxEIdKy1m+8whXPWetqvPjM/qFsopKtUhrJvLcDvxKRLZh9Ym/4J8qqfbiuc93kHXHB67FDULheEU1lz7zdb3yiQ99wuXP1pbfOnVwMKullF80K4AbYz41xlxgb+8wxow3xgw0xlxmjKlo6vGqY3lgoTXqdOjvPuRPH22husZBQWkFDi/90IGyo+B4k+cs+fXZPuU7Uaqt0ZmYKiDufGetx/7flmzjb/ZMx0mD0vnXdacGvA7VNQ7u+2AjAD8+vR+Xj8ukc1w0z3623bXg8FmDM+iXnhjwuigVCBrAld/tOVLGa8utWY1Xje/t2nZaurUQh8MQEVE/Rau/bNhfwsynvnDt3zVjqKuVfe+FI0iKi6JfehLTR2reEhW+NIArv7v+X9aI08tOyeR3FwwnMkLISkvk/g82kZ4US+GxCvrftZCtD0wnOkBdFyt2HnFt3z5tqEcXSUSE8JvzhwbkdZUKJg3gyq/yj5az50gZ6UkxPHrpSYiIK6/2Tyb1x+Ew9OV9mMgAABMKSURBVL9rIQCD7l7E+j+cT1Ksfz+G5VU1PJmzFYB+6Ylcf2Z/vz6/Um2F3rlRfuNwGMY/mENpRTWv/nSC11VsIiKErQ9Md+1/tsX/k7vG3f8xRfa47iW/PjugXTVKhZIGcOU3u4+UATB5aFcGd+vU4HnRkRHcP2skAGv3Ffu1DlU1DkorrAwP47NS/frcSrU1GsCVXxhjuOk1azWbm6cMavL8ayb0ZWj3Tmw5WOrXejxld50AXDjat1V1lApXGsCVXzy4cBPr91mrszfW+nbXPyORXYfL/FqPv35iDVWcMao7107M8utzK9XWaABXrXasoprn7JXcbzxngM/5tLPSEtlZeJxDR8v9Uo+qGodr+/HLx/jlOZVqyzSAq1ZZtbuIi/5qjbeec2b/Zg3Pcy4cfPe76/xSl7mf77Ceb8YwXZRBdQgawFWLGWO45P++YkfhcbLSErhzevPGVjuXLvt4Uz5Zd3yAMa2bYv/YR1sAuHycrkupOgYN4KpFqmoc9LtzoWv/inF9vA4bbMoj3xvl2u5350JW7yluUa6UqhoHURHCDWcPIDk+utmPVyocaQBXLeJs7YKVye8nk1qWjvWKcX14+uqTXfuznv6SO99pfpfKrsNlVDsMg7omtageSoUjDeCq2dbsKXb1N188pic3nTuwVVPiJw5I89h/PXcPJyqbl4L25W+s5FQDNYCrDkQDeAdQVlnN0fIqv6Rxra5x8NGGgwA8c83JPHnl2BZ1nbhLTYxh6wPT+c9NZ5CeFAvA4k2HfH78sYpqXvoqD4DhPTq3qi5KhRPNhdIB/OCF5eTuKgLgiSvGMGtsy9efHnj3Itf2+SP8l8kvOjKCUZnJLLz5DMY/kENeYdN5vJ2ufWGZa1vzequORD/t7dzR8ipX8Aa45fXV3PTqqhY9l3sL/okrxrS65e1N105x9EiOa9YEn293W9PxP/jlGX6vj1JtmS+r0seJyHIRWSMiG0TkD3Z5PxFZJiLbROR1EYkJfHVVc9325tp6Ze+vPUDWHR9w+1v1jzXm2z3WH4L7Lh7RqlZ8U3qnJLCz8FiT5+0+XMZpD+UA8D9je7mGJSrVUfjSAq8AzjXGjAbGANNEZALwCPAXY8xAoAi4LnDVVC3hcBg+3nSIrLQE8h6eyZp7z2OYWx/x67l7WLvXt2RSpeVVXP2c1VUxcUB6QOrrdEpWCmv3lnDMTkrVkAcXbmJ/iTWLs7+uqqM6IF9WpTfGGGdzKNr+McC5wFt2+TxgVkBqqFrEGMOry3dT7TD8/JyBACTHRzN/zgSP865+bhkfrj9Yb+HhouOVfLPjsGv/teW7qah28JvzhwR8pMekQelUOwzfbD/c6Hkf2jdTAXp0iQ9onZRqi3y6iSkikcBKYCDwNLAdKDbGOJtIewGv36lFZA4wB6BPnz6tra/y0cvLdvO7f68HYGL/2mF6yfHRLL3tHFITYxhx70ccq6jmZy9bK+hERQjnDO3Ks9ecwmXPfs22/GPk3HoW0574nKoaq//7Z2cNCHjdT+mbQnx0JJ99V8CU4d2aPD8mMoKpw5o+T6n2xqebmMaYGmPMGCATGA/4PGfaGDPXGJNtjMnOyMhoYTVb58531pF1xwcMvnsR+4pPhKQOwbbcXlJszpn96Z2a4HGsd2oCiV5Wwal2GBZvPET/uxayLd/60jX5z5+5gjdAZBAWR4iNimRUZjL/+mYXR8ur6h2vcRjW7S0B4ObJg/jugekkJ+jsS9XxNGsUijGmGFgCTAS6iIgzCmQC+/xcN7/Yll/Ka8t3A1BZ4+D0hz8JcY2CY/eRMib2T+OuGcMaPOf9X5zB1af69q2oS0I0S359tp9q57t/f1v/Y3XbW2u58G9WAq3URL13rjouX0ahZIhIF3s7HpgKbMIK5Jfap80GFgSqkq3x3poD9co27j8agpoET35pOev2FnNK35RGzxvZK5l7LxzOfbNG8uD/jOI/N53BVeOtRFCdYqP43ymDiRD45NazWH3PefQL4o3CP1822mv5gtX7eHvVXtf+FZq4SnVgvvSB9wDm2f3gEcAbxpj3RWQjMF9E7ge+BV4IYD1bpKC0gqdytjK8R2cW3jyJBav3cfP81cx4ail5D88MdfVa7TdvruHNlVYwe/rqk5l5Ug+Kyyq54eVVOAzMGtuzyeeIjYrk2gl9a58zZSj905P4wWl9iY2K9Gl1nUDITIknISaSHQW1E3ocDsPN81cDkJIQzarfTQ3IWHSlwkWTAdwYsxYY66V8B1Z/eMBVVjsY/NtFZKbE8/AlJ3HGIN+Gsc16+ksApto3wqa63RArOl5JSp2v3zUOw9ur9jJrTC9iotr2HKf1+0pcwRvgxldXkZJwKlc/bw3169oploFdfVsZx11qYgw/bQOruIsIg7t5Lrm2zO7XB/jXdadq8FYdXtuOUrbpT34OwN6iE1zzwjJqGsjpYYxh88GjGGMwxrhuWN5ityITYqJ46irrb9Gtb66p9/i5n+/gtrfWct28FYF4G35TcqKKq577BoBnrjnFVe4M3gBvXD8x6PXytx7JcXy94zAfrLW6wVbtrp1ROkxznigVHgG87gy7AXctpKLac9zyB2sP0O/OhUx7Yin97lzIgws3AXDZKZkeLbUL7VVgPtmcz4nKGlbkHeHxxd9x0d++4JEPNwOwdGthIN9Oq/1l8XeUlldzeXYm00Z257v7pxPlNjok97dTyGoHE1ucI1ButKf+x9h5Ttb9/rygjIZRqq0Li2RWj156Er+/aAT7ik64Rh98uqXAlUwpZ9Mh139yJ+cajfdeNMKjXES4anxvXlu+h2H3fNjgax6rqCbJy1C7UCuvqmHhugOM75fKo5daN/pioiL47v7plFZUg6HdDKn702WjmfiQNWroYEk5T31irTjfFv9dlAqFsGiBx0VHkpoYw6jMZJbfNRmA6/+1kocXbSb7/o+5bl4uACN6dmbmqB6ux43qlez1P/uD/zOqXhnAVeN788LsbAA2HWibI1V+/NIK8ksr+MHEvh7lERFCcnx0uwneAD2S4zm5TxcAJjyUQ2m5NW9M+76VsoRdU6Zr5zi6d47j4NFynvlsu6t8Qv9U/v79U4iPiWTayO7UOAynDUzz+hwiwq1TB/Pnxd+RFBvFirunEB9jLYJ70M6tsXH/UcZlpQb+DfmoorqGIb+t/caQ3bft1C2Q/nfqYK59Yblr/+5GxrUr1dGEXQAHeP36CZz12Keu/U9uPYv+GbX5OS4c3fTwuV9MHsQvJtcfItetcyxpiTFs2F/il7q2lsNhePjDza4VcAB+eFoW3ZPjQlir4Jk0KIPrzujHC1/s5I3rJzK+X8f4w6WUL6S1K4E3R3Z2tsnNzfXLc5WWV5FXWMaoTP+nEL346S9Zs6eYHQ/OICLEN8vO/dOn7KizuMHOh2Z0uG6E8qoa4qIjQ10NpUJCRFYaY7LrlodlCxygU1x0QII3QHFZJQBfbT/s85hzf6uqcRAp4gre47JS+Mmk/vRIjutwwRvQ4K2UF2EbwANp3o/Gc/afPuXTLflBD+BlldUMv+cjj7KfTurH3TOHB7UeSqm2LyxGoQRbVnoio3t3YUMIcqZ4G/1yWbbm+1BK1acBvAHDe3RyzeoMBofDsHZvMYvWHax3bFCAF1BQSoUn7UJpwOBunXht+R6ezNnKLVMGB/S1bp7/LQtW7/co23zfNApKKygtr+6Qfd5KqaZpC7wBzuFqT3y8lcpqR8Bep7yqpl7wBuumXe/UBIb31JwfSinvtAXegBE9k/nN+UN47KMt7Cw8zpDuzc/s5836fSVc8FcrHcA5QzI4fWDtTdJOcVGUlleHZOEEpVT40QDeiMnDuvLYR1vYfPCoXwL480t3cP8Hm1z7S7YUsGRLAQAf/+rMFqV/VUp1XNqF0oj+6UlERojfshO6B29vr6WUUs2hAbwRMVERdO8cx1fbWh/A645mGZ+Vyub7prn2Qz3jUykVfprsQhGR3sA/gW6AAeYaY54UkVTgdSALyAMuN8YUNfQ84Wrq8G689FUeJyprXAmvWmLX4TIA7poxlMiICK6d0JeYqAguGduLsXbGPaWUag5fWuDVwK3GmOHABOBGERkO3AHkGGMGATn2frszcYCV0XBjK9PL3v/BRgDG9knhujP6uZZse/yKMVw7MatVz62U6piaDODGmAPGmFX2dinWivS9gIuBefZp84BZgapkKA23l+763t+/avFq9gtW7+PjTfkAdO/cMbIIKqUCr1l94CKShbXA8TKgmzHmgH3oIFYXi7fHzBGRXBHJLSgoaEVVQyMzJd61/Za9iPD85bs9Ftttysvf7AIgu2+Kx/MppVRr+DyMUESSgLeBW4wxR91nBxpjjIh4nXNujJkLzAUrnWzrqht8IsL0kd1ZtP4g//hyJ68t382JKms9znFZKbxx/cRGZ0pWVNewIs+6NfDWDacFpc5KqY7Bpxa4iERjBe9XjDHv2MWHRKSHfbwHkB+YKobeX64Yg3OQiDN4A6zIK+IvH2/lmueXcayi2utjr3FbKV4ppfypyQAuVvPyBWCTMeZxt0PvAbPt7dnAAv9Xr22Ii47kvOHdvR57KmcrX2wr5E8fbfF63NnV8tUd5wasfkqpjsmXFvjpwLXAuSKy2v6ZATwMTBWRrcAUe7/d+tPlo3niijF0SYjmsUtPYudDMzyOf/Zd/f793YfLOFpezZ3Th9Kzi/Z9K6X8q8k+cGPMF0BDnbyT/VudtispNopZY3sxa2wvV9krPzmV3/17PTsKj7O/+ES9xyzZYvUqndw3JWj1VEp1HDoTsxVOH5jOJ78+m7tmDKWi2sGsp7/0OP719sP06hJPtgZwpVQAaDIrP5g2ogcPLtzM6j3FvL5iN7e/vc517OpT+2g+b6VUQGgL3A/6pCW4tt2DN8C5Q7oGuzpKqQ5CA7if3DZtiNfyrPQEr+VKKdVa2oXiJz87cwCPfmgNJdz50AyqagwrdxVpjm+lVMBoAPeTiAjhgf8ZSffOcYgIMVHiSoSllFKBoAHcj75/at9QV0Ep1YFoH7hSSoUpDeBKKRWmNIArpVSY0gCulFJhSgO4UkqFKQ3gSikVpjSAK6VUmNIArpRSYUqMCd4ylSJSAOwK2gv6XzpQGOpKtAF6HWrptail16KWv69FX2NMRt3CoAbwcCciucaY7FDXI9T0OtTSa1FLr0WtYF0L7UJRSqkwpQFcKaXClAbw5pkb6gq0EXodaum1qKXXolZQroX2gSulVJjSFrhSSoUpDeBKKRWmOnQAF5E4EVkuImtEZIOI/MEu7yciy0Rkm4i8LiIxdnmsvb/NPp7l9lx32uVbROT80LyjlmvkWrwkIjtFZLX9M8YuFxF5yn7Pa0XkZLfnmi0iW+2f2aF6T60hIpEi8q2IvG/vd7jPhJOXa9FRPxN5IrLOfs+5dlmqiCy239diEUmxy4NzLYwxHfYHECDJ3o4GlgETgDeAK+3yZ4Ab7O2fA8/Y21cCr9vbw4E1QCzQD9gORIb6/fnpWrwEXOrl/BnAIvtxE4BldnkqsMP+nWJvp4T6/bXgevwKeBV4397vcJ+JRq5FR/1M5AHpdcoeBe6wt+8AHgnmtejQLXBjOWbvRts/BjgXeMsunwfMsrcvtvexj08WEbHL5xtjKowxO4FtwPggvAW/aeRaNORi4J/2474BuohID+B8YLEx5ogxpghYDEwLZN39TUQygZnA8/a+0AE/E1D/WjSh3X4mGuH+71/3cxHwa9GhAzi4vh6uBvKxLuZ2oNgYU22fshfoZW/3AvYA2MdLgDT3ci+PCRt1r4UxZpl96AH7a+BfRCTWLmvoPbeHa/EEcBvgsPfT6KCfCepfC6eO9pkAq0HzXxFZKSJz7LJuxpgD9vZBoJu9HZRr0eEDuDGmxhgzBsjEaiENDXGVQqbutRCRkcCdWNdkHNbXvttDWMWAE5ELgHxjzMpQ1yXUGrkWHeoz4eYMY8zJwHTgRhE50/2gsfpIgjouu8MHcCdjTDGwBJiI9XUnyj6UCeyzt/cBvQHs48nAYfdyL48JO27XYpox5oD9NbACeJHaboCG3nO4X4vTgYtEJA+Yj9V18iQd8zNR71qIyMsd8DMBgDFmn/07H3gX630fsrtGsH/n26cH51qE+sZAKH+ADKCLvR0PLAUuAN7E84bVz+3tG/G8YfWGvT0CzxtWOwizG1aNXIsedplgfZ1+2N6fiedNmuV2eSqwE+sGTYq9nRrq99fCa3I2tTfuOtxnopFr0eE+E0Ai0Mlt+yusvuvH8LyJ+Wgwr0XIL0yI/1FOAr4F1gLrgXvs8v7AcqwbT28CsXZ5nL2/zT7e3+257sbqP98CTA/1e/PjtfgEWGeXvUztSBUBnrbf8zog2+25fmxfo23Aj0L93lpxTdyDVof7TDRyLTrcZ8L+919j/2wA7rbL04AcYCvwsTMYB+ta6FR6pZQKU9oHrpRSYUoDuFJKhSkN4EopFaY0gCulVJjSAK6UUmFKA7hSSoUpDeBKKRWm/h9xMFLQLtK6ywAAAABJRU5ErkJggg==\n",
557 | "text/plain": [
558 | ""
559 | ]
560 | },
561 | "metadata": {
562 | "needs_background": "light"
563 | }
564 | }
565 | ]
566 | },
567 | {
568 | "cell_type": "code",
569 | "source": [
570 | ""
571 | ],
572 | "metadata": {
573 | "id": "U-y000iUtSv-"
574 | },
575 | "execution_count": null,
576 | "outputs": []
577 | }
578 | ]
579 | }
--------------------------------------------------------------------------------
/1_Handwritten_digits.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "1 Handwritten.ipynb",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "authorship_tag": "ABX9TyMVLvaV9KcmfgGqeBv67mZ7",
10 | "include_colab_link": true
11 | },
12 | "kernelspec": {
13 | "name": "python3",
14 | "display_name": "Python 3"
15 | }
16 | },
17 | "cells": [
18 | {
19 | "cell_type": "markdown",
20 | "metadata": {
21 | "id": "view-in-github",
22 | "colab_type": "text"
23 | },
24 | "source": [
25 | " "
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "metadata": {
31 | "id": "hagOKFDLLVqb",
32 | "colab_type": "code",
33 | "colab": {}
34 | },
35 | "source": [
36 | "import numpy as np\n",
37 | "import matplotlib.pyplot as plt\n",
38 | "import tensorflow as tf\n",
39 | "from tensorflow import keras\n",
40 | "import keras\n",
41 | "from keras.layers import Dense\n",
42 | "from keras.utils import to_categorical"
43 | ],
44 | "execution_count": 87,
45 | "outputs": []
46 | },
47 | {
48 | "cell_type": "code",
49 | "metadata": {
50 | "id": "r73pgL84LifU",
51 | "colab_type": "code",
52 | "colab": {}
53 | },
54 | "source": [
55 | "#Load Dataset\n",
56 | "(xtrain,ytrain) , (xtest,ytest) = keras.datasets.mnist.load_data()"
57 | ],
58 | "execution_count": 88,
59 | "outputs": []
60 | },
61 | {
62 | "cell_type": "code",
63 | "metadata": {
64 | "id": "RJkKajoSLsDE",
65 | "colab_type": "code",
66 | "colab": {
67 | "base_uri": "https://localhost:8080/",
68 | "height": 34
69 | },
70 | "outputId": "c87ae1fa-1d2f-47e4-df6f-eadf1e3fbe35"
71 | },
72 | "source": [
73 | "xtrain.shape"
74 | ],
75 | "execution_count": 89,
76 | "outputs": [
77 | {
78 | "output_type": "execute_result",
79 | "data": {
80 | "text/plain": [
81 | "(60000, 28, 28)"
82 | ]
83 | },
84 | "metadata": {
85 | "tags": []
86 | },
87 | "execution_count": 89
88 | }
89 | ]
90 | },
91 | {
92 | "cell_type": "code",
93 | "metadata": {
94 | "id": "dmdYj4BiL2F7",
95 | "colab_type": "code",
96 | "colab": {
97 | "base_uri": "https://localhost:8080/",
98 | "height": 34
99 | },
100 | "outputId": "ae878e0c-04ce-4253-fe7d-cae2d39ce283"
101 | },
102 | "source": [
103 | "xtest.shape"
104 | ],
105 | "execution_count": 90,
106 | "outputs": [
107 | {
108 | "output_type": "execute_result",
109 | "data": {
110 | "text/plain": [
111 | "(10000, 28, 28)"
112 | ]
113 | },
114 | "metadata": {
115 | "tags": []
116 | },
117 | "execution_count": 90
118 | }
119 | ]
120 | },
121 | {
122 | "cell_type": "code",
123 | "metadata": {
124 | "id": "aGINc7-BL7rj",
125 | "colab_type": "code",
126 | "colab": {
127 | "base_uri": "https://localhost:8080/",
128 | "height": 34
129 | },
130 | "outputId": "85014f81-dc5e-4e4c-99a8-d5322c7cfe6b"
131 | },
132 | "source": [
133 | "xtrain[1].shape"
134 | ],
135 | "execution_count": 91,
136 | "outputs": [
137 | {
138 | "output_type": "execute_result",
139 | "data": {
140 | "text/plain": [
141 | "(28, 28)"
142 | ]
143 | },
144 | "metadata": {
145 | "tags": []
146 | },
147 | "execution_count": 91
148 | }
149 | ]
150 | },
151 | {
152 | "cell_type": "code",
153 | "metadata": {
154 | "id": "9nnHwIKnMPJL",
155 | "colab_type": "code",
156 | "colab": {
157 | "base_uri": "https://localhost:8080/",
158 | "height": 1000
159 | },
160 | "outputId": "3d30b5eb-8863-44f5-d6a3-ce82f8e741b4"
161 | },
162 | "source": [
163 | "xtrain[1]"
164 | ],
165 | "execution_count": 92,
166 | "outputs": [
167 | {
168 | "output_type": "execute_result",
169 | "data": {
170 | "text/plain": [
171 | "array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
172 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
173 | " 0, 0],\n",
174 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
175 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
176 | " 0, 0],\n",
177 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
178 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
179 | " 0, 0],\n",
180 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
181 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
182 | " 0, 0],\n",
183 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
184 | " 0, 0, 51, 159, 253, 159, 50, 0, 0, 0, 0, 0, 0,\n",
185 | " 0, 0],\n",
186 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
187 | " 0, 48, 238, 252, 252, 252, 237, 0, 0, 0, 0, 0, 0,\n",
188 | " 0, 0],\n",
189 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
190 | " 54, 227, 253, 252, 239, 233, 252, 57, 6, 0, 0, 0, 0,\n",
191 | " 0, 0],\n",
192 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60,\n",
193 | " 224, 252, 253, 252, 202, 84, 252, 253, 122, 0, 0, 0, 0,\n",
194 | " 0, 0],\n",
195 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 252,\n",
196 | " 252, 252, 253, 252, 252, 96, 189, 253, 167, 0, 0, 0, 0,\n",
197 | " 0, 0],\n",
198 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 238, 253,\n",
199 | " 253, 190, 114, 253, 228, 47, 79, 255, 168, 0, 0, 0, 0,\n",
200 | " 0, 0],\n",
201 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 238, 252, 252,\n",
202 | " 179, 12, 75, 121, 21, 0, 0, 253, 243, 50, 0, 0, 0,\n",
203 | " 0, 0],\n",
204 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 38, 165, 253, 233, 208,\n",
205 | " 84, 0, 0, 0, 0, 0, 0, 253, 252, 165, 0, 0, 0,\n",
206 | " 0, 0],\n",
207 | " [ 0, 0, 0, 0, 0, 0, 0, 7, 178, 252, 240, 71, 19,\n",
208 | " 28, 0, 0, 0, 0, 0, 0, 253, 252, 195, 0, 0, 0,\n",
209 | " 0, 0],\n",
210 | " [ 0, 0, 0, 0, 0, 0, 0, 57, 252, 252, 63, 0, 0,\n",
211 | " 0, 0, 0, 0, 0, 0, 0, 253, 252, 195, 0, 0, 0,\n",
212 | " 0, 0],\n",
213 | " [ 0, 0, 0, 0, 0, 0, 0, 198, 253, 190, 0, 0, 0,\n",
214 | " 0, 0, 0, 0, 0, 0, 0, 255, 253, 196, 0, 0, 0,\n",
215 | " 0, 0],\n",
216 | " [ 0, 0, 0, 0, 0, 0, 76, 246, 252, 112, 0, 0, 0,\n",
217 | " 0, 0, 0, 0, 0, 0, 0, 253, 252, 148, 0, 0, 0,\n",
218 | " 0, 0],\n",
219 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 230, 25, 0, 0, 0,\n",
220 | " 0, 0, 0, 0, 0, 7, 135, 253, 186, 12, 0, 0, 0,\n",
221 | " 0, 0],\n",
222 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 223, 0, 0, 0, 0,\n",
223 | " 0, 0, 0, 0, 7, 131, 252, 225, 71, 0, 0, 0, 0,\n",
224 | " 0, 0],\n",
225 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 145, 0, 0, 0, 0,\n",
226 | " 0, 0, 0, 48, 165, 252, 173, 0, 0, 0, 0, 0, 0,\n",
227 | " 0, 0],\n",
228 | " [ 0, 0, 0, 0, 0, 0, 86, 253, 225, 0, 0, 0, 0,\n",
229 | " 0, 0, 114, 238, 253, 162, 0, 0, 0, 0, 0, 0, 0,\n",
230 | " 0, 0],\n",
231 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 249, 146, 48, 29, 85,\n",
232 | " 178, 225, 253, 223, 167, 56, 0, 0, 0, 0, 0, 0, 0,\n",
233 | " 0, 0],\n",
234 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 252, 252, 229, 215, 252,\n",
235 | " 252, 252, 196, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
236 | " 0, 0],\n",
237 | " [ 0, 0, 0, 0, 0, 0, 28, 199, 252, 252, 253, 252, 252,\n",
238 | " 233, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
239 | " 0, 0],\n",
240 | " [ 0, 0, 0, 0, 0, 0, 0, 25, 128, 252, 253, 252, 141,\n",
241 | " 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
242 | " 0, 0],\n",
243 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
244 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
245 | " 0, 0],\n",
246 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
247 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
248 | " 0, 0],\n",
249 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
250 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
251 | " 0, 0],\n",
252 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
253 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
254 | " 0, 0]], dtype=uint8)"
255 | ]
256 | },
257 | "metadata": {
258 | "tags": []
259 | },
260 | "execution_count": 92
261 | }
262 | ]
263 | },
264 | {
265 | "cell_type": "code",
266 | "metadata": {
267 | "id": "pZ9cflPfMtyN",
268 | "colab_type": "code",
269 | "colab": {
270 | "base_uri": "https://localhost:8080/",
271 | "height": 292
272 | },
273 | "outputId": "2927df11-820d-457b-e639-571e8d8293b8"
274 | },
275 | "source": [
276 | "plt.matshow(xtest[1])"
277 | ],
278 | "execution_count": 93,
279 | "outputs": [
280 | {
281 | "output_type": "execute_result",
282 | "data": {
283 | "text/plain": [
284 | ""
285 | ]
286 | },
287 | "metadata": {
288 | "tags": []
289 | },
290 | "execution_count": 93
291 | },
292 | {
293 | "output_type": "display_data",
294 | "data": {
295 | "image/png": "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\n",
296 | "text/plain": [
297 | ""
298 | ]
299 | },
300 | "metadata": {
301 | "tags": [],
302 | "needs_background": "light"
303 | }
304 | }
305 | ]
306 | },
307 | {
308 | "cell_type": "code",
309 | "metadata": {
310 | "id": "lBmb0BfJNSHc",
311 | "colab_type": "code",
312 | "colab": {}
313 | },
314 | "source": [
315 | "#Feature Sclaing\n",
316 | "#Normalize \n",
317 | "\n",
318 | "xtrain = (xtrain / 255)"
319 | ],
320 | "execution_count": 94,
321 | "outputs": []
322 | },
323 | {
324 | "cell_type": "code",
325 | "metadata": {
326 | "id": "iXz0k8IWQrsG",
327 | "colab_type": "code",
328 | "colab": {
329 | "base_uri": "https://localhost:8080/",
330 | "height": 1000
331 | },
332 | "outputId": "78f85cd5-3bbe-4e51-d986-60b0e818e16a"
333 | },
334 | "source": [
335 | "xtrain[1]"
336 | ],
337 | "execution_count": 95,
338 | "outputs": [
339 | {
340 | "output_type": "execute_result",
341 | "data": {
342 | "text/plain": [
343 | "array([[0. , 0. , 0. , 0. , 0. ,\n",
344 | " 0. , 0. , 0. , 0. , 0. ,\n",
345 | " 0. , 0. , 0. , 0. , 0. ,\n",
346 | " 0. , 0. , 0. , 0. , 0. ,\n",
347 | " 0. , 0. , 0. , 0. , 0. ,\n",
348 | " 0. , 0. , 0. ],\n",
349 | " [0. , 0. , 0. , 0. , 0. ,\n",
350 | " 0. , 0. , 0. , 0. , 0. ,\n",
351 | " 0. , 0. , 0. , 0. , 0. ,\n",
352 | " 0. , 0. , 0. , 0. , 0. ,\n",
353 | " 0. , 0. , 0. , 0. , 0. ,\n",
354 | " 0. , 0. , 0. ],\n",
355 | " [0. , 0. , 0. , 0. , 0. ,\n",
356 | " 0. , 0. , 0. , 0. , 0. ,\n",
357 | " 0. , 0. , 0. , 0. , 0. ,\n",
358 | " 0. , 0. , 0. , 0. , 0. ,\n",
359 | " 0. , 0. , 0. , 0. , 0. ,\n",
360 | " 0. , 0. , 0. ],\n",
361 | " [0. , 0. , 0. , 0. , 0. ,\n",
362 | " 0. , 0. , 0. , 0. , 0. ,\n",
363 | " 0. , 0. , 0. , 0. , 0. ,\n",
364 | " 0. , 0. , 0. , 0. , 0. ,\n",
365 | " 0. , 0. , 0. , 0. , 0. ,\n",
366 | " 0. , 0. , 0. ],\n",
367 | " [0. , 0. , 0. , 0. , 0. ,\n",
368 | " 0. , 0. , 0. , 0. , 0. ,\n",
369 | " 0. , 0. , 0. , 0. , 0. ,\n",
370 | " 0.2 , 0.62352941, 0.99215686, 0.62352941, 0.19607843,\n",
371 | " 0. , 0. , 0. , 0. , 0. ,\n",
372 | " 0. , 0. , 0. ],\n",
373 | " [0. , 0. , 0. , 0. , 0. ,\n",
374 | " 0. , 0. , 0. , 0. , 0. ,\n",
375 | " 0. , 0. , 0. , 0. , 0.18823529,\n",
376 | " 0.93333333, 0.98823529, 0.98823529, 0.98823529, 0.92941176,\n",
377 | " 0. , 0. , 0. , 0. , 0. ,\n",
378 | " 0. , 0. , 0. ],\n",
379 | " [0. , 0. , 0. , 0. , 0. ,\n",
380 | " 0. , 0. , 0. , 0. , 0. ,\n",
381 | " 0. , 0. , 0. , 0.21176471, 0.89019608,\n",
382 | " 0.99215686, 0.98823529, 0.9372549 , 0.91372549, 0.98823529,\n",
383 | " 0.22352941, 0.02352941, 0. , 0. , 0. ,\n",
384 | " 0. , 0. , 0. ],\n",
385 | " [0. , 0. , 0. , 0. , 0. ,\n",
386 | " 0. , 0. , 0. , 0. , 0. ,\n",
387 | " 0. , 0.03921569, 0.23529412, 0.87843137, 0.98823529,\n",
388 | " 0.99215686, 0.98823529, 0.79215686, 0.32941176, 0.98823529,\n",
389 | " 0.99215686, 0.47843137, 0. , 0. , 0. ,\n",
390 | " 0. , 0. , 0. ],\n",
391 | " [0. , 0. , 0. , 0. , 0. ,\n",
392 | " 0. , 0. , 0. , 0. , 0. ,\n",
393 | " 0. , 0.63921569, 0.98823529, 0.98823529, 0.98823529,\n",
394 | " 0.99215686, 0.98823529, 0.98823529, 0.37647059, 0.74117647,\n",
395 | " 0.99215686, 0.65490196, 0. , 0. , 0. ,\n",
396 | " 0. , 0. , 0. ],\n",
397 | " [0. , 0. , 0. , 0. , 0. ,\n",
398 | " 0. , 0. , 0. , 0. , 0. ,\n",
399 | " 0.2 , 0.93333333, 0.99215686, 0.99215686, 0.74509804,\n",
400 | " 0.44705882, 0.99215686, 0.89411765, 0.18431373, 0.30980392,\n",
401 | " 1. , 0.65882353, 0. , 0. , 0. ,\n",
402 | " 0. , 0. , 0. ],\n",
403 | " [0. , 0. , 0. , 0. , 0. ,\n",
404 | " 0. , 0. , 0. , 0. , 0.18823529,\n",
405 | " 0.93333333, 0.98823529, 0.98823529, 0.70196078, 0.04705882,\n",
406 | " 0.29411765, 0.4745098 , 0.08235294, 0. , 0. ,\n",
407 | " 0.99215686, 0.95294118, 0.19607843, 0. , 0. ,\n",
408 | " 0. , 0. , 0. ],\n",
409 | " [0. , 0. , 0. , 0. , 0. ,\n",
410 | " 0. , 0. , 0. , 0.14901961, 0.64705882,\n",
411 | " 0.99215686, 0.91372549, 0.81568627, 0.32941176, 0. ,\n",
412 | " 0. , 0. , 0. , 0. , 0. ,\n",
413 | " 0.99215686, 0.98823529, 0.64705882, 0. , 0. ,\n",
414 | " 0. , 0. , 0. ],\n",
415 | " [0. , 0. , 0. , 0. , 0. ,\n",
416 | " 0. , 0. , 0.02745098, 0.69803922, 0.98823529,\n",
417 | " 0.94117647, 0.27843137, 0.0745098 , 0.10980392, 0. ,\n",
418 | " 0. , 0. , 0. , 0. , 0. ,\n",
419 | " 0.99215686, 0.98823529, 0.76470588, 0. , 0. ,\n",
420 | " 0. , 0. , 0. ],\n",
421 | " [0. , 0. , 0. , 0. , 0. ,\n",
422 | " 0. , 0. , 0.22352941, 0.98823529, 0.98823529,\n",
423 | " 0.24705882, 0. , 0. , 0. , 0. ,\n",
424 | " 0. , 0. , 0. , 0. , 0. ,\n",
425 | " 0.99215686, 0.98823529, 0.76470588, 0. , 0. ,\n",
426 | " 0. , 0. , 0. ],\n",
427 | " [0. , 0. , 0. , 0. , 0. ,\n",
428 | " 0. , 0. , 0.77647059, 0.99215686, 0.74509804,\n",
429 | " 0. , 0. , 0. , 0. , 0. ,\n",
430 | " 0. , 0. , 0. , 0. , 0. ,\n",
431 | " 1. , 0.99215686, 0.76862745, 0. , 0. ,\n",
432 | " 0. , 0. , 0. ],\n",
433 | " [0. , 0. , 0. , 0. , 0. ,\n",
434 | " 0. , 0.29803922, 0.96470588, 0.98823529, 0.43921569,\n",
435 | " 0. , 0. , 0. , 0. , 0. ,\n",
436 | " 0. , 0. , 0. , 0. , 0. ,\n",
437 | " 0.99215686, 0.98823529, 0.58039216, 0. , 0. ,\n",
438 | " 0. , 0. , 0. ],\n",
439 | " [0. , 0. , 0. , 0. , 0. ,\n",
440 | " 0. , 0.33333333, 0.98823529, 0.90196078, 0.09803922,\n",
441 | " 0. , 0. , 0. , 0. , 0. ,\n",
442 | " 0. , 0. , 0. , 0.02745098, 0.52941176,\n",
443 | " 0.99215686, 0.72941176, 0.04705882, 0. , 0. ,\n",
444 | " 0. , 0. , 0. ],\n",
445 | " [0. , 0. , 0. , 0. , 0. ,\n",
446 | " 0. , 0.33333333, 0.98823529, 0.8745098 , 0. ,\n",
447 | " 0. , 0. , 0. , 0. , 0. ,\n",
448 | " 0. , 0. , 0.02745098, 0.51372549, 0.98823529,\n",
449 | " 0.88235294, 0.27843137, 0. , 0. , 0. ,\n",
450 | " 0. , 0. , 0. ],\n",
451 | " [0. , 0. , 0. , 0. , 0. ,\n",
452 | " 0. , 0.33333333, 0.98823529, 0.56862745, 0. ,\n",
453 | " 0. , 0. , 0. , 0. , 0. ,\n",
454 | " 0. , 0.18823529, 0.64705882, 0.98823529, 0.67843137,\n",
455 | " 0. , 0. , 0. , 0. , 0. ,\n",
456 | " 0. , 0. , 0. ],\n",
457 | " [0. , 0. , 0. , 0. , 0. ,\n",
458 | " 0. , 0.3372549 , 0.99215686, 0.88235294, 0. ,\n",
459 | " 0. , 0. , 0. , 0. , 0. ,\n",
460 | " 0.44705882, 0.93333333, 0.99215686, 0.63529412, 0. ,\n",
461 | " 0. , 0. , 0. , 0. , 0. ,\n",
462 | " 0. , 0. , 0. ],\n",
463 | " [0. , 0. , 0. , 0. , 0. ,\n",
464 | " 0. , 0.33333333, 0.98823529, 0.97647059, 0.57254902,\n",
465 | " 0.18823529, 0.11372549, 0.33333333, 0.69803922, 0.88235294,\n",
466 | " 0.99215686, 0.8745098 , 0.65490196, 0.21960784, 0. ,\n",
467 | " 0. , 0. , 0. , 0. , 0. ,\n",
468 | " 0. , 0. , 0. ],\n",
469 | " [0. , 0. , 0. , 0. , 0. ,\n",
470 | " 0. , 0.33333333, 0.98823529, 0.98823529, 0.98823529,\n",
471 | " 0.89803922, 0.84313725, 0.98823529, 0.98823529, 0.98823529,\n",
472 | " 0.76862745, 0.50980392, 0. , 0. , 0. ,\n",
473 | " 0. , 0. , 0. , 0. , 0. ,\n",
474 | " 0. , 0. , 0. ],\n",
475 | " [0. , 0. , 0. , 0. , 0. ,\n",
476 | " 0. , 0.10980392, 0.78039216, 0.98823529, 0.98823529,\n",
477 | " 0.99215686, 0.98823529, 0.98823529, 0.91372549, 0.56862745,\n",
478 | " 0. , 0. , 0. , 0. , 0. ,\n",
479 | " 0. , 0. , 0. , 0. , 0. ,\n",
480 | " 0. , 0. , 0. ],\n",
481 | " [0. , 0. , 0. , 0. , 0. ,\n",
482 | " 0. , 0. , 0.09803922, 0.50196078, 0.98823529,\n",
483 | " 0.99215686, 0.98823529, 0.55294118, 0.14509804, 0. ,\n",
484 | " 0. , 0. , 0. , 0. , 0. ,\n",
485 | " 0. , 0. , 0. , 0. , 0. ,\n",
486 | " 0. , 0. , 0. ],\n",
487 | " [0. , 0. , 0. , 0. , 0. ,\n",
488 | " 0. , 0. , 0. , 0. , 0. ,\n",
489 | " 0. , 0. , 0. , 0. , 0. ,\n",
490 | " 0. , 0. , 0. , 0. , 0. ,\n",
491 | " 0. , 0. , 0. , 0. , 0. ,\n",
492 | " 0. , 0. , 0. ],\n",
493 | " [0. , 0. , 0. , 0. , 0. ,\n",
494 | " 0. , 0. , 0. , 0. , 0. ,\n",
495 | " 0. , 0. , 0. , 0. , 0. ,\n",
496 | " 0. , 0. , 0. , 0. , 0. ,\n",
497 | " 0. , 0. , 0. , 0. , 0. ,\n",
498 | " 0. , 0. , 0. ],\n",
499 | " [0. , 0. , 0. , 0. , 0. ,\n",
500 | " 0. , 0. , 0. , 0. , 0. ,\n",
501 | " 0. , 0. , 0. , 0. , 0. ,\n",
502 | " 0. , 0. , 0. , 0. , 0. ,\n",
503 | " 0. , 0. , 0. , 0. , 0. ,\n",
504 | " 0. , 0. , 0. ],\n",
505 | " [0. , 0. , 0. , 0. , 0. ,\n",
506 | " 0. , 0. , 0. , 0. , 0. ,\n",
507 | " 0. , 0. , 0. , 0. , 0. ,\n",
508 | " 0. , 0. , 0. , 0. , 0. ,\n",
509 | " 0. , 0. , 0. , 0. , 0. ,\n",
510 | " 0. , 0. , 0. ]])"
511 | ]
512 | },
513 | "metadata": {
514 | "tags": []
515 | },
516 | "execution_count": 95
517 | }
518 | ]
519 | },
520 | {
521 | "cell_type": "code",
522 | "metadata": {
523 | "id": "tkrkfZ7PSD0W",
524 | "colab_type": "code",
525 | "colab": {}
526 | },
527 | "source": [
528 | "xtest = xtest / 255"
529 | ],
530 | "execution_count": 96,
531 | "outputs": []
532 | },
533 | {
534 | "cell_type": "code",
535 | "metadata": {
536 | "id": "aH16QbV9SJ4k",
537 | "colab_type": "code",
538 | "colab": {
539 | "base_uri": "https://localhost:8080/",
540 | "height": 1000
541 | },
542 | "outputId": "7a6d50a9-b0e7-47a2-975f-2937757e8b56"
543 | },
544 | "source": [
545 | "xtest[1]"
546 | ],
547 | "execution_count": 97,
548 | "outputs": [
549 | {
550 | "output_type": "execute_result",
551 | "data": {
552 | "text/plain": [
553 | "array([[0. , 0. , 0. , 0. , 0. ,\n",
554 | " 0. , 0. , 0. , 0. , 0. ,\n",
555 | " 0. , 0. , 0. , 0. , 0. ,\n",
556 | " 0. , 0. , 0. , 0. , 0. ,\n",
557 | " 0. , 0. , 0. , 0. , 0. ,\n",
558 | " 0. , 0. , 0. ],\n",
559 | " [0. , 0. , 0. , 0. , 0. ,\n",
560 | " 0. , 0. , 0. , 0. , 0. ,\n",
561 | " 0. , 0. , 0. , 0. , 0. ,\n",
562 | " 0. , 0. , 0. , 0. , 0. ,\n",
563 | " 0. , 0. , 0. , 0. , 0. ,\n",
564 | " 0. , 0. , 0. ],\n",
565 | " [0. , 0. , 0. , 0. , 0. ,\n",
566 | " 0. , 0. , 0. , 0. , 0. ,\n",
567 | " 0. , 0. , 0. , 0. , 0. ,\n",
568 | " 0. , 0. , 0. , 0. , 0. ,\n",
569 | " 0. , 0. , 0. , 0. , 0. ,\n",
570 | " 0. , 0. , 0. ],\n",
571 | " [0. , 0. , 0. , 0. , 0. ,\n",
572 | " 0. , 0. , 0. , 0. , 0. ,\n",
573 | " 0.45490196, 0.49019608, 0.67058824, 1. , 1. ,\n",
574 | " 0.58823529, 0.36470588, 0. , 0. , 0. ,\n",
575 | " 0. , 0. , 0. , 0. , 0. ,\n",
576 | " 0. , 0. , 0. ],\n",
577 | " [0. , 0. , 0. , 0. , 0. ,\n",
578 | " 0. , 0. , 0. , 0. , 0.6627451 ,\n",
579 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n",
580 | " 0.99215686, 0.85490196, 0.11764706, 0. , 0. ,\n",
581 | " 0. , 0. , 0. , 0. , 0. ,\n",
582 | " 0. , 0. , 0. ],\n",
583 | " [0. , 0. , 0. , 0. , 0. ,\n",
584 | " 0. , 0. , 0. , 0.6627451 , 0.99215686,\n",
585 | " 0.99215686, 0.99215686, 0.83529412, 0.55686275, 0.69019608,\n",
586 | " 0.99215686, 0.99215686, 0.47843137, 0. , 0. ,\n",
587 | " 0. , 0. , 0. , 0. , 0. ,\n",
588 | " 0. , 0. , 0. ],\n",
589 | " [0. , 0. , 0. , 0. , 0. ,\n",
590 | " 0. , 0. , 0.20392157, 0.98039216, 0.99215686,\n",
591 | " 0.82352941, 0.1254902 , 0.04705882, 0. , 0.02352941,\n",
592 | " 0.80784314, 0.99215686, 0.54901961, 0. , 0. ,\n",
593 | " 0. , 0. , 0. , 0. , 0. ,\n",
594 | " 0. , 0. , 0. ],\n",
595 | " [0. , 0. , 0. , 0. , 0. ,\n",
596 | " 0. , 0. , 0.30196078, 0.98431373, 0.82352941,\n",
597 | " 0.09803922, 0. , 0. , 0. , 0.47843137,\n",
598 | " 0.97254902, 0.99215686, 0.25490196, 0. , 0. ,\n",
599 | " 0. , 0. , 0. , 0. , 0. ,\n",
600 | " 0. , 0. , 0. ],\n",
601 | " [0. , 0. , 0. , 0. , 0. ,\n",
602 | " 0. , 0. , 0. , 0.12156863, 0.07058824,\n",
603 | " 0. , 0. , 0. , 0. , 0.81960784,\n",
604 | " 0.99215686, 0.99215686, 0.25490196, 0. , 0. ,\n",
605 | " 0. , 0. , 0. , 0. , 0. ,\n",
606 | " 0. , 0. , 0. ],\n",
607 | " [0. , 0. , 0. , 0. , 0. ,\n",
608 | " 0. , 0. , 0. , 0. , 0. ,\n",
609 | " 0. , 0. , 0. , 0.45882353, 0.96862745,\n",
610 | " 0.99215686, 0.77647059, 0.03921569, 0. , 0. ,\n",
611 | " 0. , 0. , 0. , 0. , 0. ,\n",
612 | " 0. , 0. , 0. ],\n",
613 | " [0. , 0. , 0. , 0. , 0. ,\n",
614 | " 0. , 0. , 0. , 0. , 0. ,\n",
615 | " 0. , 0. , 0.29803922, 0.96862745, 0.99215686,\n",
616 | " 0.90588235, 0.24705882, 0. , 0. , 0. ,\n",
617 | " 0. , 0. , 0. , 0. , 0. ,\n",
618 | " 0. , 0. , 0. ],\n",
619 | " [0. , 0. , 0. , 0. , 0. ,\n",
620 | " 0. , 0. , 0. , 0. , 0. ,\n",
621 | " 0. , 0. , 0.50196078, 0.99215686, 0.99215686,\n",
622 | " 0.56470588, 0. , 0. , 0. , 0. ,\n",
623 | " 0. , 0. , 0. , 0. , 0. ,\n",
624 | " 0. , 0. , 0. ],\n",
625 | " [0. , 0. , 0. , 0. , 0. ,\n",
626 | " 0. , 0. , 0. , 0. , 0. ,\n",
627 | " 0. , 0.69019608, 0.96470588, 0.99215686, 0.62352941,\n",
628 | " 0.04705882, 0. , 0. , 0. , 0. ,\n",
629 | " 0. , 0. , 0. , 0. , 0. ,\n",
630 | " 0. , 0. , 0. ],\n",
631 | " [0. , 0. , 0. , 0. , 0. ,\n",
632 | " 0. , 0. , 0. , 0. , 0. ,\n",
633 | " 0.09803922, 0.91764706, 0.99215686, 0.91372549, 0.1372549 ,\n",
634 | " 0. , 0. , 0. , 0. , 0. ,\n",
635 | " 0. , 0. , 0. , 0. , 0. ,\n",
636 | " 0. , 0. , 0. ],\n",
637 | " [0. , 0. , 0. , 0. , 0. ,\n",
638 | " 0. , 0. , 0. , 0. , 0. ,\n",
639 | " 0.77647059, 0.99215686, 0.99215686, 0.55294118, 0. ,\n",
640 | " 0. , 0. , 0. , 0. , 0. ,\n",
641 | " 0. , 0. , 0. , 0. , 0. ,\n",
642 | " 0. , 0. , 0. ],\n",
643 | " [0. , 0. , 0. , 0. , 0. ,\n",
644 | " 0. , 0. , 0. , 0. , 0.30588235,\n",
645 | " 0.97254902, 0.99215686, 0.74117647, 0.04705882, 0. ,\n",
646 | " 0. , 0. , 0. , 0. , 0. ,\n",
647 | " 0. , 0. , 0. , 0. , 0. ,\n",
648 | " 0. , 0. , 0. ],\n",
649 | " [0. , 0. , 0. , 0. , 0. ,\n",
650 | " 0. , 0. , 0. , 0.0745098 , 0.78431373,\n",
651 | " 0.99215686, 0.99215686, 0.55294118, 0. , 0. ,\n",
652 | " 0. , 0. , 0. , 0. , 0. ,\n",
653 | " 0. , 0. , 0. , 0. , 0. ,\n",
654 | " 0. , 0. , 0. ],\n",
655 | " [0. , 0. , 0. , 0. , 0. ,\n",
656 | " 0. , 0. , 0. , 0.5254902 , 0.99215686,\n",
657 | " 0.99215686, 0.67843137, 0.04705882, 0. , 0. ,\n",
658 | " 0. , 0. , 0. , 0. , 0. ,\n",
659 | " 0. , 0. , 0. , 0. , 0. ,\n",
660 | " 0. , 0. , 0. ],\n",
661 | " [0. , 0. , 0. , 0. , 0. ,\n",
662 | " 0. , 0. , 0. , 0.97254902, 0.99215686,\n",
663 | " 0.99215686, 0.09803922, 0. , 0. , 0. ,\n",
664 | " 0. , 0. , 0. , 0. , 0. ,\n",
665 | " 0. , 0. , 0. , 0. , 0. ,\n",
666 | " 0. , 0. , 0. ],\n",
667 | " [0. , 0. , 0. , 0. , 0. ,\n",
668 | " 0. , 0. , 0. , 0.97254902, 0.99215686,\n",
669 | " 0.99215686, 0.16862745, 0.07843137, 0.07843137, 0.07843137,\n",
670 | " 0.07843137, 0.01960784, 0. , 0.01960784, 0.07843137,\n",
671 | " 0.07843137, 0.14509804, 0.58823529, 0.58823529, 0.58823529,\n",
672 | " 0.57647059, 0.03921569, 0. ],\n",
673 | " [0. , 0. , 0. , 0. , 0. ,\n",
674 | " 0. , 0. , 0. , 0.97254902, 0.99215686,\n",
675 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n",
676 | " 0.99215686, 0.65882353, 0.56078431, 0.65098039, 0.99215686,\n",
677 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n",
678 | " 0.99215686, 0.48235294, 0. ],\n",
679 | " [0. , 0. , 0. , 0. , 0. ,\n",
680 | " 0. , 0. , 0. , 0.68235294, 0.99215686,\n",
681 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n",
682 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n",
683 | " 0.97647059, 0.96862745, 0.96862745, 0.6627451 , 0.45882353,\n",
684 | " 0.45882353, 0.22352941, 0. ],\n",
685 | " [0. , 0. , 0. , 0. , 0. ,\n",
686 | " 0. , 0. , 0. , 0. , 0.4627451 ,\n",
687 | " 0.48235294, 0.48235294, 0.48235294, 0.65098039, 0.99215686,\n",
688 | " 0.99215686, 0.99215686, 0.60784314, 0.48235294, 0.48235294,\n",
689 | " 0.16078431, 0. , 0. , 0. , 0. ,\n",
690 | " 0. , 0. , 0. ],\n",
691 | " [0. , 0. , 0. , 0. , 0. ,\n",
692 | " 0. , 0. , 0. , 0. , 0. ,\n",
693 | " 0. , 0. , 0. , 0. , 0. ,\n",
694 | " 0. , 0. , 0. , 0. , 0. ,\n",
695 | " 0. , 0. , 0. , 0. , 0. ,\n",
696 | " 0. , 0. , 0. ],\n",
697 | " [0. , 0. , 0. , 0. , 0. ,\n",
698 | " 0. , 0. , 0. , 0. , 0. ,\n",
699 | " 0. , 0. , 0. , 0. , 0. ,\n",
700 | " 0. , 0. , 0. , 0. , 0. ,\n",
701 | " 0. , 0. , 0. , 0. , 0. ,\n",
702 | " 0. , 0. , 0. ],\n",
703 | " [0. , 0. , 0. , 0. , 0. ,\n",
704 | " 0. , 0. , 0. , 0. , 0. ,\n",
705 | " 0. , 0. , 0. , 0. , 0. ,\n",
706 | " 0. , 0. , 0. , 0. , 0. ,\n",
707 | " 0. , 0. , 0. , 0. , 0. ,\n",
708 | " 0. , 0. , 0. ],\n",
709 | " [0. , 0. , 0. , 0. , 0. ,\n",
710 | " 0. , 0. , 0. , 0. , 0. ,\n",
711 | " 0. , 0. , 0. , 0. , 0. ,\n",
712 | " 0. , 0. , 0. , 0. , 0. ,\n",
713 | " 0. , 0. , 0. , 0. , 0. ,\n",
714 | " 0. , 0. , 0. ],\n",
715 | " [0. , 0. , 0. , 0. , 0. ,\n",
716 | " 0. , 0. , 0. , 0. , 0. ,\n",
717 | " 0. , 0. , 0. , 0. , 0. ,\n",
718 | " 0. , 0. , 0. , 0. , 0. ,\n",
719 | " 0. , 0. , 0. , 0. , 0. ,\n",
720 | " 0. , 0. , 0. ]])"
721 | ]
722 | },
723 | "metadata": {
724 | "tags": []
725 | },
726 | "execution_count": 97
727 | }
728 | ]
729 | },
730 | {
731 | "cell_type": "code",
732 | "metadata": {
733 | "id": "XRnDfXRNSTfU",
734 | "colab_type": "code",
735 | "colab": {}
736 | },
737 | "source": [
738 | "#flatten the images into 28*28 = 784\n",
739 | "xtrain = xtrain.reshape(-1,784)\n",
740 | "xtest = xtest.reshape(-1,784)"
741 | ],
742 | "execution_count": 98,
743 | "outputs": []
744 | },
745 | {
746 | "cell_type": "code",
747 | "metadata": {
748 | "id": "god5AJm5TwzU",
749 | "colab_type": "code",
750 | "colab": {
751 | "base_uri": "https://localhost:8080/",
752 | "height": 1000
753 | },
754 | "outputId": "284252aa-322c-4800-bd6c-f04e0b1b6e75"
755 | },
756 | "source": [
757 | "xtrain[1]"
758 | ],
759 | "execution_count": 99,
760 | "outputs": [
761 | {
762 | "output_type": "execute_result",
763 | "data": {
764 | "text/plain": [
765 | "array([0. , 0. , 0. , 0. , 0. ,\n",
766 | " 0. , 0. , 0. , 0. , 0. ,\n",
767 | " 0. , 0. , 0. , 0. , 0. ,\n",
768 | " 0. , 0. , 0. , 0. , 0. ,\n",
769 | " 0. , 0. , 0. , 0. , 0. ,\n",
770 | " 0. , 0. , 0. , 0. , 0. ,\n",
771 | " 0. , 0. , 0. , 0. , 0. ,\n",
772 | " 0. , 0. , 0. , 0. , 0. ,\n",
773 | " 0. , 0. , 0. , 0. , 0. ,\n",
774 | " 0. , 0. , 0. , 0. , 0. ,\n",
775 | " 0. , 0. , 0. , 0. , 0. ,\n",
776 | " 0. , 0. , 0. , 0. , 0. ,\n",
777 | " 0. , 0. , 0. , 0. , 0. ,\n",
778 | " 0. , 0. , 0. , 0. , 0. ,\n",
779 | " 0. , 0. , 0. , 0. , 0. ,\n",
780 | " 0. , 0. , 0. , 0. , 0. ,\n",
781 | " 0. , 0. , 0. , 0. , 0. ,\n",
782 | " 0. , 0. , 0. , 0. , 0. ,\n",
783 | " 0. , 0. , 0. , 0. , 0. ,\n",
784 | " 0. , 0. , 0. , 0. , 0. ,\n",
785 | " 0. , 0. , 0. , 0. , 0. ,\n",
786 | " 0. , 0. , 0. , 0. , 0. ,\n",
787 | " 0. , 0. , 0. , 0. , 0. ,\n",
788 | " 0. , 0. , 0. , 0. , 0. ,\n",
789 | " 0. , 0. , 0. , 0. , 0. ,\n",
790 | " 0. , 0. , 0.2 , 0.62352941, 0.99215686,\n",
791 | " 0.62352941, 0.19607843, 0. , 0. , 0. ,\n",
792 | " 0. , 0. , 0. , 0. , 0. ,\n",
793 | " 0. , 0. , 0. , 0. , 0. ,\n",
794 | " 0. , 0. , 0. , 0. , 0. ,\n",
795 | " 0. , 0. , 0. , 0. , 0.18823529,\n",
796 | " 0.93333333, 0.98823529, 0.98823529, 0.98823529, 0.92941176,\n",
797 | " 0. , 0. , 0. , 0. , 0. ,\n",
798 | " 0. , 0. , 0. , 0. , 0. ,\n",
799 | " 0. , 0. , 0. , 0. , 0. ,\n",
800 | " 0. , 0. , 0. , 0. , 0. ,\n",
801 | " 0. , 0.21176471, 0.89019608, 0.99215686, 0.98823529,\n",
802 | " 0.9372549 , 0.91372549, 0.98823529, 0.22352941, 0.02352941,\n",
803 | " 0. , 0. , 0. , 0. , 0. ,\n",
804 | " 0. , 0. , 0. , 0. , 0. ,\n",
805 | " 0. , 0. , 0. , 0. , 0. ,\n",
806 | " 0. , 0. , 0.03921569, 0.23529412, 0.87843137,\n",
807 | " 0.98823529, 0.99215686, 0.98823529, 0.79215686, 0.32941176,\n",
808 | " 0.98823529, 0.99215686, 0.47843137, 0. , 0. ,\n",
809 | " 0. , 0. , 0. , 0. , 0. ,\n",
810 | " 0. , 0. , 0. , 0. , 0. ,\n",
811 | " 0. , 0. , 0. , 0. , 0. ,\n",
812 | " 0.63921569, 0.98823529, 0.98823529, 0.98823529, 0.99215686,\n",
813 | " 0.98823529, 0.98823529, 0.37647059, 0.74117647, 0.99215686,\n",
814 | " 0.65490196, 0. , 0. , 0. , 0. ,\n",
815 | " 0. , 0. , 0. , 0. , 0. ,\n",
816 | " 0. , 0. , 0. , 0. , 0. ,\n",
817 | " 0. , 0. , 0.2 , 0.93333333, 0.99215686,\n",
818 | " 0.99215686, 0.74509804, 0.44705882, 0.99215686, 0.89411765,\n",
819 | " 0.18431373, 0.30980392, 1. , 0.65882353, 0. ,\n",
820 | " 0. , 0. , 0. , 0. , 0. ,\n",
821 | " 0. , 0. , 0. , 0. , 0. ,\n",
822 | " 0. , 0. , 0. , 0. , 0.18823529,\n",
823 | " 0.93333333, 0.98823529, 0.98823529, 0.70196078, 0.04705882,\n",
824 | " 0.29411765, 0.4745098 , 0.08235294, 0. , 0. ,\n",
825 | " 0.99215686, 0.95294118, 0.19607843, 0. , 0. ,\n",
826 | " 0. , 0. , 0. , 0. , 0. ,\n",
827 | " 0. , 0. , 0. , 0. , 0. ,\n",
828 | " 0. , 0.14901961, 0.64705882, 0.99215686, 0.91372549,\n",
829 | " 0.81568627, 0.32941176, 0. , 0. , 0. ,\n",
830 | " 0. , 0. , 0. , 0.99215686, 0.98823529,\n",
831 | " 0.64705882, 0. , 0. , 0. , 0. ,\n",
832 | " 0. , 0. , 0. , 0. , 0. ,\n",
833 | " 0. , 0. , 0. , 0.02745098, 0.69803922,\n",
834 | " 0.98823529, 0.94117647, 0.27843137, 0.0745098 , 0.10980392,\n",
835 | " 0. , 0. , 0. , 0. , 0. ,\n",
836 | " 0. , 0.99215686, 0.98823529, 0.76470588, 0. ,\n",
837 | " 0. , 0. , 0. , 0. , 0. ,\n",
838 | " 0. , 0. , 0. , 0. , 0. ,\n",
839 | " 0. , 0.22352941, 0.98823529, 0.98823529, 0.24705882,\n",
840 | " 0. , 0. , 0. , 0. , 0. ,\n",
841 | " 0. , 0. , 0. , 0. , 0.99215686,\n",
842 | " 0.98823529, 0.76470588, 0. , 0. , 0. ,\n",
843 | " 0. , 0. , 0. , 0. , 0. ,\n",
844 | " 0. , 0. , 0. , 0. , 0.77647059,\n",
845 | " 0.99215686, 0.74509804, 0. , 0. , 0. ,\n",
846 | " 0. , 0. , 0. , 0. , 0. ,\n",
847 | " 0. , 0. , 1. , 0.99215686, 0.76862745,\n",
848 | " 0. , 0. , 0. , 0. , 0. ,\n",
849 | " 0. , 0. , 0. , 0. , 0. ,\n",
850 | " 0. , 0.29803922, 0.96470588, 0.98823529, 0.43921569,\n",
851 | " 0. , 0. , 0. , 0. , 0. ,\n",
852 | " 0. , 0. , 0. , 0. , 0. ,\n",
853 | " 0.99215686, 0.98823529, 0.58039216, 0. , 0. ,\n",
854 | " 0. , 0. , 0. , 0. , 0. ,\n",
855 | " 0. , 0. , 0. , 0. , 0.33333333,\n",
856 | " 0.98823529, 0.90196078, 0.09803922, 0. , 0. ,\n",
857 | " 0. , 0. , 0. , 0. , 0. ,\n",
858 | " 0. , 0.02745098, 0.52941176, 0.99215686, 0.72941176,\n",
859 | " 0.04705882, 0. , 0. , 0. , 0. ,\n",
860 | " 0. , 0. , 0. , 0. , 0. ,\n",
861 | " 0. , 0. , 0.33333333, 0.98823529, 0.8745098 ,\n",
862 | " 0. , 0. , 0. , 0. , 0. ,\n",
863 | " 0. , 0. , 0. , 0.02745098, 0.51372549,\n",
864 | " 0.98823529, 0.88235294, 0.27843137, 0. , 0. ,\n",
865 | " 0. , 0. , 0. , 0. , 0. ,\n",
866 | " 0. , 0. , 0. , 0. , 0. ,\n",
867 | " 0.33333333, 0.98823529, 0.56862745, 0. , 0. ,\n",
868 | " 0. , 0. , 0. , 0. , 0. ,\n",
869 | " 0.18823529, 0.64705882, 0.98823529, 0.67843137, 0. ,\n",
870 | " 0. , 0. , 0. , 0. , 0. ,\n",
871 | " 0. , 0. , 0. , 0. , 0. ,\n",
872 | " 0. , 0. , 0. , 0.3372549 , 0.99215686,\n",
873 | " 0.88235294, 0. , 0. , 0. , 0. ,\n",
874 | " 0. , 0. , 0.44705882, 0.93333333, 0.99215686,\n",
875 | " 0.63529412, 0. , 0. , 0. , 0. ,\n",
876 | " 0. , 0. , 0. , 0. , 0. ,\n",
877 | " 0. , 0. , 0. , 0. , 0. ,\n",
878 | " 0. , 0.33333333, 0.98823529, 0.97647059, 0.57254902,\n",
879 | " 0.18823529, 0.11372549, 0.33333333, 0.69803922, 0.88235294,\n",
880 | " 0.99215686, 0.8745098 , 0.65490196, 0.21960784, 0. ,\n",
881 | " 0. , 0. , 0. , 0. , 0. ,\n",
882 | " 0. , 0. , 0. , 0. , 0. ,\n",
883 | " 0. , 0. , 0. , 0. , 0.33333333,\n",
884 | " 0.98823529, 0.98823529, 0.98823529, 0.89803922, 0.84313725,\n",
885 | " 0.98823529, 0.98823529, 0.98823529, 0.76862745, 0.50980392,\n",
886 | " 0. , 0. , 0. , 0. , 0. ,\n",
887 | " 0. , 0. , 0. , 0. , 0. ,\n",
888 | " 0. , 0. , 0. , 0. , 0. ,\n",
889 | " 0. , 0. , 0.10980392, 0.78039216, 0.98823529,\n",
890 | " 0.98823529, 0.99215686, 0.98823529, 0.98823529, 0.91372549,\n",
891 | " 0.56862745, 0. , 0. , 0. , 0. ,\n",
892 | " 0. , 0. , 0. , 0. , 0. ,\n",
893 | " 0. , 0. , 0. , 0. , 0. ,\n",
894 | " 0. , 0. , 0. , 0. , 0. ,\n",
895 | " 0. , 0.09803922, 0.50196078, 0.98823529, 0.99215686,\n",
896 | " 0.98823529, 0.55294118, 0.14509804, 0. , 0. ,\n",
897 | " 0. , 0. , 0. , 0. , 0. ,\n",
898 | " 0. , 0. , 0. , 0. , 0. ,\n",
899 | " 0. , 0. , 0. , 0. , 0. ,\n",
900 | " 0. , 0. , 0. , 0. , 0. ,\n",
901 | " 0. , 0. , 0. , 0. , 0. ,\n",
902 | " 0. , 0. , 0. , 0. , 0. ,\n",
903 | " 0. , 0. , 0. , 0. , 0. ,\n",
904 | " 0. , 0. , 0. , 0. , 0. ,\n",
905 | " 0. , 0. , 0. , 0. , 0. ,\n",
906 | " 0. , 0. , 0. , 0. , 0. ,\n",
907 | " 0. , 0. , 0. , 0. , 0. ,\n",
908 | " 0. , 0. , 0. , 0. , 0. ,\n",
909 | " 0. , 0. , 0. , 0. , 0. ,\n",
910 | " 0. , 0. , 0. , 0. , 0. ,\n",
911 | " 0. , 0. , 0. , 0. , 0. ,\n",
912 | " 0. , 0. , 0. , 0. , 0. ,\n",
913 | " 0. , 0. , 0. , 0. , 0. ,\n",
914 | " 0. , 0. , 0. , 0. , 0. ,\n",
915 | " 0. , 0. , 0. , 0. , 0. ,\n",
916 | " 0. , 0. , 0. , 0. , 0. ,\n",
917 | " 0. , 0. , 0. , 0. , 0. ,\n",
918 | " 0. , 0. , 0. , 0. , 0. ,\n",
919 | " 0. , 0. , 0. , 0. , 0. ,\n",
920 | " 0. , 0. , 0. , 0. , 0. ,\n",
921 | " 0. , 0. , 0. , 0. ])"
922 | ]
923 | },
924 | "metadata": {
925 | "tags": []
926 | },
927 | "execution_count": 99
928 | }
929 | ]
930 | },
931 | {
932 | "cell_type": "code",
933 | "metadata": {
934 | "id": "AGgOjK2pUZGt",
935 | "colab_type": "code",
936 | "colab": {
937 | "base_uri": "https://localhost:8080/",
938 | "height": 34
939 | },
940 | "outputId": "7377dcdd-7eb9-47d1-d6ae-a4ec2bbcdf1d"
941 | },
942 | "source": [
943 | "xtrain.shape"
944 | ],
945 | "execution_count": 100,
946 | "outputs": [
947 | {
948 | "output_type": "execute_result",
949 | "data": {
950 | "text/plain": [
951 | "(60000, 784)"
952 | ]
953 | },
954 | "metadata": {
955 | "tags": []
956 | },
957 | "execution_count": 100
958 | }
959 | ]
960 | },
961 | {
962 | "cell_type": "code",
963 | "metadata": {
964 | "id": "RxlJedHnwCti",
965 | "colab_type": "code",
966 | "colab": {}
967 | },
968 | "source": [
969 | "model = keras.Sequential()\n",
970 | "model.add( Dense(64, activation='relu', input_dim=784))\n",
971 | "model.add( Dense(64, activation='relu'))\n",
972 | "model.add( Dense(10, activation='sigmoid'))\n"
973 | ],
974 | "execution_count": 101,
975 | "outputs": []
976 | },
977 | {
978 | "cell_type": "code",
979 | "metadata": {
980 | "id": "K5ybuvNbx4Vv",
981 | "colab_type": "code",
982 | "colab": {}
983 | },
984 | "source": [
985 | "model.compile(\n",
986 | " optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy']\n",
987 | ")"
988 | ],
989 | "execution_count": 102,
990 | "outputs": []
991 | },
992 | {
993 | "cell_type": "code",
994 | "metadata": {
995 | "id": "uWUUd3nP4KoC",
996 | "colab_type": "code",
997 | "colab": {
998 | "base_uri": "https://localhost:8080/",
999 | "height": 374
1000 | },
1001 | "outputId": "ab47d559-642d-4fbc-9b36-d9ffc6f72a38"
1002 | },
1003 | "source": [
1004 | "model.fit(xtrain, \n",
1005 | " to_categorical(ytrain),\n",
1006 | " epochs=10,\n",
1007 | " batch_size=32,\n",
1008 | " )"
1009 | ],
1010 | "execution_count": 103,
1011 | "outputs": [
1012 | {
1013 | "output_type": "stream",
1014 | "text": [
1015 | "Epoch 1/10\n",
1016 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.2936 - accuracy: 0.9156\n",
1017 | "Epoch 2/10\n",
1018 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.1365 - accuracy: 0.9589\n",
1019 | "Epoch 3/10\n",
1020 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.1009 - accuracy: 0.9689\n",
1021 | "Epoch 4/10\n",
1022 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0807 - accuracy: 0.9748\n",
1023 | "Epoch 5/10\n",
1024 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0665 - accuracy: 0.9791\n",
1025 | "Epoch 6/10\n",
1026 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0556 - accuracy: 0.9817\n",
1027 | "Epoch 7/10\n",
1028 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0481 - accuracy: 0.9839\n",
1029 | "Epoch 8/10\n",
1030 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0413 - accuracy: 0.9868\n",
1031 | "Epoch 9/10\n",
1032 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0350 - accuracy: 0.9885\n",
1033 | "Epoch 10/10\n",
1034 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0326 - accuracy: 0.9893\n"
1035 | ],
1036 | "name": "stdout"
1037 | },
1038 | {
1039 | "output_type": "execute_result",
1040 | "data": {
1041 | "text/plain": [
1042 | ""
1043 | ]
1044 | },
1045 | "metadata": {
1046 | "tags": []
1047 | },
1048 | "execution_count": 103
1049 | }
1050 | ]
1051 | },
1052 | {
1053 | "cell_type": "code",
1054 | "metadata": {
1055 | "id": "lfa3MICPAZzy",
1056 | "colab_type": "code",
1057 | "colab": {
1058 | "base_uri": "https://localhost:8080/",
1059 | "height": 51
1060 | },
1061 | "outputId": "fd78aa45-4552-4add-ac0d-31a0c021552d"
1062 | },
1063 | "source": [
1064 | "#Evaluate \n",
1065 | "model.evaluate(\n",
1066 | " xtest,\n",
1067 | " to_categorical(ytest)\n",
1068 | ")"
1069 | ],
1070 | "execution_count": 104,
1071 | "outputs": [
1072 | {
1073 | "output_type": "stream",
1074 | "text": [
1075 | "313/313 [==============================] - 0s 925us/step - loss: 0.1051 - accuracy: 0.9733\n"
1076 | ],
1077 | "name": "stdout"
1078 | },
1079 | {
1080 | "output_type": "execute_result",
1081 | "data": {
1082 | "text/plain": [
1083 | "[0.10512389242649078, 0.9732999801635742]"
1084 | ]
1085 | },
1086 | "metadata": {
1087 | "tags": []
1088 | },
1089 | "execution_count": 104
1090 | }
1091 | ]
1092 | },
1093 | {
1094 | "cell_type": "code",
1095 | "metadata": {
1096 | "id": "gFf3Bv3pCgqz",
1097 | "colab_type": "code",
1098 | "colab": {}
1099 | },
1100 | "source": [
1101 | "pred = model.predict(xtest)"
1102 | ],
1103 | "execution_count": 105,
1104 | "outputs": []
1105 | },
1106 | {
1107 | "cell_type": "code",
1108 | "metadata": {
1109 | "id": "AjjAFb6fDlPx",
1110 | "colab_type": "code",
1111 | "colab": {
1112 | "base_uri": "https://localhost:8080/",
1113 | "height": 238
1114 | },
1115 | "outputId": "1a6f31f8-6003-4b8d-9573-ae55a205d942"
1116 | },
1117 | "source": [
1118 | "pred"
1119 | ],
1120 | "execution_count": 106,
1121 | "outputs": [
1122 | {
1123 | "output_type": "execute_result",
1124 | "data": {
1125 | "text/plain": [
1126 | "array([[2.03335972e-07, 1.36694194e-08, 4.75494602e-07, ...,\n",
1127 | " 1.60784930e-01, 1.22781626e-06, 1.82594178e-07],\n",
1128 | " [1.17404104e-08, 4.95074801e-06, 1.05160743e-01, ...,\n",
1129 | " 7.25441300e-14, 1.29351547e-05, 2.00038575e-12],\n",
1130 | " [1.63020763e-06, 1.58055991e-01, 4.71132671e-06, ...,\n",
1131 | " 4.73737527e-05, 2.75441453e-05, 1.61239939e-07],\n",
1132 | " ...,\n",
1133 | " [3.90309860e-15, 1.53470292e-12, 7.25531117e-18, ...,\n",
1134 | " 7.19088146e-13, 9.71086198e-11, 3.27436709e-08],\n",
1135 | " [1.01335468e-10, 7.97379082e-16, 2.20819372e-16, ...,\n",
1136 | " 4.79351158e-14, 6.04196202e-06, 3.89904512e-14],\n",
1137 | " [1.13558607e-09, 8.83942831e-15, 3.58288352e-17, ...,\n",
1138 | " 1.45244737e-21, 1.11075584e-13, 3.37368723e-17]], dtype=float32)"
1139 | ]
1140 | },
1141 | "metadata": {
1142 | "tags": []
1143 | },
1144 | "execution_count": 106
1145 | }
1146 | ]
1147 | },
1148 | {
1149 | "cell_type": "code",
1150 | "metadata": {
1151 | "id": "c1AHDTOyDpIy",
1152 | "colab_type": "code",
1153 | "colab": {
1154 | "base_uri": "https://localhost:8080/",
1155 | "height": 34
1156 | },
1157 | "outputId": "454fff06-67e3-41e6-f53a-8d8181fcba4f"
1158 | },
1159 | "source": [
1160 | "np.argmax(pred[1])"
1161 | ],
1162 | "execution_count": 107,
1163 | "outputs": [
1164 | {
1165 | "output_type": "execute_result",
1166 | "data": {
1167 | "text/plain": [
1168 | "2"
1169 | ]
1170 | },
1171 | "metadata": {
1172 | "tags": []
1173 | },
1174 | "execution_count": 107
1175 | }
1176 | ]
1177 | }
1178 | ]
1179 | }
--------------------------------------------------------------------------------