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
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n"
]
}
],
"source": [
"iris = DataSet(name=\"iris\")\n",
"iris.remove_examples(\"virginica\")\n",
"iris.classes_to_numbers()\n",
"\n",
"mlp = NeuralNetLearner(iris)\n",
"print(mlp([5,3,1,0.1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The output is 0, which means the item is classified in the first class, *setosa*. As the perceptron learner, it has classified the example correctly."
]
},
"\n",
"### Overview\n",
"\n",
"The Naive Bayes algorithm is a probabilistic classifier, making use of [Bayes' Theorem](https://en.wikipedia.org/wiki/Bayes%27_theorem). The theorem states that the conditional probability of **A** given **B** equals the conditional probability of **B** given **A** multiplied by the probability of **A**, divided by the probability of **B**.\n",
"$$P(A|B) = \\dfrac{P(B|A)*P(A)}{P(B)}$$\n",
"From the theory of Probabilities we have the Multiplication Rule, if the events *X* are independent the following is true:\n",
"\n",
"$$P(X_{1} \\cap X_{2} \\cap ... \\cap X_{n}) = P(X_{1})*P(X_{2})*...*P(X_{n})$$\n",
"\n",
"For conditional probabilities this becomes:\n",
"\n",
"$$P(X_{1}, X_{2}, ..., X_{n}|Y) = P(X_{1}|Y)*P(X_{2}|Y)*...*P(X_{n}|Y)$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
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
"#### Classifying an Item\n",
"\n",
"How can we use the above to classify an item though?\n",
"\n",
"We have a dataset with a set of classes (**C**) and we want to classify an item with a set of features (**F**). Essentially what we want to do is predict the class of an item given the features.\n",
"\n",
"For a specific class, **Class**, we will find the conditional probability given the item features:\n",
"\n",
"$$P(Class|F) = \\dfrac{P(F|Class)*P(Class)}{P(F)}$$\n",
"\n",
"We will do this for every class and we will pick the maximum. This will be the class the item is classified in.\n",
"\n",
"The features though are a vector with many elements. We need to break the probabilities up using the multiplication rule. Thus the above equation becomes:\n",
"\n",
"$$P(Class|F) = \\dfrac{P(Class)*P(F_{1}|Class)*P(F_{2}|Class)*...*P(F_{n}|Class)}{P(F_{1})*P(F_{2})*...*P(F_{n})}$$\n",
"\n",
"The calculation of the conditional probability then depends on the calculation of the following:\n",
"\n",
"*a)* The probability of **Class** in the dataset.\n",
"\n",
"*b)* The conditional probability of each feature occuring in an item classified in **Class**.\n",
"\n",
"*c)* The probabilities of each individual feature.\n",
"\n",
"For *a)*, we will count how many times **Class** occurs in the dataset (aka how many items are classified in a particular class).\n",
"\n",
"For *b)*, if the feature values are discrete ('Blue', '3', 'Tall', etc.), we will count how many times a feature value occurs in items of each class. If the feature values are not discrete, we will go a different route. We will use a distribution function to calculate the probability of values for a given class and feature. If we know the distribution function of the dataset, then great, we will use it to compute the probabilities. If we don't know the function, we can assume the dataset follows the normal (Gaussian) distribution without much loss of accuracy. In fact, it can be proven that any distribution tends to the Gaussian the larger the population gets (see [Central Limit Theorem](https://en.wikipedia.org/wiki/Central_limit_theorem)).\n",
"\n",
"*NOTE:* If the values are continuous but use the discrete approach, there might be issues if we are not lucky. For one, if we have two values, '5.0 and 5.1', with the discrete approach they will be two completely different values, despite being so close. Second, if we are trying to classify an item with a feature value of '5.15', if the value does not appear for the feature, its probability will be 0. This might lead to misclassification. Generally, the continuous approach is more accurate and more useful, despite the overhead of calculating the distribution function.\n",
"\n",
"The last one, *c)*, is tricky. If feature values are discrete, we can count how many times they occur in the dataset. But what if the feature values are continuous? Imagine a dataset with a height feature. Is it worth it to count how many times each value occurs? Most of the time it is not, since there can be miscellaneous differences in the values (for example, 1.7 meters and 1.700001 meters are practically equal, but they count as different values).\n",
"\n",
"So as we cannot calculate the feature value probabilities, what are we going to do?\n",
"\n",
"Let's take a step back and rethink exactly what we are doing. We are essentially comparing conditional probabilities of all the classes. For two classes, **A** and **B**, we want to know which one is greater:\n",
"\n",
"$$\\dfrac{P(F|A)*P(A)}{P(F)} vs. \\dfrac{P(F|B)*P(B)}{P(F)}$$\n",
"\n",
"Wait, **P(F)** is the same for both the classes! In fact, it is the same for every combination of classes. That is because **P(F)** does not depend on a class, thus being independent of the classes.\n",
"\n",
"So, for *c)*, we actually don't need to calculate it at all."
]
},
{
"cell_type": "markdown",
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
1189
1190
1191
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
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
"metadata": {},
"source": [
"#### Wrapping It Up\n",
"\n",
"Classifying an item to a class then becomes a matter of calculating the conditional probabilities of feature values and the probabilities of classes. This is something very desirable and computationally delicious.\n",
"\n",
"Remember though that all the above are true because we made the assumption that the features are independent. In most real-world cases that is not true though. Is that an issue here? Fret not, for the the algorithm is very efficient even with that assumption. That is why the algorithm is called **Naive** Bayes Classifier. We (naively) assume that the features are independent to make computations easier."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 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,
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
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
"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",
"The output is 0, which means the item is classified in the first class, \"Setosa\". This is indeed correct. Note that the Perceptron algorithm is not perfect and may produce false classifications."
]
},
{
"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",
"execution_count": 4,
"metadata": {},
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
"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",
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
},
"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": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"<matplotlib.figure.Figure at 0x7f3150035390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# takes 5-10 seconds to execute this\n",
"show_MNIST(\"training\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\niebXrVs3AB599FEAihYtGmobhDruPv30UwDq168fxmgjx+t9+J///AeAatWqUbNmTQDatGkDwGef\nfcZ///tfwP0/eOCBB1i5ciUACxYsAGDmzJkAbNu2LbxJnAA9Tl28mmOBAgUASE9PB+CMM84w+3nh\nQqfvdL58+QBo1aoV//vf/wC45pprAFi8eHHE3xmvqr1zzz2XCRMmANCkSRMAXnrpJW6++eacbjpb\n9Dh1iccc27dvD8CsWbMAePXVV81rOcFPc4wVYZ2Lqb6QypcvHyed5Ahv//zjNIYuUKAAR44cAeCv\nv/4Kazt+PGBKlCgBQL9+/bjyyisBuOSSS4Dw5xWIFxfvQ4cOAXDw4EEAVqxYYW42sngA9yYjPy+7\n7DIT1rvsssvM73qJ1/tw1apVANSrVy/wd+W7stp2hvd37twJwI4dO3j44YcB5yIXLX48TgO57777\nABg5ciQAF198MWvWrIloG/Geo4xVxg5w4MABAL744gsA8ufPD0CtWrXMew0aNADcBVgkxGsh1aFD\nB7OYF5544gnuvffenG46W/x+nHpBoudYoUIFypUrB8CHH34Y9H6HDh0AmD17dtTfkag5tmvXDoA7\n7riDyy+/PORntm3bZt779ttvo/4utT9QFEVRFEWJISmjSBUqVAiAkiVLAo5KA3D55ZdzyimnAK7C\ncd111/HDDz8AsGTJEgDGjx/Pjz/+CMCxY8eCtp/op4tARGEbNWoU4Mz17bffBuDaa68F4O+//454\nu148BV9xxRUAbNy4McPPE9G1a1eeffZZAP7880/AfaL/+uuvw9rGifB6H5577rkAlC9fniFDhoQ1\nBnlCrFixYpafkWN33LhxYW0zED8dp6F48sknAejTpw8A119/PfPnz49oG/GcY/PmzVm0aJFsD4At\nW7ZQoUIF83dwQ3t79+7ljjvuAGD58uVRf28iFKnff/8dgNKlS4e8BnqJ349TL0j0HOvXr5+l2lSh\nQgVz7GZ3LToR8Zxj/vz5mTJlCgBt27YF4OSTT+bLL78E3IhHsWLFAOjZs6e5l0jERqIIkaCKlKIo\niqIoSgyJa4uYWNG+fXsGDBgAwIUXXgiEzlG57rrrzN/POussAO666y7z8/TTTwfcp0y/0qpVK8BV\nLr777jvuvPNOIDolyktEGYuUmTNnctVVVwFu3pQoiX7lq6++Mj/feuutsH6natWqACYH5ZZbbgn6\n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\n89innnoqqCfmc8895xuLksymhZs3bzZP7RLqadq0KWlpaYCrjgoLFy5MeHgyVoiSIyXzfkYKOAIR\nU+5veUsAACAASURBVNhQ+0cUqUDkPpvsXHvttUCwM////ve/E/bn8wpVpBRFURRFUaLEV4qUtAuR\n+G+oVXQ0yNPgzz//DDjtYGbMmOHJtr0kVO6BqGhTpkzxXc+5SBGTux49egQpE3nz5jXmjpLLFqjI\nCJKr8/XXX7NmzZpYDjfuiEGeJITatm062Itam4zIk296ejrdunUD3ITeZDLmlETXCy64gEGDBgGu\nYlOqVKmgz0tbij59+hhF1W+0aNHCnEeSayKWFoFIn7dnnnkmfoOLM6L6RtpCJBFk7rUHrioaaJEi\nyeah+te+8cYbMRpdfMlcfCbEyyoGfLaQEryWjsWL59577/V0u14jDWIDEc+epUuXxns4niM99IYO\nHWpuRNn1RwqF/H/IT7/Svn170/hWJPfsHgwKFy5sPNDkRnbs2DE6deoEZEyuTDb++ecfwAkLie+S\nuJ6PHDkyIWP64Ycfgnx3wL1WnHbaaYBT+HDqqacCbjPUUqVKBfUwkwqjuXPnmurTlStXAvhqEZWe\nng7AddddBziFH6GKP6QieNy4cYDbj04adacSWTX29TMy5sCfAwcOBKBSpUqAkwYhjt4NGjTI8PvJ\n9ACTHZdeein58uXL8JpUn0o3gXigoT1FURRFUZQosUI9lcXsy8LsAC2r7LZt25qSeUl+zIrXX38d\ncHtDBSJJzDl5MoxHJ28p+//666/Na/I037NnT+PVEyti3XE+EOlHJipc/vz5zT4UiVrclTt16mTK\ntiXBPPMTVjjEsxt7u3btjAO09M5r1apVkColickvvfSS8R2S4//11183Hj/h2nXEc46RUrhwYaPS\nSCFJjx49WLRoEUDYrudezHHSpEkmzChFEOJNEw4TJ04E3DCQdBkILJDICbE6F6W33ooVKwDYtm0b\n9erVA9w5HD582JyL4tHjNYk+TvPnzx/UzUK6B3gVuYjlHMXlW4pvLMsKqbBmVk4l2vPwww8zYcKE\nSL82iETtR0mD+fzzz4OiGr179wbcczSnhDNHVaQURVEURVGixJeKVCCFChUC4PnnnwdC5xEBzJs3\nL9v3c0qiFKmffvoJgMqVK0e72bCJpyKVCOL59NSkSRPzhH/eeecBzr4U52857+T4lt6KgCnZbdOm\n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\njU2x52F6etpls169eiXJz0LONVNv69atkvwGdOXl5ZEcwZGMnTS10RvNzc1uRJEdQ+/o6MjNxS3A\n7hS3b9/usoF2qrKsrMzV31jtgmloaIjcKT1JbvxQdXW1qwOLZ5lUu+PduHGju/tvbm6WlP6MVDrV\n1tZK8to32L9/Y2OjpOSzEWtqatx7cb5MlL1Ou7u7NTo6ms5LDsw+Gywz+uvXL9ckNigbV2RtcWKx\nWN6cbjty5IgkqbKy0jV+bW9vl+RlHffu3SvJ/3/Uar8OHDiQs+csiNHRUdec0/6vOHv2bNKmy/Ya\nTba7Zo2CrWH3YrNRQUUmkKqtrU0oVBwYGEjoKjwX64VixZ+WwrQjoZLfK8qK1fNBRUWFpJnBRE9P\nT46uJhzbxpvd1VryetZI3pvAfm3me4PEswCtuLg4bwIpY9cbv42XrKA3it6/f69jx45Jkvu6Zs0a\n90FugYcFGdbLJmpsW+rixYtuuKnZuXOn276zYekWREn+llKU2XUXFha6QxH3799PeJwNie3p6dHa\ntWuT/qwfP364oca27ZfL95yVg1jg09rauugicwtG7GdNTk7mTSAVXxphA7Tt81byb3psZqAFJceP\nH1dTU1O2LjMlVnS+a9cu91oOYmJiwh3gGRkZyci1Gbb2AAAAQopMRqqjoyPhSPvhw4eTZqKsJYKl\n/pqbm90d8eyGiN+/f3epezuinS9N1iR/e6SwsNAVU0e1cWMsFku6FWB3RbZtYkelJb+Nwb9//xL+\n3ELfs98fHByUJD179iyVy88J205YvXp1jq8kPWKxmGvpYK5duyYpujPnrDt7U1NToLv0nz9/ujmX\nVrwdZRs2bJAkTU1NuS7fdqe+cuVKl/G1tcdPj7CtwKmpKUne1kim7+4Xw7b/UznWbwXr9tk1MTHh\nti2jyg582LV//vxZN27cmPPxliW2hqxVVVXatGmTJH8mZNQ1Nja67vNWUrBsWWIIY1uWbW1tevDg\nQVaujYwUAABASJHJSG3bti2hFubcuXP6/ft3wmPXrVsnSTOKyO14o7VGsCzUpUuXcj62IBW7d++W\n5NUJ2fHcqBofH3fZMqtbkvxGnCb+ebasUrI6qPm+d/fuXb1+/VqSN28pX1l9Rnwm1cbH5KOWlhZ3\ngKCvr0+Sn5GKKisYv3Xrliv4j2evaav1evnypRtTlQ+sJrS7u1u9vb1zPs7q9F68eOHqUqwOKp8/\nQxdi9afZbAWUqqKiIkl++4P29vZADaot07Znzx43Fm12a5mo+vDhg2uNlGyXwnYk7HCFHeTJhsgE\nUiMjIy5oMJbGW8ibN2/U2dkpSfOmN/ORza7LBwMDAy64tQ/v8vLyQH92fHxcHz9+lOSdzpDmLzYP\nOog0qizVbj3BJL87er51VZb8AvkTJ064mxnbbo9612/bchwaGtLQ0FCOryb9bL7j4OCgO+lqHaQf\nP37sHmfbJV++fIlsd/1MsMME+RRI2XQLe+2eP3/eTQsIOjUgU12+M8k+L+NPBNvni/UNy2YAZdja\nAwAACCkyGanq6moNDw9LUkJmajYrFrftu97e3pxEoUhkd7/WXbi4uFiXL1+W5PeHSpZxuX79ur59\n+5alq8yN/fv368yZM5L8zuYFBQXu+11dXZKin8FJxrqDr1ixwh0q+Pr1ay4vCbN0dna6zD18lonK\np4yUfc7ae62oqMgdgLBu5nYIJ97mzZvdrxc7qzbXbt68OaOdkbl69aqkxc9wTScyUgAAACFFJiMl\neVkpzGTN1crKygLPsYqC+LsDaxT3f9Lb2+umlpvly5cntPh49+6dJK/ZXNSPXM8nvpbv9u3bObwS\nIBhrwzK7zUq+NOOU/FmdbW1t7vPGar7sazL9/f2qq6vL/AWmUUlJScK0BCm1eYjpEqlAComsI619\nRX44ffq0/vz5I8k/FRbPOhJbUf7fv3+zd3EZYP2GPn36pAsXLuT4aoCFlZSUSEo8HZxKT6pss8Ly\nuro6HTx4UJLfY6qgoMB99tgNeX9/v/tq41PyWUNDQyQOiLC1BwAAEFIsmwV2sVgsf6r5Zpmenp57\nemecpb7Gpb4+iTVGHWv0LPX1SZld4759+yRJd+7ckSQ3OeLo0aNpmX4RhTVmWjbX+PTpU5WWlkry\np5ScOnUq45m1IGskIwUAABASGamAuLvwLPX1Sawx6lijZ6mvT8rOGu1wxOTkpCR/DmGqorTGTGGN\nHgKpgHjBeJb6+iTWGHWs0bPU1yexxqhjjR629gAAAELKakYKAABgKSEjBQAAEBKBFAAAQEgEUgAA\nACERSAEAAIREIAUAABASgRQAAEBIBFIAAAAhEUgBAACERCAFAAAQEoEUAABASARSAAAAIRFIAQAA\nhEQgBQAAEBKBFAAAQEgEUgAAACERSAEAAIREIAUAABASgRQAAEBIBFIAAAAhEUgBAACERCAFAAAQ\nEoEUAABASARSAAAAIf0HBztPDx0KfCcAAAAASUVORK5CYII=\n",
"<matplotlib.figure.Figure at 0x7f3144b93320>"
]
},
"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",
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
},
"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": 9,
"metadata": {},
"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": "iVBORw0KGgoAAAANSUhEUgAAAlMAAABeCAYAAAAHQJEfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnWlsZNl13/+3ilux2M0i2SS7m0P2NtOLZjRqYbQACRwb\nSBzZCZI4UT4oURQjQJBAggxkcZB8cIBEdmAECOIA3gIDiq1EQQAFkB3HMQwIMQJFFpTOKNKMZtQz\nPdM7m2zua7FYC+vmw+P/1Kn7XrdaXcsjS+cHNB5ZXay6993lnfO/557rvPcwDMMwDMMwno9M2gUw\nDMMwDMM4zpgxZRiGYRiG0QJmTBmGYRiGYbSAGVOGYRiGYRgtYMaUYRiGYRhGC5gxZRiGYRiG0QJm\nTBmGYRiGYbTAsTemnHPjzrnfdc4VnXP3nXN/M+0ytRvn3Oedc68758rOud9Juzztxjk36Jz74mH7\n7Tjnvuuc++m0y9VunHNfds4tOue2nXO3nHN/N+0ydQLn3EvOuX3n3JfTLku7cc79r8O67R7+ezft\nMnUC59ynnHM3D+fV2865H0u7TO1CtR3/HTjnfjXtcrUT59x559wfOuc2nHOPnXO/5pzrS7tc7cQ5\nd80598fOuS3n3PvOub+aZnmOvTEF4NcBVABMA/g0gN90zr2cbpHazgKAXwLwH9IuSIfoA/AQwI8D\nGAXwCwC+4pw7n2KZOsEvAzjvvT8J4C8D+CXn3Gspl6kT/DqA/5t2ITrI5733I4f/rqRdmHbjnPtJ\nAP8awN8BcALAnwFwJ9VCtRHVdiMATgMoAfivKRer3fwGgGUAZwBcRzS3fi7VErWRQ8PwvwH4AwDj\nAP4egC875y6nVaZjbUw55/IAPgngn3vvd7333wDw+wA+k27J2ov3/qve+98DsJZ2WTqB977ovf8X\n3vt73vu69/4PANwF0FOGhvf+be99mb8e/ruUYpHajnPuUwA2AfzPtMtiPDf/EsAXvPffOhyPj7z3\nj9IuVIf4JCKj43+nXZA2cwHAV7z3+977xwD+CEAviQxXAZwF8Cve+wPv/R8D+BOk+Ow/1sYUgMsA\nat77W+q1N9BbneZHDufcNKK2fTvtsrQb59xvOOf2ALwDYBHAH6ZcpLbhnDsJ4AsA/lHaZekwv+yc\nW3XO/Ylz7ifSLkw7cc5lAXwEwOTh0sn84RJRLu2ydYifBfAffe+dq/bvAHzKOTfsnJsB8NOIDKpe\nxgF4Ja0vP+7G1AiA7eC1LUTStHEMcc71A/jPAL7kvX8n7fK0G+/95xD1zx8D8FUA5af/xbHiFwF8\n0Xs/n3ZBOsg/BXARwAyA3wLw351zvaQuTgPoB/DXEfXR6wA+jGjpvadwzp1DtPz1pbTL0gG+jkhU\n2AYwD+B1AL+Xaonay7uIFMV/4pzrd879eURtOZxWgY67MbUL4GTw2kkAOymUxWgR51wGwH9CFAP3\n+ZSL0zEOZelvAHgBwGfTLk87cM5dB/DnAPxK2mXpJN77/+O93/Hel733X0K0tPAX0i5XGykdXn/V\ne7/ovV8F8G/RW3UknwHwDe/93bQL0k4O59E/QuSs5QGcAjCGKA6uJ/DeVwH8DIC/COAxgH8M4CuI\nDMdUOO7G1C0Afc65l9RrH0IPLg/1Os45B+CLiDzjTx4Oll6nD70TM/UTAM4DeOCcewzg5wF80jn3\n/9IsVBfwiJYXegLv/QaiB5Je9uq1JTDyt9GbqtQ4gDkAv3Zo9K8B+G30mEHsvX/Te//j3vsJ7/0n\nECnGN9Iqz7E2prz3RUTW9xecc3nn3J8G8FcQqRs9g3Ouzzk3BCALIOucG+q1ba4AfhPANQB/yXtf\n+kFvPm4456YOt5uPOOeyzrlPAPgb6J1A7d9CZBheP/z37wH8DwCfSLNQ7cQ5V3DOfYLjzzn3aUQ7\n3XotFuW3AfzcYZ8dA/APEe2a6hmcc38K0VJtr+3iw6GaeBfAZw/7aQFRbNib6ZasvTjnXj0ci8PO\nuZ9HtHPxd9Iqz7E2pg75HIAcovXT/wLgs977XlOmfgGR/P7PAPytw597JobhMHbh7yN6CD9W+V8+\nnXLR2olHtKQ3D2ADwL8B8A+897+faqnahPd+z3v/mP8QLcHve+9X0i5bG+lHlKJkBcAqgJ8D8DPB\nBphe4BcRpba4BeAmgO8A+Feplqj9/CyAr3rvezUk5K8B+ClEffV9AFVERnEv8RlEm3iWAfxZAD+p\ndkt3Hdd7mxgMwzAMwzC6Ry8oU4ZhGIZhGKlhxpRhGIZhGEYLmDFlGIZhGIbRAmZMGYZhGIZhtIAZ\nU4ZhGIZhGC3Q1VxFzrljvXXQe/8Dk/P1eh17vX6A1fE4YHXs/foBVsfjgNUxotcSPxqGYRjPSHTw\nQPJrz5I2x1LrGEaEGVNG1+AknXRNmtQ5UfNar9ebfjcM49nR4y2TiSI8+vr6mq4DAwMYHBwEALkO\nDAzI+zkGK5UKAKBUKqFUig4sKJejfIm1Ws3GqvEjh8VMGYZhGIZhtMCxVaaSVI3wCsTVjaTXjoP3\nFCo3zrknlvso1IflpUfb39+PXC4HAHIdHh4GAOTzeXmNHrL3Xjzd3d1dAMD29jYAYG9vT7zhWq0G\nADg4OOhshZ6RsN68JvVT7/1T1bfj1D+fRrhslKRCao5yfXXZk+abpyms+vc02pZly2az6O/vB9BQ\nnzgWR0ZGUCgUAACnTp0CABQKBXk/x9nOTnQKy/LyMpaWlgAAGxsbAKLxWa1G55SbQnW0CPuntUv7\nMGXKMAzDMAyjBY6FMuWcQzabBQDxkIaGhgAAo6OjGB8fl595pcJBdYOqxtramnhQfG1/f18UjqNg\nqdN7YB1yuRxOnjwJIPIcgSiOgV5fGMdQLpext7cHAKLgVCoV8So7XcdMJtNUdiBqk6mpKQDA2bNn\nAQBzc3MAgNnZWfk/1u/g4EDa58GDBwCA27dvy++PHj0C0PCGi8WitGE3SOqTuVwO+XweQKMv0ssf\nGRmRPsv2rdVqorqFfXJnZwfFYhFAo10PDg5S759PU4KT1FIdn5N05c/smwcHBzG1kf270yTFFLFt\n9ZU/DwwMyJX9nbDMtVotVp9KpSLzEq9s4060b6iWZrNZKTsVqRMnTgAAJiYmcObMGQDA6dOnATQr\nU+yT7PtbW1tSd76WyWR+oPpotIdwTLEtBgcHYysAbHOgoejv7+/LNeyLFvv2w2HKlGEYhmEYRgsc\naWVKW9ta4QAg3tOFCxdw+fJl+RkApqenRQWg5z8/Pw8AeO+993Dz5k0AwL179wAAS0tLEgPQTXUj\nJCnOCIi8Rqo59BapVAEN74Kqxvr6uigd9CgODg467mVoRY3e0MTEBADghRdewMWLFwEAL730UtP1\n3LlzUi8qU865mDL11ltvAQDeeOMNuTfk4OBA1LhOKhlsm8HBQVGhqD6dPn0a58+fB9Doi/z97Nmz\noqDSgy+VSlheXgbQUN1u3bolv1N9W1lZARD15W4qqFqhYZm1qhEqEs65mJrknIvF5XBsZrPZJrUG\niPoy1Q9e6TF3qs5hHQcGBqRtOc7Yj8fHx6W9ORflcjm5F/wstlO5XJZ6cI7Z2NjA2toagEbb8vdy\nudz2eoYKYl9fn7Qh51XWc2pqSuZWqsW5XE7agHPN5uYmgGjO4bg7CgpqUhxb+H+apHImxbgdJfRz\nkWOJyuL09DSAaE7l3DM7Owsg6sPsp3wuco65e/cu7t+/DwB4/PgxgOg5ktS2QDr3JEmF02ooCVds\ntOodxqa2kyNpTIWSZS6Xk2BILg1dvXoVAPDKK6/Iz/y/iYkJedhyUuNDa2ZmRiZBTvL1el0CJjnx\npTmAkoyq0DjhFWhM0qRYLMaCfrv18AWidqNRNDk5CSAyJjioZ2ZmADQCXHO5nHR4Ttb9/f3SPvwM\nTg5bW1vY2toC0DAgd3d35W87MVBYN708wjZgvV588UVcuXIFAHDp0iUAkREJRA9hTnhabuekRmOZ\nn5nP52NBv9VqtSuTme5/4ZJWLpeTerBP8j3ee2kDTsKsC9CoG42RbDYr72cf3tzclLp1awmME7J+\nMLHPsf3Y9+bm5sTYGBsbA/D01AG7u7vi2KyurgKI5iI+xPjdOq1AOx06bUAkPYQ5Ttk2p0+fFiOK\n7VytVrG+vg4AePjwYdN1eXlZxiDroB9a3ein2Ww2tuQ+MDAQ67vaIXiaYRUa+OVyWerG50QaS2Da\n2AeitmO7sX9eu3YNAPDyyy/LHMT2zOfzUmbOOwsLCwAiI4zjUo9r9lmOT93GnUTPQeGSNMfdzMwM\nzp07B6Axf544cULaiBsj6Izfv39f7ABdn3Y9L2yZzzAMwzAMowWOnDKllxaoTIyNjYnq9PLLLwMA\nXn31VQDAlStXROmgVO2cE2uT6hatc+99TAUpFotiqfO1NJf7krw6Wuf0FsfHx2OeFJcKqtWq1ENv\nUe60B6WVKXq+XEYYHByU76f6p7dUh0stehkt9DDHxsbEI2Ob53I58ZA7QaiWDg0NSfl4HRgYkLag\nGsH7Pz8/3xSozrKzj/Nz6R1OTU3J/eF1fX29K4G92uMPNxKMjY2JokiFl/Uql8vi8enlLvZZjkGq\nPn19fbJcxL6hFa1uqam6TYGoDejpcimaiuMLL7wg9WfbAc3qIdCoR61Wk8+lZz08PCztzPrz/zrR\nh3V7AlE/5fexHFwempyclHbl362urooSRS9/cXERQOThh0tAnZprQsVeKxYsM5fSJyYm5Gde9VwR\njjutVrEN2TZLS0uyBMb6r6ysyDOjk8op0Sox1cSpqalERQqIFFTOS1TxV1ZWpKzhEtjJkydlfCap\n/aEy1+k2Zrvk83lpP6pQH/rQhwAAr732Gl555RUADQV5aGhI5iCGTnznO98BALz++uv4/ve/D6AR\n9rO5uRm7J8+LKVOGYRiGYRgtcCSVKR14DUTrofQQP/CBDwBoeIxTU1NiIdODLxaLYkHzs+iVDA4O\nispFz2NlZUU8LSoKaSpTRCtU9CpZj8nJSfEaWGYdiB4GDnZTmdJb3tkOu7u7sl5NL4dxI/V6XTwk\n/t3JkyclNoUqAe9BLpcTpUTHQ3RTtanX63Jv2Y8ymYx4dVQjSL1el/LTi56ZmZF4K3qRbCMdXPm0\noNpOkBQzxftdKBRks0AYUK9VJXrt3nu5F3w/29V7L+OMMTm1Wi0Wl9HpuJswZqpQKIiXnpQmgOXR\nSWTDVCT8XaveOgCdP3N8dDLGKElVDWOlWN+JiQm5D2yT+fl5UWY4T7Lu1Wq1a6krWI8w3mtyclLm\nCG78uHjxYtPmD74PiMZakjIVzlmcr27evIkbN240laFarTalEAA6E0ekVUWWWccgsm5UZvh8KJfL\n8jykCrOxsSH9i89WrbKGCurIyEjsPnVyDtLPftZxenpaNph9/OMfBwB89KMfBRDFpbLMnINLpVKs\nHai6zszMyIYPPXbDTT3POwaPnDGVyWTkBrHznzt3LhbYy0mgVqtJp2en0bvz2Bm4FHjp0iUZhDrf\n0fvvvw+gEVjJSTFNdOOyHjpQlMGBYS6tnZ2dWIbwbk14/K4we/njx4+lTdi+rJ/OgcVBe/r0aXnI\nMeCQE0B/f3/T7o1uondpUT7n5LuxsSGTQTjpZLNZ6Xec+MbGxpp2vQGNCXlvb0/unW7LbmfM1nI7\ny0zDghMxy7S8vNzUpkDUF8LxzMmtVCrJ5Mb+sre3F1ui7pYxxTE2OjoqZaWRwT4INJwXPqxWV1el\nL3AJm8bU3t6evKZz+vA1PakDnRmnSctiejlZXwuFgvQ37uq6f/++/Bxu0Onr64vtkOpUcHZSXjeg\nOYcdx9aFCxdk9zD7m94pzP7JazablT7O97HflkolWd7Tc9APcyD086Idm3A5+sSJE7GgcY6Z9fV1\neabduXMHQNTXWH46cVpk0AH6rFc3guy1wcg25XPuwoULeO211wBArmzP+fl5vPvuuwCi3YhAVP9w\n84h2YlnfcFNCO7BlPsMwDMMwjBY4cspUf3+/LINQObp06ZJ4GbQ6yeLiolintMQfPHggHhQtXf49\n0AgmpZV65syZxKDStNHeAOvBZYczZ86IDE+vmAHoOii024oUEHmm9G5Zh93dXbm3oUdHbwpotMmJ\nEyfk88L8Inp5SG9V7qT3xM/m95ZKJfmZqoLeoh3m8ZmYmBDv+cUXXwQAXL58Wfq43koPRCpPKElX\nKpWuprjQOaV0HhuqvPSKWb5arSZyO1VInUqBihbH8NLSkihSfP/Ozo681sm+q5dO6fHroGyOM9aV\nS5Q7OztNy19AtL2cY49jke2olTa9uYV9h+3O8dLuOmvljW2Zz+ebFG6g0SYDAwOyXZ5Le7qdwpxh\nerOPVnvC3GCt9tunLS/prPkci5ubm1IP9kmWb2trK5bOYXh4WAKcw+dDJpOJjX/dht3O+cb+qkMB\niA494IoN+6tWidmfOYYzmUxsLO7u7kq/7ORytE47Q3WQc+WVK1ekPWgXMD/kt771LXz7298G0FiS\nLRQKsjmNY5jtWCgUZD4OQyjagSlThmEYhmEYLXBklClaiIODg+I1MVD84sWLYmVyvZzxCm+//Tbe\nfPNNAI2tkMvLy2Kh63VyILJWw1QKo6OjEhMRBg6nibb+aZUzwHJ8fFy8Bt4Lesf7+/tdVaSI9t7C\nAHi9zT58P9C472yTfD4vbUdvWCtZOiYF6Ezm6KSy6qDocDt8f3+/eFZUYxgEe/XqVdnGyySzZ86c\nkc/lmj89rIWFBYmJo8pRrVa7ErtAdAyDTpTH8cOxqJNSsszsm6OjoxLjwBgG3ptHjx6JQkBFZ39/\nv6tZlnUsCtWW8fFxKSvVCo4/HdzKdi+Xy9LPqYhTDdjZ2ZE+yvfr0wjCayeyn7N+VKZOnjwpbUJl\nivXb3NyU+CgqowcHBzIn61QnhG3Nfrq9vS19KYzdfF50/I6OWwSie8yyso71el3mRd53vkcnGuVn\nTU5O4mMf+xiAhmrDOu7u7kr/pMqVFLjcSbz3MXWsUqk0KWVAYwwPDQ2J6kRFNJ/PS8wx1XHOu4uL\ni9LuVPSS0j90Ishex/Rxzmf/nJ2dlfbgmHr99dcBAN/85jdFpaLSNDU1JSor48I432xubjadixrW\np9V2NGXKMAzDMAyjBY6MMkXrdGRkpOncPSDyaOnx01JmfNSbb76Jt99+G0DDot7b24tZ8fQsNjY2\nxHukFayPa9FHfaRFuC6dyWQktoaecrVaFSWKKQb0duU0j8M5ODiIbRvu6+uTn5MSdFKRoqd8+vRp\n8UjYJvQwt7e3m9b1+X+scyd22YSfpZU/XQ96VEyexx0oH/7wh2Xtn+/JZDKiRIXHGZVKpa6mCNDo\nmCmOEbbL3Nyc9MXwSJ+1tTVpdyoY09PT4gVT7aGnXCqVYsly9X3t5G6ppJgprcKxvvRu+X/lclk8\nX5Y9m82Khx+eGVmr1aRuWskMlahOnpeZFBOmk3QCjTG2tbUl8wr/7vz58/I+qh38v3K5LGoNlY2+\nvr6YitSOPszP5Fih6rW9vR07o61cLsvP7J8s3+rqqrRJUows25p9eW1trUmtAaJnTKePVAEa90sf\neaaPYOK957xBBfns2bPS3nyOjo2NSX9mP+UuxTt37si5oNzRvr6+HlMWOxErpWPBwmSyVEyBRloO\nqvhbW1tNKRSAaN69fv06gIb6xvtVqVSkL3Rih/SRMaY4GAqFgiwj6LP2OJAY9MlMpjdv3pTG14cV\nhzlJ9GGHYboA730suK8b216flXw+L3m1KLc/fPiwKRsv0PkDYX8QSQ8GfV85cXGy4oN6dHRUDGhu\nFLh48WJTpmygIbGvr6/LhM9J5ODgIDY4O7F0kvRZ7LsnTpyQejA3Co2qy5cvS31YvlKpJBM2Jzca\nkGNjY7EMxpVKpSvLt/oEAk7ONITm5uakD3JC4n0/ceJELG/Wq6++ig9+8IMAGgYZ+61e+tFBtfw5\nXFrtBM65WL/ROX3CpelcLiftyHLlcrmmvgw0DBedOkDPQd061y3JmJqcnJQAX5aXhuHW1pbcBz6M\n5ubmpO04drWTyuU0fo9ehg8zaLdS3yednVcqlWLGlN4gwgcol6CLxaJ8ln7u0FHlGOTfPXr0SIwp\nvRmkG2hjKlxK1kHm3EDFZ+fs7KzMQWR0dFTuCTdtvfPOOwCicBkaKZxbS6VSU8ZzXZ52kpT+Qacu\nYN/hfMN+fOnSJZlnGE5x/fp1Mabo9NFI1Jt69AkF7aqTLfMZhmEYhmG0wJFRpmiRTkxMiHVNb2h4\neFgsSlrP7733HoBoaY+KlD4jKTyPSqsi/C56OPpU8KOgRBGdwJKKDV9bX1+XZGysfxpB55qkbL3a\nY6d0S2VDJ3Gk8sG2n56eFg8kzCC9vr7epEjxu8N2JZ3I/q4VDfaxvr4+8ajCLNn37t0TD55or4if\nwfpfvHhRAi5ZV61MdbKttTIVZsjWZ7fRU6SCMTIyIp4vl22vXbsmgfdsTy636PMX2U/08ok+6w3o\njMKo02zwPq+trYl6xjKzP+/t7cXG29DQkNwT3jt9zluoziQltezGMh/v8fj4eGx5Ty9FUl3lysDc\n3Jz8Ld/HMZnJZKQuvH+rq6uyItDOzNlJyUGBaFywL2plKlw6Z9mBuBJ89epV2RjCPsnUEPPz84nq\nf3gyQSefHfV6XerLemxtbYkyxWcl31MoFKT92HcrlYooUVRruMLz4MGDpk0gQPJydCfRmwy06qjr\nBDROQanX600pW4BoSZP9l32B8+69e/eaVDd+hilThmEYhmEYR4Ajo0zRej516lRsu269Xo8pUzro\nOty2qc8Uo4fMNeXx8XHxmvTW2nALaJro8+mASKWgB0Ur/d69exKQ141jN54FfXYey8u2nJmZkTVs\nXqnCzMzMiDfBNs9ms01xHEBDmSoWi+LBsJ2HhoZiZ2uFnmw70N6oPqcPiDw6ekGMSWDZ8/l8LDZn\naGhI+iXvEz2tubm52Bb13d3dWAxDOwk97cHBwVjskP5exlNReaJCpesxMzMjqlYYiF2v1xPjlbp1\nBiHLoI8DAqIUK+xXVCf0lvvwCCCdPJH3i/emWCzK57IvdCsWhWVMOn6F7cNysxz5fL5pWzoQ9dMw\nQbDeWMLPpaKjjybR5WgX4biuVqux79OKWXhUld6Cz00hH/nIR0Qd5zOA6uT8/LzMRd0IOn8SYX2q\n1Wos/lfPwWFKmbW1NUklwLrpVCZpHD2mv0+n1OGYWV5elrZiP+PzA2jUV19ZX34GV3Dm5+eb4qqB\n9o67I2NMcbIaGxsTOU8bPXyg8AGTdNCmXp7gZ4S74M6cOdO0cwWIGoyThZaCu43OEQI059rgRECZ\n8r333ms6TDZN9H0HIoNVHzgKRAGCbAO9Yw+I2iTcJVQqlWIPXz0p6iULIDKqwkNmdcBqyzlEgizs\n+mBUfvbe3p70Tw5aLkfrw591X+f94WTA/nry5EmpGw3MlZUVWbLoxGQQLjkdHBzI9zEAd2RkRMYK\nH9K6DKwb+0J/f784LVySoCO0sLAgn6XzhbXr4NGnoZdow5xIDx48kPZjP9PnwnF8sl30nEWDgu/R\n+dL42sDAgHxepw9U10a/DnUIzybj7zpLNO/HwsKCOG5sSzoBk5OTiTtdO/lgDo0pvXuYc4Qen0ln\nE9JwYrDytWvX5P5wzHIpbHFxUeZa3Te7Pe+GYQV6eZnLtpwz6vV6LAP80tKSzE+cW3WIgj70GYjq\n2knHJmzHSqUi445lz+fz4ngw5IDzjs5Cr8+apG1Ag1EH1iftkLZlPsMwDMMwjCPAkVGm9JlP9OB0\nzhCdfwdoDjympaq9K6og165dA9DYqn7q1CmxhKl2LSwsyPJMeKZct9D1oLdB7+nUqVMx735+fj62\n3JBWOgd6MjonERUXyuhzc3PiPXEJRCuQ4XJDtVpt2lAANGRefT/Y5pubm6I06uBfoDW1MfQG2UZ9\nfX2JZwaG+a/052iPkuXiPWD/Zpl1MLvOYdTOU85Dwq3nxWJRUpHw/xYWFqSdWT56tP39/eIZU5nU\nSzBcYvje974HIFpOo+JBSb5YLHblXEmWaXh4uOkMNiCab+jBE53ig+/X+cKoSIXtMzAwIH1GL5l2\n4mywZ0X3RQbYc0xWKhUZLzp/FPs121eP5XC7+c7OTlMQM9BZhUorz1pp0T8Djf46MjIi/ZNL1OPj\n46L6MyibCtXjx48TM4F3c57VGwnY106dOhVbAeDY1CoU27FUKolqw/7MOXVoaCi2GSGbzcaeMZ2o\ns57z2c84L9RqNVmK5LjT6Uo4N/I5o1cHeCIKVa7d3d2Oqt6mTBmGYRiGYbTAkVGmtHcfWov69Hpa\n3rRSdcJNvjY7OyvbXJkwkEm9hoaGxOplcOnDhw/F+qXi0S208kEvkfEIDNwdHByU2BImKNXnX4Xb\nsTXd8J7CrddTU1MS+8PA8vHxcWkfXnW2eX3iPBApFPQi+D56xdVqNfaduVxOPFG2IZWqdtZRe3Jh\ntmudWC/M/Fyv12PxKf39/bHgSq3QhV6hDq7sJCzzzs6OxDfRux0aGorFVlBxGR0dlXHGMlcqldj5\ngzqtCRUpfX5dmBKhE+j+w3HGdtnb2xOFWmdPJmG7DAwMNMVDAUiMGQoV5G6gA+xZp2KxKPc49PYP\nDg5E/SaFQkFUcq2WA80Z0/UZoaHS2ol+q2NuQqWhXq/H0jKwv05MTMhmCc5P1WpVTtWgMsXnw8bG\nRkxp08pUN8akzrKvVy7CRKNU0G7duiVKMMtMRYufBzTmHa2g6uSr3Vjt0KeVhCch7O/vS//iPKMV\ne26S4Gfs7u5KP2f9+exMStCpYwrtbD7DMAzDMIwUOTLKFC1R7RXytZGREbFAuTZKa3J3d1csVcYw\nnD9/Xo5f4fZ7vmdpaUnWUnl9+PChqBi04jtN0jZ5ehz0+vRJ9VwH1rtqknZfkG6u54exQPl8XsrO\nHRjT09NSrzDmBmg+bwpoPn+P9eLnM75Ds7+/L+pJuEuklXsRHjNET65QKIinp7161iO81ut1qS/v\nw8WLFyXWgX2X3uH+/r6MAyptWrXpdIJAfq9WqYDmXYksK7fZO+diW5uBhqrDvqt38IW7sDqRYDUJ\n1iGfzzddSvCSAAAJq0lEQVSppyxvmI6D5dQxU1S0Tp06JbFv7B+677JuWq3qlqpRr9elD7JNlpaW\npA0uXboEoDFP5vN5uQ9sy/7+fhnP7MOMk3rw4IEojVQCVldXO7rrNER/tlYCdaocoNFPZ2dnRWGj\n2rG4uIibN28CaJz7qmPBtCLF7+xGP9WqWjj/TU9Px1LmUE27fft2U3Jcfhb7ZxhHptNZPG2lo5Po\nBLo6jkr3Q6AxxiYnJ2O7Ujc3N6Xvcb7RfbGTbXZkjCk+MFZWVkRmpmR59uxZOeOMExmNKm1MsWNN\nT083LQMCjSC0d999NzHAkDe8Wzk2wgfS8PCwTMi8sl5alueEeHBwEJNl9dJSJw/9fRI67xK/j2Ur\nFApiRLBerNP29rZMXGz7jY2N2DZWHVjOuvI9e3t70oba+GgXYfqH0dHRmNE7ODj41KzLNCI5kb/4\n4otiTHGip0G4trYm8rYOzu7m4araEEg6P+tJW89ZViDqC+Gyq055kdb2cp1Jng8ptsvo6Ki0I+cg\nvfGF7aizw/M13i9d13DzTKVS6YqRAUT14/dybN26dUvSktCIZ1bp2dlZMax0hnHeBxpM3/3udwEA\nN27ckIPmGYKwubnZlU0EmqT7GBr7OrN7uCy2uLgoy9A6rxvQfPJAN5f2NNqY4rNteHi4KeM70Bxs\nHm4yGB4elnsSPjsymUzsWaFDDbqVAZ3o7+XrOi0NELUrn5VkbW1N5ks6DN0K3bFlPsMwDMMwjBY4\nMsoUpbxHjx6JYqTld30aNtCwxEulUlOiNiCyZmmVUvak9/TWW2/J+UTc9r21tdU1TxGILOwwGHl4\neDiW3I/W+fb2tnhJvOoAy6edf9XNgGWWbX19XYJReR0bG4spGlwKWVpaEuWQ79dtEiogtVpNPH++\n//Hjx7KJICnB3vOSlCAQiO613vAARCkh6AWGCoheHqKiNTExIfeEZad3f/v2bem7VKj0uXXdIMkr\nBOKJHvX5dToQFIi8eq0eAs1ZpPXnAu0NCE0iKf0D+yG/d3p6WlSn8LxHrQjroHMqMVQ1qBCsrq5K\n+/Ge7O/vdyXInp/P+89y3Lp1qynRLNBIhnzp0iVRWlmnpaUlmZPfeuutpuvdu3elzjrovNtZtMOw\nCb25g2kcOE51olG9XMm5hOkDtDKedmJknRohKds3+yTrmsvl5P/YTwcHB5+Y2Fir/XqF4yic95oU\nYgFE8yfnHrZVsViUsac3tQDNJy50YgnTlCnDMAzDMIwWODLKFOMoFhYWJKmfjsGghcy4Blqno6Oj\n8rf0vB4+fChno1GRYnDhvXv3xAujp9htT8o5FwtsHhwcjJ1/FgZxAg1FTr8WevLd9qJo+VMtevjw\nYWwtf3FxUQInQ2VqdXVV4jn0mn94TJCOmQoD1nXSTt63dqg42nMDmgPlw8Sco6OjkkSPHqI+XiRs\n352dnZhy+sYbb8jvVKkYA6DTDKSFjpkKtyo758RD1KkRqHDw3iX13W4Hu+rAet5n9k99lA/bkXE3\nOh0G+8TOzo7MPWxPngd2//59UT/YP3VgfzfQKhwQqf/sUwy2/trXvgYgqi+9fX2PqJyynmmcM/gk\n9HzK9tGB9Fzh4IaBoaGhWHLdpaWlmKKR5tExIfqIHo4jvSrDvkvVm2oU0FBt1tfX5YiVMMZqZ2cn\nFnOapiKnz70MY8WoGhcKBVHpdFxikrIIJCtT7VTCj4wxxY6yvr4uAeK8KY8ePZKHDQN2Oclls1kZ\n2MyJc+fOHZnMOFHyYb29vZ14Pk830YNT75ziwNbLOkDzUgjLvL6+HsvKmxS01w3CHV/VarXp0Fgg\nGgh86OrlOiCqOycIts3TdjzV6/XYDin90G5n1mUdjA00Jt9sNhuT3XXAJt+vg+7DLPZ3794Vo5/n\ngPFhvLS09MRJIQ2SJp+kg54Jy5zNZmNB+fw/vbtGX7vRd1nmUqkku37YjtVqVeYU7nbjA3lkZET+\nlu9ZWFiQfs52ZKD28vJyLPC+Vqulsnyi24ltwIcpy6t3axLvfVPAvr7y/9NEZ3SngT8yMiLGFK80\nEvVcoYOVQ+c1LeNQo5258PmwsLAgBgbFBRpVeplPn0HL5yKNaM43KysrsZ2raW4Q0ZtauLzHZVvt\n2LCsevky3AWtd3UmGVPtwpb5DMMwDMMwWuDIKFO0gMvlskjKtKhv376Nr3/96wAa3oU+v4+W59Os\nU61WpO1J6azELPv+/r4EzYeB2loNIPoMrW5vQw5JUm/o5bEtk+rwNK8gqY2SlKqknzvRvrqd+Hu4\nvPz+++/jxo0bABqeIpf5MpmM9EUqTmtra9Lm4RJluVzu6qaIJ5G0XZrlCpcK9vf3m87p498nLU8A\nzeM0KWN4J2F9KpWKlJ9jcn19XTx4vaQARPOO3hjC97Of87OoIpTL5dSXwZJIyhh+3NDqQlKuO449\nqlV6fuKcybG7vb0tfbGT5wk+L7VaTfob56K9vT1ZQmZ/5YqNVlD1GYvc6BM+Y/f39xNzaXUT/YzQ\nQfbh2ZZEL5dzbtX1CMMKktrTzuYzDMMwDMM4IhwZZUqj44h4bec5a0eBMPZAn0vUC4Rb0I87ofpW\nq9VicScLCwuxNA5J6ptu+yfFohwF9QKIKxg63ofePcemjrfRcTdhWgkdEJqWF0y897HzFIvFosS1\naQ9Z/w3QXJ8w1UFa8Ys/Suj7mjTO2K46ez8QKf9h39UxqDpuM/yetND9lMrL9va2xDyxfz4tsFqP\nt6MY+6ZJUsKp2lP93t/fb9roAkRtF9oPOoFyeOJCO8enKVOGYRiGYRgt4LppjTrnjo7p+xx4739g\n6H+v17HX6wdYHY8D3a5jGglxbSw+Wx11YsekmCnuAuOusEwmE9uBqo+j4i5qKhuVSuW5FVQbixHP\nWsdwnGWzWVHdwnjMp6nFQLIiHqrjz9qez1RHM6aeHRsYvV8/wOp4HLA69n79gB++jvphHG5/T9rQ\no5fCwmW9pKWwHxbrpxE/CnW0ZT7DMAzDMIwW6KoyZRiGYRiG0WuYMmUYhmEYhtECZkwZhmEYhmG0\ngBlThmEYhmEYLWDGlGEYhmEYRguYMWUYhmEYhtECZkwZhmEYhmG0gBlThmEYhmEYLWDGlGEYhmEY\nRguYMWUYhmEYhtECZkwZhmEYhmG0gBlThmEYhmEYLWDGlGEYhmEYRguYMWUYhmEYhtECZkwZhmEY\nhmG0gBlThmEYhmEYLWDGlGEYhmEYRguYMWUYhmEYhtECZkwZhmEYhmG0gBlThmEYhmEYLWDGlGEY\nhmEYRguYMWUYhmEYhtECZkwZhmEYhmG0gBlThmEYhmEYLfD/AZjyMkzWR6hnAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3143051d30>"
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
]
},
"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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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f31434f97b8>"
]
},
"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",
"execution_count": 10,
"metadata": {},
"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",
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# takes ~8 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": [
"### k-Nearest Neighbors\n",
"\n",
"We will now try to classify a random image from the dataset using the kNN classifier.\n",
"\n",
"First, we choose a number from 0 to 9999 for `test_img_choice` and we are going to predict the class of that test image."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"from learning import NearestNeighborLearner\n",
"\n",
"# takes ~20 Secs. to execute this\n",
"kNN = NearestNeighborLearner(MNIST_DataSet,k=3)\n",
"print(kNN(test_img[211]))"
]
},
{
"cell_type": "markdown",
"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": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Actual class of test image: 5\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f314374b198>"
]
},
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAHVCAYAAABSR+pHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAE8tJREFUeJzt3X+o7XW95/HXO/UapJRxGzN1xjsmQxFpw0kKb4PiXM3+\n0QpCg4sT4ukPmwwuYWh1/SMhhlt3CCKylGuQiZC/oFv3qkR1YRLPEelo5hShHQ8nxcz8QWF6PvPH\nWTJnmnPO3n6/+332XrvHAw5n7bXX+3w+fFny9Lv2WvtbY4wAAGvrVeu9AQDYjAQWABoILAA0EFgA\naCCwANBAYAGggcACQAOBBYAGAgsADQ4/lItVlV8bBcCye3KM8YaVHuQMFgBemUdX8yCBBYAGAgsA\nDWYFtqreW1UPV9UvqupTa7UpAFh2kwNbVYcl+XKS85K8NclFVfXWtdoYACyzOWewpyf5xRjjl2OM\nF5LclOT8tdkWACy3OYE9PsnOfb5+bHEfAPzZa/8cbFVtTbK1ex0A2EjmBHZXkhP3+fqExX3/jzHG\ntUmuTfyiCQD+fMx5ifjeJKdU1V9V1V8kuTDJHWuzLQBYbpPPYMcYL1bVx5L8S5LDklw/xnhwzXYG\nAEusxjh0r9p6iRiATWD7GGPLSg/ym5wAoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGAB\noIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBY\nAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0E\nFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkAD\ngQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQ\nQGABoIHAAkADgQWABgILAA0EFgAaHD5nuKoeSfJskpeSvDjG2LIWmwKAZTcrsAtnjTGeXIN/BwA2\nDS8RA0CDuYEdSf61qrZX1db9PaCqtlbVtqraNnMtAFgaNcaYPlx1/BhjV1X9uyR3JvnvY4wfHuTx\n0xcDgI1h+2reczTrDHaMsWvx9xNJbk1y+px/DwA2i8mBrarXVNXRL99Ock6SB9ZqYwCwzOa8i/jY\nJLdW1cv/zo1jjO+tya4AYMlNDuwY45dJTl3DvQDApuFjOgDQQGABoMFa/CYngCTJa1/72smz73rX\nu2at/Z3vfGfW/BzPPffc5Nk5xyxJHn744cmzZ5xxxqy1f/Ob38ya3+ycwQJAA4EFgAYCCwANBBYA\nGggsADQQWABoILAA0EBgAaCBwAJAA4EFgAYCCwANBBYAGggsADQQWABoILAA0MD1YGET2bJly6z5\nrVu3zpr/4Ac/OHm2qmat/dBDD02eveaaa2atfdJJJ63b2r/61a8mz/7xj3+ctTYH5wwWABoILAA0\nEFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQIMaYxy6xaoO\n3WKwTo444ohZ81ddddXk2UsvvXTW2k899dSs+S996UuTZ++5555Zaz/44IOTZ88666xZa1933XWT\nZ59++ulZa5955pmTZ3/729/OWvvP2PYxxorXhnQGCwANBBYAGggsADQQWABoILAA0EBgAaCBwAJA\nA4EFgAYCCwANBBYAGggsADQQWABoILAA0EBgAaCBwAJAg8PXewOwEZ177rmTZz/96U/PWvvUU0+d\nPHvTTTfNWvuTn/zkrPmjjjpq8uxHPvKRWWvPuRbte97znllr33XXXZNnr7jiillru6brxuUMFgAa\nCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADl6tj\nU7r66qtnzV911VWTZ++///5Za8+5bNuTTz45a+2Pf/zjs+YvueSSybMnnnjirLV37NgxeXbOvpPk\ntttumzz79NNPz1qbjcsZLAA0EFgAaCCwANBAYAGgwYqBrarrq+qJqnpgn/teX1V3VtXPF38f07tN\nAFguqzmD/ack7/2T+z6V5O4xxilJ7l58DQAsrBjYMcYPkzz1J3efn+SGxe0bklywxvsCgKU29XOw\nx44xdi9u/zrJsQd6YFVtTbJ14joAsJRm/6KJMcaoqnGQ71+b5NokOdjjAGAzmfou4ser6rgkWfz9\nxNptCQCW39TA3pHk4sXti5PcvjbbAYDNYTUf0/lWkv+V5D9V1WNVdUmSzyf5m6r6eZL/uvgaAFhY\n8WewY4yLDvCts9d4LwCwafhNTgDQQGABoIHrwbJhzbmm65VXXjlr7XvvvXfy7Lnnnjtr7WeffXby\n7Nzr4H7mM5+ZNX/jjTdOnr3rrrtmrX3rrbdOnn3mmWdmrQ374wwWABoILAA0EFgAaCCwANBAYAGg\ngcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQIMaYxy6xaoO3WKsu5NPPnnW/I9+\n9KPJs7fffvustS+//PLJsy+88MKstec47LDDZs2/+tWvnjX/+9//fvLsnj17Zq0Nh9D2McaWlR7k\nDBYAGggsADQQWABoILAA0EBgAaCBwAJAA4EFgAYCCwANBBYAGggsADQQWABoILAA0EBgAaCBwAJA\nA4EFgAaHr/cG2LxOOeWUWfPHHnvs5NkXX3xx1trreU3XOV566aVZ888///wa7QRwBgsADQQWABoI\nLAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcvV0WbHjh2z\n5nfu3Dl59nWve92stV/1qun/77lnz55ZawObgzNYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAa\nCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAauB4sbXbt2jVrfs71ZD/84Q/PWvvoo4+e\nPHvBBRfMWhvYHJzBAkADgQWABgILAA1WDGxVXV9VT1TVA/vcd3VV7aqq+xd/3te7TQBYLqs5g/2n\nJO/dz/3/OMY4bfHnn9d2WwCw3FYM7Bjjh0meOgR7AYBNY87PYD9WVT9ZvIR8zJrtCAA2gamB/UqS\nk5OclmR3ki8c6IFVtbWqtlXVtolrAcDSmRTYMcbjY4yXxhh7knwtyekHeey1Y4wtY4wtUzcJAMtm\nUmCr6rh9vnx/kgcO9FgA+HO04q9KrKpvJTkzyV9W1WNJ/j7JmVV1WpKR5JEkH23cIwAsnRUDO8a4\naD93X9ewFwDYNPwmJwBoILAA0EBgAaBBjTEO3WJVh24xlt4b3vCGybO33HLLrLXf/e53T5695ppr\nZq399a9/ffLszp07Z60NrMr21Xz01BksADQQWABoILAA0EBgAaCBwAJAA4EFgAYCCwANBBYAGggs\nADQQWABoILAA0EBgAaCBwAJAA4EFgAYuV8emdMwxx8ya/+53vzt59p3vfOestedcru5zn/vcrLVd\n7g5WxeXqAGC9CCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGAB\noIHAAkADgQWABq4HC/tx1FFHTZ698MILZ6391a9+dfLs7373u1lrn3POObPmt23bNmseloTrwQLA\nehFYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkADgQWABi5X\nB2usqmbNv/GNb5w8+73vfW/W2m95y1tmzb/97W+fPPuzn/1s1tpwCLlcHQCsF4EFgAYCCwANBBYA\nGggsADQQWABoILAA0EBgAaCBwAJAA4EFgAYCCwANBBYAGggsADQQWABoILAA0ODw9d4AbDZzr7G8\ne/fuybOXXXbZrLV/8IMfzJo/55xzJs+6HiybjTNYAGggsADQQGABoMGKga2qE6vq+1X106p6sKou\nX9z/+qq6s6p+vvj7mP7tAsByWM0Z7ItJ/m6M8dYk70pyWVW9Ncmnktw9xjglyd2LrwGArCKwY4zd\nY4z7FrefTfJQkuOTnJ/khsXDbkhyQdcmAWDZvKKP6VTVSUnekeSeJMeOMV7+PMGvkxx7gJmtSbZO\n3yIALJ9Vv8mpqo5K8u0knxhjPLPv98beD/7t98N/Y4xrxxhbxhhbZu0UAJbIqgJbVUdkb1y/Oca4\nZXH341V13OL7xyV5omeLALB8VvMu4kpyXZKHxhhf3OdbdyS5eHH74iS3r/32AGA5reZnsGck+dsk\nO6rq/sV9Vyb5fJKbq+qSJI8m+VDPFgFg+awY2DHGvyWpA3z77LXdDgBsDn6TEwA0EFgAaOBydbDB\nnHDCCZNnP/vZz67hTl65nTt3ruv6sJE4gwWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHAAkAD\ngQWABgILAA0EFgAaCCwANBBYAGggsADQQGABoIHrwW5yb3rTm2bNX3HFFZNnL7/88llrL6sjjzxy\n1vxVV101efbss8+etfbNN988a/7OO++cNQ+biTNYAGggsADQQGABoIHAAkADgQWABgILAA0EFgAa\nCCwANBBYAGggsADQQGABoIHAAkADgQWABgILAA1qjHHoFqs6dIuRJHnzm988a/6+++6bPHvWWWfN\nWnv79u2z5ud429veNnn2G9/4xqy1Tz311Mmzcy83d+mll86af+6552bNw5LYPsbYstKDnMECQAOB\nBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANDg\n8PXeAL0effTRWfNf/vKXJ8/edttts9b+wx/+MHn2xz/+8ay1zzvvvMmzRx555Ky1P/CBD0yeveuu\nu2at/fzzz8+aB/4vZ7AA0EBgAaCBwAJAA4EFgAYCCwANBBYAGggsADQQWABoILAA0EBgAaCBwAJA\nA4EFgAYCCwANBBYAGtQY49AtVnXoFmNNHH749CsaXnrppbPWPvfccyfPHn/88bPWnnPZt7vvvnvd\n1gYOie1jjC0rPcgZLAA0EFgAaCCwANBAYAGgwYqBraoTq+r7VfXTqnqwqi5f3H91Ve2qqvsXf97X\nv10AWA6reYvoi0n+boxxX1UdnWR7Vd25+N4/jjH+oW97ALCcVgzsGGN3kt2L289W1UNJ5n0GAgA2\nuVf0M9iqOinJO5Lcs7jrY1X1k6q6vqqOOcDM1qraVlXbZu0UAJbIqgNbVUcl+XaST4wxnknylSQn\nJzkte89wv7C/uTHGtWOMLav5UC4AbBarCmxVHZG9cf3mGOOWJBljPD7GeGmMsSfJ15Kc3rdNAFgu\nq3kXcSW5LslDY4wv7nP/cfs87P1JHlj77QHAclrNu4jPSPK3SXZU1f2L+65MclFVnZZkJHkkyUdb\ndggAS2g17yL+tyS1n2/989pvBwA2B7/JCQAaCCwANHA9WAB4ZVwPFgDWi8ACQAOBBYAGAgsADQQW\nABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOB\nBYAGAgsADQQWABoILAA0EFgAaCCwANBAYAGggcACQAOBBYAGAgsADQQWABoILAA0OPwQr/dkkkcP\n8v2/XDyG1XPMpnHcpnHcXjnHbJqNfNz+w2oeVGOM7o2sWlVtG2NsWe99LBPHbBrHbRrH7ZVzzKbZ\nDMfNS8QA0EBgAaDBRgvsteu9gSXkmE3juE3juL1yjtk0S3/cNtTPYAFgs9hoZ7AAsCkILAA02BCB\nrar3VtXDVfWLqvrUeu9nWVTVI1W1o6rur6pt672fjaqqrq+qJ6rqgX3ue31V3VlVP1/8fcx67nGj\nOcAxu7qqdi2eb/dX1fvWc48bUVWdWFXfr6qfVtWDVXX54n7PtwM4yDFb+ufbuv8MtqoOS/K/k/xN\nkseS3JvkojHGT9d1Y0ugqh5JsmWMsVE/jL0hVNV/SfJckm+MMd62uO9/JHlqjPH5xf/UHTPGuGI9\n97mRHOCYXZ3kuTHGP6zn3jayqjouyXFjjPuq6ugk25NckOS/xfNtvw5yzD6UJX++bYQz2NOT/GKM\n8csxxgtJbkpy/jrviU1kjPHDJE/9yd3nJ7lhcfuG7P0PmoUDHDNWMMbYPca4b3H72SQPJTk+nm8H\ndJBjtvQ2QmCPT7Jzn68fyyY5uIfASPKvVbW9qrau92aWzLFjjN2L279Ocux6bmaJfKyqfrJ4CdnL\nnAdRVScleUeSe+L5tip/csySJX++bYTAMt1fjzH+c5Lzkly2eFmPV2js/TmJz6ut7CtJTk5yWpLd\nSb6wvtvZuKrqqCTfTvKJMcYz+37P823/9nPMlv75thECuyvJift8fcLiPlYwxti1+PuJJLdm78vt\nrM7ji5/9vPwzoCfWeT8b3hjj8THGS2OMPUm+Fs+3/aqqI7I3FN8cY9yyuNvz7SD2d8w2w/NtIwT2\n3iSnVNVfVdVfJLkwyR3rvKcNr6pes3hDQKrqNUnOSfLAwafYxx1JLl7cvjjJ7eu4l6XwciAW3h/P\nt/9PVVWS65I8NMb44j7f8nw7gAMds83wfFv3dxEnyeLt1/8zyWFJrh9jXLPOW9rwquo/Zu9Za7L3\nsoM3Om77V1XfSnJm9l7+6vEkf5/ktiQ3J/n32XsJxQ+NMbypZ+EAx+zM7H25biR5JMlH9/m5Ikmq\n6q+T/CjJjiR7Fndfmb0/U/R824+DHLOLsuTPtw0RWADYbDbCS8QAsOkILAA0EFgAaCCwANBAYAGg\ngcACQAOBBYAG/webxyRlyxBmMwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3143f85400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Actual class of test image:\", test_lbl[211])\n",
"plt.imshow(test_img[211].reshape((28,28)))"
{
"cell_type": "markdown",
"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",
"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 on this particular dataset, as they are written with readability in mind, instead of efficiency."
}
],
"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",
}
},
"nbformat": 4,