{"cells":[{"metadata":{},"cell_type":"markdown","source":"### **The main aim of creating this notebook is keep the code as simple as possible so that even a begineer could be able to understand it.**","execution_count":null},{"metadata":{},"cell_type":"markdown","source":" ![MNIST DIGIT DATASET](attachment:image.png)","attachments":{"image.png":{"image/png":"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"}},"execution_count":null},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport seaborn as sns\nimport tensorflow as tf\nfrom tensorflow import keras\nimport matplotlib.pyplot as plt\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Loading the datasets.","execution_count":null},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/digit-recognizer/train.csv')\ntest = pd.read_csv('/kaggle/input/digit-recognizer/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.describe()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Checking for null values","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"# Checking for null values\ntrain.isnull().any()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"The shape of the training set is :\", train.shape)\nprint(\"The shape of the test set is :\", test.shape)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Splitting the data into training and validation set","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train = train.drop(['label'], axis=1).to_numpy()\ny_train = train['label'].to_numpy()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Plotting a countplot to check the number of labels.","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.countplot(y_train)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Scaling down the images between 0 to 1.","execution_count":null},{"metadata":{},"cell_type":"markdown","source":"### Why do we need the scaling of the images ?\n\n* If we didn't scale our input training vectors, the ranges of our distributions of feature values would likely be different for each feature, and thus the learning rate would cause corrections in each dimension that would differ (proportionally speaking) from one another. We might be over compensating a correction in one weight dimension while undercompensating in another. ","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train = x_train/255.0\nx_test = test/255.0","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Reshaping the input shapes to get it in the shape which the model expects to recieve later.\nx_train = x_train.reshape(x_train.shape[0], 28, 28, 1)\nprint(x_train.shape, y_train.shape)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Model building","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"def build_model(hp):  \n  model = keras.Sequential([\n    keras.layers.Conv2D(\n        filters=hp.Int('conv_1_filter', min_value=32, max_value=128, step=16),\n        kernel_size=hp.Choice('conv_1_kernel', values = [3,5]),\n        activation='relu',\n        input_shape=(28,28,1)\n    ),\n    keras.layers.Conv2D(\n        filters=hp.Int('conv_2_filter', min_value=32, max_value=64, step=16),\n        kernel_size=hp.Choice('conv_2_kernel', values = [3,5]),\n        activation='relu'\n    ),\n    keras.layers.Flatten(),\n    keras.layers.Dense(\n        units=hp.Int('dense_1_units', min_value=32, max_value=128, step=16),\n        activation='relu'\n    ),\n    keras.layers.Dense(10, activation='softmax')\n  ])\n  \n  model.compile(optimizer=keras.optimizers.Adam(hp.Choice('learning_rate', values=[1e-2, 1e-3])),\n              loss='sparse_categorical_crossentropy',\n              metrics=['accuracy'])\n  \n  return model\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Performing Hyperparameter optimization for better results.","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"from kerastuner import RandomSearch\nfrom kerastuner.engine.hyperparameters import HyperParameters","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tuner_search = RandomSearch(build_model, objective='val_accuracy', max_trials=5, directory='output', project_name=\"Mnist Digit Recognizer\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tuner_search.search(x_train, y_train, epochs=3, validation_split=0.1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tuner_search.get_best_models(num_models=1)[0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit(x_train, y_train, epochs=10, validation_split=0.1, initial_epoch=3)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Reshaping the testing arrays ","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"# reshaping the testing array as in a similar way as perfromed for training array\ntest_array = np.array(x_test)\ntest_array = test_array.reshape(test_array.shape[0], 28, 28, 1)\nprint(test_array.shape)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Predicting the model","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"predictions = model.predict(test_array)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Creating a submission.csv file\ntest_predictions = []\n\nfor i in predictions:\n    test_predictions.append(np.argmax(i))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission =  pd.DataFrame({\n        \"ImageId\": x_test.index+1,\n        \"Label\": test_predictions\n    })\n\nsubmission.to_csv('my_submission.csv', index=False)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# If you like it and found out helpful please consider upvoting it\n# Thank You 😃","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}