Chandrasekar A Pasumarthi commited on
Upload 2 files
Browse files- DigitRecognition.ipynb +251 -0
- train.csv.zip +3 -0
DigitRecognition.ipynb
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"nbformat": 4,
|
| 3 |
+
"nbformat_minor": 0,
|
| 4 |
+
"metadata": {
|
| 5 |
+
"colab": {
|
| 6 |
+
"provenance": []
|
| 7 |
+
},
|
| 8 |
+
"kernelspec": {
|
| 9 |
+
"name": "python3",
|
| 10 |
+
"display_name": "Python 3"
|
| 11 |
+
},
|
| 12 |
+
"language_info": {
|
| 13 |
+
"name": "python"
|
| 14 |
+
}
|
| 15 |
+
},
|
| 16 |
+
"cells": [
|
| 17 |
+
{
|
| 18 |
+
"cell_type": "code",
|
| 19 |
+
"execution_count": 1,
|
| 20 |
+
"metadata": {
|
| 21 |
+
"id": "h2zvY46Qr1tq"
|
| 22 |
+
},
|
| 23 |
+
"outputs": [],
|
| 24 |
+
"source": [
|
| 25 |
+
"import tensorflow as tf\n",
|
| 26 |
+
"import numpy as np\n",
|
| 27 |
+
"import pandas as pd\n",
|
| 28 |
+
"from tensorflow import keras\n",
|
| 29 |
+
"from keras import layers\n",
|
| 30 |
+
"from sklearn.model_selection import train_test_split\n",
|
| 31 |
+
"import matplotlib.pyplot as plt\n",
|
| 32 |
+
"\n",
|
| 33 |
+
"\n",
|
| 34 |
+
"model = keras.Sequential([\n",
|
| 35 |
+
" tf.keras.Input(shape=(784,)),\n",
|
| 36 |
+
" layers.Dense(units=128, activation=\"relu\"),\n",
|
| 37 |
+
" layers.Dropout(0.2),\n",
|
| 38 |
+
" layers.Dense(units=128, activation=\"relu\"),\n",
|
| 39 |
+
" layers.Dropout(0.2),\n",
|
| 40 |
+
" layers.Dense(units=128, activation=\"relu\"),\n",
|
| 41 |
+
" layers.Dropout(0.2),\n",
|
| 42 |
+
" layers.Dense(units=128, activation=\"relu\"),\n",
|
| 43 |
+
" layers.Dropout(0.2),\n",
|
| 44 |
+
" layers.Dense(units=10, activation=\"softmax\")\n",
|
| 45 |
+
"])\n",
|
| 46 |
+
"df = pd.read_csv(\"train.csv\")\n",
|
| 47 |
+
"X = df.drop(\"label\", axis=1)\n",
|
| 48 |
+
"y = df[\"label\"]\n",
|
| 49 |
+
"X = X/255.0\n",
|
| 50 |
+
"X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
| 51 |
+
"\n",
|
| 52 |
+
"#model.summary()\n",
|
| 53 |
+
"Y_train = tf.keras.utils.to_categorical(Y_train, num_classes=10)\n",
|
| 54 |
+
"Y_test = tf.keras.utils.to_categorical(Y_test, num_classes=10)\n",
|
| 55 |
+
"\n",
|
| 56 |
+
"\n",
|
| 57 |
+
"\n"
|
| 58 |
+
]
|
| 59 |
+
},
|
| 60 |
+
{
|
| 61 |
+
"cell_type": "code",
|
| 62 |
+
"source": [
|
| 63 |
+
"model.compile(\n",
|
| 64 |
+
" loss=tf.keras.losses.CategoricalCrossentropy(),\n",
|
| 65 |
+
" optimizer = tf.keras.optimizers.Adam(learning_rate=0.0001),\n",
|
| 66 |
+
" metrics=['accuracy']\n",
|
| 67 |
+
")\n",
|
| 68 |
+
"model.fit(\n",
|
| 69 |
+
" X_train,\n",
|
| 70 |
+
" Y_train,\n",
|
| 71 |
+
" validation_data=(X_test, Y_test),\n",
|
| 72 |
+
" batch_size=32,\n",
|
| 73 |
+
" epochs=45\n",
|
| 74 |
+
")"
|
| 75 |
+
],
|
| 76 |
+
"metadata": {
|
| 77 |
+
"colab": {
|
| 78 |
+
"base_uri": "https://localhost:8080/"
|
| 79 |
+
},
|
| 80 |
+
"id": "iU7hvgTAZZMo",
|
| 81 |
+
"outputId": "23541357-c9ae-4602-910c-8e1b272d9421"
|
| 82 |
+
},
|
| 83 |
+
"execution_count": 2,
|
| 84 |
+
"outputs": [
|
| 85 |
+
{
|
| 86 |
+
"output_type": "stream",
|
| 87 |
+
"name": "stdout",
|
| 88 |
+
"text": [
|
| 89 |
+
"Epoch 1/45\n",
|
| 90 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 8ms/step - accuracy: 0.4322 - loss: 1.6292 - val_accuracy: 0.8863 - val_loss: 0.3937\n",
|
| 91 |
+
"Epoch 2/45\n",
|
| 92 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 7ms/step - accuracy: 0.8402 - loss: 0.5162 - val_accuracy: 0.9177 - val_loss: 0.2737\n",
|
| 93 |
+
"Epoch 3/45\n",
|
| 94 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 7ms/step - accuracy: 0.8928 - loss: 0.3654 - val_accuracy: 0.9320 - val_loss: 0.2258\n",
|
| 95 |
+
"Epoch 4/45\n",
|
| 96 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9097 - loss: 0.3008 - val_accuracy: 0.9420 - val_loss: 0.1947\n",
|
| 97 |
+
"Epoch 5/45\n",
|
| 98 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 11ms/step - accuracy: 0.9289 - loss: 0.2358 - val_accuracy: 0.9483 - val_loss: 0.1705\n",
|
| 99 |
+
"Epoch 6/45\n",
|
| 100 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9331 - loss: 0.2215 - val_accuracy: 0.9529 - val_loss: 0.1536\n",
|
| 101 |
+
"Epoch 7/45\n",
|
| 102 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 8ms/step - accuracy: 0.9437 - loss: 0.1915 - val_accuracy: 0.9568 - val_loss: 0.1449\n",
|
| 103 |
+
"Epoch 8/45\n",
|
| 104 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - accuracy: 0.9506 - loss: 0.1702 - val_accuracy: 0.9593 - val_loss: 0.1389\n",
|
| 105 |
+
"Epoch 9/45\n",
|
| 106 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9528 - loss: 0.1610 - val_accuracy: 0.9636 - val_loss: 0.1285\n",
|
| 107 |
+
"Epoch 10/45\n",
|
| 108 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 7ms/step - accuracy: 0.9561 - loss: 0.1454 - val_accuracy: 0.9655 - val_loss: 0.1225\n",
|
| 109 |
+
"Epoch 11/45\n",
|
| 110 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.9597 - loss: 0.1353 - val_accuracy: 0.9665 - val_loss: 0.1171\n",
|
| 111 |
+
"Epoch 12/45\n",
|
| 112 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 7ms/step - accuracy: 0.9628 - loss: 0.1242 - val_accuracy: 0.9683 - val_loss: 0.1124\n",
|
| 113 |
+
"Epoch 13/45\n",
|
| 114 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 7ms/step - accuracy: 0.9648 - loss: 0.1176 - val_accuracy: 0.9674 - val_loss: 0.1087\n",
|
| 115 |
+
"Epoch 14/45\n",
|
| 116 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.9676 - loss: 0.1065 - val_accuracy: 0.9694 - val_loss: 0.1031\n",
|
| 117 |
+
"Epoch 15/45\n",
|
| 118 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9702 - loss: 0.1014 - val_accuracy: 0.9705 - val_loss: 0.1036\n",
|
| 119 |
+
"Epoch 16/45\n",
|
| 120 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 6ms/step - accuracy: 0.9715 - loss: 0.0899 - val_accuracy: 0.9713 - val_loss: 0.1022\n",
|
| 121 |
+
"Epoch 17/45\n",
|
| 122 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9722 - loss: 0.0905 - val_accuracy: 0.9713 - val_loss: 0.1022\n",
|
| 123 |
+
"Epoch 18/45\n",
|
| 124 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9731 - loss: 0.0864 - val_accuracy: 0.9700 - val_loss: 0.1049\n",
|
| 125 |
+
"Epoch 19/45\n",
|
| 126 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9747 - loss: 0.0802 - val_accuracy: 0.9723 - val_loss: 0.0973\n",
|
| 127 |
+
"Epoch 20/45\n",
|
| 128 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 7ms/step - accuracy: 0.9770 - loss: 0.0750 - val_accuracy: 0.9723 - val_loss: 0.1041\n",
|
| 129 |
+
"Epoch 21/45\n",
|
| 130 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9778 - loss: 0.0722 - val_accuracy: 0.9712 - val_loss: 0.1016\n",
|
| 131 |
+
"Epoch 22/45\n",
|
| 132 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9789 - loss: 0.0675 - val_accuracy: 0.9735 - val_loss: 0.0950\n",
|
| 133 |
+
"Epoch 23/45\n",
|
| 134 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - accuracy: 0.9807 - loss: 0.0663 - val_accuracy: 0.9732 - val_loss: 0.0957\n",
|
| 135 |
+
"Epoch 24/45\n",
|
| 136 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.9821 - loss: 0.0581 - val_accuracy: 0.9739 - val_loss: 0.0969\n",
|
| 137 |
+
"Epoch 25/45\n",
|
| 138 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 6ms/step - accuracy: 0.9822 - loss: 0.0555 - val_accuracy: 0.9731 - val_loss: 0.1008\n",
|
| 139 |
+
"Epoch 26/45\n",
|
| 140 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9806 - loss: 0.0599 - val_accuracy: 0.9736 - val_loss: 0.0973\n",
|
| 141 |
+
"Epoch 27/45\n",
|
| 142 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9817 - loss: 0.0578 - val_accuracy: 0.9744 - val_loss: 0.0967\n",
|
| 143 |
+
"Epoch 28/45\n",
|
| 144 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - accuracy: 0.9838 - loss: 0.0510 - val_accuracy: 0.9756 - val_loss: 0.0944\n",
|
| 145 |
+
"Epoch 29/45\n",
|
| 146 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9843 - loss: 0.0512 - val_accuracy: 0.9743 - val_loss: 0.0977\n",
|
| 147 |
+
"Epoch 30/45\n",
|
| 148 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 7ms/step - accuracy: 0.9837 - loss: 0.0525 - val_accuracy: 0.9745 - val_loss: 0.0954\n",
|
| 149 |
+
"Epoch 31/45\n",
|
| 150 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - accuracy: 0.9838 - loss: 0.0502 - val_accuracy: 0.9744 - val_loss: 0.0962\n",
|
| 151 |
+
"Epoch 32/45\n",
|
| 152 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9848 - loss: 0.0487 - val_accuracy: 0.9740 - val_loss: 0.0983\n",
|
| 153 |
+
"Epoch 33/45\n",
|
| 154 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9855 - loss: 0.0448 - val_accuracy: 0.9733 - val_loss: 0.0999\n",
|
| 155 |
+
"Epoch 34/45\n",
|
| 156 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.9854 - loss: 0.0420 - val_accuracy: 0.9757 - val_loss: 0.0967\n",
|
| 157 |
+
"Epoch 35/45\n",
|
| 158 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9870 - loss: 0.0416 - val_accuracy: 0.9744 - val_loss: 0.0988\n",
|
| 159 |
+
"Epoch 36/45\n",
|
| 160 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 7ms/step - accuracy: 0.9873 - loss: 0.0379 - val_accuracy: 0.9761 - val_loss: 0.1010\n",
|
| 161 |
+
"Epoch 37/45\n",
|
| 162 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 6ms/step - accuracy: 0.9872 - loss: 0.0400 - val_accuracy: 0.9755 - val_loss: 0.0967\n",
|
| 163 |
+
"Epoch 38/45\n",
|
| 164 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 7ms/step - accuracy: 0.9882 - loss: 0.0361 - val_accuracy: 0.9754 - val_loss: 0.1035\n",
|
| 165 |
+
"Epoch 39/45\n",
|
| 166 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 5ms/step - accuracy: 0.9886 - loss: 0.0368 - val_accuracy: 0.9749 - val_loss: 0.1015\n",
|
| 167 |
+
"Epoch 40/45\n",
|
| 168 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 7ms/step - accuracy: 0.9885 - loss: 0.0350 - val_accuracy: 0.9752 - val_loss: 0.1039\n",
|
| 169 |
+
"Epoch 41/45\n",
|
| 170 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - accuracy: 0.9881 - loss: 0.0352 - val_accuracy: 0.9755 - val_loss: 0.1004\n",
|
| 171 |
+
"Epoch 42/45\n",
|
| 172 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9886 - loss: 0.0347 - val_accuracy: 0.9756 - val_loss: 0.1005\n",
|
| 173 |
+
"Epoch 43/45\n",
|
| 174 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9894 - loss: 0.0314 - val_accuracy: 0.9757 - val_loss: 0.1007\n",
|
| 175 |
+
"Epoch 44/45\n",
|
| 176 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 6ms/step - accuracy: 0.9894 - loss: 0.0301 - val_accuracy: 0.9751 - val_loss: 0.1040\n",
|
| 177 |
+
"Epoch 45/45\n",
|
| 178 |
+
"\u001b[1m1050/1050\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 7ms/step - accuracy: 0.9908 - loss: 0.0280 - val_accuracy: 0.9757 - val_loss: 0.0990\n"
|
| 179 |
+
]
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"output_type": "execute_result",
|
| 183 |
+
"data": {
|
| 184 |
+
"text/plain": [
|
| 185 |
+
"<keras.src.callbacks.history.History at 0x7ff67b4b4050>"
|
| 186 |
+
]
|
| 187 |
+
},
|
| 188 |
+
"metadata": {},
|
| 189 |
+
"execution_count": 2
|
| 190 |
+
}
|
| 191 |
+
]
|
| 192 |
+
},
|
| 193 |
+
{
|
| 194 |
+
"cell_type": "code",
|
| 195 |
+
"source": [
|
| 196 |
+
"import matplotlib.pyplot as plt\n",
|
| 197 |
+
"\n",
|
| 198 |
+
"predictions = model.predict(X_test)\n",
|
| 199 |
+
"predicted_labels = np.argmax(predictions, axis=1) # Convert softmax output to class labels\n",
|
| 200 |
+
"actual_labels = np.argmax(Y_test, axis=1) # Convert one-hot encoding back to labels\n",
|
| 201 |
+
"\n",
|
| 202 |
+
"# Select random samples for visualization\n",
|
| 203 |
+
"num_samples = 10\n",
|
| 204 |
+
"random_indices = np.random.choice(len(X_test), num_samples, replace=False)\n",
|
| 205 |
+
"sample_images = X_test.iloc[random_indices].to_numpy().reshape(-1, 28, 28) # Reshape into 28x28 images\n",
|
| 206 |
+
"sample_predictions = predicted_labels[random_indices]\n",
|
| 207 |
+
"sample_actuals = actual_labels[random_indices]\n",
|
| 208 |
+
"\n",
|
| 209 |
+
"# Plot images with predictions\n",
|
| 210 |
+
"plt.figure(figsize=(12, 5))\n",
|
| 211 |
+
"for i in range(num_samples):\n",
|
| 212 |
+
" plt.subplot(2, 5, i + 1)\n",
|
| 213 |
+
" plt.imshow(sample_images[i], cmap=\"gray\")\n",
|
| 214 |
+
" plt.title(f\"Pred: {sample_predictions[i]}\\nTrue: {sample_actuals[i]}\")\n",
|
| 215 |
+
" plt.axis(\"off\")\n",
|
| 216 |
+
"\n",
|
| 217 |
+
"plt.tight_layout()\n",
|
| 218 |
+
"plt.show()\n",
|
| 219 |
+
"\n"
|
| 220 |
+
],
|
| 221 |
+
"metadata": {
|
| 222 |
+
"colab": {
|
| 223 |
+
"base_uri": "https://localhost:8080/",
|
| 224 |
+
"height": 531
|
| 225 |
+
},
|
| 226 |
+
"id": "tVvpi1piZb1O",
|
| 227 |
+
"outputId": "9ccfc78e-e21b-4375-cdd9-1f921e13d6f0"
|
| 228 |
+
},
|
| 229 |
+
"execution_count": null,
|
| 230 |
+
"outputs": [
|
| 231 |
+
{
|
| 232 |
+
"output_type": "stream",
|
| 233 |
+
"name": "stdout",
|
| 234 |
+
"text": [
|
| 235 |
+
"\u001b[1m263/263\u001b[0m \u001b[32mββββββββββββββββββββ\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 4ms/step\n"
|
| 236 |
+
]
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"output_type": "display_data",
|
| 240 |
+
"data": {
|
| 241 |
+
"text/plain": [
|
| 242 |
+
"<Figure size 1200x500 with 10 Axes>"
|
| 243 |
+
],
|
| 244 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAABIsAAAHxCAYAAADtDjxuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAS9RJREFUeJzt/WmYVOW1P+6v1mZGEaHBAQMIgkaPmqBGBQVkcJ4C+lWcc4w4i3okggMQcYgaxRAVZ8VZkzhcMQKi4BANRgUTNObnQSHODAKGQRGo/wv/7iPCU2mK7q6u5r6vixfUp/az1wYWVbV6dz9luVwuFwAAAAAQERsUuwAAAAAAag/DIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAABnDohLXrl27OPHEE4tdBlBJehZKi56F0qJnobTo2drLsGgd3H333VFWVpb9atiwYXTq1CnOPPPM+Oyzz4pd3n/0zjvvxODBg2PnnXeOjTbaKDbffPM48MAD47XXXit2aVAtSr1nIyJWrlwZV199dbRv3z4aNmwYO+64Yzz44IPFLguqRV3o2YiIGTNmxIABA6JVq1bRqFGj2GabbeKiiy4qdllQ5epCz3qdZX1SF3r2u+6///4oKyuLpk2bFruUOqG82AXUBb/85S+jffv28eWXX8ZLL70UN998c/zpT3+K6dOnR+PGjYtdXtLtt98ed9xxR/Tr1y9OP/30WLhwYdxyyy2x++67x7hx46J3797FLhGqRan2bETERRddFFdddVX8/Oc/j1133TWeeOKJGDBgQJSVlcVRRx1V7PKgWpRyz06bNi169OgRW265ZZx//vnRokWL+Ne//hUffPBBsUuDalPKPet1lvVRKffstxYtWhSDBw+OJk2aFLuUuiNHwe66665cROT++te/rvL4eeedl4uI3AMPPJA8dtGiRVVSQ9u2bXMnnHBCQce+9tpruX//+9+rPDZ37txcRUVFrmvXrlVQHdQupd6zH374Ya5evXq5M844I3ts5cqVub322ivXpk2b3PLly6ukRqgtSr1nV6xYkdthhx1yP/nJT3JLliypknqgNiv1nvU6y/qm1Hv2u37xi1/kOnfunDvmmGNyTZo0WffCyPk2tGqwzz77RETE+++/HxERJ554YjRt2jRmzJgRBxxwQGy00UZxzDHHRMQ3t7qOGjUqtt9++2jYsGG0bt06Bg4cGPPnz19lzVwuFyNHjow2bdpE48aNo2fPnvHWW2+t8fwzZsyIGTNm/Mc6u3Tpstotei1atIi99tor/vGPf6z1dUOpKpWefeKJJ+Lrr7+O008/PXusrKwsTjvttPjwww/jlVdeKej6odSUSs9OmDAhpk+fHsOGDYtGjRrFkiVLYsWKFety6VCSSqVnvc7CN0qlZ7/17rvvxvXXXx/XXXddlJf75qmq4k+yGnz7D7tFixbZY8uXL4999903unXrFtdee212O9/AgQPj7rvvjpNOOinOPvvseP/99+O3v/1tTJ06Nf785z9HvXr1IiLi0ksvjZEjR8YBBxwQBxxwQLzxxhvRt2/fWLZs2Wrn79WrV0REzJw5s6D6P/3002jZsmVBx0IpKpWenTp1ajRp0iS22267VR7fbbfdsrxbt26F/SFACSmVnp04cWJERDRo0CB22WWXeP3116N+/fpx+OGHx0033RSbbrrpOv9ZQCkolZ71OgvfKJWe/dagQYOiZ8+eccABB8QjjzyyLpfOdxX1vqYS9+1texMnTszNmTMn98EHH+QeeuihXIsWLXKNGjXKffjhh7lcLpc74YQTchGRu/DCC1c5/sUXX8xFRO7+++9f5fFx48at8vjs2bNz9evXzx144IG5lStXZs8bOnRoLiJWu22vbdu2ubZt2xZ0TS+88EKurKwsd8kllxR0PNRmpd6zBx54YG7rrbde7fHFixevsV4odaXes4ccckguInItWrTIHXPMMbnf/e53uUsuuSRXXl6e23PPPVc5F9QFpd6zXmdZ35R6z+Zyudwf//jHXHl5ee6tt97KavVtaFXDt6FVgd69e0dFRUVstdVWcdRRR0XTpk3jscceiy233HKV55122mmr/P7RRx+NZs2aRZ8+fWLu3LnZr2+/PWzSpEkR8c1XJpctWxZnnXVWlJWVZccPGjRojfXMnDmzoLuKZs+eHQMGDIj27dvH4MGD1/p4KBWl2rNLly6NBg0arPZ4w4YNsxzqolLt2UWLFkVExK677hr33Xdf9OvXL375y1/GZZddFi+//HI8++yza/GnAKWjVHvW6yzrq1Lt2WXLlsW5554bp556avzwhz9cu4vmP/JtaFXgxhtvjE6dOkV5eXm0bt06OnfuHBtssOocrry8PNq0abPKY++++24sXLgwWrVqtcZ1Z8+eHRERs2bNioiIbbbZZpW8oqIimjdvXiXXsHjx4jjooIPi3//+d7z00ku2G6ROK9WebdSoUXz11VerPf7ll19mOdRFpdyzERFHH330Ko8PGDAghgwZEi+//LKdR6mTSrlnvc6yPirVnr3++utj7ty5MWLEiILXIM2wqArstttuscsuu+R9ToMGDVZruJUrV0arVq3i/vvvX+MxFRUVVVZjPsuWLYuf/vSn8be//S3Gjx8fO+ywQ42cF4qlVHt28803j0mTJkUul1vlqzKffPJJRERsscUW1Xp+KJZS7dlve7J169arPP7tm+rv//BPqCtKtWe9zrK+KsWeXbhwYYwcOTJOP/30+OKLL+KLL76IiG/u6s3lcjFz5sxo3LhxcpDFf2ZYVEQdOnSIiRMnRteuXfN+paJt27YR8c3kduutt84enzNnzjq/0Vy5cmUcf/zx8eyzz8YjjzwS3bt3X6f1oC4rds/uvPPOcfvtt8c//vGPVW61nTJlSpYD/6fYPdulS5e47bbb4qOPPlrl8Y8//jgiau6LQlAqit2zXmdh7RSzZ+fPnx+LFi2Kq6++Oq6++urV8vbt28ehhx4ajz/+eEHrE+FnFhXRkUceGStWrIjLLrtstWz58uWxYMGCiPjme0jr1asXo0ePjlwulz1n1KhRa1x3bbYaPOuss+Lhhx+Om266KX7605+u9TXA+qTYPXvooYdGvXr14qabbsoey+VyMWbMmNhyyy1jzz33XLsLgjquNvRsgwYN4q677oqVK1dmj99+++0REdGnT5+1uBqo+2pDz3qdhcorZs+2atUqHnvssdV+9ezZMxo2bBiPPfZYDBkypOBrw51FRdW9e/cYOHBgXHnllTFt2rTo27dv1KtXL95999149NFH44Ybboj+/ftHRUVF/M///E9ceeWVcdBBB8UBBxwQU6dOjaeffnqNW9xXdqvBUaNGxU033RR77LFHNG7cOO67775V8sMPPzyaNGlSZdcLpa7YPdumTZsYNGhQXHPNNfH111/HrrvuGo8//ni8+OKLcf/998eGG25YHZcNJavYPbvZZpvFRRddFJdeemnst99+cdhhh8Wbb74Zt912Wxx99NGx6667VsdlQ8kqds96nYW1U8yebdy4cRx22GGrPf7444/Hq6++usaMtWNYVGRjxoyJLl26xC233BJDhw6N8vLyaNeuXRx77LHRtWvX7HkjR46Mhg0bxpgxY2LSpEnxk5/8JCZMmBAHHnhgweeeNm1aRES88sor8corr6yWv//++4ZF8D3F7NmIiKuuuiqaN28et9xyS9x9992xzTbbxH333RcDBgxY10uDOqnYPXvxxRdH8+bNY/To0TFo0KBVBkjA6ords15nYe0Uu2epPmW5794HBgAAAMB6zc8sAgAAACBjWAQAAABAxrAIAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIGBatg7Kyskr9mjx5crFLXc28efPimmuuib333jsqKipik002id133z0efvjhYpcG1aaUe/ZbTz75ZPz4xz+Ohg0bxg9+8IMYNmxYLF++vNhlQbWoCz3773//OwYPHhzt27ePBg0axJZbbhn9+/ePJUuWFLs0qHJ1oWe9zrI+qQs9+60ZM2ZEw4YNo6ysLF577bVil1MnlBe7gFJ27733rvL7sWPHxjPPPLPa49ttt11NllUpr7zySlx00UVxwAEHxMUXXxzl5eXx+9//Po466qh4++23Y8SIEcUuEapcKfdsRMTTTz8dhx12WPTo0SNGjx4df//732PkyJExe/bsuPnmm4tdHlS5Uu/ZhQsXRvfu3ePDDz+MU045JTp27Bhz5syJF198Mb766qto3LhxsUuEKlXqPet1lvVNqffsd5177rlRXl4eX331VbFLqTPKcrlcrthF1BVnnnlm3HjjjfGf/kiXLFlS9DeI77//fmywwQbRtm3b7LFcLhe9e/eOP//5zzFv3rxo0qRJESuE6ldKPRsRsf3220e9evXitddei/Lyb2b9F198cVxxxRXx9ttvx7bbblvkCqF6lVrPnn766fHggw/GG2+8Ee3bty92OVDjSq1nvc6yviu1nv3W+PHj45BDDonBgwfHyJEj469//WvssssuxS6r5Pk2tGrWo0eP2GGHHeL111+PvffeOxo3bhxDhw6NiG9u+xs+fPhqx7Rr1y5OPPHEVR5bsGBBDBo0KLbaaqto0KBBdOzYMX71q1/FypUrV3neJ598Eu+88058/fXXeetq3779KoOib+s57LDD4quvvor33ntv7S8W6oDa2rNvv/12vP3223HKKadkb2Ajvvkwmsvl4ne/+11hFwwlrrb27IIFC+Kuu+6KU045Jdq3bx/Lli3z1U6I2tuzXmdhzWprz37r66+/jnPOOSfOOeec6NChQ0HXyJoZFtWAefPmxf777x8777xzjBo1Knr27LlWxy9ZsiS6d+8e9913Xxx//PHxm9/8Jrp27RpDhgyJ8847b5XnDhkyJLbbbrv46KOPCqr1008/jYiIli1bFnQ81AW1sWenTp0aEbHaV0m22GKLaNOmTZbD+qg29uxLL70UX375ZXTs2DH69+8fjRs3jkaNGkXXrl1j2rRpa3uJUKfUxp71OgtptbFnvzVq1KiYP39+XHzxxWtVE/+Zn1lUAz799NMYM2ZMDBw4sKDjr7vuupgxY0ZMnTo1ttlmm4iIGDhwYGyxxRZxzTXXxPnnnx9bbbXVOtf5+eefx+233x577bVXbL755uu8HpSq2tizn3zySUTEGntz8803j48//rigWqEuqI09++6770bEN296O3ToEGPHjo2FCxfGiBEjYp999om33nrLay3rrdrYs15nIa029uy3dV122WVx7bXXxsYbb1xQbaS5s6gGNGjQIE466aSCj3/00Udjr732iubNm8fcuXOzX717944VK1bECy+8kD337rvvjlwuF+3atVurc6xcuTKOOeaYWLBgQYwePbrgWqEuqI09u3Tp0qy272vYsGGWw/qoNvbsokWLIuKbW/SfffbZGDBgQJx22mnx+OOPx/z58+PGG28suF4odbWxZ73OQlpt7NmIiF/84hex9dZbx8knn1xwbaS5s6gGbLnlllG/fv2Cj3/33Xfjb3/7W1RUVKwxnz17dsFrf+uss86KcePGxdixY2OnnXZa5/WglNXGnm3UqFFExBp/5smXX36Z5bA+qs09e/DBB0fTpk2zx3ffffdo3759vPzyy4UVC3VAbe5Zr7OwutrYs3/5y1/i3nvvjWeffTY22MA9MNXBsKgGrO2Ly4oVK1b5/cqVK6NPnz4xePDgNT6/U6dOBdcWETFixIi46aab4qqrrorjjjtundaCuqA29uy3t8V/8sknq92m+8knn8Ruu+221mtCXVEbe3aLLbaIiIjWrVuvlrVq1Srmz5+/1mtCXVEbe9brLKTVxp4dPHhw7LXXXtG+ffuYOXNmRETMnTs3Ir7p2X/961/xgx/8YK3X5f8YFhVR8+bNY8GCBas8tmzZsux7pr/VoUOHWLRoUfTu3bvKa7jxxhtj+PDhMWjQoPjFL35R5etDXVLMnt15550jIuK1115b5Q3rxx9/HB9++GGccsopVXYuqCuK2bNdunSJiFjjD+j8+OOPbcENa+B1FkpLMXv2X//6V8yaNSvat2+/WnbIIYdEs2bNVquNteN+rSLq0KHDKt+fGRFx6623rjaJPfLII+OVV16J8ePHr7bGggULYvny5dnv12arwYcffjjOPvvsOOaYY+K6664r8Cpg/VHMnt1+++1j2223Xe18N998c5SVlUX//v0LuSSo04rZs507d46ddtopnnjiiewrnREREyZMiA8++CD69OlTyCVBneZ1FkpLMXv21ltvjccee2yVX2eddVZERFx77bVx//33F3pZ/P+5s6iITj755Dj11FOjX79+0adPn3jzzTdj/Pjxq21bf8EFF8STTz4ZBx10UJx44onRpUuXWLx4cfz973+P3/3udzFz5szsmCFDhsQ999wT77//ft4fCvbqq6/G8ccfHy1atIhevXqt1kx77rlnbL311lV+zVDKitmzERHXXHNNHHLIIdG3b9846qijYvr06fHb3/42Tj755Nhuu+2q67KhZBW7Z6+//vro06dPdOvWLQYOHBgLFy6M6667Ljp16hSnnXZadV02lKxi96zXWVg7xezZvn37rvbYt3cSde/ePXbZZZcqu871lWFREf385z+P999/P+64444YN25c7LXXXvHMM89Er169Vnle48aN4/nnn48rrrgiHn300Rg7dmxsvPHG0alTpxgxYkQ0a9Zsrc/99ttvx7Jly2LOnDnxs5/9bLX8rrvuMiyC7ylmz0ZEHHTQQfGHP/whRowYEWeddVZUVFTE0KFD49JLL62Ky4M6p9g927Nnzxg3blxccsklMXTo0GjcuHEcdthhcfXVV6/yQ6+BbxS7Z73Owtopds9SvcpyuVyu2EUAAAAAUDv4mUUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAAJnyyj6xrKysOuuAkpLL5Ypdwn+kZ+H/6FkoLXoWSouehdJSmZ51ZxEAAAAAGcMiAAAAADKGRQAAAABkDIsAAAAAyBgWAQAAAJAxLAIAAAAgY1gEAAAAQMawCAAAAICMYREAAAAAGcMiAAAAADKGRQAAAABkDIsAAAAAyBgWAQAAAJAxLAIAAAAgY1gEAAAAQMawCAAAAICMYREAAAAAGcMiAAAAADKGRQAAAABkyotdAABAKejRo0dBWffu3ZNZz54916EiAIDq4c4iAAAAADKGRQAAAABkDIsAAAAAyBgWAQAAAJAxLAIAAAAgY1gEAAAAQKa82AUAsHYeeeSRZNa7d+9kdv311yezJUuWJLNf//rXlSsM6rgePXoks2HDhtVcIUClbLbZZsns+OOPT2ZXXnllMttgg/TX2ocOHZrMrr766mS2YsWKZAasm3y9fs899ySzo48+Opk99NBD61RTqXBnEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIGBYBAAAAkDEsAgAAACBTlsvlcpV6YllZddeyij333DOZ9erVq6A18x03d+7cZNavX7+Czlcdxo4dm8z+/Oc/J7Nbb721OspZb1WybYqqpnuWtTdo0KBkdtVVVyWzDTfcMJnl29K3UOecc04y++1vf1vl56sOepaqUB3/jvy9r5mepSr06NEjmT399NPJbOnSpclsk002SWaLFy9OZv/1X/+VzGbOnJnMSoWepba6++67k9lxxx2XzG666aZkdtZZZ61LSbVCZXrWnUUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACATFmukvsc1vRWg0uWLElmDRs2rMFKSke+v8rly5cnszvuuCOZnX766etUU11le1Aq69xzz01mv/rVr5LZhhtuWB3lFGTevHnJrFWrVjVYSeH0LFWh0H9HPXv2TGaTJ08usJq6Tc9S3XbZZZdkVlFRkczuvPPOZNa6detkdtRRRyWzRx55JJmVCj1bfE2bNk1mRxxxRDL75z//mcxefvnldaqpNsh3fR07dkxmN910UzI766yz1qmm2qAyPevOIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAECmvNgFpLz66qvJbO+9967BSiLGjh2bzA488MBk1qJFi+ooJynfdpD16tVLZgMHDkxm+bZgvPbaa5PZ3/72t2QGpahXr17J7KGHHkpmG2+8cTLbcMMN16mmmpLv/4FTTjklmd16663VUQ5Uqx49elT5mpMnT67yNYFvbLHFFslshx12SGb5tr7u1q1bMmvWrFnlCvueDTbwNXqq1/XXX5/MfvaznyWzt956K5ntuOOO61RTTdlll12SWUVFRUFr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zz4R8c0bxIiIE088MZo2bRozZsyIAw44IDbaaKM45phjIuKbF6VRo0bF9ttvHw0bNozWrVvHwIEDY/78+ausmcvlYuTIkdGmTZto3Lhx9OzZM9566601nn/GjBkxY8aMtap58eLFsWzZsrW9VKgTSqVnX3zxxfjRj36UDYoiIho3bhyHHHJIvPHGG/Huu+8WdP1QakqlZyO++VkMsL4rlZ6dMGFCTJ8+PYYNGxaNGjWKJUuWxIoVK9bl0qEklUrPfpfPs1XPsKgafPsPu0WLFtljy5cvj3333TdatWoV1157bfTr1y8iIgYOHBgXXHBBdO3aNW644YY46aST4v7774999903vv766+z4Sy+9NC655JLYaaed4pprromtt946+vbtG4sXL17t/L169YpevXpVut4RI0ZE06ZNo2HDhrHrrrvGhAkTCr10KEml0rNfffXVGr/K+e3twe4sYn1RKj0LfKNUenbixIkREdGgQYPYZZddokmTJtG4ceM46qij4vPPP1+nPwMoJaXSs9/yebaa5CjYXXfdlYuI3MSJE3Nz5szJffDBB7mHHnoo16JFi1yjRo1yH374YS6Xy+VOOOGEXETkLrzwwlWOf/HFF3MRkbv//vtXeXzcuHGrPD579uxc/fr1cwceeGBu5cqV2fOGDh2ai4jcCSecsMrxbdu2zbVt2/Y/1j9r1qxc3759czfffHPuySefzI0aNSr3gx/8ILfBBhvk/vjHPxbwJwK1W6n37MEHH5zbZJNNcl988cUqj++xxx65iMhde+21lf2jgJJQ6j37XXPmzMlFRG7YsGFrdRyUklLv2UMOOSQXEbkWLVrkjjnmmNzvfve73CWXXJIrLy/P7bnnnqucC+qCUu9Zn2erl2HROvi2ub7/q23btrlx48Zlz/u2uWbNmrXK8WeffXauWbNmudmzZ+fmzJmzyq+mTZvmTj755Fwul8s98MADuYhYZc1c7pumW1NzrYt58+blWrdunevcuXOVrQm1Ran37J/+9KdcROT233//3BtvvJH75z//mTvnnHNy9erVy0VE7rLLLitoXaitSr1nv8uwiPVBqffsPvvsk4uI3H777bfK41deeWUuInLPPPNMQetCbVXqPbsmPs9WHT/gugrceOON0alTpygvL4/WrVtH586dY4MNVv0Ov/Ly8mjTps0qj7377ruxcOHCaNWq1RrXnT17dkREzJo1KyIittlmm1XyioqKaN68eVVdRkREbLrppnHSSSfFVVddFR9++OFqNUNdUKo9u//++8fo0aPjwgsvjB//+McREdGxY8e4/PLLY/DgwdG0adOC14barFR7FtZXpdqz336r9/d/oO+AAQNiyJAh8fLLL0fv3r0LXh9qq1Lt2TXxebbqGBZVgd122y376fEpDRo0WK3hVq5cGa1atYr7779/jccUa9eUrbbaKiIiPv/8c81FnVTKPXvmmWfGSSedFH/729+ifv36sfPOO8cdd9wRERGdOnWq9vNDMZRyz8L6qFR7dosttoiIiNatW6/y+LcfhL//A3uhrijVnk3xebZqGBYVUYcOHWLixInRtWvXvFtztm3bNiK+mdxuvfXW2eNz5syplhet9957LyK8iYbvqy0926RJk9hjjz2y30+cODEaNWoUXbt2Xee1oS6pLT0LVE6xe7ZLly5x2223xUcffbTK4x9//HFEeG8M31fsnk3xebZq2A2tiI488shYsWJFXHbZZatly5cvjwULFkRERO/evaNevXoxevToyOVy2XNGjRq1xnUru9XgnDlzVnvso48+ijvvvDN23HHH2HzzzSt3IbCeKHbPrsnLL78cf/jDH+K///u/o1mzZgWtAXVVbexZIK3YPXvooYdGgwYN4q677oqVK1dmj99+++0REdGnT5+1uBqo+4rdsz7PVi93FhVR9+7dY+DAgXHllVfGtGnTom/fvlGvXr14991349FHH40bbrgh+vfvHxUVFfE///M/ceWVV8ZBBx0UBxxwQEydOjWefvrpaNmy5WrrfrvN4MyZM/Oef/DgwTFjxozo1atXbLHFFjFz5sy45ZZbYvHixXHDDTdUxyVDSSt2z86aNSuOPPLIOOSQQ2KzzTaLt956K8aMGRM77rhjXHHFFdVxyVDSit2zERH33ntvzJo1K5YsWRIRES+88EKMHDkyIiKOO+647KutQPF7drPNNouLLrooLr300thvv/3isMMOizfffDNuu+22OProo2PXXXetjsuGklXsnvV5tnoZFhXZmDFjokuXLnHLLbfE0KFDo7y8PNq1axfHHnvsKt9SMnLkyGjYsGGMGTMmJk2aFD/5yU9iwoQJceCBBxZ87r59+8aYMWPixhtvjPnz58cmm2wSe++9d1x88cXZD88FVlXMnt14441j8803j9/+9rfx+eefx5Zbbhlnn312XHTRRbHRRhtVxeVBnVPMno2IuOOOO+L555/Pfj9p0qSYNGlSRER069bNsAi+p9g9e/HFF0fz5s1j9OjRMWjQoFUGSMDqfJ6tu8py370PDAAAAID1mp9ZBAAAAEDGsAgAAACAjGERAAAAABnDIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQMSxaB2VlZZX6NXny5GKXukbt2rVbY72nnnpqsUuDalHqPbto0aIYNGhQtGnTJho0aBDbbbdd3HzzzcUuC6pNqffsww8/HMcee2xss802UVZWFj169Ch2SVCtSr1nIyL+/e9/x+DBg6N9+/bRoEGD2HLLLaN///6xZMmSYpcGVa7Ue9bn2epVXuwCStm99967yu/Hjh0bzzzzzGqPb7fddjVZ1lrZeeed4/zzz1/lsU6dOhWpGqhepdyzK1asiH333Tdee+21OOOMM2KbbbaJ8ePHx+mnnx7z58+PoUOHFrtEqHKl3LMRETfffHO8/vrrseuuu8a8efOKXQ5Uu1Lv2YULF0b37t3jww8/jFNOOSU6duwYc+bMiRdffDG++uqraNy4cbFLhCpV6j0b4fNsdSrL5XK5YhdRV5x55plx4403xn/6I12yZEmteLFp165d7LDDDvHHP/6x2KVAUZRSzz766KNx5JFHxh133BE/+9nPssf79+8fTz31VMyaNStatWpVxAqh+pVSz0ZEfPDBB7HlllvGBhtsEDvssEO0bNmy1n51FqpDqfXs6aefHg8++GC88cYb0b59+2KXAzWu1HrW59nq5dvQqlmPHj1ihx12iNdffz323nvvaNy4cXYHQFlZWQwfPny1Y9q1axcnnnjiKo8tWLAgBg0aFFtttVU0aNAgOnbsGL/61a9i5cqVqzzvk08+iXfeeSe+/vrrSte4bNmyWLx48VpfG9RFtbVnX3zxxYiIOOqoo1Z5/Kijjoovv/wynnjiibW8UqgbamvPRkRstdVWscEG3mrBd9XWnl2wYEHcddddccopp0T79u1j2bJl8dVXX63TtUJdUFt79rt8nq0e3sHUgHnz5sX+++8fO++8c4waNSp69uy5VscvWbIkunfvHvfdd18cf/zx8Zvf/Ca6du0aQ4YMifPOO2+V5w4ZMiS22267+Oijjyq19nPPPReNGzeOpk2bRrt27eKGG25Yq9qgLqqNPfvVV1/FhhtuGPXr11/l8W+/qvP666+vVY1Ql9TGngXSamPPvvTSS/Hll19Gx44do3///tG4ceNo1KhRdO3aNaZNm7a2lwh1Sm3s2W/5PFt9/MyiGvDpp5/GmDFjYuDAgQUdf91118WMGTNi6tSpsc0220RExMCBA2OLLbaIa665Js4///zYaqut1nrdHXfcMbp16xadO3eOefPmxd133x2DBg2Kjz/+OH71q18VVCvUBbWxZzt37hwrVqyIv/zlL9GtW7fs8W/vOPLBlfVZbexZIK029uy7774bEd98UO3QoUOMHTs2Fi5cGCNGjIh99tkn3nrrrdh8880LqhdKXW3s2QifZ6ubO4tqQIMGDeKkk04q+PhHH3009tprr2jevHnMnTs3+9W7d+9YsWJFvPDCC9lz77777sjlctGuXbv/uO6TTz4ZgwcPjkMPPTR+9rOfxfPPPx/77rtvXHfddfHhhx8WXC+UutrYswMGDIhmzZrFz372s3jmmWdi5syZceutt8ZNN90UERFLly4tuF4odbWxZ4G02tizixYtiohvvq3m2WefjQEDBsRpp50Wjz/+eMyfPz9uvPHGguuFUlcbezbC59nq5s6iGrDllluu9q0ja+Pdd9+Nv/3tb1FRUbHGfPbs2QWv/V1lZWVx7rnnxvjx42Py5Mlx7LHHVsm6UGpqY89uttlm8eSTT8Zxxx0Xffv2jYiIjTfeOEaPHh0nnHBCNG3atOB6odTVxp4F0mpjzzZq1CgiIg4++OBVXlN33333aN++fbz88suFFQt1QG3s2TXxebZqGRbVgG9ffCprxYoVq/x+5cqV0adPnxg8ePAan1+VWwN+e/vf559/XmVrQqmprT279957x3vvvRd///vfY/HixbHTTjvFxx9/vE5rQl1QW3sWWLPa2LNbbLFFRES0bt16taxVq1Yxf/78tV4T6ora2LMpPs9WHcOiImrevHksWLBglceWLVsWn3zyySqPdejQIRYtWhS9e/eu9pree++9iIjk1BfWZ7WhZzfccMPYeeeds99PnDgxIqJG/n+AUlMbehaovGL2bJcuXSJizT8D8OOPP45tt922ys4FdUVtfJ31ebbq+JlFRdShQ4dVvj8zIuLWW29dbRJ75JFHxiuvvBLjx49fbY0FCxbE8uXLs99XdqvBzz//fLXzfP3113HVVVdF/fr11/on3MP6oJg9uyZz5syJX/3qV7Hjjjv6kAtrUNt6FsivmD3buXPn2GmnneKJJ56IuXPnZo9PmDAhPvjgg+jTp08hlwR1ms+zdZs7i4ro5JNPjlNPPTX69esXffr0iTfffDPGjx8fLVu2XOV5F1xwQTz55JNx0EEHxYknnhhdunSJxYsXx9///vf43e9+FzNnzsyOGTJkSNxzzz3x/vvv5/2hYE8++WSMHDky+vfvH+3bt4/PP/88HnjggZg+fXpcccUVsdlmm1XnpUNJKmbPRkR079499thjj+jYsWN8+umnceutt8aiRYvij3/8Y2ywgdk/fF+xe/aFF17I3kTPmTMnFi9eHCNHjoyIb76tdO+99676i4YSVuyevf7666NPnz7RrVu3GDhwYCxcuDCuu+666NSpU5x22mnVddlQsnyerdsMi4ro5z//ebz//vtxxx13xLhx42KvvfaKZ555Jnr16rXK8xo3bhzPP/98XHHFFfHoo4/G2LFjY+ONN45OnTrFiBEjolmzZmt97v/6r/+KH/7wh3HffffFnDlzon79+rHzzjvHI488EkcccURVXSLUKcXs2YhvbpF/9NFH46OPPoqNN944+vTpE5dddllsvfXWVXF5UOcUu2efe+65GDFixCqPXXLJJRERMWzYMMMi+J5i92zPnj1j3Lhxcckll8TQoUOjcePGcdhhh8XVV19tIwlYA59n67ayXC6XK3YRAAAAANQOvm8BAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIGBYBAAAAkDEsAgAAACBTXtknlpWVVWcdUFJyuVyxS/iP9Cz8Hz0LpUXPQmnRs1BaKtOz7iwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAABnDIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAAJnyYhcAAACQ8pOf/CSZPfXUU8nspz/9aTJ74YUX1qkmgLrOnUUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACATHmxCwAAANZvm2yySTJ74oknCjpu++23T2YvvPBCZcoCaom2bdsms5YtWyazoUOHJrPDDjssmT3++OPJ7LjjjktmS5YsSWalxp1FAAAAAGQMiwAAAADIGBYBAAAAkDEsAgAAACBjWAQAAABAxrAIAAAAgExZLpfLVeqJZWXVXQuUjEq2TVHpWfg/epbv+vjjj5PZ1VdfncxGjRpVDdWwJnp2/fPoo48ms8MPPzyZnXHGGcls7NixyWzp0qWVK4xK0bN107bbbpvMtttuu2T22GOPJbOKiopklq/XL7vssmTWokWLZJbv7z3fv9t8x+26667J7I033khmtUlletadRQAAAABkDIsAAAAAyBgWAQAAAJAxLAIAAAAgY1gEAAAAQMawCAAAAIBMebELqMvq1auXzLp165bMnn766WTWoEGDZPbSSy8lsz333DOZFepPf/pTMjv44IOr/HwAUBXybRd79dVXJ7OpU6cms+eff36daoL1we67757MDjzwwGS2YMGCZDZu3LhktnTp0krVBaxZv379klm+rewL3ZK+0OPmzJmTzP71r38ls3zmzp2bzN54442C1iw17iwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAABnDIgAAAAAyhkUAAAAAZMqLXUBdds899ySzI488sqA1V65cmcy23377ZPb2228ns1tuuaWgWmbNmlXQcVBb1a9fP5mdffbZySzfdr89evRIZvn6OZ9jjz02meXbvvvjjz8u6HywPqlXr15BGfCfbbXVVsks32vwOeeck8y8H4V1c/jhhyezCy+8MJnl2+Y+X5ZPvs+sL730UjK77bbbklmh29y3bNmyoOPqEncWAQAAAJAxLAIAAAAgY1gEAAAAQMawCAAAAICMYREAAAAAGcMiAAAAADLlxS6gLuvSpUuVrzlv3rxkdv755yeze++9t8prgVLUsGHDZPbUU08ls+7duxd0vpUrVyazQrcVzdfPU6ZMSWZdu3Yt6HwAUBVOP/30ZLZ48eJk9txzz1VHOUBE7LvvvsmscePGyeyDDz5IZldccUUye+GFF5LZO++8k8xq2ty5c4tdQtG5swgAAACAjGERAAAAABnDIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQKS92AXXZnXfemcxGjBiRzMrL038te++9dzKrTVsNQnVr1apVMrvvvvuS2WeffZbMunfvXlAtb731VjKbMGFCMrvnnnuS2YABA5JZvi1OgerTokWLYpcAtV67du2S2Y477pjMlixZksxmzJixLiUBeRx++OHJLJfLJbNzzz03mT322GPrVBO1gzuL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tdde1VFOrePOIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAECmvNgFsHb++7//O5ltuummyWz//fdPZvfcc08yO+mkk5LZF198kcwAYH3St2/fYpcAtcL06dOTWS6XS2YNGjRIZh07dkxm06ZNq1Rda2P77bdPZvvuu28yy3d9Dz744DrVBBSmoqIimf36179OZvn6+fLLL1+nmkqFO4sAAAAAyBgWAQAAAJAxLAIAAAAgY1gEAAAAQMawCAAAAICMYREAAAAAmfJiF8DaWb58eTJ77733Clqzd+/eyWy77bZLZlOmTCnofLA++fzzz5PZP/7xj2SWr/eA2iffduGwPvnnP/+ZzK655ppk9j//8z/J7Lbbbktmp556ajJ76aWXklm+bbHPOOOMZLbpppsms7vuuiuZQWXtt99+yeypp55KZv37909mjz322DrVVBs0adIkmR1++OHJbOjQocmsc+fOyWzJkiXJ7IEHHkhmdYk7iwAAAADIGBYBAAAAkDEsAgAAACBjWAQAAABAxrAIAAAAgIxhEQAAAACZ8mIXwNo59NBDk9lPf/rTgtYcN25cMpsyZUpBawLfWLBgQTKbMWNGMttuu+2qoRqguowdO7bYJUCtsHz58mQ2ZMiQZDZ16tRkdsMNNySzHj16JLOePXsms1wul8zyyfe6vr5sp031uueee5JZvn+3+baIf+yxx5LZtttum8zeeeedZFYdDj/88GR27LHHJrN8n5HLysqS2dtvv53MLr300mRW038uxeLOIgAAAAAyhkUAAAAAZAyLAAAAAMgYFgEAAACQMSwCAAAAIGNYBAAAAECmvNgFrK86duyYzE4//fRkds455ySzfFspTpgwIZkNHDgwmQHV5//7//6/Kl9z++23Lyh76623qrwWAKisRx55JJnNmjUrmV111VXJbO+99y6olrvuuiuZPfDAA8ls0qRJBZ0PvqtVq1bJbOXKlclsl112SWYrVqxIZvm2ls/3+bJUjsv3Ofi4445LZnPnzk1m6wt3FgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAABnDIgAAAAAy5cUuoCa1aNEimR1yyCE1WEnExRdfnMzatm2bzJYvX57Mjj/++GT29NNPJ7MvvvgimQHVZ/z48cnsvPPOK2jNpk2bFpQBQG01ZcqUZNazZ88arASq37nnnpvMLrzwwmRWUVGRzPJtLZ9PdRyXb0v6f/zjHwVl77zzTjK74YYbkhn5ubMIAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIGBYBAAAAkCkvdgE1Kd8W8QMGDEhmtWlLzv/3//5fMnv88cdrrhCg5Oy8887JLN+2xLA+eeqpp5JZvm2Jp06dWh3lALCeGTVqVEEZVDV3FgEAAACQMSwCAAAAIGNYBAAAAEDGsAgAAACAjGERAAAAABnDIgAAAAAyZblcLlepJ5aVVXctRdWxY8dkNnHixGTWpk2bgs73m9/8JplddtllyWz+/PkFnY+qVcm2Kaq63rN1waabbprMXn311WTWrl27gs7XtWvXZDZlypSC1iwVehZKi56F0qJnobRUpmfdWQQAAABAxrAIAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIlBe7gNrif//3f5NZodtUA+Tz+eefJ7PFixfXYCUAAAD/x51FAAAAAGQMiwAAAADIGBYBAAAAkDEsAgAAACBjWAQAAABAxrAIAAAAgExZLpfLVeqJZWXVXQuUjEq2TVHpWfg/ehZKi56F0qJnobRUpmfdWQQAAABAxrAIAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIGBYBAAAAkDEsAgAAACBjWAQAAABAxrAIAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGTKcrlcrthFAAAAAFA7uLMIAAAAgIxhEQAAAAAZwyIAAAAAMoZFAAAAAGQMiwAAAADIGBYBAAAAkDEsAgAAACBjWAQAAABAxrAIAAAAgMz/D4mR3RVGkaqfAAAAAElFTkSuQmCC\n"
|
| 245 |
+
},
|
| 246 |
+
"metadata": {}
|
| 247 |
+
}
|
| 248 |
+
]
|
| 249 |
+
}
|
| 250 |
+
]
|
| 251 |
+
}
|
train.csv.zip
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:be10aa975c7c35d190beefeb730b6d6819e6a20f57ab4ae151c27f8dbe05354c
|
| 3 |
+
size 9327417
|