{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":30747,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"## 1) Importing necessary libraries and data sets","metadata":{}},{"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Flatten, Input, Conv2D, MaxPooling2D, Dropout, BatchNormalization\nfrom tensorflow.keras.utils import to_categorical\nfrom tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\nfrom sklearn.metrics import confusion_matrix, classification_report\nfrom sklearn.model_selection import train_test_split\n\nfrom warnings import filterwarnings\nfilterwarnings(\"ignore\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:12.028522Z","iopub.execute_input":"2024-08-02T19:15:12.029150Z","iopub.status.idle":"2024-08-02T19:15:12.036021Z","shell.execute_reply.started":"2024-08-02T19:15:12.029118Z","shell.execute_reply":"2024-08-02T19:15:12.034960Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\ntest = pd.read_csv(\"/kaggle/input/digit-recognizer/test.csv\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:12.044917Z","iopub.execute_input":"2024-08-02T19:15:12.045181Z","iopub.status.idle":"2024-08-02T19:15:16.541530Z","shell.execute_reply.started":"2024-08-02T19:15:12.045159Z","shell.execute_reply":"2024-08-02T19:15:16.540716Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2) Overview of The Data Set","metadata":{}},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.543211Z","iopub.execute_input":"2024-08-02T19:15:16.543516Z","iopub.status.idle":"2024-08-02T19:15:16.560433Z","shell.execute_reply.started":"2024-08-02T19:15:16.543491Z","shell.execute_reply":"2024-08-02T19:15:16.559391Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.tail()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.561710Z","iopub.execute_input":"2024-08-02T19:15:16.562112Z","iopub.status.idle":"2024-08-02T19:15:16.583879Z","shell.execute_reply.started":"2024-08-02T19:15:16.562086Z","shell.execute_reply":"2024-08-02T19:15:16.582894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.isnull().sum().sum()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.586693Z","iopub.execute_input":"2024-08-02T19:15:16.587333Z","iopub.status.idle":"2024-08-02T19:15:16.621850Z","shell.execute_reply.started":"2024-08-02T19:15:16.587302Z","shell.execute_reply":"2024-08-02T19:15:16.620895Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 3) Data Preprocessing for Train Data Set","metadata":{}},{"cell_type":"markdown","source":"### 3.1) Separation of the training dataset into dependent and independent variables","metadata":{}},{"cell_type":"code","source":"X = train.drop(\"label\", axis = 1)\ny = train[\"label\"]","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.622972Z","iopub.execute_input":"2024-08-02T19:15:16.623283Z","iopub.status.idle":"2024-08-02T19:15:16.703678Z","shell.execute_reply.started":"2024-08-02T19:15:16.623258Z","shell.execute_reply":"2024-08-02T19:15:16.702893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3.2) Split the training dataset into training and test","metadata":{}},{"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size=0.2, random_state=42)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.704722Z","iopub.execute_input":"2024-08-02T19:15:16.705002Z","iopub.status.idle":"2024-08-02T19:15:16.927898Z","shell.execute_reply.started":"2024-08-02T19:15:16.704963Z","shell.execute_reply":"2024-08-02T19:15:16.927105Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(f\"X_train & y_train size: {X_train.shape, y_train.shape}\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.929014Z","iopub.execute_input":"2024-08-02T19:15:16.929313Z","iopub.status.idle":"2024-08-02T19:15:16.934481Z","shell.execute_reply.started":"2024-08-02T19:15:16.929286Z","shell.execute_reply":"2024-08-02T19:15:16.933518Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(f\"X_test & y_test size: {X_test.shape, y_test.shape}\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.935734Z","iopub.execute_input":"2024-08-02T19:15:16.936026Z","iopub.status.idle":"2024-08-02T19:15:16.942703Z","shell.execute_reply.started":"2024-08-02T19:15:16.936001Z","shell.execute_reply":"2024-08-02T19:15:16.941885Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3.3) Reshaping","metadata":{}},{"cell_type":"code","source":"X_train = X_train.values.reshape(-1, 28, 28, 1)\nX_test = X_test.values.reshape(-1, 28, 28, 1)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.943808Z","iopub.execute_input":"2024-08-02T19:15:16.944180Z","iopub.status.idle":"2024-08-02T19:15:16.950816Z","shell.execute_reply.started":"2024-08-02T19:15:16.944157Z","shell.execute_reply":"2024-08-02T19:15:16.950024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3.4) Visualization","metadata":{}},{"cell_type":"code","source":"# Top 10 images\nplt.figure(figsize=(6, 8))\nfor i in range(0, 10):\n    ax = plt.subplot(5, 5, i+1)\n    plt.imshow(X_train[i], cmap=\"gray\")\n    plt.title(f\"Label: {y_train.values[i]}\")\n    plt.axis(\"off\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:16.954200Z","iopub.execute_input":"2024-08-02T19:15:16.954629Z","iopub.status.idle":"2024-08-02T19:15:17.599526Z","shell.execute_reply.started":"2024-08-02T19:15:16.954606Z","shell.execute_reply":"2024-08-02T19:15:17.598628Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Last 10 images\nplt.figure(figsize=(6, 8))\nfor i in range(0, 10):\n    ax = plt.subplot(5, 5, i+1)\n    plt.imshow(X_train[-i], cmap=\"gray\")\n    plt.title(f\"Label: {y_train.values[-i]}\")\n    plt.axis(\"off\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:17.600986Z","iopub.execute_input":"2024-08-02T19:15:17.601371Z","iopub.status.idle":"2024-08-02T19:15:18.268664Z","shell.execute_reply.started":"2024-08-02T19:15:17.601338Z","shell.execute_reply":"2024-08-02T19:15:18.267703Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3.5) Standardization","metadata":{}},{"cell_type":"code","source":"X_train = X_train / 255.0\nX_test = X_test / 255.0","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.270040Z","iopub.execute_input":"2024-08-02T19:15:18.270488Z","iopub.status.idle":"2024-08-02T19:15:18.373630Z","shell.execute_reply.started":"2024-08-02T19:15:18.270454Z","shell.execute_reply":"2024-08-02T19:15:18.372733Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3.6) Encoding","metadata":{}},{"cell_type":"code","source":"y_train = y_train.values\ny_test = y_test.values","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.374802Z","iopub.execute_input":"2024-08-02T19:15:18.375112Z","iopub.status.idle":"2024-08-02T19:15:18.379664Z","shell.execute_reply.started":"2024-08-02T19:15:18.375084Z","shell.execute_reply":"2024-08-02T19:15:18.378668Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train = to_categorical(y_train, num_classes=10)\ny_test = to_categorical(y_test, num_classes=10)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.381046Z","iopub.execute_input":"2024-08-02T19:15:18.381385Z","iopub.status.idle":"2024-08-02T19:15:18.391301Z","shell.execute_reply.started":"2024-08-02T19:15:18.381352Z","shell.execute_reply":"2024-08-02T19:15:18.390425Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4) Data Augmentation","metadata":{}},{"cell_type":"code","source":"from sklearn.utils import shuffle\n\n# Verileri karıştırma\nX_train, y_train = shuffle(X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.392320Z","iopub.execute_input":"2024-08-02T19:15:18.392558Z","iopub.status.idle":"2024-08-02T19:15:18.714030Z","shell.execute_reply.started":"2024-08-02T19:15:18.392536Z","shell.execute_reply":"2024-08-02T19:15:18.713001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_datagen = ImageDataGenerator(rotation_range=10,\n                                   shear_range=0.1, # Görüntünün şekline eğim vermek için kullanılır.\n                                   zoom_range=0.1, # Görüntüyü yakınlaştırır.\n                                   width_shift_range=0.1, # Yatay kaydırma\n                                   height_shift_range=0.1) # Dikey kaydırma","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.715408Z","iopub.execute_input":"2024-08-02T19:15:18.716117Z","iopub.status.idle":"2024-08-02T19:15:18.721384Z","shell.execute_reply.started":"2024-08-02T19:15:18.716083Z","shell.execute_reply":"2024-08-02T19:15:18.720428Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 5) Modelling","metadata":{}},{"cell_type":"code","source":"model = Sequential()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.722557Z","iopub.execute_input":"2024-08-02T19:15:18.722848Z","iopub.status.idle":"2024-08-02T19:15:18.731831Z","shell.execute_reply.started":"2024-08-02T19:15:18.722824Z","shell.execute_reply":"2024-08-02T19:15:18.731027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.add(Input(shape=(28, 28, 1)))\n\nmodel.add(Conv2D(filters=64, kernel_size=(5,5), activation=\"relu\", padding='same'))\nmodel.add(BatchNormalization())\n\nmodel.add(Conv2D(filters=64, kernel_size=(5, 5), activation=\"relu\", padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(3,3), strides=(2,2)))\nmodel.add(Dropout(rate=0.20))\n\nmodel.add(Conv2D(filters=64, kernel_size=(3,3), activation=\"relu\", padding='same'))\nmodel.add(BatchNormalization())\n\nmodel.add(Conv2D(filters=64, kernel_size=(3, 3), activation=\"relu\", padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(3,3), strides=(2,2)))\nmodel.add(Dropout(rate=0.20))\n\nmodel.add(Conv2D(filters=64, kernel_size=(2,2), activation=\"relu\", padding='same'))\nmodel.add(BatchNormalization())\n\nmodel.add(Conv2D(filters=64, kernel_size=(2, 2), activation=\"relu\", padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2,2), strides=(2,2)))\nmodel.add(Dropout(rate=0.20))\n\nmodel.add(Flatten())\n\nmodel.add(Dense(units=256, activation=\"relu\"))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(rate=0.20))\n\nmodel.add(Dense(units=128, activation=\"relu\"))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(rate=0.20))\n\nmodel.add(Dense(units=64, activation=\"relu\"))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(rate=0.20))\n\nmodel.add(Dense(units=10, activation=\"softmax\"))","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:18.732914Z","iopub.execute_input":"2024-08-02T19:15:18.733253Z","iopub.status.idle":"2024-08-02T19:15:19.187610Z","shell.execute_reply.started":"2024-08-02T19:15:18.733229Z","shell.execute_reply":"2024-08-02T19:15:19.186790Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:19.188644Z","iopub.execute_input":"2024-08-02T19:15:19.188901Z","iopub.status.idle":"2024-08-02T19:15:19.234591Z","shell.execute_reply.started":"2024-08-02T19:15:19.188879Z","shell.execute_reply":"2024-08-02T19:15:19.233714Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(loss=\"categorical_crossentropy\",\n              optimizer=\"adam\",\n              metrics=[tf.keras.metrics.Precision(), tf.keras.metrics.Recall(), \"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:19.235706Z","iopub.execute_input":"2024-08-02T19:15:19.235996Z","iopub.status.idle":"2024-08-02T19:15:19.250672Z","shell.execute_reply.started":"2024-08-02T19:15:19.235952Z","shell.execute_reply":"2024-08-02T19:15:19.249717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"callbacks = [ReduceLROnPlateau(monitor='val_loss',\n                               factor=0.5,\n                               patience=8,\n                               min_lr=1e-4), \n             ModelCheckpoint(filepath=\"best_model.keras\",\n                             monitor=\"val_loss\",\n                             mode=\"min\",\n                             save_best_only=True,\n                             save_weights_only=False,\n                             verbose=1)]","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:15:19.251855Z","iopub.execute_input":"2024-08-02T19:15:19.252217Z","iopub.status.idle":"2024-08-02T19:15:19.258852Z","shell.execute_reply.started":"2024-08-02T19:15:19.252186Z","shell.execute_reply":"2024-08-02T19:15:19.257983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model.fit(train_datagen.flow(X_train, y_train, batch_size=64), \n                    epochs=40, \n                    validation_data=(X_test, y_test), \n                    callbacks=callbacks)","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2024-08-02T19:15:19.259824Z","iopub.execute_input":"2024-08-02T19:15:19.260115Z","iopub.status.idle":"2024-08-02T19:19:45.304791Z","shell.execute_reply.started":"2024-08-02T19:15:19.260092Z","shell.execute_reply":"2024-08-02T19:19:45.304032Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 6) Model Evaluation","metadata":{}},{"cell_type":"code","source":"# Accuracy ve Loss Grafikleri\n\n# Accuracy\nplt.figure(figsize=(20, 5))\nplt.subplot(1,2,1)\nplt.plot(history.history[\"accuracy\"], color=\"b\", label=\"Training Accuracy\")\nplt.plot(history.history[\"val_accuracy\"], color=\"r\", label=\"Validation Accuracy\")\nplt.legend(loc=\"lower right\")\nplt.xlabel(\"Epoch\", fontsize=16)\nplt.ylabel(\"Accuracy\", fontsize=16)\nplt.ylim([min(plt.ylim()), 1])\nplt.title(\"Training and Test Accuracy Graph\", fontsize=16)\n\n# Loss\nplt.subplot(1,2,2)\nplt.plot(history.history[\"loss\"], color=\"b\", label=\"Training Loss\")\nplt.plot(history.history[\"val_loss\"], color=\"r\", label=\"Validation Loss\")\nplt.legend(loc=\"upper right\")\nplt.xlabel(\"Epoch\", fontsize=16)\nplt.ylabel(\"Loss\", fontsize=16)\nplt.ylim([0, max(plt.ylim())])\nplt.title(\"Training and Test Loss Graph\", fontsize=16)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:45.306102Z","iopub.execute_input":"2024-08-02T19:19:45.306390Z","iopub.status.idle":"2024-08-02T19:19:45.932463Z","shell.execute_reply.started":"2024-08-02T19:19:45.306366Z","shell.execute_reply":"2024-08-02T19:19:45.931507Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"loss, precision, recall, acc = model.evaluate(X_test, y_test, verbose=False)\n\nprint(f\"Test Accuracy: {round(acc * 100, 2)}\")\nprint(f\"Test Loss: {round(loss * 100, 2)}\")\nprint(f\"Test Precision: {round(precision * 100, 2)}\")\nprint(f\"Test Recall: {round(recall * 100, 2)}\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:45.933681Z","iopub.execute_input":"2024-08-02T19:19:45.933973Z","iopub.status.idle":"2024-08-02T19:19:46.641878Z","shell.execute_reply.started":"2024-08-02T19:19:45.933947Z","shell.execute_reply":"2024-08-02T19:19:46.640918Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Confusion Matrix\n\nfrom tensorflow.keras.models import load_model\n\nbest_model = load_model(\"best_model.keras\")","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:46.643031Z","iopub.execute_input":"2024-08-02T19:19:46.643344Z","iopub.status.idle":"2024-08-02T19:19:47.336884Z","shell.execute_reply.started":"2024-08-02T19:19:46.643314Z","shell.execute_reply":"2024-08-02T19:19:47.336107Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = best_model.predict(X_test)\n\ny_pred_classes = np.argmax(y_pred, axis=1)\n\nif len(y_test.shape) > 1 and y_test.shape[1] != 1:\n    y_test = np.argmax(y_test, axis=1)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:47.338239Z","iopub.execute_input":"2024-08-02T19:19:47.338598Z","iopub.status.idle":"2024-08-02T19:19:49.403509Z","shell.execute_reply.started":"2024-08-02T19:19:47.338566Z","shell.execute_reply":"2024-08-02T19:19:49.402658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cm = confusion_matrix(y_test, y_pred_classes)\nplt.figure(figsize=(10,7))\nsns.heatmap(cm, annot=True, fmt='d', cmap='Blues')\nplt.xlabel('Predicted')\nplt.ylabel('True')\nplt.title('Confusion Matrix')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:49.404596Z","iopub.execute_input":"2024-08-02T19:19:49.404860Z","iopub.status.idle":"2024-08-02T19:19:49.942270Z","shell.execute_reply.started":"2024-08-02T19:19:49.404837Z","shell.execute_reply":"2024-08-02T19:19:49.941333Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Classification Report\n\nfrom sklearn.metrics import classification_report\n\nprint(classification_report(y_test, y_pred_classes))","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:49.947858Z","iopub.execute_input":"2024-08-02T19:19:49.948240Z","iopub.status.idle":"2024-08-02T19:19:49.967192Z","shell.execute_reply.started":"2024-08-02T19:19:49.948215Z","shell.execute_reply":"2024-08-02T19:19:49.966290Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Visualize misclassified instances\nincorrect = np.where(y_pred_classes != y_test)[0]\nnum_incorrect = len(incorrect)\n\nplt.figure(figsize=(8, 8))\nfor i in range(min(num_incorrect, 36)):  # İlk 36 yanlış sınıflandırılan örneği göster\n    idx = incorrect[i]\n    plt.subplot(6, 6, i + 1)\n    plt.imshow(X_test[idx], cmap='gray')\n    plt.title(f\"True: {y_test[idx]}, Pred: {y_pred_classes[idx]}\")\n    plt.axis('off')\nplt.tight_layout()\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:49.968291Z","iopub.execute_input":"2024-08-02T19:19:49.968584Z","iopub.status.idle":"2024-08-02T19:19:52.742693Z","shell.execute_reply.started":"2024-08-02T19:19:49.968554Z","shell.execute_reply":"2024-08-02T19:19:52.741842Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 7) Data Preprocessing for Test Data Set","metadata":{}},{"cell_type":"code","source":"test.head(3)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:52.743766Z","iopub.execute_input":"2024-08-02T19:19:52.744070Z","iopub.status.idle":"2024-08-02T19:19:52.759715Z","shell.execute_reply.started":"2024-08-02T19:19:52.744043Z","shell.execute_reply":"2024-08-02T19:19:52.758815Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 7.1) Reshaping","metadata":{}},{"cell_type":"code","source":"test = test.values.reshape(-1, 28, 28, 1)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:52.760949Z","iopub.execute_input":"2024-08-02T19:19:52.761321Z","iopub.status.idle":"2024-08-02T19:19:52.767841Z","shell.execute_reply.started":"2024-08-02T19:19:52.761280Z","shell.execute_reply":"2024-08-02T19:19:52.766903Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 7.2) Standardization","metadata":{}},{"cell_type":"code","source":"test = test / 255.0","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:52.768894Z","iopub.execute_input":"2024-08-02T19:19:52.769230Z","iopub.status.idle":"2024-08-02T19:19:52.844224Z","shell.execute_reply.started":"2024-08-02T19:19:52.769206Z","shell.execute_reply":"2024-08-02T19:19:52.843425Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 8) Prediction & Submission","metadata":{}},{"cell_type":"code","source":"y_pred_test = model.predict(test)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:52.845399Z","iopub.execute_input":"2024-08-02T19:19:52.845710Z","iopub.status.idle":"2024-08-02T19:19:55.632685Z","shell.execute_reply.started":"2024-08-02T19:19:52.845685Z","shell.execute_reply":"2024-08-02T19:19:55.631841Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred_test_classes = np.argmax(y_pred_test, axis=1)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:55.633963Z","iopub.execute_input":"2024-08-02T19:19:55.634321Z","iopub.status.idle":"2024-08-02T19:19:55.639515Z","shell.execute_reply.started":"2024-08-02T19:19:55.634293Z","shell.execute_reply":"2024-08-02T19:19:55.638539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 8.1) Submission","metadata":{}},{"cell_type":"code","source":"submission = pd.DataFrame({\n    'ImageId': range(1, len(y_pred_test_classes) + 1), \n    'Label': y_pred_test_classes\n})","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:55.640550Z","iopub.execute_input":"2024-08-02T19:19:55.640819Z","iopub.status.idle":"2024-08-02T19:19:55.647937Z","shell.execute_reply.started":"2024-08-02T19:19:55.640796Z","shell.execute_reply":"2024-08-02T19:19:55.647230Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.head()","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:55.649174Z","iopub.execute_input":"2024-08-02T19:19:55.649506Z","iopub.status.idle":"2024-08-02T19:19:55.662771Z","shell.execute_reply.started":"2024-08-02T19:19:55.649482Z","shell.execute_reply":"2024-08-02T19:19:55.661906Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv(\"submission.csv\", index=None)","metadata":{"execution":{"iopub.status.busy":"2024-08-02T19:19:55.664058Z","iopub.execute_input":"2024-08-02T19:19:55.664518Z","iopub.status.idle":"2024-08-02T19:19:55.703040Z","shell.execute_reply.started":"2024-08-02T19:19:55.664485Z","shell.execute_reply":"2024-08-02T19:19:55.702150Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}