Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
"### Implementation\n",
"\n",
"The implementation of the Naive Bayes Classifier is split in two; Discrete and Continuous. The user can choose between them with the argument `continuous`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Discrete\n",
"\n",
"The implementation for discrete values counts how many times each feature value occurs for each class, and how many times each class occurs. The results are stored in a `CountinProbDist` object."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the below code you can see the probabilities of the class \"Setosa\" appearing in the dataset and the probability of the first feature (at index 0) of the same class having a value of 5. Notice that the second probability is relatively small, even though if we observe the dataset we will find that a lot of values are around 5. The issue arises because the features in the Iris dataset are continuous, and we are assuming they are discrete. If the features were discrete (for example, \"Tall\", \"3\", etc.) this probably wouldn't have been the case and we would see a much nicer probability distribution."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.3333333333333333\n",
"0.10588235294117647\n"
]
}
],
"source": [
"dataset = iris\n",
"\n",
"target_vals = dataset.values[dataset.target]\n",
"target_dist = CountingProbDist(target_vals)\n",
"attr_dists = {(gv, attr): CountingProbDist(dataset.values[attr])\n",
" for gv in target_vals\n",
" for attr in dataset.inputs}\n",
"for example in dataset.examples:\n",
" targetval = example[dataset.target]\n",
" target_dist.add(targetval)\n",
" for attr in dataset.inputs:\n",
" attr_dists[targetval, attr].add(example[attr])\n",
"\n",
"\n",
"print(target_dist['setosa'])\n",
"print(attr_dists['setosa', 0][5.0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we found the different values for the classes (called targets here) and calculated their distribution. Next we initialized a dictionary of `CountingProbDist` objects, one for each class and feature. Finally, we iterated through the examples in the dataset and calculated the needed probabilites.\n",
"\n",
"Having calculated the different probabilities, we will move on to the predicting function. It will receive as input an item and output the most likely class. Using the above formula, it will multiply the probability of the class appearing, with the probability of each feature value appearing in the class. It will return the max result."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"setosa\n"
]
}
],
"source": [
"def predict(example):\n",
" def class_probability(targetval):\n",
" return (target_dist[targetval] *\n",
" product(attr_dists[targetval, attr][example[attr]]\n",
" for attr in dataset.inputs))\n",
" return argmax(target_vals, key=class_probability)\n",
"\n",
"\n",
"print(predict([5, 3, 1, 0.1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can view the complete code by executing the next line:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%psource NaiveBayesDiscrete"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Continuous\n",
"\n",
"In the implementation we use the Gaussian/Normal distribution function. To make it work, we need to find the means and standard deviations of features for each class. We make use of the `find_means_and_deviations` Dataset function. On top of that, we will also calculate the class probabilities as we did with the Discrete approach."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5.006, 3.418, 1.464, 0.244]\n",
"[0.5161711470638634, 0.3137983233784114, 0.46991097723995795, 0.19775268000454405]\n"
]
}
],
"source": [
"means, deviations = dataset.find_means_and_deviations()\n",
"\n",
"target_vals = dataset.values[dataset.target]\n",
"target_dist = CountingProbDist(target_vals)\n",
"\n",
"\n",
"print(means[\"setosa\"])\n",
"print(deviations[\"versicolor\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see the means of the features for the \"Setosa\" class and the deviations for \"Versicolor\".\n",
"\n",
"The prediction function will work similarly to the Discrete algorithm. It will multiply the probability of the class occuring with the conditional probabilities of the feature values for the class.\n",
"\n",
"Since we are using the Gaussian distribution, we will input the value for each feature into the Gaussian function, together with the mean and deviation of the feature. This will return the probability of the particular feature value for the given class. We will repeat for each class and pick the max value."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"setosa\n"
]
}
],
"source": [
"def predict(example):\n",
" def class_probability(targetval):\n",
" prob = target_dist[targetval]\n",
" for attr in dataset.inputs:\n",
" prob *= gaussian(means[targetval][attr], deviations[targetval][attr], example[attr])\n",
" return prob\n",
"\n",
" return argmax(target_vals, key=class_probability)\n",
"\n",
"\n",
"print(predict([5, 3, 1, 0.1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The complete code of the continuous algorithm:"
]
},
{
"cell_type": "code",
"execution_count": 31,
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
"outputs": [],
"source": [
"%psource NaiveBayesContinuous"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Examples\n",
"\n",
"We will now use the Naive Bayes Classifier (Discrete and Continuous) to classify items:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Discrete Classifier\n",
"setosa\n",
"versicolor\n",
"versicolor\n",
"\n",
"Continuous Classifier\n",
"setosa\n",
"versicolor\n",
"virginica\n"
]
}
],
"source": [
"nBD = NaiveBayesLearner(iris, continuous=False)\n",
"print(\"Discrete Classifier\")\n",
"print(nBD([5, 3, 1, 0.1]))\n",
"print(nBD([6, 5, 3, 1.5]))\n",
"print(nBD([7, 3, 6.5, 2]))\n",
"\n",
"\n",
"nBC = NaiveBayesLearner(iris, continuous=True)\n",
"print(\"\\nContinuous Classifier\")\n",
"print(nBC([5, 3, 1, 0.1]))\n",
"print(nBC([6, 5, 3, 1.5]))\n",
"print(nBC([7, 3, 6.5, 2]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice how the Discrete Classifier misclassified the second item, while the Continuous one had no problem."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Perceptron Classifier\n",
"\n",
"### Overview\n",
"\n",
"The Perceptron is a linear classifier. It works the same way as a neural network with no hidden layers (just input and output). First it trains its weights given a dataset and then it can classify a new item by running it through the network.\n",
"\n",
"Its input layer consists of the the item features, while the output layer consists of nodes (also called neurons). Each node in the output layer has *n* synapses (for every item feature), each with its own weight. Then, the nodes find the dot product of the item features and the synapse weights. These values then pass through an activation function (usually a sigmoid). Finally, we pick the largest of the values and we return its index.\n",
"\n",
"Note that in classification problems each node represents a class. The final classification is the class/node with the max output value.\n",
"\n",
"Below you can see a single node/neuron in the outer layer. With *f* we denote the item features, with *w* the synapse weights, then inside the node we have the dot product and the activation function, *g*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Implementation\n",
"\n",
"First, we train (calculate) the weights given a dataset, using the `BackPropagationLearner` function of `learning.py`. We then return a function, `predict`, which we will use in the future to classify a new item. The function computes the (algebraic) dot product of the item with the calculated weights for each node in the outer layer. Then it picks the greatest value and classifies the item in the corresponding class."
]
},
{
"cell_type": "code",
},
"outputs": [],
"source": [
"%psource PerceptronLearner"
]
},
{
"cell_type": "markdown",
"Note that the Perceptron is a one-layer neural network, without any hidden layers. So, in `BackPropagationLearner`, we will pass no hidden layers. From that function we get our network, which is just one layer, with the weights calculated.\n",
"That function `predict` passes the input/example through the network, calculating the dot product of the input and the weights for each node and returns the class with the max dot product."
]
},
{
"cell_type": "markdown",
"source": [
"### Example\n",
"\n",
"We will train the Perceptron on the iris dataset. Because though the `BackPropagationLearner` works with integer indexes and not strings, we need to convert class names to integers. Then, we will try and classify the item/flower with measurements of 5, 3, 1, 0.1."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n"
]
}
],
"source": [
"iris = DataSet(name=\"iris\")\n",
"iris.classes_to_numbers()\n",
"\n",
"perceptron = PerceptronLearner(iris)\n",
"print(perceptron([5, 3, 1, 0.1]))"
]
},
{
"cell_type": "markdown",
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
"The correct output is 0, which means the item belongs in the first class, \"setosa\". Note that the Perceptron algorithm is not perfect and may produce false classifications."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Neural Network\n",
"\n",
"### Overview\n",
"\n",
"Although the Perceptron may seem like a good way to make classifications, it is a linear classifier (which, roughly, means it can only draw straight lines to divide spaces) and therefore it can be stumped by more complex problems. We can extend Perceptron to solve this issue, by employing multiple layers of its functionality. The construct we are left with is called a Neural Network, or a Multi-Layer Perceptron, and it is a non-linear classifier. It achieves that by combining the results of linear functions on each layer of the network.\n",
"\n",
"Similar to the Perceptron, this network also has an input and output layer. However it can also have a number of hidden layers. These hidden layers are responsible for the non-linearity of the network. The layers are comprised of nodes. Each node in a layer (excluding the input one), holds some values, called *weights*, and takes as input the output values of the previous layer. The node then calculates the dot product of its inputs and its weights and then activates it with an *activation function* (sometimes a sigmoid). Its output is fed to the nodes of the next layer. Note that sometimes the output layer does not use an activation function, or uses a different one from the rest of the network. The process of passing the outputs down the layer is called *feed-forward*.\n",
"\n",
"After the input values are fed-forward into the network, the resulting output can be used for classification. The problem at hand now is how to train the network (ie. adjust the weights in the nodes). To accomplish that we utilize the *Backpropagation* algorithm. In short, it does the opposite of what we were doing up to now. Instead of feeding the input forward, it will feed the error backwards. So, after we make a classification, we check whether it is correct or not, and how far off we were. We then take this error and propagate it backwards in the network, adjusting the weights of the nodes accordingly. We will run the algorithm on the given input/dataset for a fixed amount of time, or until we are satisfied with the results. The number of times we will iterate over the dataset is called *epochs*. In a later section we take a detailed look at how this algorithm works.\n",
"\n",
"NOTE: Sometimes we add to the input of each layer another node, called *bias*. This is a constant value that will be fed to the next layer, usually set to 1. The bias generally helps us \"shift\" the computed function to the left or right."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Implementation\n",
"\n",
"The `NeuralNetLearner` function takes as input a dataset to train upon, the learning rate (in (0, 1]), the number of epochs and finally the size of the hidden layers. This last argument is a list, with each element corresponding to one hidden layer.\n",
"\n",
"After that we will create our neural network in the `network` function. This function will make the necessary connections between the input layer, hidden layer and output layer. With the network ready, we will use the `BackPropagationLearner` to train the weights of our network for the examples provided in the dataset.\n",
"\n",
"The NeuralNetLearner returns the `predict` function, which can receive an example and feed-forward it into our network to generate a prediction."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%psource NeuralNetLearner"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Backpropagation\n",
"\n",
"In both the Perceptron and the Neural Network, we are using the Backpropagation algorithm to train our weights. Basically it achieves that by propagating the errors from our last layer into our first layer, this is why it is called Backpropagation. In order to use Backpropagation, we need a cost function. This function is responsible for indicating how good our neural network is for a given example. One common cost function is the *Mean Squared Error* (MSE). This cost function has the following format:\n",
"\n",
"$$MSE=\\frac{1}{2} \\sum_{i=1}^{n}(y - \\hat{y})^{2}$$\n",
"\n",
"Where `n` is the number of training examples, $\\hat{y}$ is our prediction and $y$ is the correct prediction for the example.\n",
"\n",
"The algorithm combines the concept of partial derivatives and the chain rule to generate the gradient for each weight in the network based on the cost function.\n",
"\n",
"For example, if we are using a Neural Network with three layers, the sigmoid function as our activation function and the MSE cost function, we want to find the gradient for the a given weight $w_{j}$, we can compute it like this:\n",
"\n",
"$$\\frac{\\partial MSE(\\hat{y}, y)}{\\partial w_{j}} = \\frac{\\partial MSE(\\hat{y}, y)}{\\partial \\hat{y}}\\times\\frac{\\partial\\hat{y}(in_{j})}{\\partial in_{j}}\\times\\frac{\\partial in_{j}}{\\partial w_{j}}$$\n",
"\n",
"Solving this equation, we have:\n",
"\n",
"$$\\frac{\\partial MSE(\\hat{y}, y)}{\\partial w_{j}} = (\\hat{y} - y)\\times{\\hat{y}}'(in_{j})\\times a_{j}$$\n",
"\n",
"Remember that $\\hat{y}$ is the activation function applied to a neuron in our hidden layer, therefore $$\\hat{y} = sigmoid(\\sum_{i=1}^{num\\_neurons}w_{i}\\times a_{i})$$\n",
"\n",
"Also $a$ is the input generated by feeding the input layer variables into the hidden layer.\n",
"\n",
"We can use the same technique for the weights in the input layer as well. After we have the gradients for both weights, we use gradient descent to update the weights of the network."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Implementation\n",
"\n",
"First, we feed-forward the examples in our neural network. After that, we calculate the gradient for each layer weights. Once that is complete, we update all the weights using gradient descent. After running these for a given number of epochs, the function returns the trained Neural Network."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%psource BackPropagationLearner"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n"
]
}
],
"source": [
"iris = DataSet(name=\"iris\")\n",
"iris.classes_to_numbers()\n",
"\n",
"nNL = NeuralNetLearner(iris)\n",
"print(nNL([5, 3, 1, 0.1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The output should be 0, which means the item should get classified in the first class, \"setosa\". Note that since the algorithm is non-deterministic (because of the random initial weights) the classification might be wrong. Usually though it should be correct.\n",
"\n",
"To increase accuracy, you can (most of the time) add more layers and nodes. Unfortunately the more layers and nodes you have, the greater the computation cost."
]
},
{
"cell_type": "markdown",
"source": [
"## MNIST Handwritten Digits Classification\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 and 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 different learning algorithms.\n",
"\n",
"It is estimated that humans have an error rate of about **0.2%** on this problem. Let's see how our algorithms perform!\n",
"NOTE: We will be using external libraries to load and visualize the dataset smoothly ([numpy](http://www.numpy.org/) for loading and [matplotlib](http://matplotlib.org/) for visualization). You do not need previous experience of the libraries to follow along."
]
},
{
"cell_type": "markdown",
"source": [
"### Loading MNIST digits data\n",
"\n",
"Let's start by loading MNIST data into numpy arrays."
]
},
{
"cell_type": "code",
"metadata": {
},
"outputs": [],
"source": [
"import os, struct\n",
"import array\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from collections import Counter\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",
},
"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",
" 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",
" 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",
" 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",
"The function `load_MNIST()` loads MNIST data from files saved in `aima-data/MNIST`. It returns four numpy arrays that we are going to use to train and classify hand-written digits in various learning approaches."
]
},
{
"cell_type": "code",
"metadata": {
},
"outputs": [],
"source": [
"train_img, train_lbl, test_img, test_lbl = load_MNIST()"
]
},
{
"cell_type": "markdown",
"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 a 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",
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
"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",
"### Visualizing MNIST digits data\n",
"To get a better understanding of the dataset, let's visualize some random images for each class from training and testing datasets."
]
},
{
"cell_type": "code",
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
},
"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",
"outputs": [
{
"data": {
"image/png": "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\n",
"<matplotlib.figure.Figure at 0x7fd8cb45f4e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# takes 5-10 seconds to execute this\n",
"show_MNIST(\"training\")"
]
},
{
"cell_type": "code",
"outputs": [
{
"data": {
"image/png": "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\nwIABQOyMC+DCCy8EoEePHgBUrVqVWbNmAfDVV18BcPbs2egYFybef/993n33XcCdn1mZAgUKAHDD\nDTcA0Lp1ax577DEA/vzzTwBq1apFrVq1AOdclccuvvjiSJsbEO+99160TVCUmEIXUjFIkSJFAChX\nrhzgLDjGjh0LQKNGjQC4/fbb+fdf7zY3r1u3LoC56XTo0ME8J420ExMTAbjvvvvMY/37Ow3MExIS\nImZrsFx55ZUAPPvss+ax7t27A7Bw4UIANmzYAMDs2bPZvn074I47FrFtm4suuijaZoSdBg0aADBh\nwgTAnc8At956K+DO0Tx58nDy5EkA3nzzTQD69OkTMVvTIleuXPTr1y/aZigh4PvvvwegRo0aAHzx\nxRdcd9110TQpKlxwwQUA3HzzzQwbNgyAihUrArB+/XoGDhwIwPLly0P2neraUxRFURRFCZIsq0gN\nHz4cgCZNmtC0adMUz0uA5Zdffhk5o0LExIkTAahXr16K59q0aQNAsWLFPKtIdenSxaRa582bN6D3\n3H///QD88MMPgJuq7WV+//13AI4ePQpA7ty52bVrF+C6gm6++WbAma+LFy8GMOri6tWrY0J5A4wK\nVaRIEU6cOBFla8JLly5deOWVVwDMWEeNGgVA27ZtKVOmDAAzZ84EYM2aNXz00UcA/PXXX5E2N016\n9epF/fr1Adi/fz8Af//9dzRNUoJg/PjxVKtWDXAV/a+//jqaJmWatm3bAvDhhx+m+TpRoKpXrw64\nHoCGDRuav4X8vPLKK+nZsyegipSiKIqiKIonsGSlFpEvC2OZeFGgnnzyyQy976mnnkry/tTwQil8\nicP45JNPAChUqFCK10iAa506dYwiEijhbkshSkv//v3Jnj27fCfgxAjJzuODDz4AoGDBgoCTji2x\nRfv27QMwu/6MEK1jKDELuXLlYv369QBcccUVADz++OMAdO7cOcX7pk2bZnZPgRLpMebI4YjaU6dO\nBaBmzZrUqVMnFB+dKtE6jrLjXblypZmHEuskyQOFCxcmT548gKvwBEOkWsQMHjyYp59+GnCUM4Cr\nr746sx+bLtG+nrZt29bEzYgqLGpxkyZNjIpcs2ZNABNXA861CtI/vpEYo8ToPfDAAyY559NPPwUg\nPj4+haLdq1cvAJ577rkUnzVnzhxPXW9KliwJpP13zpcvH2+99RYA7dq1S/LcyZMnWb16NeB6oABT\n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\n6uwPOnToQK9evdyO/fXXX7Ro0QKAzz//HICLFy8CcOHCBbPKvu222wAoVqxYuIabbiSclzlzZh55\n5BEgdIpUehk/frz5u4ty9Mknn7ipToLsHlwRxVDOk8wzX7585t9Sjh6snXF6kLCOP2FiOYeSqBtN\niGWBqEmnTp3y2NWmRoUKFTxsPSSMGUluuummFB87cOCACR/Jzrd27domdC2KlBRVTJ48mS+//BKA\nr7/+OmRjDibly5cH3BPmZbfeoUMHAH788cewj8uVtm3bkj17dsD+zPz+++/meiDXHbBD7w899BBg\nnZuOHTu6HcuTJw9t27Y1/wbbx6xly5a8/PLLgB39ENXKaUjaSps2bczfQOboLam6Xbt2gK3ogKXE\nAn6rUeGmQIECLFmyBLA9zL788ksee+wxAPbs2ePxGvnuitp6/Phxn5Uof1BFSlEURVEUJUCiRpFq\n3bo1YOVASZ6JMGTIEJN74Q3Je5CY6fnz500iWiCJkuGkc+fOkR6Cz9StW5d///0XwOzK/UESeCW/\n7frrrwcsV2WxSZCfTkA+O1L6nxKS05EtWzazC45GJKFXvn8///yzSTj2hbp165rXSu6NL+adoUIU\njnr16nk8JqrGNddcw9tvvw3YihSknOv22muvGfsOeV/JS3EqovaKHQRYyhpEXokSSpYsSd++fQE7\n1zKl3DUpVhE1qX79+uaY/AR44oknAFuRlKjGsGHDGDNmDAD9+/cHoGLFihH9rKZFUlKSuX56U6JE\nQRVTWbD/Fl27dg3DCAOnQIECgGWZIhYlkgvdu3dvM+/kxMTEmFxo6XgyatSokIzR8QspudhJFYn4\nQQCmEkMuXCkhfkTr1q0DrMRJSSyUY05FqqD+97//RXgkaSOVkulFFmNyfgF27doFwO7du4PyO8KB\nVIesWLECsELKviSbO5Fhw4ZRoUIFwPad8TWsJ69r2rSpmbc/IcFQIRdo8UUCzEJX/HfOnTvntoAC\n6wYuYQTx/JLiiZo1a1K8eHEAU3jRpk2bkIQTgkH27NndFlBghUikU4RT+P333809wF/S8nuTEOy3\n334LWCGud955B4Crr74agGnTpjnSwV06IixatMgUBMjmZsCAAWZDIEnnEoru27evKZJxausxCbmK\n51yNGjVM4ZKk90hivTcqVqxI48aNAXuzK5WKwUZDe4qiKIqiKAHieEVKkuIqVqxojv3666+A3Tco\n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\nKysLmzZtAmAnJwMte85Rt27dTHV6Nz53+bfgen6qisel83k6bNgwk5jLhGx2IPCTX2Ncu3ZtTOHM\nrKysuNEm9+3/HhMAO2q1YcMGADCbB9yRrET5/VrMtHQ+T3v27GlWHljg+NGjRya/b8eOHR39FXGl\nc4yDBg0y+VDz588HAFy7ds1Ena5duwbALnINpK74ZjrH2BZG25gvluo86oRei2GbSGVKEJ4wftOb\nt+2/xpiXlwfAqcnCN+TWbt68CcCpJnzgwAGzVO2XdD5Pc3Jy8MknnwCwJ1VAy0r8fvFrjDk5Oebk\njM2V33vvvbgTKT6ObKzND6atW7emZBepXou2VIxx586dZkMB1dTUxF1qTyV9Zjj8HCOT7AsLCwE4\nJ9Y80e6oRMaopT0RERERjxSRSlAQZt5+01mwTWMMNo3R1tnHB6RmjBMmTMDhw4cBODXqZs+ejb17\n93b0rtul56nDzzFu27YNADBr1iwATgoPl9g7ShEpERERER8pIpWgIMy8/aazYJvGGGwao62zjw9I\n3RjLysoAOP0758+f3+4mglTQ89TR2ceoiVSC9ISxdfbxARpj0GmMts4+PkBjDDqN0aalPRERERGP\n0hqREhEREelMFJESERER8UgTKRERERGPNJESERER8UgTKRERERGPNJESERER8UgTKRERERGPNJES\nERER8UgTKRERERGPNJESERER8UgTKRERERGPNJESERER8UgTKRERERGPNJESERER8UgTKRERERGP\nNJESERER8UgTKRERERGPNJESERER8UgTKRERERGPNJESERER8UgTKRERERGPNJESERER8UgTKRER\nERGPNJESERER8eh/TEq+pZ4SZDEAAAAASUVORK5CYII=\n",
"<matplotlib.figure.Figure at 0x7fd8c6dc43c8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# takes 5-10 seconds to execute this\n",
"show_MNIST(\"testing\")"
]
},
{
"cell_type": "markdown",
"Let's have a look at the average of all the images of training and testing data."
]
},
{
"cell_type": "code",
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
},
"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",
" \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",
"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 0x7fd8c7dbe5c0>"
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
]
},
"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": "iVBORw0KGgoAAAANSUhEUgAAAlMAAABeCAYAAAAHQJEfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnWtsnNl53/+HM+TwMqR4GVKUxNVdXK1X613b9XrhIs4C\naeqmRdu07ge3rhsUKFrYcIBeUrQfUqB1UgQFiqZAbkUAN3HrooALuGmaBvnSwGg3a2+9a+39ol2J\nEkWKlEhqeJ/hzJCnH17+n3neMyOtsjPzviT3+QHCjGaGM+e85/I+z/885znOew/DMAzDMAzjo9GV\ndgEMwzAMwzAOM2ZMGYZhGIZhtIAZU4ZhGIZhGC1gxpRhGIZhGEYLmDFlGIZhGIbRAmZMGYZhGIZh\ntIAZU4ZhGIZhGC1w6I0p59yoc+6/O+e2nHO3nHN/K+0ytRvn3Deccy8753acc7+bdnnajXMu55z7\n1n77bTjnXnXO/Uza5Wo3zrnvOOcWnHPrzrlrzrm/l3aZOoFz7pJzruyc+07aZWk3zrnv79dtc//f\ne2mXqRM4577snHtnf1697pz7ibTL1C5U2/HfrnPu19IuVztxzp11zv2hc67onFt0zv26cy6bdrna\niXPuCefcHzvn1pxzHzjn/lqa5Tn0xhSA3wBQAXAcwFcA/JZz7sl0i9R27gD4ZQD/Me2CdIgsgNsA\nfhLAMQC/COC7zrmzKZapE/wKgLPe+yEAfwXALzvnPpNymTrBbwD4UdqF6CDf8N7n9/89nnZh2o1z\n7qcB/BsAfxfAIIAvALiRaqHaiGq7PIBJACUA/y3lYrWb3wRwD8AJAM8gmlu/nmqJ2si+Yfg/APwB\ngFEAfx/Ad5xz02mV6VAbU865AQBfAvAvvPeb3vsXAPw+gK+mW7L24r3/nvf+9wCspF2WTuC93/Le\n/0vv/U3v/Z73/g8AzAA4UoaG9/4t7/0O/7v/70KKRWo7zrkvA1gF8L/TLovxkflXAL7pvf/h/nic\n997Pp12oDvElREbH/027IG3mHIDveu/L3vtFAH8E4CiJDJcBnATwq977Xe/9HwP4E6R47z/UxhSA\naQA17/019dprOFqd5mOHc+44orZ9K+2ytBvn3G8657YBvAtgAcAfplyktuGcGwLwTQD/OO2ydJhf\ncc4tO+f+xDn3fNqFaSfOuQyAPwNgfH/pZG5/iagv7bJ1iJ8D8J/80TtX7d8D+LJzrt85dwrAzyAy\nqI4yDsCVtH78sBtTeQDrwWtriKRp4xDinOsG8F8AfNt7/27a5Wk33vuvI+qfPwHgewB2Hv4Xh4pf\nAvAt7/1c2gXpIP8MwHkApwD8NoD/6Zw7SuricQDdAP4Goj76DIBPIVp6P1I4584gWv76dtpl6QD/\nB5GosA5gDsDLAH4v1RK1l/cQKYr/1DnX7Zz784jasj+tAh12Y2oTwFDw2hCAjRTKYrSIc64LwH9G\nFAP3jZSL0zH2ZekXAEwB+Fra5WkHzrlnAPw5AL+adlk6iff+Je/9hvd+x3v/bURLC38x7XK1kdL+\n46957xe898sA/h2OVh3JVwG84L2fSbsg7WR/Hv0jRM7aAIACgBFEcXBHAu99FcDPAvhLABYB/BMA\n30VkOKbCYTemrgHIOucuqdeexhFcHjrqOOccgG8h8oy/tD9YjjpZHJ2YqecBnAUw65xbBPALAL7k\nnPtxmoVKAI9oeeFI4L0vIroh6WWvo7YERv4OjqYqNQrgNIBf3zf6VwD8Do6YQey9f917/5Pe+zHv\n/RcRKcb/L63yHGpjynu/hcj6/qZzbsA592cB/FVE6saRwTmXdc71AsgAyDjneo/aNlcAvwXgCQB/\n2Xtf+rAPHzaccxP7283zzrmMc+6LAP4mjk6g9m8jMgyf2f/3HwD8LwBfTLNQ7cQ5N+yc+yLHn3Pu\nK4h2uh21WJTfAfDz+312BMA/QrRr6sjgnPs8oqXao7aLD/tq4gyAr+3302FEsWGvp1uy9uKc++T+\nWOx3zv0Cop2Lv5tWeQ61MbXP1wH0IVo//a8Avua9P2rK1C8ikt//OYC/vf/8yMQw7Mcu/ANEN+FF\nlf/lKykXrZ14REt6cwCKAP4tgH/ovf/9VEvVJrz32977Rf5DtARf9t4vpV22NtKNKEXJEoBlAD8P\n4GeDDTBHgV9ClNriGoB3AFwF8K9TLVH7+TkA3/PeH9WQkL8O4C8g6qsfAKgiMoqPEl9FtInnHoCf\nAvDTard04rijt4nBMAzDMAwjOY6CMmUYhmEYhpEaZkwZhmEYhmG0gBlThmEYhmEYLWDGlGEYhmEY\nRguYMWUYhmEYhtECieYqcs4d6q2D3vsPTc531Ot41OsHWB0PA1bHo18/wOp4GLA6Rhy1xI+GYRjG\nIxIdPND4qPHeY29vr+n7llrHMCLMmDI6AiddPdnyta6urtijnqCbTc67u7ux92wCN4yPTldXF7LZ\naOrv7u4GAPT3R+fD5nI55HI5eU5qtRoAYGdnJ/ZYqVRiz4FovNL4MoyPCxYzZRiGYRiG0QKHXply\nzjUoHV1dXQ3KCD2lvb09ec73nHOHRu14mOJzEOtADzibzaK3txcAMDg4CAAYGBgAAOTzeXmP1Go1\nbG5uAoA8bm9vyyO9YXrMB6HuzrkG9U3/P1TWvPcPVNv0e4edZktHRI9B/f+Dhq5DWB/d7s14WLsn\nCftkNpsV1SmfzwMAjh07BgAYHh7GyMhI7L2+vj5Uq9G546urqwDqY7FYLMpr6+vrACLViipVONca\nydOs75rK335MmTIMwzAMw2iBQ6NMZTIZAPV1fKoaIyMjGB8fBwCMjo4CAIaGhuTv6C3dv38fALCy\nsoJisQigrnhUKhWJyzkIa/30HhjP0NvbK14ivcZsNiuqDMteLpflUT8HIgUnjD3qJCw72+nYsWOY\nnJwEADz22GMAgKmpKfn/8ePHAUSeMRC1w8rKCgDg+vXrAIB33nkHAHDjxg0sLi4CqHvK5XI50bbT\nimhPTw+AKO6EHj77YqFQABCpcfwcy1kqlbC2tgYg3j8BYGNjI9Z2/Lu0PMlmyksYtPyg+DiO3fA7\ntIKsxx+fJ9lfw/KxbVl29udcLicqKl/r7u4WBZZoxY3tR3VnZ2cHW1tbANDQxp2oa9hOmUymYR5l\nfx0fH5fnHIv9/f2iBPPz9+7dk3JTpeI1qFQqcv1MAeksoRLOPtnX1ydtxcdsNivtQOWwVCoBiPok\n25j9tFqtHmhl8UGbJdLClCnDMAzDMIwWONDKlPakuNuEXtPZs2cBANPT03jiiSdir1G9AerKxezs\nLIBI3Xj//fcBADMzMwAiVWBjYwNAup7Ug7yMwcHBmIoDREoPPQl6uazr2tqaKBykVCol5mV0dXWh\nr68PQL29pqamcPHiRQCQ9uL/z549K+oi46m89+Lxzs3NyXcAwCuvvII333wTQKRSAZGKQW+rk/XT\nCin7JD34yclJXLp0CQBw+fJlAMCFCxcAAMePHxfFlO28traGhYUFAMAHH3wAAHj33XcBANeuXcP8\n/DwAiJJaLpdFwegkWskI4xGz2WyDIsdrUq1WpXz8TF9fn/QFKhf0lHWsIj3kzc1NUYyp2tBT7lS7\nhuMul8vFFFWg3o9HR0dj8UVApNxQ6eGY5VirVCpSN62Ss93v3LkDoK5IVqvVjtVTtyHVtVDxLhQK\noqbyPQANaiHrtLW1JeMuzd18D4tje5iCSvRrD7sHpKl8hP00k8nI2GL7Uf0/c+YMzp8/DwA4ceIE\ngKi/cqxSEb958yaA6F54+/ZtABDVf21tTdpZq+NAOnF/oVqczWZlTuFrLBtQ76ucP3S/7ET/PJDG\nFDsNL1R/f7/cbHlzeuaZZwAAV65cwfT0NID6zTafz8eWUoC6oVUoFOSGzYnv2rVrYphwAj8IsqZe\n7uPExuswNjYmZebNVk90unMByXR+fZOlocFBPj4+jomJCQD1GxPbwTknddFtz/bhEiCNsI2NjYbl\n21Kp1LDs2am6AVEfo3HEfnf58mU89dRTAIBz587Fyj42NiY3aN7IvPdiHIfLnJlMRuqj69XJyYBo\nJ4ZjkGXWy1x85GdqtZqMH9LT0yPtzOtFY6Svr09uwGzHhYWFhnp3epMB60uDaGhoSNqU8wbb6fTp\n02JssD4DAwPSV/ldrNf6+rrcuGgwLS4uxtIOAHFjst0GczMnjW2njSggGqfsg/y7crkscwxvtEtL\nS/IYGr9JGVO6XuyDvK69vb2xMAmgPt/rJVltOLHMvP6sT6VSkfbUqSGSdLybhRXk83mZN+jEffKT\nnwQAPPnkk9J3Od92d3fH+iVQN75GRkZkztabhthnQ8emE3NsM7q6uhrSd4yNjQGIxiTtgVOnTgGI\nxiL7I41DCinz8/OxMAogatt29VVb5jMMwzAMw2iBA6dMOedEVdHeEz19ev5Ups6fPy/WOT+/t7cn\nFjS9F1qzly9fbgg2L5VKYqnS8zho0BuhNzw8PBxLFQDU61qr1RpSB+zu7iaqTIWJ/7q7u+X3uSzJ\nJY7FxUVpE7b94OCgeMs6gBKIvGh6z7weKysrD92e3irhpgBdR7aNc076EZcm6dHrz7M+g4ODDa+d\nPHlSHsNlvs3NTfEsO4n2+HVwPRCNRaqkVJzYLnocsd855+TzHINUV/v7+xsCsbPZ7AMD1juBnm+4\nZFIoFGS+4VI0Pf8zZ87ElveAqK6hqsGy9/b2iuqkE2Xy2vGR14jXo531C5X+vr6+huVLqsaFQkHq\npTdHsC9yzN69exdA1Cc51zRTK9o552jFFKiPu76+PlHYWI/x8XGZP/ga+19/f7/8bbPysb2ovs3N\nzUlICJfFisWifK7Ty9BAXKHhXHHixAlR67UiBURqOecWqjFra2sNKy/st+Pj49L39CpNuEEiXO7t\nFHpMso9ShfrMZz4DAHjuuefw+OOPA6i3cTablX7LjUuvvPIKAODHP/4xrl27BqCusK6vr0sdW1Wo\nTJkyDMMwDMNogQOpTNGDoupw6tQp8RBpeTO4jl4uAPGeVldXxboOFZ18Pi8WLr3olZWVmKUKJLcm\n3IzQa/Dei1dCr3hsbKzBU2OdNzc3G9a4k4ix0Y/8Pe3l0EOil3Pr1i35DMtLdWt8fFzUAba19kTp\nnfG1cGt6uwlVEq3+MfD/9u3b4t3puCg+hjFgZ86ckbV+KhM6CDqMw9HXtRM0S12g1Qwg6ncsP9UN\ntufGxkYsuJ7fGQbJMiBWx3Do9AFhXEan6xwqHYVCQRRCxp3w/8eOHZN2oTKxuroq7U6VmHPL2tqa\nzCm8Jqurq/KcddVxKnytXYTpHZopOTq2LwyYn52dlbgTzpOsr47vYt/V7dXOZKw68BioK4MTExM4\nc+YMgLqSePHixZiaCNRVOD22iPdeysrrz7q+9dZbePHFF2P12d3dbVBpOnHPaKYSc644efKk9E8+\n8j5XLBZFHaeadv/+/Zi6D9Rjprq7u+Xewu/v7e2V3+T1anffDAlV4snJSbnnf+ELXwAAPPvsswAi\nu4CfX15eBhCPZeMczLF7+/ZtUVR1Sp123SMPjDGlOw0HCQ2l06dPN+yO4nvValWkZ3aaubk5maw4\n4XOQnT9/Xr6fg2xpaUlkXH5XGEibBjrYmJItperjx4/LjYidgRP45uZmwy6MJIIk+Rva0GAw4N27\nd6VMzFHD+unlKw729fV1mRgY/MsBpnMX8ZETeafhtS6VSrH6AtGNlBNwSC6Xk7bT2d75nPXgddAG\ncScD6x+Gc04mUU6wo6OjYgCyfWhA6GBOvauP38EJnDfunZ0d+bzOixbmu+kkOrBXL2WGxhSND++9\nLP/QOZibm5PXOAa1ccX68Drp5RMaLHyv3W3czFjM5/NiWLCenE+z2azccLjjcHZ2VsYsxzDRTgzb\ncnd3t+3zjl6uDJe7hoeHZWyxj508eVLmDb7HslarVZmX9BJouGmG88329rbcH7h0pI2xJMILtGOj\ny8mxxLHIfnX79m1cvXoVQH3H8/b2dmyJHaj3t56enkeqR6eXMnmfYxtcunQJzz//PADgc5/7HIC6\noDAzM4P33ntPngNR27JP01DkPDIwMNCws/jDTi/4U5W/Ld9iGIZhGIbxMeXAKFMkm82Klc3lAC3Z\n0uqkRX3r1i3JzcMM2TMzM+Lx0QOjp9jd3S3LRloupcVOb4d/nySh1a+X+ehJ8JpMTEyIjBsuI2xs\nbDScjZVEubUqEXqw1WpVykdPWZ9Ez/akkjg+Pi7fSy9C5w8Jl4c6nX8pzF2iA8H526VSqWH7NetT\nKBRE5bhy5QqASGWlJ81rQ4Xjzp07Il2z71YqlY56huE5eXppgWNyYmJCPD72SSoZ5XK54RzF/v5+\n8QbZd1nnxcVF+Rzrv7W1JUpOUrmKWEcGg4+NjYlqTc+ffXZ1dVXahbnBbt68Ka9pdRiIroPeYg9E\nfUhnQwfiaQXaTXh6xPDwsNSLbcJ5cnl5WdqTy/ArKytSrnAziM6qzbqUSqWOqqrhWCyXy3LduXyz\nuLgoZeQSJcdRsViUOZN9rL+/X+4Ln/70pwHET9Jge+nwiSTSlBCtoOprH6bYYPnu3r0rqyysay6X\ni6XAAOrzU6lUkj7LubtcLjfkEOtEXbU6SKWe/fPpp5+WZT72PapRL7zwAt544w2pLxCNYW5SoyLJ\nOk5MTMg9v1leqlYxZcowDMMwDKMFDpwy1dfXJ0GR9A6np6dl/ZsWpc5o/uqrr8pzIJ74j3ENVAxO\nnDgh3hit4MHBQVmHpRd9EE6x10oBy8dkgkNDQ+IJ0itm4sNyuZz4uWb6t5plI69Wq7EUAkBcTQoT\n6x07dkw8C77G+m5sbIiSEcaG6e9vZ92beWShOpbL5cRTZB+movrUU0+Jx8S4v9HRUVFmqAJQbZyf\nn2+oY1JKTbM4Eh1jQ6+R15cxGWtra7Fs7UCk/tIL1tn7gaiuVBJ04sckY8P0hhfWtVAoyBzBR177\njY2NmBIJRP2A9WU9WK/19XV5rVmaklDdaPd4bVa/kZERURd1rBQQz87O+SSbzcp1oFqjN1jobOj8\nO/YhvtdqmzZLqsmxs76+LoqujkcM47yoXty7d0+ULH7niRMnZH6hgsx5Z2NjI3a6BH87zAreCXQ/\n0TFpQDRWwhUAvYGF8yfn3cnJSUmlwBUefn55eVmuoU578aAM6O1Eb6Si+sS54uLFi3Lv4wazH/zg\nBwCAl156SeZLojP4sx2pOK+urjZs6mlnMmtTpgzDMAzDMFrgwChTtJDz+bx4TXrbJ9c66RkwXuHV\nV1/Fa6+9BqCuVjXbaUWFqlgsihepj7UIt9qnqUyFxxRkMhnZQUWLvVQqyVq4PksJ6Oz5Xo9CMy/K\ney/P2dZ6d45OgwFEqiQ9K0Jvcnl5WTxFvUU7TNFA2nEtwjbR6gK9nUwmIwoOPcDPf/7zAKI4DB57\nxLpWq9WG3V86cV6YDLHTbRpev56eHhkjHJNTU1PSLvT8WWZ9FArH0cTEhOykPX36NIC6orC1tdVw\nFElS/VbXNYwpGhoaakgdoHcdssx81GdRUhlhH69UKg079XSSzyQS6VJ1ooeu497YvhxPy8vLoi7y\nepw4cUIU8VDtKJVKsWNygGgcsH6MNWrH9vNwTtdqIK87VRWdfJl1o+K2srIS2+EFRPeAMIEu22tl\nZUX6Or9Lx3kmgU5ErWO/WC4qTWyf6elpUXR43SYnJ0WJ1DHHfORueF6nZolJO9FvdSwYrz3V75GR\nESkD7+/cUbmxsSGfZ72eeOIJfOpTnwIAmW91DKbeUQu0N9b2wBhTHPAjIyMy6erz9Nj4DKpj4Nm1\na9ekQ3By0zc6Dnod/BkOAj2hJrXF/lHQBiaDIzlA1tfX5VpwQCUduPswQuNDBzOHZ2YNDw9LmzOT\n77lz5+SGxvbiRHb//n0xJHXgbjjAO3Gj4rXt6upquM56iZo5svTGCdZXT4qsm77RAdFNjjdo9msd\n9NpJ9Fl1bANO1hMTE9IHeRPVJxVwHPMzV65ckeVNfgcn7d3d3Zjhxscwo3SnDY7Q8NcGEPuXznFE\ng5mf7+3tFQOZbcb6AI0GRZI3YZ2agn1sfHxc6sB66SU6GhUM/L148aI4OfwOndaEy4G8sQFxgxlo\nT6qZsO/rDSx6yQ+IrnWYB47l3NzcjM2tQHTzZvodGiQ0zGZnZ2WJid9fq9USTTejQyd4Te/duyfn\nz3Fpi+P14sWL4tDpUyVYfgZxv//++wCi+yi/i+Nap6xJwvjPZDIN537u7e1JmWlUsQ9qkYXz7dNP\nPy0Z0jnf0PhaXl6WuunlSzubzzAMwzAM4wBw4JQpnWGZUnRvb68sYfFsHVqbt27dinnuQDybbXia\n+MDAgDzXJ7ynlRixGWFyusnJSVHp6GWsra2Jh38QsrZrMpmMXGN66v39/bKkEJ5UPzU1JUtBrKfO\n8M5lB3qWy8vLDRmkvffibYZb/DvhTek+ph9ZBnrF9Gh3d3cblg+Axoy/vA4rKysN6lulUklkyU8H\nsVJxoYxeKBTEG2RQMpWn48ePyziiMnXp0iVJBcHXqKh2d3dLUDQfS6XSA73hTtWZv8c+NT8/L5tZ\nWAa2XaVSkfmG7+VyuYYlFVKr1aT99HmZoTfcyfYMUz+MjIzIWCRcbgbqXj6XSc6fPy/109vmQ1i/\nYrEowcxaoWsXoZJYq9VEmSI6xQbf41yh5yfOQU8++aSc88Yysw63bt2SuSct9d97L2OLytTKyoqo\nSVQauWkrn8+LMsP6VKtVWYplmAzvp7Ozs7KRif1bJ+FNinBzx/b2tqhUVO25erG3tyf9mHW9cOGC\nzEucx6hGzc7OxjZpAe09s9aUKcMwDMMwjBY4MMqUPnKCXjA9KQANR8YwGG11dbWpIhOeY6ST1PE1\n/t36+rp4pTpwMS30GjcQeYrhOWhzc3MSKJjEqeUPIzwjUJ9Kz/gDHfTK+AumCDh79qy8RoWmWq2K\nR9Hs6I0woWdPT08s6BdI7hgWHZzM+DUqG/T2hoaGpKz6+BJeE3qU9JSnp6cbzpHa2tpKpE4sX1dX\nV8NmAe+9tBE3Q7CfXrhwQT5PJWdyclLGXphgVdeB1yaTyXT0eI5msDxsq7feekvmAXruVM5yuVzT\ns+7CszPZP8vlsswtelt9J89z0+gjgViHfD4vz8MUJuPj46IAMI5xYGBA1GEqG7xmOnCb39nX19ew\nkacTsMw6gW54LJX+HK9DLpeT+YlxUp/97GdF3aDyw1jcxcVFeY1jXR9DktRmpWaJg6m68ZGfyeVy\ncg14TdbX12VO5aOeW8K+kNT9RG8sCNNYzM3NNcwpnCszmUzsvFYgah9eH45h2grz8/MNq1jtVN4O\njDGlMy1zcubF29vba9gxwsGtd67p5bEwLxMHzdTUlHwvv2tpaUkaL+yUScJOw2vBm9DU1FQsAzMQ\nybTsGGnu3APiActAFDzNiZhG0qlTpySInkt5HBRTU1PSXmHuLKA+eeigUcra+qBYLQ0D7c0qrbOC\n8//hZoVSqSR9im2jA6vD61QoFBp2+HFC104FJ/7l5eW25e15GDqjNWVx3lgGBgbEqOXNSZeFdaM0\n39/fLzdeGprMDbO0tBTL2g9E1zCJw7lJJpORdtQH3LL9aEzpHXGcn/QSA41ifYYhEBlQ+uBYIH7A\nc6cDe/VuPrZXd3d3w0G/OsdWuPHj5s2bDSEFzTZKcFms2QkFnVpq52/ofHZA1K56ly0QP9OP8xN3\nfl24cEE+x6V5BmnfvXs38d2mIdp4085YuNtWZzRnm+ndp7yPhqEk+vBnvRkrCcNK5w/jPMDly3w+\nL+WnY845Ru8QZ/91zknfpI3A67C0tNR0mdaW+QzDMAzDMA4AB06Z6u3tFU9HB/PSogyX4bLZbMP2\n6qGhIVE/nnvuOQD185YmJyfFmuUy2e3bt8WrSkuZ0pmKQ5VieHhYPD169bOzs/Ja0nJzCNuJ7TYx\nMSGKINWoc+fOybIQvSh9OjvronMraU8aQOzMRnoW/M379++LJ6I3FrRKuISpH8PXnHNS/mbKQ6g8\n7uzsiIJBxUl/Ri8t8bUklk10oCu9dL63uLjYkJmeZdZ5tjj+arWa1IOZ0nliwQcffCCKsA62D4Ps\nO9GfdZ8Nz5vb29trWJojfX19oqLSA+7r6xP1KcxXp88m1Oc2JjVW9/b2mv4Gy8Jyst34N0B9KejO\nnTsytjhmOZZPnjwpbUcFQZ99x/HQSWWqmYLpnJPXOT51XZmyhOkDCoWC1JFnvTJtwPLyckMQezsD\nlx8V1kPnVgpVfva1O3fuyD2N7bi3tyfzEtuf7X7//v2GnG9dXV2JbGrSqiKXU3lvrtVqMkdwjOlN\nDRyzVBofe+wxUdO5vEeVS6d66MTcYsqUYRiGYRhGCxwYZUqf10ZrWHv1+sRzIO5J0cvke4899phs\nx3722WcB1IOdc7mceMhcE79+/XrTzLlJks1mxatgEDI9397e3thp6EDkyWtFAGiezTUJ74negY4X\nofpEj+HEiRMN5x/SwyiXyw0nz+u6MEaF8Vf9/f3yW7we+kwuqjx67b/V+BvWkb/T09Mjz3Wwa6hM\n6e3bYZxCJpORevCa6CD1sMxJBWZrZUr3NyDy8sJ667HJ9tbfxXZg/BEf5+bmRA3QmZY7mf4hVBqH\nhoakX7EepVKpwUvXcR3hONNxV0RvkNDKIhCPRek03nvpk6yTThugM9sDUV10/BoQjV3On+GZftVq\nVeZTKgC6XTupTDVDq1XsRzouiGVn+gduoy+XyxJbQ+WU/19dXZV+oOP5kgzU1kmPOY8eP35c+i5j\npaigLSwsSLuw3QcHB0XV4jig2j80NCRtpuNCk6zj3t5eLL0GEPUfPmf9dQwc+yFXcWq1mihybD/G\n3zZLLdPOOdWUKcMwDMMwjBY4MMoULcbNzU3xjGilDg4OisfLXXlkdXVVPGXufrtw4YKshYde58LC\nAt58800AwNtvvw0AmJmZEeWnnWf1PAp6PT9MkMj/e+9FOaNSsLOz06BM8f9JJ+8MY4Hy+bzEVtBj\n0rvTqCqyTarVasNxEBsbGw0nolOh0jt1qBiUSiVZK2/n2XwPSv46ODgoHqLeSUIPlmv/rFelUpHv\nYD+dnp6FGLIUAAAKJklEQVSW3XzhKe763Dq9MyopD5G/q9M+AM0VUdZ/d3dXrgm9yUwmI/2R8Vf6\nWI9Qwev0Dr6wPfP5vKgTVIK99013GfLv6d3rnZesN/ul3sXWLMlkUkrN7u6u9EHGzty+fVtibVgH\nzq/Dw8NSZx2XyLHH/q/ji15//XUA9XQgCwsL8h1JzEVaQWnWf8K0FZOTk9LWfG9hYaFprBQQjeHw\nKCDvfaIxU845uc9xTh0dHZU6sT+zjW/cuCHKjP4OKuGhWpfL5WIpUdJA787TaSDYf3UaHCCK3+M1\n4b1yZ2dH7pWcbziWm407nXy51fY8MMYUJ6ulpSUJPqOBMzo6KoHMnMgoO29tbclF5s16YmIiZogA\n9YC2H/3oR7h69SqA+nLD0tKS/H5SA6RZrhoOEpad9drc3JRt5ewYu7u70qn4OR2Inna6BKLP3+ME\nxomZN9JSqST1okRbLBZlEIWB3ru7u2JoPOzQ3HYaxqHBODQ0JP2NAdm9vb3SBnQE9PIA25c37+np\naXziE58AUJ/o2c537txpaPM0DlflNdQGVpjigWMyl8vFjFsgGsO8Eelz0/idSR34+yBqtZqMQX24\nqnbugPjGFN6QuBxfKBQastvT2Nje3pZ608DWyw2dZm9vT9qCufreffddcXbY7+iknjp1qiG3WFdX\nl/Rj3qBffvllAMAPf/hDmU9nZmYARHUPA307if4NXeZmG1eAyIDka9rQ5P2ADmuz9ko6B5OuD+ce\nnX6Ec394+HO1Wo3dW4CoXzc7hSGEY1IbpklvbmpmFOsDkYFo3gkdc+2E0xh+WIqcdt4rbZnPMAzD\nMAyjBVJXpmjx0nqcn5+Xc4PoKY6OjooSxWU7LuOVSqWm52HRG2SywVdeeQUAcPXqVQk8p6e2sbGR\nqMevEz7qLdTh1k96G7p89JR3d3cbMmonnTma0IvQp7SHGXaLxaLUj14r67K0tCRtQQWxWCzGtujq\n36lUKrFz+oDIm+RzepTtzAzP79DeEevDbeJTU1Pi8dJT0tvh+R69qbGxMVHb6A3Tu3/77bcloJfX\ncHt7O9GzsvQSla5/2HfDdABAvQ2cczEFEqj3a91fk+q7rA/7xvb2dkP6g0Kh0KAO6yzabFMqrNls\nVr6PaiKVKb1Fnb9TqVQSUzi89zKOmmV41+cRAtHZkFTcWLbl5WVRbbikx1AJvXmHbd7s7MFOopdq\ndN9k+7A+vJ8MDQ3J5zmP3Lx5U9LOcImyWbB50jQLlNZjMkwLRJUcqG8q4PjkfAXUlwNZx3K5LM+b\npX9Iov46MSnRSWepsLFdR0dHZZzymqyurkr7hek5Ot0nTZkyDMMwDMNogdSVqXBL/OLiogSG09r2\n3ou1zNgpxp/09fWJx6uTddGT4jZXBhfeunVLPCkqI0kGhAJxZYpWdzabbUhxwPIBda+e14nXI/ze\nNGB56QncuXOn4YiOYrEo8RasMz2I5eVl8ejZhuvr6xLPEMYrVCqVhgBvvXGhnUc/hMdUNIvR4nu9\nvb2SPI+Bveyn/f39saSQrD+VqNdeew1AFNMHAG+88YaoBVSmtKKRFjq5LOPhdFoKXntep66uLrk+\nzdJeNAt2TSI+Q5/LyetMFXtsbEzi4ZgKQKf1CONUVldXJUEg+7gOZqbC+LBA2E7hvW+YTyqVivQp\nBlt///vfBxCPq+Hfra2tSdk5Pvn/UqmU2pluRM+n+sgYKsBUpDgWe3p6pH9yzlhYWIjVCUgv2LwZ\nOn6R5dPxQaw3V24ef/xx6aesh07Cy3qzPe/fvx9TTvmbSSlS+lE/b3b+Hsfi8PBwLAEyEF0bfYYr\n0FzJ68S9MnVjirDC6+vrsszHwX/37l15jct9DCbs6emRz7GjXL9+XT6vzwEDookvlP3SGPzhDUNn\nfw1z7/T29kqn0QGuWlbX7yU9+JstQbJDs03efPPNhlxKOp9RGOirD4NlO+nlPp33B4iuX7jjph2y\nbniYqjZw+Ts6MJ6fo1HBfjowMCDl41Lm+++/L46DNvaBqL+Gu/mS3qUJNB8b+lBioF6uUqnUcM11\nnqNwme9B9Ulyx+L29rb0UfavcrksxgYzZfMmxYkciDtvnG8YQsD/LywsyHcltdwQEma21wfKsmw0\n+Lq6uhpuNM02CujHtA0NbeBzeT2fz0tbcVlIn0fIuVPPueEu8mbzaVp11bvaeH+Yn59v2LTEOo+M\njEh/Zr3u3bsnxjPnHZ3zjXN2eHpDGugdw2E4gd7wEjoK1WpV5t7wfMhm9922lrnt32gYhmEYhvEx\n4sAoU6RarYrlTYt6dnYWL774IoB6ThudhZmWJy3R7e3tBy6LpRlMSPQZSfR+yuWyyKzh0ofOq6SX\nRZtl5dWfSYpwKaxWq4nHR0Xwxo0bDRKr9hIe5Pk2e017zkl5yGGQvfbu2W4zMzN46aWXANS9YfbX\n7u7uhiWwYrEoykAoTevt2Gl6iCE6F4zecABEylOY72ZoaCg2LgHEznIL+3DSZ57VarXY8hsQ1YfZ\no3XQMhC1I8vHsheLRennDPLW+anSXgZrhs7jox8PEzroPDx/T5+JyPd02g4dfgBEY/hByqleHkoL\nneKCY0sv13KZmWEtY2NjsdQ6QKSScqWGG150Lq0wDUpSNEttoZf5dCiMplqtyjjTqmt4zqu+P7Yz\nB2GIKVOGYRiGYRgt4BIOvP7IP/an8Qw6VSfv/YcWopU6HgQ+rI6dqF+SSUbb1Ya6P+r1/TBNRTMV\nTSfFCxWBdqgXneynzjnx9MPt6DomQV+TMGZHqyEfVU3tRB312YlhhmjWGYjH6QFRPUKv/mEZuR+V\nNMZikrTahs0SWupt80wSzEB0JiodGBiQ9qRKuri4KLGMzVJZ6Iz2+rHTdXzA5+V5mNBYn4YRrnDs\n7u7GVg+AtsWVtq2O4dmZuVxOVqHYtowLGxoakvc4Xnd2dmIphQDEUuZQ3dMrQ49yDR6ljqZMGYZh\nGIZhtMChUaYOAqZMHf36AVbHw0DSdXxYgtFOxevZWHx0lZjxNPoIFe76YuwUH/v7+xt2A+tjfxhj\npFMkNDti5VGwsRjxUdU3rbCFbazjqfT5l/xbneSZ74Xt+Kjt+Uh1NGPq0bGBcfTrB1gdDwNWx6Nf\nP6C15egHvdZsOXq/PACa32g/6n3S+mnEx6GOtsxnGIZhGIbRAokqU4ZhGIZhGEcNU6YMwzAMwzBa\nwIwpwzAMwzCMFjBjyjAMwzAMowXMmDIMwzAMw2gBM6YMwzAMwzBawIwpwzAMwzCMFjBjyjAMwzAM\nowXMmDIMwzAMw2gBM6YMwzAMwzBawIwpwzAMwzCMFjBjyjAMwzAMowXMmDIMwzAMw2gBM6YMwzAM\nwzBawIwpwzAMwzCMFjBjyjAMwzAMowXMmDIMwzAMw2gBM6YMwzAMwzBawIwpwzAMwzCMFjBjyjAM\nwzAMowXMmDIMwzAMw2gBM6YMwzAMwzBawIwpwzAMwzCMFjBjyjAMwzAMowX+P68H+8a5QwGRAAAA\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd8c75960f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_ave_MNIST(\"training\")\n",
"show_ave_MNIST(\"testing\")"
]
},
{
"cell_type": "markdown",
"Now, let us convert this raw data into `DataSet.examples` to run our algorithms 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",
"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",
"source": [
"Now, we will initialize a DataSet with our training examples, so we can use it in our algorithms."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# takes ~10 seconds to execute this\n",
"MNIST_DataSet = DataSet(examples=training_examples, distance=manhattan_distance)"
]
},
{
"source": [
"Moving forward we can use `MNIST_DataSet` to test our algorithms."
]
},
{
"cell_type": "markdown",
"source": [
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
"### Plurality Learner\n",
"\n",
"The Plurality Learner always returns the class with the most training samples. In this case, `1`."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
}
],
"source": [
"pL = PluralityLearner(MNIST_DataSet)\n",
"print(pL(177))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Actual class of test image: 8\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f79589f7dd8>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAHVCAYAAABSR+pHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAE3VJREFUeJzt3W+o5md95/HPNxn7wOiDmExDSOPaLZKJFBo3YyhUV5du\nE+OTmBCkQZqULYxoBSt9sDEKFZZJwpKk+2QpjBiagLUUMhMDWXcbRBwXFk0mBI0z6SoSbcI4k9EH\ntUQomqsP5hZm3TNzztzX+c4598nrBeHc53ffV64rv/yG9/zuf78aYwQA2FwXbfUCAGAnElgAaCCw\nANBAYAGggcACQAOBBYAGAgsADQQWABoILAA02HUhJ6sqXxsFwKo7NcbYvd6DnMECwPn5wUYeJLAA\n0EBgAaDBVGCr6v1V9Q9V9b2qunuzFgUAq27pwFbVxUn+e5Kbk7wjyR1V9Y7NWhgArLKZM9gbknxv\njPH9Mca/JPnbJLdszrIAYLXNBPaqJP94xu8vLbYBwOte++dgq2pfkn3d8wDAdjIT2JeTXH3G77+x\n2Pb/GGMcSHIg8UUTALx+zDxF/HSSt1fVb1bVryX5wyRPbM6yAGC1LX0GO8b4eVV9PMn/SnJxkofH\nGN/ZtJUBwAqrMS7cs7aeIgZgBzgyxti73oN8kxMANBBYAGggsADQQGABoIHAAkADgQWABgILAA0E\nFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkAD\ngQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQ\nQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwA\nNBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgIL\nAA0EFgAaCCwANNi11QuAnWb37t1T47/2ta8tPfaaa66ZmruqpsYfO3Zs6bEHDx6cmvu+++5beuyr\nr746NTesxRksADQQWABoILAA0GDqNdiqejHJT5P8IsnPxxh7N2NRALDqNuNNTv9hjHFqE/49ALBj\neIoYABrMBnYk+fuqOlJV+9Z6QFXtq6pnquqZybkAYGXMPkX87jHGy1X160meqqoXxhiHz3zAGONA\nkgNJUlVjcj4AWAlTZ7BjjJcXP08mOZTkhs1YFACsuqUDW1WXVNWbf3k7yY1Jnt+shQHAKpt5iviK\nJIcWX622K8nfjDH+56asCgBW3NKBHWN8P8nvbOJaAGDH8DEdAGggsADQoMa4cJ+c8TEdVsXMJece\nfPDBqbk//OEPLz129s/z7OXqZuafnfvQoUNLj7399tun5uZ158hGvhrYGSwANBBYAGggsADQQGAB\noIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA12bfUCYDu6/vrr\nlx47cz3XZO66qPfee+/U3E899dTU+D179iw9dna/3XrrrUuPnbn+b5K88sorU+PZmZzBAkADgQWA\nBgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGhQY4wLN1nV\nhZsMJpw4cWLpsZdddtnU3I8//vjSY++8886puV999dWp8TNuuummqfFPPvnk0mM/9rGPTc194MCB\nqfGsnCNjjL3rPcgZLAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBA\nYAGggcACQAOBBYAGAgsADXZt9QKgw759+6bG7969e+mxs9dYvv3226fGr6pTp05Nja+qTVoJbA5n\nsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAa\nuFwdO9KePXumxs9ccu7gwYNTc79eXXvttVPjZy8TCJvNGSwANBBYAGggsADQQGABoMG6ga2qh6vq\nZFU9f8a2t1TVU1X13cXPS3uXCQCrZSNnsH+d5P2/su3uJF8ZY7w9yVcWvwMAC+sGdoxxOMlPfmXz\nLUkeWdx+JMkHN3ldALDSlv0c7BVjjOOL2z9KcsXZHlhV+5LsW3IeAFhJ0180McYYVXXWT3iPMQ4k\nOZAk53ocAOwky76L+ERVXZkki58nN29JALD6lg3sE0nuWty+K8mXNmc5ALAzbORjOl9M8n+SXFNV\nL1XVnyS5P8kfVNV3k/zHxe8AwMK6r8GOMe44y12/v8lrAYAdwzc5AUADgQWABq4Hy470nve8Z2p8\nVS099vHHH5+ae5XNXIf3nnvumZp75v/Z4cOHp+aGtTiDBYAGAgsADQQWABoILAA0EFgAaCCwANBA\nYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANDA5erYtmYufTYzNkleeeWVpcd+/etfn5p7\nK83ut6effnrpsW984xun5j569OjSY1944YWpuWEtzmABoIHAAkADgQWABgILAA0EFgAaCCwANBBY\nAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGjgerBsWzfffPPSY2evLfqzn/1savyq\n2r9//9T4mf1eVVNz33///VPjYbM5gwWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWA\nBgILAA0EFgAaCCwANBBYAGggsADQwOXq2LaOHj269NgxxtTcl1122dJjH3rooam5P/rRjy499tFH\nH52a+8Ybb5waP7vfYSdxBgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoI\nLAA0EFgAaCCwANBAYAGggcACQIO6kNdvrCoXi+SC+PKXvzw1/qabblp67OyfqapaybmT5ODBg0uP\nve2226bmnvlvv/jii6fm5nXnyBhj73oPcgYLAA0EFgAaCCwANFg3sFX1cFWdrKrnz9j22ap6uaqe\nW/zzgd5lAsBq2cgZ7F8nef8a2/9yjHHd4p//sbnLAoDVtm5gxxiHk/zkAqwFAHaMmddgP15V31o8\nhXzppq0IAHaAZQP7V0l+K8l1SY4nefBsD6yqfVX1TFU9s+RcALBylgrsGOPEGOMXY4zXknwuyQ3n\neOyBMcbejXwoFwB2iqUCW1VXnvHrrUmeP9tjAeD1aNd6D6iqLyZ5X5LLq+qlJH+R5H1VdV2SkeTF\nJB9pXCMArJx1AzvGuGONzZ9vWAsA7Bi+yQkAGggsADQQWABosO5rsLCK9u/fPzX+rW9969Jjr7nm\nmqm5Z8xeD/bee++dGn/fffctPfbYsWNTc3/qU59aeuynP/3pqblnjzd2JmewANBAYAGggcACQAOB\nBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABrU7OWtzmuyqgs3GUz4\n5Cc/ufTYBx54YGruqlp67N69e6fmfvbZZ6fGz7j++uunxn/zm99ceuzsf/e73vWuqfGsnCNjjHX/\nsDmDBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCw\n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\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7958a01e80>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Actual class of test image:\", test_lbl[177])\n",
"plt.imshow(test_img[177].reshape((28,28)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is obvious that this Learner is not very efficient. In fact, it will guess correctly in only 1135/10000 of the samples, roughly 10%. It is very fast though, so it might have its use as a quick first guess."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Naive-Bayes\n",
"The Naive-Bayes classifier is an improvement over the Plurality Learner. It is much more accurate, but a lot slower."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7\n"
]
}
],
"source": [
"# takes ~45 Secs. to execute this\n",
"nBD = NaiveBayesLearner(MNIST_DataSet, continuous=False)\n",
"print(nBD(test_img[0]))"
]
},
{
"cell_type": "code",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Actual class of test image: 7\n"
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f7958b05278>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAHVCAYAAABSR+pHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAErVJREFUeJzt3X+o5XWdx/HXO3Uhsj+0HzKYpSuxFEs71iSBtky4xWR/\nWBSRfywuLE5/WBQtshGEESxEbO0SbIGRrAtui9AvCZlVpshd+kEzYTU2WI5YaqMWE6SBmPXZP+bU\nzrp35t453/O+957j4wHDPfd7vh8/H75849n3nHPPt8YYAQAW6zlbvQAAWEUCCwANBBYAGggsADQQ\nWABoILAA0EBgAaCBwAJAA4EFgAZnbuZkVeVrowBYdr8cY7xovZ1cwQLA6fnpRnYSWABoILAA0GBS\nYKtqT1XdW1X3VdUHF7UoAFh2cwe2qs5I8i9J3pzklUmurqpXLmphALDMplzBXprkvjHG/WOMp5L8\nR5KrFrMsAFhuUwJ7fpIHT/j9odk2AHjWa/872Kram2Rv9zwAsJ1MCezDSS444feXzLb9H2OMG5Pc\nmPiiCQCePaa8RPzdJC+vqouq6k+SvCvJbYtZFgAst7mvYMcYT1fVe5L8Z5Izktw0xrhnYSsDgCVW\nY2zeq7ZeIgZgBRwcY+xabyff5AQADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQW\nABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOB\nBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBA\nYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0\nEFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsA\nDQQWABoILAA0EFgAaCCwANDgzCmDq+qBJI8n+V2Sp8cYuxaxKABYdpMCO/OGMcYvF/DfAYCV4SVi\nAGgwNbAjyR1VdbCq9q61Q1XtraoDVXVg4lwAsDRqjDH/4KrzxxgPV9WLk9yZ5L1jjLtOsf/8kwHA\n9nBwI585mnQFO8Z4ePbzsSRfSnLplP8eAKyKuQNbVc+rquf/4XGSNyU5tKiFAcAym/Ip4vOSfKmq\n/vDf+fcxxr6FrAoAltzcgR1j3J/kLxa4FgBYGf5MBwAaCCwANBBYAGggsADQQGABoIHAAkADgQWA\nBgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANDhzqxdAr3e84x2T\nxl977bVzj/35z38+ae4nn3xy7rG33HLLpLkfeeSRucfed999k+YGVoMrWABoILAA0EBgAaCBwAJA\nA4EFgAYCCwANBBYAGggsADQQWABoILAA0EBgAaCBwAJAA4EFgAYCCwANaoyxeZNVbd5kJEnuv//+\nSeMvvPDCxSxkyTz++ONzj73nnnsWuBKWwUMPPTT32I9//OOT5j5w4MCk8czl4Bhj13o7uYIFgAYC\nCwANBBYAGggsADQQWABoILAA0EBgAaCBwAJAA4EFgAYCCwANBBYAGggsADQQWABoILAA0EBgAaDB\nmVu9AHpde+21k8a/6lWvmnvs4cOHJ839ile8Yu6xr371qyfNvXv37rnHvu51r5s094MPPjj32Asu\nuGDS3Fvp6aefnjT+F7/4xdxjd+zYMWnuKX72s59NGu9+sNuXK1gAaCCwANBAYAGggcACQAOBBYAG\nAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADdyubsXt379/S8dPsW/fvi2b+5xz\nzpl77M6dOyfNffDgwbnHvva1r50091Z68sknJ43/8Y9/PPfYqbdWPPfcc+cee+TIkUlzs325ggWA\nBgILAA0EFgAaCCwANFg3sFV1U1U9VlWHTth2blXdWVU/mf2c/xMhALCCNnIF+69J9jxj2weT7B9j\nvDzJ/tnvAMDMuoEdY9yV5NgzNl+V5ObZ45uTvHXB6wKApTbv38GeN8Y4Onv8SJLzTrZjVe1NsnfO\neQBgKU3+ookxxqiqcYrnb0xyY5Kcaj8AWCXzfor40arakSSzn48tbkkAsPzmDextSa6ZPb4myVcW\nsxwAWA0b+TOdzyf5VpI/q6qHqupvk3wsyRur6idJ/mr2OwAws+57sGOMq0/y1BULXgsArAzf5AQA\nDQQWABrUGJv3lzP+TAfo8va3v33usbfeeuukuQ8dOrT+Tifxhje8YdLcx44983uA2AQHxxi71tvJ\nFSwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWA\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7958e68c88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Actual class of test image:\", test_lbl[0])\n",
"plt.imshow(test_img[0].reshape((28,28)))"
]
},
{