-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDigits MNIST Classification using CNN
More file actions
1 lines (1 loc) · 180 KB
/
Copy pathDigits MNIST Classification using CNN
File metadata and controls
1 lines (1 loc) · 180 KB
1
{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":29837,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## About the Dataset\n> * MNIST (\"Modified National Institute of Standards and Technology\") is the de facto “hello world” dataset of computer vision. \n> * Since its release in 1999, this classic dataset of handwritten images has served as the basis for benchmarking classification algorithms. \n> * As new machine learning techniques emerge, MNIST remains a reliable resource for researchers and learners alike.\n\n## Task\n> * To correctly identify digits from a dataset of tens of thousands of handwritten images in the test dataset","metadata":{}},{"cell_type":"markdown","source":"# Libraries","metadata":{}},{"cell_type":"code","source":"# for numerical analysis\nimport numpy as np \n# to store and process in a dataframe\nimport pandas as pd \n\n# for ploting graphs\nimport matplotlib.pyplot as plt\n# advanced ploting\nimport seaborn as sns\n\n# image processing\nimport matplotlib.image as mpimg\n\n# train test split\nfrom sklearn.model_selection import train_test_split\n# model performance metrics\nfrom sklearn.metrics import confusion_matrix, classification_report\n\n# utility functions\nfrom tensorflow.keras.utils import to_categorical\n# sequential model\nfrom tensorflow.keras.models import Sequential\n# layers\nfrom tensorflow.keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout\n\n\n# from keras.optimizers import RMSprop\n# from keras.preprocessing.image import ImageDataGenerator\n# from keras.callbacks import ReduceLROnPlateau","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-09-05T06:27:37.762438Z","iopub.execute_input":"2024-09-05T06:27:37.762809Z","iopub.status.idle":"2024-09-05T06:27:41.858925Z","shell.execute_reply.started":"2024-09-05T06:27:37.762756Z","shell.execute_reply":"2024-09-05T06:27:41.857867Z"},"trusted":true},"execution_count":1,"outputs":[]},{"cell_type":"markdown","source":"# Data","metadata":{}},{"cell_type":"code","source":"# list of files\n! ls ../input/digit-recognizer","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:41.862002Z","iopub.execute_input":"2024-09-05T06:27:41.862514Z","iopub.status.idle":"2024-09-05T06:27:43.034071Z","shell.execute_reply.started":"2024-09-05T06:27:41.862434Z","shell.execute_reply":"2024-09-05T06:27:43.032870Z"},"trusted":true},"execution_count":2,"outputs":[{"name":"stdout","text":"sample_submission.csv test.csv train.csv\n","output_type":"stream"}]},{"cell_type":"code","source":"# import train and test dataset\ntrain = pd.read_csv(\"../input/digit-recognizer/train.csv\")\ntest = pd.read_csv(\"../input/digit-recognizer/test.csv\")","metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","execution":{"iopub.status.busy":"2024-09-05T06:27:43.036069Z","iopub.execute_input":"2024-09-05T06:27:43.036441Z","iopub.status.idle":"2024-09-05T06:27:50.874205Z","shell.execute_reply.started":"2024-09-05T06:27:43.036375Z","shell.execute_reply":"2024-09-05T06:27:50.873005Z"},"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"# training dataset\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:50.875896Z","iopub.execute_input":"2024-09-05T06:27:50.876225Z","iopub.status.idle":"2024-09-05T06:27:50.930014Z","shell.execute_reply.started":"2024-09-05T06:27:50.876166Z","shell.execute_reply":"2024-09-05T06:27:50.928783Z"},"trusted":true},"execution_count":4,"outputs":[{"execution_count":4,"output_type":"execute_result","data":{"text/plain":" label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n0 1 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 0 \n2 1 0 0 0 0 0 0 0 0 \n3 4 0 0 0 0 0 0 0 0 \n4 0 0 0 0 0 0 0 0 0 \n\n pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n0 0 ... 0 0 0 0 0 0 \n1 0 ... 0 0 0 0 0 0 \n2 0 ... 0 0 0 0 0 0 \n3 0 ... 0 0 0 0 0 0 \n4 0 ... 0 0 0 0 0 0 \n\n pixel780 pixel781 pixel782 pixel783 \n0 0 0 0 0 \n1 0 0 0 0 \n2 0 0 0 0 \n3 0 0 0 0 \n4 0 0 0 0 \n\n[5 rows x 785 columns]","text/html":"<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>pixel0</th>\n <th>pixel1</th>\n <th>pixel2</th>\n <th>pixel3</th>\n <th>pixel4</th>\n <th>pixel5</th>\n <th>pixel6</th>\n <th>pixel7</th>\n <th>pixel8</th>\n <th>...</th>\n <th>pixel774</th>\n <th>pixel775</th>\n <th>pixel776</th>\n <th>pixel777</th>\n <th>pixel778</th>\n <th>pixel779</th>\n <th>pixel780</th>\n <th>pixel781</th>\n <th>pixel782</th>\n <th>pixel783</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 785 columns</p>\n</div>"},"metadata":{}}]},{"cell_type":"code","source":"# test dataset\ntest.head()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:50.934461Z","iopub.execute_input":"2024-09-05T06:27:50.934899Z","iopub.status.idle":"2024-09-05T06:27:50.963042Z","shell.execute_reply.started":"2024-09-05T06:27:50.934830Z","shell.execute_reply":"2024-09-05T06:27:50.961935Z"},"trusted":true},"execution_count":5,"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":" pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 \\\n0 0 0 0 0 0 0 0 0 0 \n1 0 0 0 0 0 0 0 0 0 \n2 0 0 0 0 0 0 0 0 0 \n3 0 0 0 0 0 0 0 0 0 \n4 0 0 0 0 0 0 0 0 0 \n\n pixel9 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n0 0 ... 0 0 0 0 0 0 \n1 0 ... 0 0 0 0 0 0 \n2 0 ... 0 0 0 0 0 0 \n3 0 ... 0 0 0 0 0 0 \n4 0 ... 0 0 0 0 0 0 \n\n pixel780 pixel781 pixel782 pixel783 \n0 0 0 0 0 \n1 0 0 0 0 \n2 0 0 0 0 \n3 0 0 0 0 \n4 0 0 0 0 \n\n[5 rows x 784 columns]","text/html":"<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>pixel0</th>\n <th>pixel1</th>\n <th>pixel2</th>\n <th>pixel3</th>\n <th>pixel4</th>\n <th>pixel5</th>\n <th>pixel6</th>\n <th>pixel7</th>\n <th>pixel8</th>\n <th>pixel9</th>\n <th>...</th>\n <th>pixel774</th>\n <th>pixel775</th>\n <th>pixel776</th>\n <th>pixel777</th>\n <th>pixel778</th>\n <th>pixel779</th>\n <th>pixel780</th>\n <th>pixel781</th>\n <th>pixel782</th>\n <th>pixel783</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>...</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 784 columns</p>\n</div>"},"metadata":{}}]},{"cell_type":"code","source":"# looking for missing values\nprint(train.isna().sum().sum())\nprint(test.isna().sum().sum())","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:50.966792Z","iopub.execute_input":"2024-09-05T06:27:50.967168Z","iopub.status.idle":"2024-09-05T06:27:51.113049Z","shell.execute_reply.started":"2024-09-05T06:27:50.967100Z","shell.execute_reply":"2024-09-05T06:27:51.111984Z"},"trusted":true},"execution_count":6,"outputs":[{"name":"stdout","text":"0\n0\n","output_type":"stream"}]},{"cell_type":"markdown","source":"# EDA","metadata":{}},{"cell_type":"markdown","source":"### Label count","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(8, 5))\nsns.countplot(train['label'], palette='Dark2')\nplt.title('Train labels count')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:51.114710Z","iopub.execute_input":"2024-09-05T06:27:51.115107Z","iopub.status.idle":"2024-09-05T06:27:51.398839Z","shell.execute_reply.started":"2024-09-05T06:27:51.115045Z","shell.execute_reply":"2024-09-05T06:27:51.397791Z"},"trusted":true},"execution_count":7,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 576x360 with 1 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":"train['label'].value_counts().sort_index()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:51.401257Z","iopub.execute_input":"2024-09-05T06:27:51.401648Z","iopub.status.idle":"2024-09-05T06:27:51.417097Z","shell.execute_reply.started":"2024-09-05T06:27:51.401552Z","shell.execute_reply":"2024-09-05T06:27:51.415762Z"},"trusted":true},"execution_count":8,"outputs":[{"execution_count":8,"output_type":"execute_result","data":{"text/plain":"0 4132\n1 4684\n2 4177\n3 4351\n4 4072\n5 3795\n6 4137\n7 4401\n8 4063\n9 4188\nName: label, dtype: int64"},"metadata":{}}]},{"cell_type":"code","source":"# first few train images with labels\nfig, ax = plt.subplots(figsize=(18, 8))\nfor ind, row in train.iloc[:8, :].iterrows():\n plt.subplot(2, 4, ind+1)\n plt.title(row[0])\n img = row.to_numpy()[1:].reshape(28, 28)\n fig.suptitle('Train images', fontsize=24)\n plt.axis('off')\n plt.imshow(img, cmap='magma')","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:51.418636Z","iopub.execute_input":"2024-09-05T06:27:51.418953Z","iopub.status.idle":"2024-09-05T06:27:52.134780Z","shell.execute_reply.started":"2024-09-05T06:27:51.418903Z","shell.execute_reply":"2024-09-05T06:27:52.133684Z"},"trusted":true},"execution_count":9,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1296x576 with 8 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":"> Test images doesn't have labels \n> We need to create a model to predict them","metadata":{"_kg_hide-input":true}},{"cell_type":"code","source":"# first few test images\nfig, ax = plt.subplots(figsize=(18, 8))\nfor ind, row in test.iloc[:8, :].iterrows():\n plt.subplot(2, 4, ind+1)\n img = row.to_numpy()[:].reshape(28, 28)\n fig.suptitle('Test images', fontsize=24)\n plt.axis('off')\n plt.imshow(img, cmap='magma')","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:52.136795Z","iopub.execute_input":"2024-09-05T06:27:52.137143Z","iopub.status.idle":"2024-09-05T06:27:52.814543Z","shell.execute_reply.started":"2024-09-05T06:27:52.137079Z","shell.execute_reply":"2024-09-05T06:27:52.813417Z"},"trusted":true},"execution_count":10,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1296x576 with 8 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":"# Preprocessing","metadata":{}},{"cell_type":"code","source":"# split into image and labels and convert to numpy array\nX = train.iloc[:, 1:].to_numpy()\ny = train['label'].to_numpy()\n\n# test dataset\ntest = test.loc[:, :].to_numpy()\n\nfor i in [X, y, test]:\n print(i.shape)","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:52.816167Z","iopub.execute_input":"2024-09-05T06:27:52.816586Z","iopub.status.idle":"2024-09-05T06:27:52.825160Z","shell.execute_reply.started":"2024-09-05T06:27:52.816492Z","shell.execute_reply":"2024-09-05T06:27:52.824028Z"},"trusted":true},"execution_count":11,"outputs":[{"name":"stdout","text":"(42000, 784)\n(42000,)\n(28000, 784)\n","output_type":"stream"}]},{"cell_type":"code","source":"# normalize the data\n# ==================\n\nX = X / 255.0\ntest = test / 255.0","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:52.827114Z","iopub.execute_input":"2024-09-05T06:27:52.827843Z","iopub.status.idle":"2024-09-05T06:27:53.287865Z","shell.execute_reply.started":"2024-09-05T06:27:52.827513Z","shell.execute_reply":"2024-09-05T06:27:53.286697Z"},"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"code","source":"# reshape dataset\n# ===============\n\n# shape of training and test dataset\nprint(X.shape)\nprint(test.shape)\n\n# reshape the dataframe to 3x3 matrix with 1 channel grey scale values\nX = X.reshape(-1,28,28,1)\ntest = test.reshape(-1,28,28,1)\n\n# shape of training and test dataset\nprint(X.shape)\nprint(test.shape)","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:53.289152Z","iopub.execute_input":"2024-09-05T06:27:53.289579Z","iopub.status.idle":"2024-09-05T06:27:53.297331Z","shell.execute_reply.started":"2024-09-05T06:27:53.289511Z","shell.execute_reply":"2024-09-05T06:27:53.296348Z"},"trusted":true},"execution_count":13,"outputs":[{"name":"stdout","text":"(42000, 784)\n(28000, 784)\n(42000, 28, 28, 1)\n(28000, 28, 28, 1)\n","output_type":"stream"}]},{"cell_type":"code","source":"# one hot encode target\n# =====================\n\n# shape and values of target\nprint(y.shape)\nprint(y[0])\n\n# convert Y_train to categorical by one-hot-encoding\ny_enc = to_categorical(y, num_classes = 10)\n\n# shape and values of target\nprint(y_enc.shape)\nprint(y_enc[0])","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:53.298976Z","iopub.execute_input":"2024-09-05T06:27:53.299323Z","iopub.status.idle":"2024-09-05T06:27:53.314070Z","shell.execute_reply.started":"2024-09-05T06:27:53.299271Z","shell.execute_reply":"2024-09-05T06:27:53.312985Z"},"trusted":true},"execution_count":14,"outputs":[{"name":"stdout","text":"(42000,)\n1\n(42000, 10)\n[0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n","output_type":"stream"}]},{"cell_type":"code","source":"# train test split\n# ================\n\n# random seed\nrandom_seed = 2\n\n# train validation split\nX_train, X_val, y_train_enc, y_val_enc = train_test_split(X, y_enc, test_size=0.3)\n\n# shape\nfor i in [X_train, y_train_enc, X_val, y_val_enc]:\n print(i.shape)","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:53.315831Z","iopub.execute_input":"2024-09-05T06:27:53.316245Z","iopub.status.idle":"2024-09-05T06:27:54.157751Z","shell.execute_reply.started":"2024-09-05T06:27:53.316169Z","shell.execute_reply":"2024-09-05T06:27:54.156702Z"},"trusted":true},"execution_count":15,"outputs":[{"name":"stdout","text":"(29400, 28, 28, 1)\n(29400, 10)\n(12600, 28, 28, 1)\n(12600, 10)\n","output_type":"stream"}]},{"cell_type":"markdown","source":"## Plot images","metadata":{}},{"cell_type":"code","source":"g = plt.imshow(X_train[0][:,:,0])\nprint(y_train_enc[0])","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:54.159159Z","iopub.execute_input":"2024-09-05T06:27:54.159457Z","iopub.status.idle":"2024-09-05T06:27:54.373075Z","shell.execute_reply.started":"2024-09-05T06:27:54.159409Z","shell.execute_reply":"2024-09-05T06:27:54.371970Z"},"trusted":true},"execution_count":16,"outputs":[{"name":"stdout","text":"[0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":"g = plt.imshow(X_train[9][:,:,0])\nprint(y_train_enc[9])","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:54.374517Z","iopub.execute_input":"2024-09-05T06:27:54.374901Z","iopub.status.idle":"2024-09-05T06:27:54.722584Z","shell.execute_reply.started":"2024-09-05T06:27:54.374837Z","shell.execute_reply":"2024-09-05T06:27:54.721523Z"},"trusted":true},"execution_count":17,"outputs":[{"name":"stdout","text":"[0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":"# CNN","metadata":{}},{"cell_type":"markdown","source":"### Model parameters","metadata":{}},{"cell_type":"code","source":"INPUT_SHAPE = (28,28,1)\nOUTPUT_SHAPE = 10\nBATCH_SIZE = 128\nEPOCHS = 10\nVERBOSE = 2","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:54.724296Z","iopub.execute_input":"2024-09-05T06:27:54.724639Z","iopub.status.idle":"2024-09-05T06:27:54.729587Z","shell.execute_reply.started":"2024-09-05T06:27:54.724553Z","shell.execute_reply":"2024-09-05T06:27:54.728666Z"},"trusted":true},"execution_count":18,"outputs":[]},{"cell_type":"markdown","source":"### Define CNN Model","metadata":{}},{"cell_type":"code","source":"model = Sequential()\n\nmodel.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=INPUT_SHAPE))\nmodel.add(MaxPool2D((2,2)))\n\nmodel.add(Conv2D(64, kernel_size=(3,3), activation='relu'))\nmodel.add(MaxPool2D((2,2)))\n\nmodel.add(Flatten())\n\nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dropout(0.2))\n\nmodel.add(Dense(64, activation='relu'))\nmodel.add(Dropout(0.2))\n\nmodel.add(Dense(10, activation='softmax'))","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:54.731294Z","iopub.execute_input":"2024-09-05T06:27:54.731618Z","iopub.status.idle":"2024-09-05T06:27:55.021976Z","shell.execute_reply.started":"2024-09-05T06:27:54.731542Z","shell.execute_reply":"2024-09-05T06:27:55.020804Z"},"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"markdown","source":"### Compile model","metadata":{}},{"cell_type":"code","source":"model.compile(optimizer='adam', \n loss='categorical_crossentropy', \n metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:55.023298Z","iopub.execute_input":"2024-09-05T06:27:55.023757Z","iopub.status.idle":"2024-09-05T06:27:55.087593Z","shell.execute_reply.started":"2024-09-05T06:27:55.023688Z","shell.execute_reply":"2024-09-05T06:27:55.086470Z"},"trusted":true},"execution_count":20,"outputs":[]},{"cell_type":"markdown","source":"### Model summary","metadata":{}},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:55.089606Z","iopub.execute_input":"2024-09-05T06:27:55.090041Z","iopub.status.idle":"2024-09-05T06:27:55.098903Z","shell.execute_reply.started":"2024-09-05T06:27:55.089959Z","shell.execute_reply":"2024-09-05T06:27:55.097755Z"},"trusted":true},"execution_count":21,"outputs":[{"name":"stdout","text":"Model: \"sequential\"\n_________________________________________________________________\nLayer (type) Output Shape Param # \n=================================================================\nconv2d (Conv2D) (None, 26, 26, 32) 320 \n_________________________________________________________________\nmax_pooling2d (MaxPooling2D) (None, 13, 13, 32) 0 \n_________________________________________________________________\nconv2d_1 (Conv2D) (None, 11, 11, 64) 18496 \n_________________________________________________________________\nmax_pooling2d_1 (MaxPooling2 (None, 5, 5, 64) 0 \n_________________________________________________________________\nflatten (Flatten) (None, 1600) 0 \n_________________________________________________________________\ndense (Dense) (None, 128) 204928 \n_________________________________________________________________\ndropout (Dropout) (None, 128) 0 \n_________________________________________________________________\ndense_1 (Dense) (None, 64) 8256 \n_________________________________________________________________\ndropout_1 (Dropout) (None, 64) 0 \n_________________________________________________________________\ndense_2 (Dense) (None, 10) 650 \n=================================================================\nTotal params: 232,650\nTrainable params: 232,650\nNon-trainable params: 0\n_________________________________________________________________\n","output_type":"stream"}]},{"cell_type":"markdown","source":"### Model fitting","metadata":{}},{"cell_type":"code","source":"history = model.fit(X_train, y_train_enc,\n epochs=EPOCHS,\n batch_size=BATCH_SIZE,\n verbose=VERBOSE,\n validation_split=0.3)","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:27:55.100500Z","iopub.execute_input":"2024-09-05T06:27:55.101040Z","iopub.status.idle":"2024-09-05T06:29:51.181420Z","shell.execute_reply.started":"2024-09-05T06:27:55.100795Z","shell.execute_reply":"2024-09-05T06:29:51.180250Z"},"trusted":true},"execution_count":22,"outputs":[{"name":"stdout","text":"Train on 20580 samples, validate on 8820 samples\nEpoch 1/10\n20580/20580 - 13s - loss: 0.5815 - accuracy: 0.8093 - val_loss: 0.1514 - val_accuracy: 0.9528\nEpoch 2/10\n20580/20580 - 11s - loss: 0.1504 - accuracy: 0.9553 - val_loss: 0.0883 - val_accuracy: 0.9718\nEpoch 3/10\n20580/20580 - 12s - loss: 0.1016 - accuracy: 0.9704 - val_loss: 0.0741 - val_accuracy: 0.9763\nEpoch 4/10\n20580/20580 - 12s - loss: 0.0791 - accuracy: 0.9767 - val_loss: 0.0692 - val_accuracy: 0.9798\nEpoch 5/10\n20580/20580 - 11s - loss: 0.0599 - accuracy: 0.9810 - val_loss: 0.0657 - val_accuracy: 0.9807\nEpoch 6/10\n20580/20580 - 12s - loss: 0.0478 - accuracy: 0.9862 - val_loss: 0.0582 - val_accuracy: 0.9823\nEpoch 7/10\n20580/20580 - 11s - loss: 0.0404 - accuracy: 0.9868 - val_loss: 0.0572 - val_accuracy: 0.9828\nEpoch 8/10\n20580/20580 - 11s - loss: 0.0364 - accuracy: 0.9888 - val_loss: 0.0565 - val_accuracy: 0.9836\nEpoch 9/10\n20580/20580 - 11s - loss: 0.0333 - accuracy: 0.9889 - val_loss: 0.0529 - val_accuracy: 0.9847\nEpoch 10/10\n20580/20580 - 11s - loss: 0.0238 - accuracy: 0.9919 - val_loss: 0.0538 - val_accuracy: 0.9842\n","output_type":"stream"}]},{"cell_type":"markdown","source":"### Accurayc and loss","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(14, 5))\n\nplt.subplot(1, 2, 1)\nplt.plot(history.history['accuracy'], label='Training Accuracy')\nplt.plot(history.history['val_accuracy'], label='Validation Accuracy')\nplt.legend(loc='lower right')\nplt.title('Training and Validation Accuracy')\n\nplt.subplot(1, 2, 2)\nplt.plot(history.history['loss'], label='Training Loss')\nplt.plot(history.history['val_loss'], label='Validation Loss')\nplt.legend(loc='upper right')\nplt.title('Training and Validation Loss')\n\nplt.savefig('./foo.png')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:29:51.183190Z","iopub.execute_input":"2024-09-05T06:29:51.183492Z","iopub.status.idle":"2024-09-05T06:29:51.725703Z","shell.execute_reply.started":"2024-09-05T06:29:51.183443Z","shell.execute_reply":"2024-09-05T06:29:51.724589Z"},"trusted":true},"execution_count":23,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1008x360 with 2 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAA0IAAAE/CAYAAABrfXNCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt8XNV19//P0l2yNJLvlnzBBhvbY2MbIxxS7klDDOGSAAWcQICUuskvKWl4oJg0oSkhT3gampC0JC1pgJACLiXlCSUmPC2BEpom2CRgsCRjYxsjS7KFL7pYd2n9/jhH9ljoMpJGM5L1fb9e85qZffbZZ40EPlqz91nH3B0REREREZHxJC3VAYiIiIiIiCSbEiERERERERl3lAiJiIiIiMi4o0RIRERERETGHSVCIiIiIiIy7igREhERERGRcUeJkAyamaWbWaOZzUlk31Qys/lmNiK15HuObWb/z8w+NRJxmNlXzewfhrq/iMh4pvPb8MbW+U3GGiVC40D4D3X3o8vMmmPe9/oPVn/cvdPd8919dyL7jlZm9ryZ3dlL+xVmtsfMBvX/kbtf4O6PJiCuPzSzXT3G/rq7f3a4Yw9wTDezW0bqGCIi8dL5bXh0fgMzu8nMXkz0uDI2KBEaB8J/qPPdPR/YDVwS0/a+f7DMLCP5UY5qDwPX9dJ+HfDP7t6V3HBS6nrgQPicVPrvUkR60vlt2B5G5zcZx5QICWZ2t5n9i5k9bmYNwLVm9kEz+42ZHTKzajP7npllhv0zwlmBueH7fw63P2tmDWb2P2Y2b7B9w+0XmtlbZlZnZn9nZv9tZjf0EXc8Mf6pmW03s4Nm9r2YfdPN7Dtmtt/M3gZW9/Mj+jdghpn9Qcz+k4GLgEfC95ea2WvhZ9ptZl/t5+f9cvdnGiiO8Juq8nDct83sprC9EPh3YE7Mt5/Twt/lwzH7f9zMtoQ/o1+a2cKYbZVmdouZvRH+vB83s+x+4s4HLgc+B0TNbEWP7eeEv486M3vXzK4L2/PCz7g73PaSmWX39o1fGNN54etB/XcZ7nOKmf2nmR0wsxoz+wszm2lmTWZWFNPvA+F2/VEkchzT+U3nt3jOb/18nllm9kx4TtlmZp+J2XaGmf3OzOrNbK+ZfStszzOzx8LPfcjMXjGzKYM9tiSHEiHp9gngMaAQ+BegA/giMAU4k+AfsD/tZ/9PAl8FJhF8K/f1wfY1s2nAE8Bt4XF3Aqv6GSeeGC8CTgNOJTgB/mHY/jngAmB5eIyr+jqIux8GngQ+HdN8DbDZ3beE7xuBawl+fpcAXzSzi/uJvdtAcewFPgZEgD8B/s7Mlrl7XXic3THffu6L3dHMFgP/DPwZMBX4T+DfYxOH8HgfAU4k+Dn19s1gtz8CDhL8LP6TmJ9HeLL/OfBtYDLBz/uNcPN3gGXABwh+518G4v2WMe7/LsOT538SnECLgZOBF919D/ByGH+3a4HH3b0jzjhEZOzS+a0POr8N6F8IflclwNXA35jZueG2vwO+5e4RYD7BzxHgRiAPmEVwPvz/gJYhHFuSQImQdHvZ3f/d3bvcvdndN7r7b929w913AA8A5/az/5Puvsnd24FHgRVD6Hsx8Jq7/yzc9h3gvb4GiTPGb7p7nbvvAl6MOdZVwHfcvdLd9wP39BMvwI+Bq2K+Ufp02NYdyy/d/c3w5/c6sL6XWHrTbxzh72SHB34JPA+cHce4EJzMng5jaw/HjhAkJN3uc/ea8NjP0P/v7XpgfbhU4jHgUzEzKtcCv3D3J8Lfx3vu/pqZpQM3ADe7e3W4pv7lMJ54DOa/y0uBd939u+7e6u717v5KuO3HYYzdS2OuBn4SZwwiMrbp/NY/nd96EX7BtwpY5+4t7v474CGOJlTtwAIzm+zuDe7+25j2KcD88Jy3yd0bB3NsSR4lQtLt3dg3ZrbIzH4eLh+qB+4i+B+7LzUxr5uA/CH0LYmNw90dqOxrkDhjjOtYwDv9xAvwX0AdcImZnUzwDdzjMbF80MxeNLNaM6sDbuollt70G4eZXWxmvw2n5Q8RfLsW7xR7Sex4YQJTCcyM6RPX7y1c+nEOwYkd4Kmwb/dSh9nA273sOh3I6mNbPAbz3+VsYHsf4zwFLLegutNqoDY8qYnI8U/nt/6N6/PbAMd4L5w16/ZOzDFuBKLA1nD520Vh+8MEM1RPWFBw4h7TMuxRS4mQdOtZ0vIfgTcJvtGIAHcCNsIxVBNMJQNgZsax/6j1NJwYqwn+cO7Wb/nT8KT1E4Jvyq4DNrh77Ld564GfArPdvRD4pzhj6TMOM8slmGr/JjDd3YuA/xcz7kBlSKuAE2LGSyP4+e6JI66ePh0e91kzqyFIOLI4upziXeCkXvbbC7T1se0wwfKB7vgyCJYRxBrMf5d9xYC7NxH8fj5F8PvTbJDI+KHzWz90fuv3GFPMbEJM25zuY7j7Vne/BpgG/C3wUzPLcfc2d/+auy8GziJYmjnoCoaSHEqEpC8FBN8QHQ7X4va3fjpRngFWmtkl4R/FXyRY+zsSMT4B/LkFF9JPBm6PY58fE8wmfIaYZQMxsRxw9xYzO4Ng2n64cWQTJBu1QGe4JvvDMdv3EvwjXdDP2Jea2XnhuunbgAbgt33078+nCU7EK2IeV4fjTyRYq73agpKrGWY2xcyWu3snwbdj95nZDAsunj0zjKcCKDCzj4bv/wrI7OXYsfr7nT9NcHHtF8wsy8wiZha7Bv8Rgt/dx8J4RWR80vnt/cbz+Q0gzcxyYh/uvhPYBPxvCwr8rCCYBXoUwMyuM7Mp4WxUHUHy1mVmHzKzpWFyVk+wVK5ziHHJCFMiJH35XwTXhDQQfDP1LyN9QHffS/DH9beB/QTf7v8eaB2BGH9AsB75DWAjRy9y7C++t4FXgByCwgCxPgd804KqRF8m+Ed6WHG4+yHgSwTLug4AVxKcTLu3v0nwLd0uCyrTTOsR7xaCn88PCE42q4FLB3F9DgBmdhbBEoH7w/XWNe5eE8a1C7g6PGFcQnCiOwD8DjglHOJLQDnwarjtfwPm7gcJLnT9McE3bAc4dilDb/r8nXtwge1HgCuAfcBbHLuO/SUgHfitu/e5JEVEjns6v70/vnF5fotxNtDc4wHB72wBwbnpSeDL7v5CuO0ioDz8udxLcC5sIzhf/htBErSFYJnckaWGMrpYMCMqMvqEF9pXAVe6+69SHY+MfWb2EvCguz+c6lhEZPzS+U1kdNCMkIwqZrbazArD6jVfJSgh+soAu4kMKFzSsRT411THIiLjj85vIqOPEiEZbc4CdhCUFV0NfNzd+1o6IBIXM3sU+AXwxR4VgEREkkXnN5FRRkvjRERERERk3IlrRsjMHjSzfWb2Zh/bzcy+Z2bbzWyzma2M2Xa9mW0LH9fHtJ9mZm+E+3wvLCUpIiIiIiIy4uJdGvcwR2+c2JsLCapqLADWElTxwMwmEZTE/QDB3Xn/Kiy1S9hnbcx+/Y0vIiIiIiKSMHHd6dbdX7LgzvJ9uQx4JLwp12/MrMjMioHzgP9w9wMAZvYfBPcaeRGIuPv/hO2PAB8Hnu0vjilTpvjcuf2FISIiI+3VV199z937uwfKmGBmq4HvEpRV/yd3v6eXPlcBXyO4R8jr7v7J/sbUeUpEJPXiPU/FlQjFYSbBXd27VYZt/bVX9tL+Pma2lmDmiDlz5rBp06YEhSwiIkNhZu+kOobhCssX309w76lKYKOZPe3uZTF9FgB3AGe6+8Ge9zLpzdy5c3WeEhFJsXjPU4mqGtfb9T0+hPb3N7o/4O6l7l46deqY/wJSRERGh1XAdnffEd4EcT3B6oZYf0JwI+GDAO6+L8kxiojICEpUIlQJzI55P4vgRmH9tc/qpV1ERCQZ+lqxEOtk4GQz+28z+024lE5ERI4TiUqEngY+HVaPOwOoc/dq4DngAjObGBZJuAB4LtzWYGZnhNXiPg38LEGxiIiIDCSelQkZBMV8zgPWAP9kZkXvG8hsrZltMrNNtbW1CQ9URERGRlzXCJnZ4wQngilmVklQCS4TwN3/AdgAXARsB5qAG8NtB8zs68DGcKi7ugsnAJ8jqEaXS1Akod9CCSIiIgnU14qFnn1+4+7twE4z20qQGG2M7eTuDwAPAJSWlurmfCJjUHt7O5WVlbS0tKQ6FBmEnJwcZs2aRWZm5pD2j7dq3JoBtjvw+T62PQg82Ev7JmBpPMcXERFJsI3AAjObB+wBrgF6VoT7vwQzQQ+b2RSCpXI7khqliCRFZWUlBQUFzJ07F93acmxwd/bv309lZSXz5s0b0hiJWhonIiIyZrh7B/AFgiXc5cAT7r7FzO4ys0vDbs8B+82sDHgBuM3d96cmYhEZSS0tLUyePFlJ0BhiZkyePHlYs3iJKp8tIiIyprj7BoKl3bFtd8a8duCW8CEixzklQWPPcH9nmhESEREREUmR/fv3s2LFClasWMGMGTOYOXPmkfdtbW1xjXHjjTeydevWfvvcf//9PProo4kImbPOOovXXnstIWOlkmaERERERERSZPLkyUeSiq997Wvk5+dz6623HtPH3XF30tJ6n8N46KGHBjzO5z/f6+X845pmhEREjnMt7Z3sqG3kv7e/x79uepfX3j2U6pCkF79++z2e2axb6olIYPv27SxdupTPfvazrFy5kurqatauXUtpaSlLlizhrrvuOtK3e4amo6ODoqIi1q1bx/Lly/ngBz/Ivn3BvaC/8pWvcN999x3pv27dOlatWsXChQv59a9/DcDhw4e54oorWL58OWvWrKG0tDTumZ/m5mauv/56TjnlFFauXMlLL70EwBtvvMHpp5/OihUrWLZsGTt27KChoYELL7yQ5cuXs3TpUp588slE/ujiphkhEZExrL2zi5q6FqrrWqiua6bq0LHP1XUtHDh87NKKPzl7Hitmv+92OJJij/5mN2/sqePiZSWpDkVERomysjIeeugh/uEf/gGAe+65h0mTJtHR0cH555/PlVdeSTQaPWafuro6zj33XO655x5uueUWHnzwQdatW/e+sd2dV155haeffpq77rqLX/ziF/zd3/0dM2bM4Kc//Smvv/46K1eujDvW733ve2RlZfHGG2+wZcsWLrroIrZt28b3v/99br31Vq6++mpaW1txd372s58xd+5cnn322SMxp4ISIRGRUaqry6ltbKXqUJDQdD93JzpVh5qpbWzFe9y5piAng5LCXIqLclg+u4iSwhyKw/clhbnMKMxJzQeSfkVLIvz8jWrqW9qJ5AztnhgiMnx//e9bKKuqT+iY0ZIIf3XJkkHvd9JJJ3H66acfef/444/zox/9iI6ODqqqqigrK3tfIpSbm8uFF14IwGmnncavfvWrXse+/PLLj/TZtWsXAC+//DK33347AMuXL2fJkvhjfvnll7ntttsAWLJkCSUlJWzfvp0/+IM/4O677+add97h8ssvZ/78+Sxbtox169axbt06LrnkEs4888y4j5NISoRERFLA3TnY1N5rctP9em99Cx1dx2Y5OZlplBTlUlKYy7knT6W4KDdIdGKe87P1T/tYFC2OAFBR3cCqeZNSHI2IjAYTJkw48nrbtm1897vf5ZVXXqGoqIhrr72219LRWVlZR16np6fT0dHR69jZ2dnv6+M9v1kbhL72ve666/jgBz/Iz3/+cz7ykY/w4x//mHPOOYdNmzaxYcMGbrvtNi6++GK+/OUvD/nYQ6WzpYgcN9o7u6hrbqe5rRN3cJwuD/5xDvIJx52gDaerK3h2p8/+Xd3bwra++vsxYx47RnfCE7tcrbqumZb2rmPiz0w3ZoSzN6fPnXg0uYmZzSnKy1SJ1+PUkpIgESqrqlMiJJJCQ5m5SYb6+noKCgqIRCJUV1fz3HPPsXr16oQe46yzzuKJJ57g7LPP5o033qCsrCzufc855xweffRRzjnnHMrLy6murmb+/Pns2LGD+fPn88UvfpFt27axefNmTjrpJKZMmcJ1111Hbm4u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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":"### Evaluating on validationa dataset","metadata":{}},{"cell_type":"code","source":"# model loss and accuracy on validation set\nmodel.evaluate(X_val, y_val_enc, verbose=False)","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:29:51.727251Z","iopub.execute_input":"2024-09-05T06:29:51.727646Z","iopub.status.idle":"2024-09-05T06:29:54.384447Z","shell.execute_reply.started":"2024-09-05T06:29:51.727536Z","shell.execute_reply":"2024-09-05T06:29:54.383023Z"},"trusted":true},"execution_count":24,"outputs":[{"execution_count":24,"output_type":"execute_result","data":{"text/plain":"[0.04990540066991271, 0.9866667]"},"metadata":{}}]},{"cell_type":"code","source":"# predicted values\ny_pred_enc = model.predict(X_val)\n\n# actual\ny_act = [np.argmax(i) for i in y_val_enc]\n\n# decoding predicted values\ny_pred = [np.argmax(i) for i in y_pred_enc]\n\nprint(y_pred_enc[0])\nprint(y_pred[0])","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:29:54.386426Z","iopub.execute_input":"2024-09-05T06:29:54.386799Z","iopub.status.idle":"2024-09-05T06:29:57.160841Z","shell.execute_reply.started":"2024-09-05T06:29:54.386741Z","shell.execute_reply":"2024-09-05T06:29:57.159693Z"},"trusted":true},"execution_count":25,"outputs":[{"name":"stdout","text":"[8.9204972e-05 5.6406866e-06 1.6066102e-04 9.9447423e-01 4.6739189e-07\n 4.9327840e-03 1.0898012e-04 2.4173501e-06 1.7551293e-04 5.0116581e-05]\n3\n","output_type":"stream"}]},{"cell_type":"code","source":"print(classification_report(y_act, y_pred))","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:29:57.162812Z","iopub.execute_input":"2024-09-05T06:29:57.163226Z","iopub.status.idle":"2024-09-05T06:29:57.217834Z","shell.execute_reply.started":"2024-09-05T06:29:57.163156Z","shell.execute_reply":"2024-09-05T06:29:57.216817Z"},"trusted":true},"execution_count":26,"outputs":[{"name":"stdout","text":" precision recall f1-score support\n\n 0 1.00 0.99 0.99 1253\n 1 1.00 1.00 1.00 1371\n 2 0.99 0.99 0.99 1258\n 3 0.98 0.99 0.98 1316\n 4 0.99 0.99 0.99 1223\n 5 0.97 0.99 0.98 1178\n 6 0.98 0.99 0.99 1192\n 7 0.99 0.98 0.99 1287\n 8 0.99 0.98 0.98 1215\n 9 0.98 0.98 0.98 1307\n\n accuracy 0.99 12600\n macro avg 0.99 0.99 0.99 12600\nweighted avg 0.99 0.99 0.99 12600\n\n","output_type":"stream"}]},{"cell_type":"code","source":"fig, ax = plt.subplots(figsize=(7, 7))\nsns.heatmap(confusion_matrix(y_act, y_pred), annot=True, \n cbar=False, fmt='1d', cmap='Blues', ax=ax)\nax.set_title('Confusion Matrix', loc='left', fontsize=16)\nax.set_xlabel('Predicted')\nax.set_ylabel('Actual')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:29:57.219598Z","iopub.execute_input":"2024-09-05T06:29:57.220009Z","iopub.status.idle":"2024-09-05T06:29:57.846914Z","shell.execute_reply.started":"2024-09-05T06:29:57.219929Z","shell.execute_reply":"2024-09-05T06:29:57.845884Z"},"trusted":true},"execution_count":27,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 504x504 with 1 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":"### Predicting on test","metadata":{}},{"cell_type":"code","source":"# predicted values\ny_pred_enc = model.predict(test)\n\n# decoding predicted values\ny_pred = [np.argmax(i) for i in y_pred_enc]\n\nprint(y_pred_enc[0])\nprint(y_pred[0])","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:29:57.848755Z","iopub.execute_input":"2024-09-05T06:29:57.849178Z","iopub.status.idle":"2024-09-05T06:30:04.657658Z","shell.execute_reply.started":"2024-09-05T06:29:57.849090Z","shell.execute_reply":"2024-09-05T06:30:04.656665Z"},"trusted":true},"execution_count":28,"outputs":[{"name":"stdout","text":"[1.6411908e-08 1.2479301e-09 1.0000000e+00 2.5707994e-09 1.2976858e-10\n 1.2229954e-12 7.7378442e-12 2.4208167e-09 1.0810905e-08 1.9807151e-12]\n2\n","output_type":"stream"}]},{"cell_type":"code","source":"# predicted targets of each images\n# (labels above the images are predicted labels)\nfig, ax = plt.subplots(figsize=(18, 12))\nfor ind, row in enumerate(test[:15]):\n plt.subplot(3, 5, ind+1)\n plt.title(y_pred[ind])\n img = row.reshape(28, 28)\n fig.suptitle('Predicted values', fontsize=24)\n plt.axis('off')\n plt.imshow(img, cmap='cividis')","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:30:04.659442Z","iopub.execute_input":"2024-09-05T06:30:04.659867Z","iopub.status.idle":"2024-09-05T06:30:05.866407Z","shell.execute_reply.started":"2024-09-05T06:30:04.659798Z","shell.execute_reply":"2024-09-05T06:30:05.865406Z"},"trusted":true},"execution_count":29,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1296x864 with 15 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":"# X_train, X_val, y_train_enc, y_val_enc","metadata":{"execution":{"iopub.status.busy":"2024-09-05T06:30:05.867846Z","iopub.execute_input":"2024-09-05T06:30:05.868165Z","iopub.status.idle":"2024-09-05T06:30:05.872468Z","shell.execute_reply.started":"2024-09-05T06:30:05.868113Z","shell.execute_reply":"2024-09-05T06:30:05.871352Z"},"trusted":true},"execution_count":30,"outputs":[]}]}