{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","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":30626,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"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\n# importing packages\nimport numpy as np # to perform calculations \nimport pandas as pd # to read data\nimport matplotlib.pyplot as plt # to visualise\nimport tensorflow\n\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/digit-recognizer'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB 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","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-12-18T16:25:38.966599Z","iopub.execute_input":"2023-12-18T16:25:38.967271Z","iopub.status.idle":"2023-12-18T16:25:38.977295Z","shell.execute_reply.started":"2023-12-18T16:25:38.967233Z","shell.execute_reply":"2023-12-18T16:25:38.975686Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = pd.read_csv('/kaggle/input/digit-recognizer/test.csv')\ntrain = pd.read_csv('/kaggle/input/digit-recognizer/train.csv')","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:38.986576Z","iopub.execute_input":"2023-12-18T16:25:38.987046Z","iopub.status.idle":"2023-12-18T16:25:44.66829Z","shell.execute_reply.started":"2023-12-18T16:25:38.98701Z","shell.execute_reply":"2023-12-18T16:25:44.666815Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = train.drop(columns=['label'], axis=1)\ny = train.label","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:44.670737Z","iopub.execute_input":"2023-12-18T16:25:44.671122Z","iopub.status.idle":"2023-12-18T16:25:44.850124Z","shell.execute_reply.started":"2023-12-18T16:25:44.671087Z","shell.execute_reply":"2023-12-18T16:25:44.848418Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#give the number of feature for the model\nn_features = X.shape[1]\nprint(n_features)","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:44.851883Z","iopub.execute_input":"2023-12-18T16:25:44.853371Z","iopub.status.idle":"2023-12-18T16:25:44.867046Z","shell.execute_reply.started":"2023-12-18T16:25:44.85322Z","shell.execute_reply":"2023-12-18T16:25:44.865296Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split \n\n# Assign variables to capture train test split output\nxtrain, xtest, ytrain, ytest = train_test_split(X, y, test_size=0.2, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:44.870037Z","iopub.execute_input":"2023-12-18T16:25:44.870712Z","iopub.status.idle":"2023-12-18T16:25:45.117651Z","shell.execute_reply.started":"2023-12-18T16:25:44.870675Z","shell.execute_reply":"2023-12-18T16:25:45.116318Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow import keras\nfrom tensorflow.keras import layers\nfrom keras.layers import Dense, Activation, BatchNormalization\n\n#hidden layers\nmodel = Sequential()\nmodel.add(Dense(units=256, input_shape=(784,)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(units= 256,input_shape=(256,)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(units=256,input_shape=(256,)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(units=128,input_shape=(256,)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(units=128,input_shape=(128,)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dense(units=10))\nmodel.add(BatchNormalization())\nmodel.add(Activation('softmax'))\n","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:45.119516Z","iopub.execute_input":"2023-12-18T16:25:45.119911Z","iopub.status.idle":"2023-12-18T16:25:45.374924Z","shell.execute_reply.started":"2023-12-18T16:25:45.119879Z","shell.execute_reply":"2023-12-18T16:25:45.373644Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# optimization procedureimport RMSprop optimizer ( Root Mean Square Propagation )\nfrom tensorflow.keras.optimizers import RMSprop\noptimizer = RMSprop(0.01)    # 0.01 is the learning rate","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:45.377008Z","iopub.execute_input":"2023-12-18T16:25:45.377402Z","iopub.status.idle":"2023-12-18T16:25:45.385534Z","shell.execute_reply.started":"2023-12-18T16:25:45.377334Z","shell.execute_reply":"2023-12-18T16:25:45.384302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#compil loss is the loss function error \nmodel.compile(loss='sparse_categorical_crossentropy',optimizer=optimizer)    # compile the model","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:45.387202Z","iopub.execute_input":"2023-12-18T16:25:45.387621Z","iopub.status.idle":"2023-12-18T16:25:45.406118Z","shell.execute_reply.started":"2023-12-18T16:25:45.387586Z","shell.execute_reply":"2023-12-18T16:25:45.404764Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nmodel.fit(x=xtrain, y=ytrain, epochs=10, batch_size=128)","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:25:45.407985Z","iopub.execute_input":"2023-12-18T16:25:45.408495Z","iopub.status.idle":"2023-12-18T16:26:29.408974Z","shell.execute_reply.started":"2023-12-18T16:25:45.408451Z","shell.execute_reply":"2023-12-18T16:26:29.407281Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = model.predict(xtest)\ny_pred = np.argmax(y_pred ,axis=1)\n\nfrom sklearn import metrics\nfrom sklearn.metrics import confusion_matrix\nprint('accuracy:', metrics.accuracy_score(y_true=ytest, y_pred=y_pred), '\\n')\n\nfrom sklearn.metrics import confusion_matrix\nresult = confusion_matrix(ytest, y_pred, normalize='pred')\nprint(result)\n\nfrom sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\nimport matplotlib.pyplot as plt \nConfusionMatrixDisplay.from_predictions(ytest, y_pred)\nplt.show\n\n\n\n","metadata":{"execution":{"iopub.status.busy":"2023-12-18T16:26:29.411871Z","iopub.execute_input":"2023-12-18T16:26:29.412422Z","iopub.status.idle":"2023-12-18T16:26:31.516625Z","shell.execute_reply.started":"2023-12-18T16:26:29.412378Z","shell.execute_reply":"2023-12-18T16:26:31.515277Z"},"trusted":true},"execution_count":null,"outputs":[]}]}