{"cells":[{"metadata":{},"cell_type":"markdown","source":"### Importing Libraries"},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import pandas as pd\nimport keras\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport tensorflow as tf\nimport numpy as np\nfrom sklearn.model_selection import train_test_split\nfrom keras.layers import Dense,Flatten\nimport pydot\nimport scikitplot as skplt","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Reading Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"df=pd.read_csv('../input/digit-recognizer/train.csv')\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Seperating Label from Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"X=df.iloc[:,1:]\ny=df.iloc[:,0]\nX.shape,y.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Splitting Into Train And Test Set"},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.1,random_state=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train.shape,X_test.shape,y_train.shape,y_test.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Normalizing the pixels"},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train=X_train/255\nX_test=X_test/255","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Building Neural Network"},{"metadata":{"trusted":true},"cell_type":"code","source":"model=keras.models.Sequential()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Adding First Hidden Layer"},{"metadata":{"trusted":true},"cell_type":"code","source":"model.add(Dense(units = 128, kernel_initializer = 'he_uniform',activation='relu',input_dim = 784))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Adding Output Layer\nSince we have 10 class to predict, we will be using softmax as activation function for output layer."},{"metadata":{"trusted":true},"cell_type":"code","source":"model.add(Dense(10,activation='softmax'))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer = 'Adamax', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Model Summary"},{"metadata":{"trusted":true},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Structure of Model"},{"metadata":{"trusted":true},"cell_type":"code","source":"keras.utils.plot_model(model)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Fitting the model"},{"metadata":{"trusted":true},"cell_type":"code","source":"model_history=model.fit(X_train, y_train,validation_split=0.1,epochs = 25)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"# Loss And Accuracy Plot"},{"metadata":{"trusted":true},"cell_type":"code","source":"pd.DataFrame(model_history.history).plot(figsize=(8, 5))\nplt.grid(True)\nplt.gca().set_ylim(0, 1)\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Evaluating accuracy on test set"},{"metadata":{"trusted":true},"cell_type":"code","source":"model.evaluate(X_test,y_test)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Making prediction from model"},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred=np.argmax(model.predict(X_test).round(2),axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Confusion Matrix"},{"metadata":{"trusted":true},"cell_type":"code","source":"skplt.metrics.plot_confusion_matrix(y_test,y_pred,figsize=(20,20))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Classification Report"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.metrics import classification_report\nprint(classification_report(y_test,y_pred))","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}