{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\n\nTest_df = pd.read_csv(r\"/kaggle/input/digit-recognizer/test.csv\", encoding='utf-8')\n\ndf = pd.read_csv(r\"/kaggle/input/digit-recognizer/train.csv\", encoding='utf-8')\n\ndf.shape,Test_df.shape\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Visualizing the data","metadata":{}},{"cell_type":"code","source":"import seaborn as sns\nimport matplotlib.pyplot as plt\n\nsns.histplot(df['label']).set(title='Label Frequency');","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_df = df['label']\ndf = df.drop(labels='label',axis=1)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nfrom random import randint\nrand = randint(0,300)\npixels = np.array(df.iloc[rand],dtype='uint8')\npixels = pixels.reshape((28, 28))\nplt.title('Label is {label}'.format(label=y_df.iloc[rand]))\nplt.imshow(pixels, cmap='gray')\nplt.show()\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Pre-processing the data","metadata":{}},{"cell_type":"code","source":"from sklearn.pipeline import make_pipeline\nfrom sklearn.preprocessing import StandardScaler\n\nscaler = StandardScaler()\ndf = scaler.fit_transform(df)\n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Creating train_test_split","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nx_train,x_test,y_train,y_test = train_test_split(df,y_df)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Creating the feed forward neural model","metadata":{}},{"cell_type":"code","source":"import tensorflow as tf\n\nmodel = tf.keras.models.Sequential()\nmodel.add(tf.keras.layers.Dense(units=128,activation='relu',input_shape = (784,)))\nmodel.add(tf.keras.layers.Dense(128, activation='relu'))\nmodel.add(tf.keras.layers.Dense(10, activation='softmax'))\nmodel.compile(optimizer='Adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])\nmodel.summary()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train.values.ravel()","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Training the model","metadata":{}},{"cell_type":"code","source":"epochs_hist = model.fit(df, y_df, epochs = 250, batch_size = 50, validation_split = 0.2)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv(r\"C:\\Users\\anton\\Desktop\\train.csv\", encoding='utf-8')\nnp.unique(df['label'])","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Classification Report","metadata":{}},{"cell_type":"code","source":"from sklearn.metrics import classification_report\ny_pred = model.predict(x_test)\ny_pred = (y_pred > 0.5).astype(int)\nclass_labels = ['0','1', '2', '3', '4', '5', '6', '7','8','9']\nprint(classification_report(y_test,np.argmax(y_pred,axis=1),target_names = class_labels))","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Confusion Matrix","metadata":{}},{"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\nconfusion = confusion_matrix(y_test, np.argmax(y_pred,axis=1))\nsns.heatmap(confusion,annot=True)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Submission!","metadata":{}},{"cell_type":"code","source":"submission_pred = model.predict(Test_df.values)\nsubmission_pred = np.argmax(submission_pred,axis = 1)\nsubmission_pred = pd.Series(submission_pred,name=\"Label\")\nsubmission = pd.concat([pd.Series(range(1,28001),name = \"ImageId\"),submission_pred],axis = 1)\n\nsubmission.to_csv(\"submissionMNIST.csv\",index=False)","metadata":{},"execution_count":null,"outputs":[]}]}