Newer
Older
"source": [
"# Learning\n",
"\n",
"This notebook serves as supporting material for topics covered in **Chapter 18 - Learning from Examples** , **Chapter 19 - Knowledge in Learning**, **Chapter 20 - Learning Probabilistic Models** from the book *Artificial Intelligence: A Modern Approach*. This notebook uses implementations from [learning.py](https://github.com/aimacode/aima-python/blob/master/learning.py). Let's start by importing everything from learning module."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
"from learning import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Review\n",
"\n",
"In this notebook, we learn about agents that can improve their behavior through diligent study of their own experiences.\n",
"\n",
"An agent is **learning** if it improves its performance on future tasks after making observations about the world.\n",
"\n",
"There are three types of feedback that determine the three main types of learning:\n",
"\n",
"* **Supervised Learning**:\n",
"\n",
"In Supervised Learning the agent observeses some example input-output pairs and learns a function that maps from input to output.\n",
"\n",
"**Example**: Let's think of an agent to classify images containing cats or dogs. If we provide an image containing a cat or a dog, this agent should output a string \"cat\" or \"dog\" for that particular image. To teach this agent, we will give a lot of input-output pairs like {cat image-\"cat\"}, {dog image-\"dog\"} to the aggent. The agent then learns a function that maps from an input image to one of those strings.\n",
"\n",
"* **Unsupervised Learning**:\n",
"\n",
"In Unsupervised Learning the agent learns patterns in the input even though no explicit feedback is supplied. The most common type is **clustering**: detecting potential useful clusters of input examples.\n",
"\n",
"**Example**: A taxi agent would develop a concept of *good traffic days* and *bad traffic days* without ever being given labeled examples.\n",
"\n",
"* **Reinforcement Learning**:\n",
"\n",
"In Reinforcement Learning the agent from a series of reinforcements—rewards or punishments.\n",
"\n",
"**Example**: Let's talk about an agent to play the popular Atari game—[Pong](http://www.ponggame.org). We will reward a point for every correct move and deduct a point for every wrong move from the agent. Eventually, the agent will figure out its actions prior to reinforcement were most responsible for it."
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"## Explanations of learning module goes here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Practical Machine Learning Task\n",
"## MNIST handwritten digits calssification\n",
"\n",
"The MNIST database, available from [this page](http://yann.lecun.com/exdb/mnist/) is a large database of handwritten digits that is commonly used for training & testing/validating in Machine learning.\n",
"\n",
"The dataset has **60,000 training images** each of size 28x28 pixels with labels and **10,000 testing images** of size 28x28 pixels with labels.\n",
"\n",
"In this section, we will use this database to compare performances of these different learning algorithms:\n",
"* kNN (k-Nearest Neighbour) classifier\n",
"* Single-hidden-layer Neural Network classifier\n",
"* SVMs (Support Vector Machines)\n",
"\n",
"It is estimates that humans have an error rate of about **0.2%** on this problem. Let's see how our algorithms perform!\n",
"\n",
"Let's start by loading MNIST data into numpy arrays."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os, struct\n",
"import array\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.rcParams['figure.figsize'] = (10.0, 8.0)\n",
"plt.rcParams['image.interpolation'] = 'nearest'\n",
"plt.rcParams['image.cmap'] = 'gray'"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def load_MNIST(path=\"aima-data/MNIST\"):\n",
" \"helper function to load MNIST data\"\n",
" train_img_file = open(os.path.join(path, \"train-images-idx3-ubyte\"), \"rb\")\n",
" train_lbl_file = open(os.path.join(path, \"train-labels-idx1-ubyte\"), \"rb\")\n",
" test_img_file = open(os.path.join(path, \"t10k-images-idx3-ubyte\"), \"rb\")\n",
" test_lbl_file = open(os.path.join(path, 't10k-labels-idx1-ubyte'), \"rb\")\n",
" \n",
" magic_nr, tr_size, tr_rows, tr_cols = struct.unpack(\">IIII\", train_img_file.read(16))\n",
" tr_img = array.array(\"B\", train_img_file.read())\n",
" train_img_file.close() \n",
" magic_nr, tr_size = struct.unpack(\">II\", train_lbl_file.read(8))\n",
" tr_lbl = array.array(\"b\", train_lbl_file.read())\n",
" train_lbl_file.close()\n",
" \n",
" magic_nr, te_size, te_rows, te_cols = struct.unpack(\">IIII\", test_img_file.read(16))\n",
" te_img = array.array(\"B\", test_img_file.read())\n",
" test_img_file.close()\n",
" magic_nr, te_size = struct.unpack(\">II\", test_lbl_file.read(8))\n",
" te_lbl = array.array(\"b\", test_lbl_file.read())\n",
" test_lbl_file.close()\n",
"\n",
"# print(len(tr_img), len(tr_lbl), tr_size)\n",
"# print(len(te_img), len(te_lbl), te_size)\n",
" \n",
" train_img = np.zeros((tr_size, tr_rows*tr_cols), dtype=np.int16)\n",
" train_lbl = np.zeros((tr_size,), dtype=np.int8)\n",
" for i in range(tr_size):\n",
" train_img[i] = np.array(tr_img[i*tr_rows*tr_cols : (i+1)*tr_rows*tr_cols]).reshape((tr_rows*te_cols))\n",
" train_lbl[i] = tr_lbl[i]\n",
" \n",
" test_img = np.zeros((te_size, te_rows*te_cols), dtype=np.int16)\n",
" test_lbl = np.zeros((te_size,), dtype=np.int8)\n",
" for i in range(te_size):\n",
" test_img[i] = np.array(te_img[i*te_rows*te_cols : (i+1)*te_rows*te_cols]).reshape((te_rows*te_cols))\n",
" test_lbl[i] = te_lbl[i]\n",
" \n",
" return(train_img, train_lbl, test_img, test_lbl)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The function `load_MNIST()` loads MNIST data from files saved in `aima-data/MNIST`. It returns four numpy arrays that we are gonna use to train & classify hand-written digits in various learning approaches."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"train_img, train_lbl, test_img, test_lbl = load_MNIST()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check the shape of these NumPy arrays to make sure we have loaded the database correctly.\n",
"\n",
"Each 28x28 pixel image is flattened to 784x1 array and we should have 60,000 of them in training data. Similarly we should have 10,000 of those 784x1 arrays in testing data. "
]
},
{
"cell_type": "code",
"execution_count": 5,
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training images size: (60000, 784)\n",
"Training labels size: (60000,)\n",
"Testing images size: (10000, 784)\n",
"Training labels size: (10000,)\n"
]
}
],
"source": [
"print(\"Training images size:\", train_img.shape)\n",
"print(\"Training labels size:\", train_lbl.shape)\n",
"print(\"Testing images size:\", test_img.shape)\n",
"print(\"Training labels size:\", test_lbl.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To get a better understanding of the dataset, let's visualize some random images for each class from training & testing datasets."
]
},
{
"cell_type": "code",
"execution_count": 6,
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"classes = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n",
"num_classes = len(classes)\n",
"\n",
"def show_MNIST(dataset, samples=8):\n",
" if dataset == \"training\":\n",
" labels = train_lbl\n",
" images = train_img\n",
" elif dataset == \"testing\":\n",
" labels = test_lbl\n",
" images = test_img\n",
" else:\n",
" raise ValueError(\"dataset must be 'testing' or 'training'!\")\n",
" \n",
" for y, cls in enumerate(classes):\n",
" idxs = np.nonzero([i == y for i in labels])\n",
" idxs = np.random.choice(idxs[0], samples, replace=False)\n",
" for i , idx in enumerate(idxs):\n",
" plt_idx = i * num_classes + y + 1\n",
" plt.subplot(samples, num_classes, plt_idx)\n",
" plt.imshow(images[idx].reshape((28, 28)))\n",
" plt.axis(\"off\")\n",
" if i == 0:\n",
" plt.title(cls)\n",
"\n",
"\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"<matplotlib.figure.Figure at 0x108bd8668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# takes 5-10 secs. to execute the cell\n",
"show_MNIST(\"training\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\noihRJObVdtHkpJNOAmDp0qVMnz4dgA8++ACA5cuTfSP35GT+/Pk0atQIgBUrVgDQuLGzr+yePXt8\na1dGlCpVCoCRI0cC0KZNxlvxWZbFggULAHjooYcAWLUqafboVBIIyW3asmWLb4qToiQTqjwpiqIo\niqJ4IKFynoYNGwZA7969OXToEAC5c+cGYP/+/SxbtgxwKkoA1qxZk+PvDFJsd8yYMVx//fUAnHvu\nuQD8+eefOf7ceOYg5MuXD4C33noLgOuvv560Y3DgwIEAtGzZktNPPz3VcxMnTgTg3nvv9fS90erj\nqFGjAOjRo4en7//9998BOPvss9m/f7+n90ZCEMZp+fLlAViyZIl5rEKFClH7/CD0MdbE6lx89tln\nAUc5vf3227PzEVFDc560j4lAluM0kSZPixYtAqB+/frhvsfchDdt2gRAnz59AHjjjTey/Z1+DpK8\nefMC8MwzzwDOhGHmzJkA3HfffQD89ttvOf6eeFzM6tWrB0C1atUAZyJ44rPTTZ4yQ/rr9aYcrT72\n7dsXcEPI69evZ+7cuale87///Q+AG264ge7du6d6rnfv3ibkF038HKc333wzAP/3f/8HuJOoE98Z\nte+JdR+rVKkCQPPmzdM916JFCwBq1qxpHsuVyxHujx8/nuFnjh8/HoANGzYwZ84cAH744YcMXx+r\nc1EWli+//DIvvfRSdj4iaujkyXsf5Zzq3r07hQsXTvXchRdeCEBKSoo538qWLQvAvHnzzGL0p59+\nAmDv3r1evjos8b7eFCtWDIDbb7+d6667LsvXP/nkkwB8+eWX2f5OTRhXFEVRFEWJIgmlPO3atQuA\nk08+Od1zCxYsMKvC0qVLA3DgwAHACf9I4q5X/FzRy0q+d+/eAEyZMsUkfv77779R+55YrwQvvvhi\nnn76aSC9ahhOeZIQ14YNG6hbt26q5/xWnryQP39+E5689tprAZg5c6ZRaqKJX+O0fPnyzJgxA4BL\nLrkk3HdG7bti2cc2bdoYRaZgwYIRvUf6Fuk1dOfOnYBbEBFOgYr2OJVr4ddffw3A4MGDk055euCB\nBwAnhUPC6nfccQcARYoUARzFLRqKSyREa5xWrlyZ559/HoDatWsDUKJEiWy365dffgHg888/B5wU\nhO+++y5bnxWv6430+/333wegTJkyEb3vr7/+ApzrbmgagRdUeVIURVEURYkiCWFVILPPokWLZvia\n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\nF0/Hjx8HYKfGE8Hr65QTCjiAnMXhBQUF5rOHm3CamppMQX2ovnPR8sN9kXNDp0yZYgrE41H2Q0rb\niYiIiMSR71oVPH/+HEDoCMW/ittv/TbdO1Lt7e3mSXAoYh8rbnufMWMGALufDGClIAHrSTieEadk\n+/HjR7IPIW6YIvbbLDOJXjLaKniNKaq6urp+X/8VM2fOBABMnToVgJWiTMbMWkWeRERERFzwXc2T\n3/ght+s11VnEdo7Dhg0DYNdscTv19+/fUV1dDcDuvu3V+03XqWWon2Oqnx8w9M9R16nFi3McNWqU\naTnB5ph9fX1YtGgRgPgUipNqnkRERETiSJGnMPQUkfrnBwz9c9R1ahnq55jq5wcM/XPUdWoZ6ueo\nyJOIiIiIC1o8iYiIiLjgedpOREREZChR5ElERETEBS2eRERERFzQ4klERETEBS2eRERERFzQ4klE\nRETEBS2eRERERFzQ4klERETEBS2eRERERFzQ4klERETEBS2eRERERFzQ4klERETEBS2eRERERFzQ\n4klERETEBS2eRERERFzQ4klERETEBS2eRERERFzQ4klERETEBS2eRERERFzQ4klERETEBS2eRERE\nRFz4P5PSO3Lk+pU+AAAAAElFTkSuQmCC\n",
"<matplotlib.figure.Figure at 0x11bc854a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# takes 5-10 secs. to execute the cell\n",
"show_MNIST(\"testing\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's have a look at average of all the images of training and testing data."
]
},
{
"cell_type": "code",
"execution_count": 9,
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"classes = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n",
"num_classes = len(classes)\n",
"\n",
"def show_ave_MNIST(dataset):\n",
" if dataset == \"training\":\n",
" print(\"Average of all images in training dataset.\")\n",
" labels = train_lbl\n",
" images = train_img\n",
" elif dataset == \"testing\":\n",
" print(\"Average of all images in testing dataset.\")\n",
" labels = test_lbl\n",
" images = test_img\n",
" else:\n",
" raise ValueError(\"dataset must be 'testing' or 'training'!\")\n",
" \n",
" for y, cls in enumerate(classes):\n",
" idxs = np.nonzero([i == y for i in labels])\n",
" print(\"Digit\", y, \":\", len(idxs[0]), \"images.\")\n",
" \n",
" ave_img = np.mean(np.vstack([images[i] for i in idxs[0]]), axis = 0)\n",
"# print(ave_img.shape)\n",
" \n",
" plt.subplot(1, num_classes, y+1)\n",
" plt.imshow(ave_img.reshape((28, 28)))\n",
" plt.axis(\"off\")\n",
" plt.title(cls)\n",
"\n",
"\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average of all images in training dataset.\n",
"Digit 0 : 5923 images.\n",
"Digit 1 : 6742 images.\n",
"Digit 2 : 5958 images.\n",
"Digit 3 : 6131 images.\n",
"Digit 4 : 5842 images.\n",
"Digit 5 : 5421 images.\n",
"Digit 6 : 5918 images.\n",
"Digit 7 : 6265 images.\n",
"Digit 8 : 5851 images.\n",
"Digit 9 : 5949 images.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11a4d3320>"
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average of all images in testing dataset.\n",
"Digit 0 : 980 images.\n",
"Digit 1 : 1135 images.\n",
"Digit 2 : 1032 images.\n",
"Digit 3 : 1010 images.\n",
"Digit 4 : 982 images.\n",
"Digit 5 : 892 images.\n",
"Digit 6 : 958 images.\n",
"Digit 7 : 1028 images.\n",
"Digit 8 : 974 images.\n",
"Digit 9 : 1009 images.\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11b18b978>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_ave_MNIST(\"training\")\n",
"show_ave_MNIST(\"testing\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
"## k-Nearest Neighbours (kNN) classifier\n",
"\n",
"### Review\n",
"k-Nearest Neighbors algorithm is a non-parametric method used for classification and regression. We are gonna use this to classify MNIST handwritten digits. More about kNN on [Scholarpedia](http://www.scholarpedia.org/article/K-nearest_neighbor).\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see how kNN works with a simple plot shown in the above picture. There are two classes named **Class A** yellow color dots and **Class B** violet color dots. Every point in this plot has two **features** i.e. (X<sub>2</sub>, X<sub>1</sub>) values of that particular point which we used to plot. Now, let's say we have a new point, a red star and we want to know which class this red star belongs. Solving this problem by predicting the class of this new red star is out current classification problem.\n",
"\n",
"We have co-ordinates (we call them **features** in ML) of this red star and we need to predict its class using kNN algorithm. In this algorithm, the value of **k** is arbitary. **k** is one of the **hyper parameters** for kNN algorithm. We choose this number based on our dataset and choosing a particular number is known as **hyper parameter tuning/optimising**. We learn more about this in coming topics.\n",
"\n",
"Let's put **k = 3**. It means you need to find 3-Nearest Neighbors of this red star and classify this new point into majority class. Observe that smaller circle which containg 3 points other that **test point** (red star). As there are two violet points, which is majority, we predict the class of red star as **violet- Class B**.\n",
"\n",
"Similarly if we put **k = 5**, you can observe that there are 4 yellow points, which is majority. So, we classify our test point as **yellow- Class A**.\n",
"\n",
"In practical tasks, we iterate through a bunch of values for k (like [1, 2, 5, 10, 20, 50, 100]) and see how it performs and select the best one.\n",
"\n",
"Let's classify MNIST data in this method. Similar to these points, our images in MNIST data also have **features**. These points have two features as (2, 3) which represents co-ordinates of the point in 2-dimentional plane. Our images have 28x28 pixel values and we treat them as **features** for this particular task. \n",
"\n",
"Next couple of cells help you understand some useful definitions from learning module. "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%psource DataSet"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"class DataSet explanation goes here"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%psource NearestNeighborLearner"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nearest NeighborLearner explanation goes here"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, let us convert this raw data into `Dataset.examples` to run our `NearestNeighborLearner(dataset, k=1)` defined in `learning.py`. Every image is represented by 784 numbers (28x28 pixels) and we append them with its label or class to make them work with our implementations in learning module."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(60000, 784) (60000,)\n",
"(60000, 785)\n"
]
}
],
"source": [
"print(train_img.shape, train_lbl.shape)\n",
"temp_train_lbl = train_lbl.reshape((60000,1))\n",
"training_examples = np.hstack((train_img, temp_train_lbl))\n",
"print(training_examples.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we will initialize DataSet with our training examples. Call NearestNeighbor Learner on this dataset. Predict the class of a test image."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# takes ~8 Secs. to execute this cell\n",
"MNIST_DataSet = DataSet(examples=training_examples, distance=manhattan_distance)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"kNN_Learner = NearestNeighborLearner(MNIST_DataSet)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Choose a number from 0 to 9999 and we are going to predict the class of that test image."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted class: 2\n"
]
}
],
"source": [
"# takes ~20 Secs. to execute this cell\n",
"testing_choice = 2311\n",
"predicted_class = kNN_Learner(test_img[testing_choice])\n",
"print(\"Predicted class:\", predicted_class)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To make sure that the output we got is correct, let's plot that image along with its label."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x11a9eb4a8>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\niXsj88QAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x119a06358>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(test_lbl[testing_choice])\n",
"plt.imshow(test_img[testing_choice].reshape((28,28)))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Hurray! We've got it correct. Don't worry if our algorithm predicted a wrong class. With this techinique we have only ~97% accuracy on this dataset. Let's try with a different test image and hope we get it this time.\n",
"\n",
"You might have recognized that our algorithm took ~20 seconds to predict a single image. How would we even predict all 10,000 test images? Yeah, the implementations we have in our learning module are not optimized to run this particular dataset. We will have an optimised version below in numPy which is nearly ~10-50 times faster than this implementation."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Faster kNN classifier implementation"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class kNN_learner:\n",
" def __init__():\n",
" pass\n",
" def train():\n",
" pass\n",
" def predict_labels():\n",
" pass\n",
" def compute_manhattan_distances():\n",
" pass"
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
},
"widgets": {
"state": {},
"version": "1.1.1"