{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "qWty393oiaBu" }, "outputs": [], "source": [ "import sys, cv2, glob, os, time\n", "import pandas as pd\n", "import numpy as np\n", "import numpy as np \n", "import pandas as pd \n", "import matplotlib.pyplot as plt\n", "\n", "\n", "import os\n", "import glob\n", "import cv2\n", "from sklearn.utils import shuffle\n", "\n", "import re,string\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from nltk.corpus import stopwords\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from warnings import filterwarnings\n", "from sklearn.metrics import confusion_matrix, accuracy_score, classification_report, roc_auc_score, roc_curve\n", "from tensorflow.keras.models import Sequential\n", "from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalization,MaxPooling2D,Activation,GlobalAveragePooling2D\n", "from keras import models, Model\n", "from keras import layers\n", "import tensorflow as tf\n", "import os\n", "import os.path\n", "from pathlib import Path\n", "import cv2\n", "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", "from sklearn.model_selection import train_test_split\n", "from keras import regularizers\n", "from keras.optimizers import RMSprop,Adam" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "fz44upqpi2dL" }, "outputs": [], "source": [ "from sklearn.metrics import accuracy_score\n", "from sklearn.metrics import classification_report\n", "from sklearn.metrics import confusion_matrix" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "-36JkmwSi2iS" }, "outputs": [], "source": [ "def get_images(directory):\n", " Images = []\n", " Labels = [] \n", "\n", " for labels in os.listdir(directory): \n", "\n", " for image_file in os.listdir(directory+labels): \n", " image = cv2.imread(directory+labels+r'/'+image_file) \n", " image = cv2.resize(image,(150,150)) \n", " Images.append(image)\n", " Labels.append(labels)\n", "\n", " return shuffle(Images,Labels,random_state=817328462) \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load dataset" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "pgdaDUvU0WLk" }, "outputs": [], "source": [ "# data\n", "X_train, y_train = get_images(\"Original Images (Primary and Secondary Sources)\\\\10k\\\\\") \n", "\n", "X_train = np.array(X_train) \n", "y_train = np.array(y_train)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": ":8080/" }, "id": "0gF5TePn0WLk", "outputId": "9acf0121-050c-4d48-feb3-df36b9cde5ee" }, "outputs": [ { "data": { "text/plain": [ "Counter({'Acral Lentiginous Melanoma': 609,\n", " 'Alopecia Areata': 542,\n", " 'Alopecia Totalis': 502,\n", " 'Basal Cell Carcinoma': 335,\n", " 'Hemangioma': 328,\n", " 'Fordyce Spots': 310,\n", " 'Androgenetic Alopecia': 309,\n", " 'Granuloma Annulare': 307,\n", " 'Herpes Zoster': 297,\n", " 'Epidermolytic Hyperkeratosis': 292,\n", " 'Arsenicosis': 287,\n", " 'Drug Eruptions': 283,\n", " 'Dariers Disease': 264,\n", " 'Bowens Disease': 241,\n", " 'Oral Lichen Planus': 233,\n", " 'Impetigo Contagiosa': 227,\n", " 'Malignant Melanoma': 226,\n", " 'Livedo Reticularis': 222,\n", " 'Lichen Planus': 213,\n", " 'Discoid Lupus Erythematosus': 213,\n", " 'Nevus of Ota': 197,\n", " 'Ichthyosis': 181,\n", " 'Drug Reactions': 174,\n", " 'Lupus Vulgaris': 173,\n", " 'Ecthyma': 173,\n", " 'Molluscum Contagiosum': 157,\n", " 'Hypertrophic Lichen Planus': 156,\n", " 'Trichoepithelioma': 142,\n", " 'Seborrheic Keratosis': 138,\n", " 'Systemic Lupus Erythematosus': 128,\n", " 'Mole': 121,\n", " 'Pagets Disease': 119,\n", " 'Squamous cell carcinoma': 118,\n", " 'Pityriasis Rosea': 117,\n", " 'Pityriasis Versicolor': 117,\n", " 'Vitiligo': 116,\n", " 'Linear Scleroderma': 112,\n", " 'Keratoderma': 107,\n", " 'Nevus Sebaceus': 107,\n", " 'Psoriasis': 105,\n", " 'Pemphigus Vulgaris': 101,\n", " 'Chromoblastomycosis': 101,\n", " 'Nevus Spilus': 93,\n", " 'Tinea Barbae': 91,\n", " 'Pityriasis Lichenoides Chronica': 81,\n", " 'Malignant Acanthosis Nigricans': 78,\n", " 'Striae Distensae': 67,\n", " 'Tinea Corporis': 65,\n", " 'Pyogenic Granuloma': 57,\n", " 'Tinea Pedis': 53,\n", " 'Tuberculosis Verrucosa Cutis': 51,\n", " 'Tinea Faciei': 34,\n", " 'Melanoacanthoma': 28,\n", " 'Nevus': 27,\n", " 'Verruca': 27,\n", " 'Granulomatous Diseases': 26,\n", " 'Solitary Mastocytosis': 22})" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from collections import Counter\n", "Counter(y_train)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "MivrAWvw0WLl" }, "outputs": [ { "data": { "text/plain": [ "(10000,)" ] }, } ], "source": [ "y_train.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Splitting" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "rItI9L6S0WLl" }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size=0.30, random_state = 42,shuffle=True,stratify =y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "Y3IXgtj3jkcr" }, "outputs": [], "source": [ "n_samples = len(X_train)\n", "X_train = X_train.reshape((n_samples, 150,150,3))\n", "\n", "\n", "n_samples = len(X_test)\n", "X_test = X_test.reshape((n_samples, 150,150,3))\n", "\n", "\n", "#n_samples = len(X_val)\n", "#X_val = X_val.reshape((n_samples,128,128,3))\n", "\n", "from sklearn.preprocessing import LabelEncoder\n", "\n", "target=y_train.tolist()\n", "label_encoder = LabelEncoder()\n", "Y = np.array(label_encoder.fit_transform(y_train))\n", "y_train = pd.get_dummies(Y).values\n", "\n", "from sklearn.preprocessing import LabelEncoder\n", "\n", "target=y_test.tolist()\n", "label_encoder = LabelEncoder()\n", "Y = np.array(label_encoder.fit_transform(y_test))\n", "y_test = pd.get_dummies(Y).values\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "oGbJJkwx0WLm" }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3ErIr8ey0WLm", "outputId": "a22f3849-d566-4e2f-e37d-1e9acdce7687" }, "outputs": [ { "data": { "text/plain": [ "((7000, 150, 150, 3), (7000, 57), (3000, 150, 150, 3), (3000, 57))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape, y_train.shape, X_test.shape,y_test.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "Cot_rV3hjkfK" }, "outputs": [], "source": [ "import tensorflow as tf\n", "from keras.models import Sequential\n", "from keras.layers import Dense,Flatten,Conv2D,MaxPooling2D,Dropout,BatchNormalization,Activation,MaxPool2D\n", "from keras.preprocessing.image import ImageDataGenerator\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, BatchNormalization, Dropout\n", "#F1 score\n", "import keras.backend as K\n", "\n", "def f1_score(y_true, y_pred):\n", "\n", " \n", " c1 = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))\n", " c2 = K.sum(K.round(K.clip(y_pred, 0, 1)))\n", " c3 = K.sum(K.round(K.clip(y_true, 0, 1)))\n", "\n", " \n", "\n", "\n", " \n", " precision = c1 / c2\n", "\n", " \n", " recall = c1 / c3\n", "\n", " \n", " f1_score = 2 * (precision * recall) / (precision + recall)\n", " return f1_score" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Baseline Models " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.models import Model\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Dense, Dropout, GlobalAveragePooling2D\n", "from tensorflow.keras.applications import VGG16, ResNet50\n", "from tensorflow.keras.applications.vgg16 import preprocess_input as vgg_preprocess\n", "from tensorflow.keras.applications.resnet50 import preprocess_input as resnet_preprocess\n", "from tensorflow.keras.applications.efficientnet import preprocess_input as efficient_preprocess\n", "\n", "\n", "input_shape = (150, 150, 3) \n", "num_classes = 57\n", "\n", "def build_simple_cnn():\n", " inputs = Input(shape=input_shape)\n", " x = Conv2D(32, (3, 3), activation='relu')(inputs)\n", " x = MaxPooling2D()(x)\n", " x = Conv2D(64, (3, 3), activation='relu')(x)\n", " x = MaxPooling2D()(x)\n", " x = Conv2D(128, (3, 3), activation='relu')(x)\n", " x = MaxPooling2D()(x)\n", " x = Flatten()(x)\n", " x = Dense(64, activation='relu')(x)\n", " x = Dropout(0.5)(x)\n", " outputs = Dense(num_classes, activation='softmax')(x)\n", " model = Model(inputs, outputs, name=\"SimpleCNN\")\n", " return model\n", "\n", "def build_vgg16():\n", " base = VGG16(weights='imagenet', include_top=False, input_shape=input_shape)\n", " for layer in base.layers:\n", " layer.trainable = False\n", " x = base.output\n", " x = GlobalAveragePooling2D()(x)\n", " x = Dense(64, activation='relu')(x)\n", " x = Dropout(0.5)(x)\n", " outputs = Dense(num_classes, activation='softmax')(x)\n", " model = Model(base.input, outputs, name=\"VGG16\")\n", " return model\n", "\n", "def build_resnet50():\n", " base = ResNet50(weights='imagenet', include_top=False, input_shape=input_shape)\n", " for layer in base.layers:\n", " layer.trainable = False\n", " x = base.output\n", " x = GlobalAveragePooling2D()(x)\n", " x = Dense(64, activation='relu')(x)\n", " x = Dropout(0.5)(x)\n", " outputs = Dense(num_classes, activation='softmax')(x)\n", " model = Model(base.input, outputs, name=\"ResNet50\")\n", " return model\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 9s 52ms/step - loss: 7.6113 - accuracy: 0.0513 - val_loss: 4.0107 - val_accuracy: 0.0610\n", "Epoch 2/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.9959 - accuracy: 0.0609 - val_loss: 3.9803 - val_accuracy: 0.0610\n", "Epoch 3/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.9677 - accuracy: 0.0609 - val_loss: 3.9540 - val_accuracy: 0.0610\n", "Epoch 4/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.9432 - accuracy: 0.0609 - val_loss: 3.9314 - val_accuracy: 0.0610\n", "Epoch 5/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.9223 - accuracy: 0.0609 - val_loss: 3.9121 - val_accuracy: 0.0610\n", "Epoch 6/20\n", "110/110 [==============================] - 5s 42ms/step - loss: 3.9045 - accuracy: 0.0609 - val_loss: 3.8955 - val_accuracy: 0.0610\n", "Epoch 7/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8893 - accuracy: 0.0609 - val_loss: 3.8815 - val_accuracy: 0.0610\n", "Epoch 8/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8764 - accuracy: 0.0609 - val_loss: 3.8696 - val_accuracy: 0.0610\n", "Epoch 9/20\n", "110/110 [==============================] - 5s 42ms/step - loss: 3.8655 - accuracy: 0.0609 - val_loss: 3.8596 - val_accuracy: 0.0610\n", "Epoch 10/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8563 - accuracy: 0.0609 - val_loss: 3.8511 - val_accuracy: 0.0610\n", "Epoch 11/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8487 - accuracy: 0.0609 - val_loss: 3.8440 - val_accuracy: 0.0610\n", "Epoch 12/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8423 - accuracy: 0.0609 - val_loss: 3.8382 - val_accuracy: 0.0610\n", "Epoch 13/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8370 - accuracy: 0.0609 - val_loss: 3.8333 - val_accuracy: 0.0610\n", "Epoch 14/20\n", "110/110 [==============================] - 4s 41ms/step - loss: 3.8325 - accuracy: 0.0609 - val_loss: 3.8292 - val_accuracy: 0.0610\n", "Epoch 15/20\n", "110/110 [==============================] - 4s 41ms/step - loss: 3.8289 - accuracy: 0.0609 - val_loss: 3.8259 - val_accuracy: 0.0610\n", "Epoch 16/20\n", "110/110 [==============================] - 4s 41ms/step - loss: 3.8258 - accuracy: 0.0609 - val_loss: 3.8231 - val_accuracy: 0.0610\n", "Epoch 17/20\n", "110/110 [==============================] - 5s 42ms/step - loss: 3.8233 - accuracy: 0.0609 - val_loss: 3.8208 - val_accuracy: 0.0610\n", "Epoch 18/20\n", "110/110 [==============================] - 4s 41ms/step - loss: 3.8212 - accuracy: 0.0609 - val_loss: 3.8189 - val_accuracy: 0.0610\n", "Epoch 19/20\n", "110/110 [==============================] - 4s 41ms/step - loss: 3.8195 - accuracy: 0.0609 - val_loss: 3.8172 - val_accuracy: 0.0610\n", "Epoch 20/20\n", "110/110 [==============================] - 4s 40ms/step - loss: 3.8180 - accuracy: 0.0609 - val_loss: 3.8159 - val_accuracy: 0.0610\n", "94/94 [==============================] - 1s 5ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.0610 1.0000 0.1150 183\n", " 1 0.0000 0.0000 0.0000 163\n", " 2 0.0000 0.0000 0.0000 151\n", " 3 0.0000 0.0000 0.0000 93\n", " 4 0.0000 0.0000 0.0000 86\n", " 5 0.0000 0.0000 0.0000 101\n", " 6 0.0000 0.0000 0.0000 72\n", " 7 0.0000 0.0000 0.0000 30\n", " 8 0.0000 0.0000 0.0000 79\n", " 9 0.0000 0.0000 0.0000 64\n", " 10 0.0000 0.0000 0.0000 85\n", " 11 0.0000 0.0000 0.0000 52\n", " 12 0.0000 0.0000 0.0000 52\n", " 13 0.0000 0.0000 0.0000 88\n", " 14 0.0000 0.0000 0.0000 93\n", " 15 0.0000 0.0000 0.0000 92\n", " 16 0.0000 0.0000 0.0000 8\n", " 17 0.0000 0.0000 0.0000 98\n", " 18 0.0000 0.0000 0.0000 89\n", " 19 0.0000 0.0000 0.0000 47\n", " 20 0.0000 0.0000 0.0000 54\n", " 21 0.0000 0.0000 0.0000 68\n", " 22 0.0000 0.0000 0.0000 32\n", " 23 0.0000 0.0000 0.0000 64\n", " 24 0.0000 0.0000 0.0000 34\n", " 25 0.0000 0.0000 0.0000 67\n", " 26 0.0000 0.0000 0.0000 52\n", " 27 0.0000 0.0000 0.0000 23\n", " 28 0.0000 0.0000 0.0000 68\n", " 29 0.0000 0.0000 0.0000 8\n", " 30 0.0000 0.0000 0.0000 36\n", " 31 0.0000 0.0000 0.0000 47\n", " 32 0.0000 0.0000 0.0000 8\n", " 33 0.0000 0.0000 0.0000 32\n", " 34 0.0000 0.0000 0.0000 28\n", " 35 0.0000 0.0000 0.0000 59\n", " 36 0.0000 0.0000 0.0000 70\n", " 37 0.0000 0.0000 0.0000 36\n", " 38 0.0000 0.0000 0.0000 30\n", " 39 0.0000 0.0000 0.0000 24\n", " 40 0.0000 0.0000 0.0000 35\n", " 41 0.0000 0.0000 0.0000 35\n", " 42 0.0000 0.0000 0.0000 32\n", " 43 0.0000 0.0000 0.0000 17\n", " 44 0.0000 0.0000 0.0000 41\n", " 45 0.0000 0.0000 0.0000 7\n", " 46 0.0000 0.0000 0.0000 35\n", " 47 0.0000 0.0000 0.0000 20\n", " 48 0.0000 0.0000 0.0000 38\n", " 49 0.0000 0.0000 0.0000 27\n", " 50 0.0000 0.0000 0.0000 20\n", " 51 0.0000 0.0000 0.0000 10\n", " 52 0.0000 0.0000 0.0000 16\n", " 53 0.0000 0.0000 0.0000 43\n", " 54 0.0000 0.0000 0.0000 15\n", " 55 0.0000 0.0000 0.0000 8\n", " 56 0.0000 0.0000 0.0000 35\n", "\n", " accuracy 0.0610 3000\n", " macro avg 0.0011 0.0175 0.0020 3000\n", "weighted avg 0.0037 0.0610 0.0070 3000\n", "\n", "[[183 0 0 ... 0 0 0]\n", " [163 0 0 ... 0 0 0]\n", " [151 0 0 ... 0 0 0]\n", " ...\n", " [ 15 0 0 ... 0 0 0]\n", " [ 8 0 0 ... 0 0 0]\n", " [ 35 0 0 ... 0 0 0]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\OMEN\\anaconda33\\envs\\py310\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", "C:\\Users\\OMEN\\anaconda33\\envs\\py310\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", "C:\\Users\\OMEN\\anaconda33\\envs\\py310\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "\n", "model1.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "model1.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64)\n", "predict=model1.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 30s 229ms/step - loss: 5.4105 - accuracy: 0.0527 - val_loss: 3.9089 - val_accuracy: 0.0843\n", "Epoch 2/20\n", "110/110 [==============================] - 18s 167ms/step - loss: 3.8611 - accuracy: 0.1007 - val_loss: 3.5435 - val_accuracy: 0.1693\n", "Epoch 3/20\n", "110/110 [==============================] - 18s 168ms/step - loss: 3.5959 - accuracy: 0.1393 - val_loss: 3.2128 - val_accuracy: 0.2283\n", "Epoch 4/20\n", "110/110 [==============================] - 19s 172ms/step - loss: 3.3323 - accuracy: 0.1776 - val_loss: 2.8951 - val_accuracy: 0.2937\n", "Epoch 5/20\n", "110/110 [==============================] - 19s 173ms/step - loss: 3.0868 - accuracy: 0.2266 - val_loss: 2.5722 - val_accuracy: 0.3580\n", "Epoch 6/20\n", "110/110 [==============================] - 19s 176ms/step - loss: 2.8410 - accuracy: 0.2643 - val_loss: 2.3399 - val_accuracy: 0.4057\n", "Epoch 7/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 2.6095 - accuracy: 0.3097 - val_loss: 2.1136 - val_accuracy: 0.4547\n", "Epoch 8/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 2.4164 - accuracy: 0.3436 - val_loss: 1.9127 - val_accuracy: 0.4947\n", "Epoch 9/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 2.2773 - accuracy: 0.3663 - val_loss: 1.8033 - val_accuracy: 0.5270\n", "Epoch 10/20\n", "110/110 [==============================] - 19s 176ms/step - loss: 2.0839 - accuracy: 0.4057 - val_loss: 1.6244 - val_accuracy: 0.5610\n", "Epoch 11/20\n", "110/110 [==============================] - 19s 176ms/step - loss: 1.9939 - accuracy: 0.4234 - val_loss: 1.5226 - val_accuracy: 0.6010\n", "Epoch 12/20\n", "110/110 [==============================] - 19s 176ms/step - loss: 1.8845 - accuracy: 0.4519 - val_loss: 1.4605 - val_accuracy: 0.6117\n", "Epoch 13/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 1.7829 - accuracy: 0.4807 - val_loss: 1.3336 - val_accuracy: 0.6430\n", "Epoch 14/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 1.7253 - accuracy: 0.4860 - val_loss: 1.2522 - val_accuracy: 0.6563\n", "Epoch 15/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 1.6141 - accuracy: 0.5057 - val_loss: 1.1802 - val_accuracy: 0.6793\n", "Epoch 16/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 1.5580 - accuracy: 0.5323 - val_loss: 1.1336 - val_accuracy: 0.6823\n", "Epoch 17/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 1.4854 - accuracy: 0.5487 - val_loss: 1.0783 - val_accuracy: 0.6990\n", "Epoch 18/20\n", "110/110 [==============================] - 19s 177ms/step - loss: 1.4336 - accuracy: 0.5540 - val_loss: 1.0311 - val_accuracy: 0.7197\n", "Epoch 19/20\n", "110/110 [==============================] - 19s 178ms/step - loss: 1.3805 - accuracy: 0.5760 - val_loss: 0.9711 - val_accuracy: 0.7350\n", "Epoch 20/20\n", "110/110 [==============================] - 20s 178ms/step - loss: 1.3420 - accuracy: 0.5829 - val_loss: 0.9509 - val_accuracy: 0.7393\n", "94/94 [==============================] - 9s 62ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.6641 0.9290 0.7745 183\n", " 1 0.7853 0.9202 0.8475 163\n", " 2 0.7967 0.9603 0.8709 151\n", " 3 0.8444 0.8172 0.8306 93\n", " 4 0.7727 0.9884 0.8673 86\n", " 5 0.6090 0.8020 0.6923 101\n", " 6 0.5495 0.6944 0.6135 72\n", " 7 0.8621 0.8333 0.8475 30\n", " 8 0.5093 0.6962 0.5882 79\n", " 9 0.6094 0.6094 0.6094 64\n", " 10 0.5618 0.5882 0.5747 85\n", " 11 0.6909 0.7308 0.7103 52\n", " 12 0.7170 0.7308 0.7238 52\n", " 13 0.6762 0.8068 0.7358 88\n", " 14 0.9362 0.9462 0.9412 93\n", " 15 0.6634 0.7283 0.6943 92\n", " 16 1.0000 0.8750 0.9333 8\n", " 17 0.7931 0.9388 0.8598 98\n", " 18 0.5520 0.7753 0.6449 89\n", " 19 0.5882 0.4255 0.4938 47\n", " 20 0.8800 0.8148 0.8462 54\n", " 21 0.6905 0.4265 0.5273 68\n", " 22 0.9677 0.9375 0.9524 32\n", " 23 0.7368 0.6562 0.6942 64\n", " 24 0.7586 0.6471 0.6984 34\n", " 25 0.9032 0.8358 0.8682 67\n", " 26 0.7812 0.4808 0.5952 52\n", " 27 1.0000 0.5217 0.6857 23\n", " 28 0.7077 0.6765 0.6917 68\n", " 29 1.0000 0.3750 0.5455 8\n", " 30 0.8621 0.6944 0.7692 36\n", " 31 0.8333 0.4255 0.5634 47\n", " 32 1.0000 0.2500 0.4000 8\n", " 33 1.0000 0.6875 0.8148 32\n", " 34 0.9600 0.8571 0.9057 28\n", " 35 0.8491 0.7627 0.8036 59\n", " 36 0.8611 0.8857 0.8732 70\n", " 37 0.6667 0.7222 0.6933 36\n", " 38 0.7241 0.7000 0.7119 30\n", " 39 0.6471 0.4583 0.5366 24\n", " 40 0.6897 0.5714 0.6250 35\n", " 41 0.9524 0.5714 0.7143 35\n", " 42 1.0000 0.3750 0.5455 32\n", " 43 1.0000 0.5294 0.6923 17\n", " 44 0.8718 0.8293 0.8500 41\n", " 45 0.0000 0.0000 0.0000 7\n", " 46 0.7857 0.3143 0.4490 35\n", " 47 1.0000 0.3500 0.5185 20\n", " 48 0.6970 0.6053 0.6479 38\n", " 49 0.8462 0.4074 0.5500 27\n", " 50 1.0000 0.3500 0.5185 20\n", " 51 1.0000 0.1000 0.1818 10\n", " 52 1.0000 0.6250 0.7692 16\n", " 53 0.8750 0.6512 0.7467 43\n", " 54 1.0000 0.6000 0.7500 15\n", " 55 1.0000 0.3750 0.5455 8\n", " 56 0.9091 0.8571 0.8824 35\n", "\n", " accuracy 0.7393 3000\n", " macro avg 0.8007 0.6443 0.6845 3000\n", "weighted avg 0.7590 0.7393 0.7309 3000\n", "\n", "[[170 0 3 ... 0 0 0]\n", " [ 0 150 4 ... 0 0 0]\n", " [ 1 1 145 ... 0 0 0]\n", " ...\n", " [ 3 0 0 ... 9 0 0]\n", " [ 0 0 0 ... 0 3 0]\n", " [ 0 1 2 ... 0 0 30]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\OMEN\\anaconda33\\envs\\py310\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", "C:\\Users\\OMEN\\anaconda33\\envs\\py310\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", "C:\\Users\\OMEN\\anaconda33\\envs\\py310\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] }, { "data": { "text/plain": [ "
" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model2 = build_vgg16() # or build_vgg16() or build_resnet50()\n", "\n", "model2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "model2.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64)\n", "predict=model2.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 20s 147ms/step - loss: 3.5619 - accuracy: 0.1414 - val_loss: 2.6957 - val_accuracy: 0.3710\n", "Epoch 2/20\n", "110/110 [==============================] - 14s 130ms/step - loss: 2.6717 - accuracy: 0.3143 - val_loss: 1.9477 - val_accuracy: 0.5193\n", "Epoch 3/20\n", "110/110 [==============================] - 14s 131ms/step - loss: 2.1333 - accuracy: 0.4254 - val_loss: 1.4821 - val_accuracy: 0.6297\n", "Epoch 4/20\n", "110/110 [==============================] - 14s 132ms/step - loss: 1.8044 - accuracy: 0.4883 - val_loss: 1.2450 - val_accuracy: 0.7150\n", "Epoch 5/20\n", "110/110 [==============================] - 15s 132ms/step - loss: 1.5602 - accuracy: 0.5510 - val_loss: 1.0036 - val_accuracy: 0.7370\n", "Epoch 6/20\n", "110/110 [==============================] - 15s 133ms/step - loss: 1.4086 - accuracy: 0.5911 - val_loss: 0.8529 - val_accuracy: 0.7827\n", "Epoch 7/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 1.2673 - accuracy: 0.6254 - val_loss: 0.7693 - val_accuracy: 0.8100\n", "Epoch 8/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 1.1468 - accuracy: 0.6540 - val_loss: 0.6510 - val_accuracy: 0.8430\n", "Epoch 9/20\n", "110/110 [==============================] - 15s 135ms/step - loss: 1.0737 - accuracy: 0.6699 - val_loss: 0.6243 - val_accuracy: 0.8477\n", "Epoch 10/20\n", "110/110 [==============================] - 15s 135ms/step - loss: 0.9820 - accuracy: 0.6970 - val_loss: 0.5629 - val_accuracy: 0.8713\n", "Epoch 11/20\n", "110/110 [==============================] - 15s 135ms/step - loss: 0.9533 - accuracy: 0.7023 - val_loss: 0.5154 - val_accuracy: 0.8717\n", "Epoch 12/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.8595 - accuracy: 0.7303 - val_loss: 0.4880 - val_accuracy: 0.8760\n", "Epoch 13/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.8378 - accuracy: 0.7400 - val_loss: 0.4496 - val_accuracy: 0.8843\n", "Epoch 14/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.7858 - accuracy: 0.7529 - val_loss: 0.4410 - val_accuracy: 0.8883\n", "Epoch 15/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.7556 - accuracy: 0.7590 - val_loss: 0.3904 - val_accuracy: 0.9053\n", "Epoch 16/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.7242 - accuracy: 0.7709 - val_loss: 0.3948 - val_accuracy: 0.9023\n", "Epoch 17/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.7097 - accuracy: 0.7763 - val_loss: 0.3463 - val_accuracy: 0.9090\n", "Epoch 18/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.6449 - accuracy: 0.7974 - val_loss: 0.3352 - val_accuracy: 0.9227\n", "Epoch 19/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.6487 - accuracy: 0.7907 - val_loss: 0.3329 - val_accuracy: 0.9140\n", "Epoch 20/20\n", "110/110 [==============================] - 15s 138ms/step - loss: 0.6119 - accuracy: 0.8020 - val_loss: 0.3164 - val_accuracy: 0.9127\n", "94/94 [==============================] - 6s 50ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.9263 0.9617 0.9437 183\n", " 1 0.9298 0.9755 0.9521 163\n", " 2 0.9202 0.9934 0.9554 151\n", " 3 0.9263 0.9462 0.9362 93\n", " 4 0.8515 1.0000 0.9198 86\n", " 5 0.8889 0.9505 0.9187 101\n", " 6 0.9104 0.8472 0.8777 72\n", " 7 0.9355 0.9667 0.9508 30\n", " 8 0.8675 0.9114 0.8889 79\n", " 9 0.7500 0.8906 0.8143 64\n", " 10 0.9186 0.9294 0.9240 85\n", " 11 0.9216 0.9038 0.9126 52\n", " 12 0.9792 0.9038 0.9400 52\n", " 13 0.8889 0.9091 0.8989 88\n", " 14 0.9010 0.9785 0.9381 93\n", " 15 0.8190 0.9348 0.8731 92\n", " 16 1.0000 0.3750 0.5455 8\n", " 17 0.9362 0.8980 0.9167 98\n", " 18 0.8173 0.9551 0.8808 89\n", " 19 0.9268 0.8085 0.8636 47\n", " 20 0.9286 0.9630 0.9455 54\n", " 21 0.9153 0.7941 0.8504 68\n", " 22 1.0000 0.9375 0.9677 32\n", " 23 0.8657 0.9062 0.8855 64\n", " 24 0.9600 0.7059 0.8136 34\n", " 25 0.9710 1.0000 0.9853 67\n", " 26 0.9583 0.8846 0.9200 52\n", " 27 0.9412 0.6957 0.8000 23\n", " 28 0.8923 0.8529 0.8722 68\n", " 29 1.0000 0.8750 0.9333 8\n", " 30 0.9697 0.8889 0.9275 36\n", " 31 1.0000 0.8298 0.9070 47\n", " 32 1.0000 1.0000 1.0000 8\n", " 33 1.0000 0.9062 0.9508 32\n", " 34 1.0000 0.8571 0.9231 28\n", " 35 0.9833 1.0000 0.9916 59\n", " 36 0.9692 0.9000 0.9333 70\n", " 37 1.0000 0.9722 0.9859 36\n", " 38 0.9333 0.9333 0.9333 30\n", " 39 0.9583 0.9583 0.9583 24\n", " 40 0.7632 0.8286 0.7945 35\n", " 41 1.0000 0.9429 0.9706 35\n", " 42 1.0000 0.7500 0.8571 32\n", " 43 1.0000 0.7059 0.8276 17\n", " 44 0.9524 0.9756 0.9639 41\n", " 45 1.0000 1.0000 1.0000 7\n", " 46 0.9394 0.8857 0.9118 35\n", " 47 1.0000 0.9500 0.9744 20\n", " 48 0.7111 0.8421 0.7711 38\n", " 49 0.9500 0.7037 0.8085 27\n", " 50 0.9333 0.7000 0.8000 20\n", " 51 0.7692 1.0000 0.8696 10\n", " 52 1.0000 0.6875 0.8148 16\n", " 53 0.9750 0.9070 0.9398 43\n", " 54 1.0000 0.6667 0.8000 15\n", " 55 1.0000 0.8750 0.9333 8\n", " 56 0.9394 0.8857 0.9118 35\n", "\n", " accuracy 0.9127 3000\n", " macro avg 0.9332 0.8808 0.8997 3000\n", "weighted avg 0.9175 0.9127 0.9119 3000\n", "\n", "[[176 0 1 ... 0 0 0]\n", " [ 0 159 3 ... 0 0 0]\n", " [ 0 1 150 ... 0 0 0]\n", " ...\n", " [ 1 0 0 ... 10 0 0]\n", " [ 0 0 0 ... 0 7 0]\n", " [ 0 2 1 ... 0 0 31]]\n" ] }, { "data": { "text/plain": [ "
" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model3 = build_resnet50() \n", "\n", "model3.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "model3.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64)\n", "predict=model3.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Proposed model" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 29s 171ms/step - loss: 2.9995 - accuracy: 0.2726 - val_loss: 1.7109 - val_accuracy: 0.5740\n", "Epoch 2/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 1.5845 - accuracy: 0.5917 - val_loss: 0.7752 - val_accuracy: 0.8067\n", "Epoch 3/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.8820 - accuracy: 0.7641 - val_loss: 0.4144 - val_accuracy: 0.9017\n", "Epoch 4/20\n", "110/110 [==============================] - 15s 135ms/step - loss: 0.5670 - accuracy: 0.8499 - val_loss: 0.2626 - val_accuracy: 0.9290\n", "Epoch 5/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.3571 - accuracy: 0.8979 - val_loss: 0.1909 - val_accuracy: 0.9540\n", "Epoch 6/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.2828 - accuracy: 0.9213 - val_loss: 0.1362 - val_accuracy: 0.9660\n", "Epoch 7/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.2455 - accuracy: 0.9393 - val_loss: 0.1558 - val_accuracy: 0.9633\n", "Epoch 8/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.1743 - accuracy: 0.9524 - val_loss: 0.1915 - val_accuracy: 0.9653\n", "Epoch 9/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.2017 - accuracy: 0.9486 - val_loss: 0.1597 - val_accuracy: 0.9650\n", "Epoch 10/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.1579 - accuracy: 0.9614 - val_loss: 0.1080 - val_accuracy: 0.9743\n", "Epoch 11/20\n", "110/110 [==============================] - 15s 136ms/step - loss: 0.1743 - accuracy: 0.9561 - val_loss: 0.1108 - val_accuracy: 0.9730\n", "Epoch 12/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.1251 - accuracy: 0.9674 - val_loss: 0.1124 - val_accuracy: 0.9780\n", "Epoch 13/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.1133 - accuracy: 0.9691 - val_loss: 0.1212 - val_accuracy: 0.9783\n", "Epoch 14/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.1355 - accuracy: 0.9677 - val_loss: 0.1319 - val_accuracy: 0.9760\n", "Epoch 15/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.0897 - accuracy: 0.9754 - val_loss: 0.1394 - val_accuracy: 0.9807\n", "Epoch 16/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.1129 - accuracy: 0.9719 - val_loss: 0.1700 - val_accuracy: 0.9790\n", "Epoch 17/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.1188 - accuracy: 0.9733 - val_loss: 0.1689 - val_accuracy: 0.9697\n", "Epoch 18/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.0983 - accuracy: 0.9791 - val_loss: 0.1098 - val_accuracy: 0.9810\n", "Epoch 19/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.0758 - accuracy: 0.9797 - val_loss: 0.0856 - val_accuracy: 0.9817\n", "Epoch 20/20\n", "110/110 [==============================] - 15s 137ms/step - loss: 0.0751 - accuracy: 0.9817 - val_loss: 0.0732 - val_accuracy: 0.9860\n" ] } ], "source": [ "from tensorflow.keras.applications import EfficientNetB2\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, concatenate, Dense, Dropout, GlobalAveragePooling2D, Flatten, Add, Multiply\n", "from tensorflow.keras.models import Model\n", "import tensorflow.keras.backend as K\n", "\n", "\n", "def inception_module(x, filters):\n", " # 1x1 convolution\n", " path1 = Conv2D(filters[0], (1, 1), activation='relu', padding='same')(x)\n", " # 1x1 followed by 3x3\n", " path2 = Conv2D(filters[1], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[2], (3, 3), activation='relu', padding='same')(path2)\n", " # Max pooling followed by 1x1\n", " path3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x)\n", " path3 = Conv2D(filters[3], (1, 1), activation='relu', padding='same')(path3)\n", " return concatenate([path1, path2, path3])\n", "\n", "\n", "def attention_module(x):\n", " attention = GlobalAveragePooling2D()(x)\n", " attention = Dense(K.int_shape(x)[-1] // 8, activation='relu')(attention)\n", " attention = Dense(K.int_shape(x)[-1], activation='sigmoid')(attention)\n", " return Multiply()([x, attention])\n", "\n", "\n", "input_layer = Input(shape=(150, 150, 3))\n", "\n", "\n", "base_model = EfficientNetB2(weights='imagenet', include_top=False, input_tensor=input_layer)\n", "for layer in base_model.layers[:-20]: \n", " layer.trainable = False\n", "\n", "x = base_model.output\n", "\n", "\n", "x = attention_module(x)\n", "\n", "\n", "x = inception_module(x, [32, 48, 64, 16])\n", "\n", "\n", "x = GlobalAveragePooling2D()(x)\n", "\n", "\n", "x = Dense(64, activation='relu')(x)\n", "x = Dropout(0.5)(x)\n", "output = Dense(57, activation='softmax')(x) \n", "\n", "\n", "model4 = Model(inputs=input_layer, outputs=output)\n", "\n", "\n", "model4.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "\n", "hist4 = model4.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64, verbose=1)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "94/94 [==============================] - 7s 44ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.9891 0.9891 0.9891 183\n", " 1 0.9938 0.9877 0.9908 163\n", " 2 1.0000 1.0000 1.0000 151\n", " 3 0.9894 1.0000 0.9947 93\n", " 4 0.9451 1.0000 0.9718 86\n", " 5 0.9712 1.0000 0.9854 101\n", " 6 0.9863 1.0000 0.9931 72\n", " 7 1.0000 1.0000 1.0000 30\n", " 8 0.9875 1.0000 0.9937 79\n", " 9 0.9683 0.9531 0.9606 64\n", " 10 0.9643 0.9529 0.9586 85\n", " 11 0.9804 0.9615 0.9709 52\n", " 12 1.0000 1.0000 1.0000 52\n", " 13 1.0000 0.9886 0.9943 88\n", " 14 1.0000 1.0000 1.0000 93\n", " 15 0.9889 0.9674 0.9780 92\n", " 16 1.0000 1.0000 1.0000 8\n", " 17 1.0000 0.9898 0.9949 98\n", " 18 0.9674 1.0000 0.9834 89\n", " 19 1.0000 0.9787 0.9892 47\n", " 20 1.0000 0.9259 0.9615 54\n", " 21 1.0000 0.9706 0.9851 68\n", " 22 1.0000 1.0000 1.0000 32\n", " 23 1.0000 0.9219 0.9593 64\n", " 24 0.9706 0.9706 0.9706 34\n", " 25 0.9571 1.0000 0.9781 67\n", " 26 1.0000 0.9808 0.9903 52\n", " 27 1.0000 1.0000 1.0000 23\n", " 28 0.9714 1.0000 0.9855 68\n", " 29 1.0000 1.0000 1.0000 8\n", " 30 1.0000 1.0000 1.0000 36\n", " 31 0.9778 0.9362 0.9565 47\n", " 32 1.0000 0.8750 0.9333 8\n", " 33 0.9697 1.0000 0.9846 32\n", " 34 1.0000 0.9286 0.9630 28\n", " 35 0.9831 0.9831 0.9831 59\n", " 36 1.0000 1.0000 1.0000 70\n", " 37 1.0000 1.0000 1.0000 36\n", " 38 0.9677 1.0000 0.9836 30\n", " 39 0.9600 1.0000 0.9796 24\n", " 40 0.9459 1.0000 0.9722 35\n", " 41 1.0000 0.9714 0.9855 35\n", " 42 1.0000 1.0000 1.0000 32\n", " 43 1.0000 1.0000 1.0000 17\n", " 44 1.0000 1.0000 1.0000 41\n", " 45 1.0000 1.0000 1.0000 7\n", " 46 1.0000 1.0000 1.0000 35\n", " 47 1.0000 1.0000 1.0000 20\n", " 48 0.9500 1.0000 0.9744 38\n", " 49 1.0000 0.9630 0.9811 27\n", " 50 0.9524 1.0000 0.9756 20\n", " 51 1.0000 1.0000 1.0000 10\n", " 52 1.0000 1.0000 1.0000 16\n", " 53 0.9767 0.9767 0.9767 43\n", " 54 1.0000 1.0000 1.0000 15\n", " 55 1.0000 1.0000 1.0000 8\n", " 56 0.9722 1.0000 0.9859 35\n", "\n", " accuracy 0.9860 3000\n", " macro avg 0.9875 0.9855 0.9862 3000\n", "weighted avg 0.9863 0.9860 0.9860 3000\n", "\n", "[[181 0 0 ... 0 0 0]\n", " [ 0 161 0 ... 0 0 1]\n", " [ 0 0 151 ... 0 0 0]\n", " ...\n", " [ 0 0 0 ... 15 0 0]\n", " [ 0 0 0 ... 0 8 0]\n", " [ 0 0 0 ... 0 0 35]]\n" ] }, { "data": { "text/plain": [ "
" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict=model4.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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xwc+Pj6WwejFnDt3Dvv27UNkZKTVGZ+dOnXC3XffjS1btlht7+HhYfXxtddea7lMwpUYN24cli1bhp07d2L06NHIy8tDeXk5xowZg82bN1tt+89//hMAUFVVhdLSUvz666/Yt28fAKC2tvZv99OlS5crvsnVuHHjkJWVhRdeeAFt2rRBamrq317X9LfffgOABsP22NhYODo6Woavw4cPh5ubG0JCQpCWloaQkBDLtkePHsXmzZuxYMGCBtelvRSOjo6N/ry7mFtuuQUff/wxTCYTysrKcPDgQfzyyy8oKSlBXV0dAGDAgAG45pprEB4ejnvvvRdeXl7w9PTEvHnzLJ4RI0YgMTERhYWF8PLygo+PD6Kjoy33f/fdd7jlllvg6upq8To4OMDb2xtffvklAOCOO+7Af/7zHwQGBmLs2LHw8fHB6NGjLX8O/sr1119vuewFIYQQQghRHg5ZCSGEECKEzp07o3379jh8+PBltzl37hyMRiM6d+5suT7mxb/CrdVq0bVrV8uvYQNocPmBP87oM5lMLWp+7rnncO211+LLL79EbGwsYmNj4eHhgZiYGNx8881W2545cwZmsxndu3dv4OnevbtVLwA4OTlZfezg4GB1CYS/o2/fvrjllluQlZWF0aNH46uvvsLo0aPRuXPnBtuePHkSL774IjZt2gSNRoPevXtj+PDhAHDF/bVv375RPXq9Hl9//TX69OmDvn37/u22fzwPF79mFw+dAeD2229Hx44dLW+K9QcbNmyARqNpMIC/HNddd93fft4ZjUacOnXqkq8dcOEasitWrEBlZSW6d+8Od3d3tGvXznIs7du3x0cffYSkpCRkZmbi008/hZOTE4KCgrBw4UK0adMG//nPf7BixQpkZmbi66+/hoODA+666y68/PLLuP7661FZWYmDBw9i0KBBl2yorq6Gh4cH3nnnHXzwwQd4//338c4776B79+4IDw/HlClTrLb/ax8hhBBCCFEeXpOVEEIIIcIYPXo0DAaD1RtX/ZXPPvsMI0eOxP79+y0Dw+PHj1ttYzQaUVFRga5du7a45+KzGy8+k7RNmzaIiIhAZmYmcnJy8MILL+C3335rcA1MAOjYsSM0Gg1+//33BvcdP34cXbp0aXHvXxk3bhw2btwIo9GIrKysyw4c586di3379uGDDz7ADz/8gMzMTPzrX/8S1lFdXY1XX30VN910E37++WckJyf/7fZ/vG6nT5+2rJ05cwaff/45fv75Z6ttTSYTjEYjrrnmGqv1b775BsOHD7/sUPRiRo8ejcLCwgafS3+wZcsWeHp6XvIaphkZGYiPj8fjjz+O7777Dtu3b8fbb7+NPn36WG3Xr18/JCQkYOfOnVizZg30ej0+/fRTfPjhhwAufH7MmzcP2dnZyMzMxOzZs7Fnzx689NJLlvvvvPNOfP7555e8/XF2sJeXF1auXIldu3ZhxYoVuOmmm/DKK68gPz/fquf06dNC/owQQgghhBAxcMhKCCGEEGFMnz4dlZWVWLp0aYP7jh8/juTkZLi5uWHQoEGWN05av3691Xbr169HfX09br/99ha1dOjQAUePHrVa2717t+X/a2pqMHbsWMvQ8LrrrsPkyZMxfvz4S54V6ezsDHd3d2RmZloNb8+cOYNvvvmmxb0Xc99996GyshIrVqzAqVOn4O/vf8ntdu/ejTFjxmDEiBGWQd3WrVsB/Hmm78VvaNUUXn/9dRw9ehSJiYl49NFHsWzZsgZv8vVXrrvuOgCweu7btGmD2NhYvP3221bbZmdno6amBiNGjLCsmc1m5OfnW6592hgmT54MnU6HRYsWXXKwvmzZMnTt2hXe3t4NHrt792506tQJ//znPy3D3qqqKuzevdvy/GVlZWHkyJE4fvw4HB0dLWc7d+rUCYcPH8b//vc/+Pj4WN6srF+/fnj88cdx1113WT6X7rzzTpSWlqJv374YPHiw5Zaeno7PP/8cjo6OWLx4MR588EGYzWa0a9cOd999t+WSAxd/Th49etRybVdCCCGEEKI8vFwAIYQQQoQxdOhQPP3001i6dCmKi4sxYcIEdO3aFUVFRVi5ciXOnz9vGcC6ublBr9dj2bJlqK6uxh133IEff/wRy5cvx4gRI+Dl5dWilrvvvhtvv/023n77bQwZMgTZ2dmWd3oHLvw6/6BBg7B8+XLodDoMHDgQpaWlWLt2LcaOHXtJ55w5cxAWFoYZM2YgJCQERqMR77zzDmpray97LdfmcsMNN2Dw4MF4++23cc899zR4Y6g/uO2225CRkYFBgwbh2muvxZ49e/DOO+9Ao9FYrlnbsWNHABeuC9q/f38MGTKkUQ25ublISUnBM888gz59+mDWrFnYuHEjFixYgDVr1lxyeNuvXz9cd9112L17N+655x4AQNu2bfH4448jMTER3bt3h4+PD37++WckJibC398fo0aNsjz+8OHDOHPmDNzc3Br9XPXq1QsxMTF47rnnMHnyZAQHB6Nnz5749ddf8f777+O3337DypUr0bZt20s+f5988gni4+Nx991349ixY1i5ciV+//13y9nWw4YNg8lkwpNPPokZM2agffv2yMzMxJkzZzBmzBhcf/31uPbaa/HKK6/g7NmzuPHGG1FQUIAtW7Zg5syZAIBp06YhPT0d06ZNw/Tp09G1a1d89dVX+Oyzz/Dss88CuPCGW++//z4WLFiABx54AEajEe+99x66dOmCkSNHWprPnDmDoqIiTJ8+vdHPESGEEEIIsS0cshJCCCFEKBEREbj11lvx0UcfIS4uDqdOnULPnj3h6+uL8PBw9OzZ07LtokWL0Lt3b3zxxRd499130aNHD0ydOhVPPPEEHBxa9gs3M2fOxMmTJ7Fy5UoYjUb4+vpi0aJFiIiIsGzz8ssvY+nSpUhOTsbx48fRrVs3PPTQQ3j66acv6Rw1ahTef/99LFu2DLNnz0abNm0wfPhwLF68GAMGDGhR76UYN24c9u3b97fXJo2Pj7dcTxYA+vTpg5deeglffvklvv/+ewAXzuoNDQ3Fp59+ii1btmD79u1X3Pe5c+fw7LPP4qabbkJYWBiAC9cmfeGFFxAREYH33nvPMkC8mLFjx2Lr1q1YsGCBZe2JJ57ANddcg48//hiffPIJunTpguDgYDz11FNWjz1x4gSAC28o1hT0ej169+6NVatWYenSpThx4gRcXFwwbNgwJCYmon///pd93KFDh/DFF1/g448/hqurK3x8fBASEoLnn38excXF6N+/P9577z288cYbeO6551BdXY0BAwYgMTHRMvxcvnw5lixZgjfeeAMVFRXo2bMnIiMjMWPGDACAq6sr1qxZg9dffx0xMTE4f/48+vTpg0WLFuGhhx4CAPj4+OC1115DcnIyIiMjodFocPvtt+PDDz+0uhzFt99+C51OB19f3yY9R4QQQgghxHZozI19BwZCCCGEEEIaQXl5OQICApCcnIw77rhD6RzV8dhjj+Gmm27Cc889p3QKIYQQQgj5f3hNVkIIIYQQIhRXV1dMmzYN7777rtIpqmPfvn04cOCA5QxZQgghhBAiBxyyEkIIIYQQ4Tz11FMoLy/Htm3blE5R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mGzRokXYtGmT0T88Kioq4OLigueee85k35NPPomHHnoICxYsMPkcwn/G3t4ew4cPh7W1Nd58801ER0fjwIEDePfdd00+dzIAPP300+jXr5/hy99sbW1x/PhxBAcH4/HHHzfJdfmXUWtra/j5+cHPzw+///47Dh8+jB9//NHktoCAAIwdOxZNTU14+umnMX36dIwePRoZGRkmz/Wxxx7DtGnTMHLkSKSnp2PEiBEoKyvDa6+9ZjiftSm89NJLCAgIwCOPPGL0Ebh9+/aZ/FFVka8F4NLj9tRTT+H111+Hq6srevbsiQ8++AAvvPACqqurTfaNGDECwcHB+OSTTwznKPv+++8RGRnZonOqDR06FPfccw/eeOMNfPPNNy365eMy9957L5566imcPXsWr7/+OpYvX47MzEy89dZbJp+LecaMGXjyySfh7e2Nfv36YdKkSRg6dCiys7MNHyE0hT8uzri6usLV1RWNjY34/vvvTX49vPDCCxg7diwURcG8efMwdepUPPLII8jKymrReUADAgIQGBiI4cOHIysrCwEBAfjll18QGhraogW0q+0fTp8+jR07drRo/+Dh4dGi97OrIXL/IHrfALTN/mHJkiUmP55X2zecOHGiRfsGQOz+QeS+ARC7fxC5bwDk3j+I3jcA4vYPIvcNwI27f3jyySdNbhO5f5D59SD7v5UA878eFi9ebPJpxgCxrweRrwVCZILnZCVtQnV1tdGRFeTG47vvvkNmZibKysqgKAqcnJzg7u5+1cXmtiY1NRW9e/c2+pKVoqIixMXFYcmSJSqW/Y+mpiasWLECO3bsMOncv3/m8j8+Lly4gCFDhmDv3r04e/YsvL29Bdaazh+/3E4UP/74I/R6Pfr06YPdu3cjMzMTd999N5566imTjjRQFAVffvklvvvuO8OJ+c+dO4fDhw8bnTvaFH7//XdkZ2cbvR4effRRwzkp1SQ/Px9dunQx+pKfs2fPYt26dSafewu49AUH7u7uhus//PADioqKWr0otHnzZqSkpCA+Pr5VnsrKSpSXl8PZ2RlHjx5FQ0NDi76g46effkJaWhpOnTqFpqYmdO/eHSNGjGjRf5z98dyaIqitrUVTUxM6duyIEydOICsrC3fffTeGDRvWIt/evXtRUFCAe++9F0OHDkV1dTV++eUX/O1vf2uRr6CgAN98843w/UNxcTF++OEHDBgwAD169GiRIzU1FXfccQfuvfdew5iI/YOItstc3j/s3LkTX3/9dYs95to/FBUVoaioqMVzFb1/ELVvAMTvH2TeNwCX9g833XST0SfVWrp/MNe+ARCzfxC1bwAsa/+wZ88ew+uhtfsHmV8PIl8LgPlfD6mpqVi7dm2LHTK+HkS/FgiRBS6yEkIIISby3XffobS0FA899BA6depkGP/jt7iq4ZLdxzbttf2Z1iw+7t27F/Pnz0eXLl0QEhKCZcuW4YEHHsDRo0excOHCVh/hKntbYWEh7r///lYv2l72yTxXUQvUIl3m8CUlJbXoCPEb0cc2OXyytJWVlRmOYD158iSysrJgY2MDDw+PFr22/uzLzs6GtbV1i3zXco0YMQK33nqrqm2ifeZsKy4uRnZ2doufV9FthMgCF1kJIW2Oj48PampqrhhX/v83SKenp6tQdQmZ20RjSXMVybp167Bp0ybccccdOHLkCN59913Dx0pN/VZakS7ZfZbUtn79emzcuFHKNtE+kQtyAQEBWLJkCX766Se89NJL+M9//oPbb78dZWVlCAsLw5YtW9hm4XOV+XFLTEy8YuyPR/H6+fmZ1Cazj21y+GRuu7w/2blzJ6KjozF69Gjo9XpkZGQgIiLC5CM8/+wbNWoUFEVpkU+kqy18rXnsLKmNEFngOVlVpKqqCqWlpbjzzjulcsnuY1vbu0Qvxi1duhR///vfsXTp0lb/T6UltXGuLfOJbvvyyy/x5Zdfwt7eHgcOHMCsWbOwcuVKDB482OQvShHpkt1nSW2bN2+Wtk20LzY2FuvWrbvmgpwpi1SNjY3o168f+vXrB1dXV9x+++0ALn0h1uUvdmKb+X0yz1Xmx23jxo0oKSkxOs1AdXU1cnJyAJi+4CWzj21y+GRuu8yaNWuQkJCAnj17AgCmTZuGkJCQFi+gifTJ3CbaZ0lthKiOQtqUjRs3KvPnz1fKy8sVNzc3ZezYscqyZctUd8nuY5u6bSdOnFDc3NyU/fv3Kz///PMVl5bw1VdfKeHh4S36WUtt41xb5hPd5uPjY3Q9OztbGTZsmFJcXKz4+fmp5pLdxzbttSmKoowfP97w5+eff/6atzWHsLAwZfny5UpTU5NhrLy8XHnnnXeUGTNmsK2NfDLPVebHrbGxUVm+fLny0ksvKeXl5YqiKIqvr6/JTTeCj21y+GRuu7w/CQoKMnovURRFGTdunKo+mdtE+yypjRBZ4CJrG+Pv769UVFQo69evVyIjI5WGhgbF399fdZfsPrap3yZqMe6PVFZWCvFYUhvnqr7rlVdeUV577TXl1KlThrGtW7cqbm5uyqOPPqqaS3Yf27TXpihiF+QuXLigvP3220Zje/fuVRYtWqScP3+ebW3kk3muMj9ulzlw4IDy9NNPKxkZGS36j4sbycc2OXwytrm5uSm+vr7KuHHjDO8nx48fV/7xj38or7zyiqo+mdtE+yypjRBZ4CJrG3N5gWvq1KlKRkaGoiiK4u3trbpLdh/b5GgTtRhnDiypjXNV11VXV6d89NFHyv79+43G9+zZowQGBqrmkt3HNu21KYr4BTmRWFKbpcz1RnncLly4oMybN09xc3NrseNG8bFNDp+MbaWlpcqOHTuU7du3K4qiKKmpqcoHH3yg1NXVqe6TuU20z5LaCJEBfvFVG/OPf/wDiqLg6NGjSElJQWRkJGpra7Fs2TJVXbL72CZHGyGEEEIIaR7V1dXo2LGjRfjYJodP5jZCCLEEuMjaxtTV1SErKwsuLi5wcnLCtm3bMHr0aLRr105Vl+w+tsnRRgghhBBCCCGEEEKuxErtAEujuroa7dq1g5OTEz744APs2LEDP/74o+ou2X1sk6PNnFRVVaGwsFDtjKsic5toLGmuhBD5kfk9SeY20VjSXAkhhBBCWgoXWduYefPm4dSpU9izZw9SU1Ph6emJyMhI1V2y+9gmR9sfEfEL16ZNmxAREYGzZ89i3LhxCA8Px/Lly9nWxj5Lmqs5XKJ9MreJ9rFNfZeMPnO9J2m9TbTvRpmrbI+buVyy+9gmh49t6rtk91lSGyGqoMqZYC2YJ554QlEURYmKilI+/vhjRVGUFn/bu0iX7D62ydG2ceNGZf78+Up5ebni5uamjB07Vlm2bFmLff7+/kpFRYWyfv16JTIyUmloaGhxnyW1ca4t87FNDh/btNcm2ifyPcmS2kT7ZJ6rzI+bzG2ifWyTw8c27bWJ9llSGyFqwyNZ2xi9Xo/CwkKkp6fDw8MDJSUlaGxsVN0lu49tcrRt2rQJr776KrZv3w4vLy8kJyfj22+/bbEPALp06YJdu3Zh+PDhsLGxQX19Pdva2AdYxlzZJoePbdprM4dP1HuSpbVZylxlftxkbhPtY5scPrZpr020z5LaCFEbLrK2MS+99BLmz5+PJ598En369MHMmTMxZ84c1V2y+9gmRxsg9heuXr16ITw8HMXFxXj00Ufx6quv4s4772RbG/ssaa5sk8PHNvVdMvtEvydZSpton+xzlfVxk71NtI9tcvjYpr5Ldp8ltRGiJjZqB1gaXl5e8PLyMlxPTk5GTU2N6i7ZfWyTo030L1zvvPMOsrKy8Nprr6F9+/YYNmwYRo8ezbY29lnKXNkmh49t2msT7RP5nmRJbaJ9Ms9V5sdN5jbRPrbJ4WOb9tpE+yypjRDVUft8BZbG9u3blfHjxyteXl6Kp6en4uHhoQwZMkR1l+w+tsnRVltbq6SlpSm//faboiiKkpycrNTV1bXYV15ernz77beKoijKmjVrlJkzZyqFhYVsa2OfpcyVbXL42Ka9NtE+ke9JltQm2ifzXGV+3GRuE+1jmxw+tmmvTbTPktoIURueLqCNWbp0KV577TU4OztjyZIlCAgIwOOPP666S3Yf2+Roq66uRrt27eDk5IQPPvgAO3bswI8//thi37x583Dq1Cns2bMHqamp8PT0RGRkJNva2Gcpc2WbHD62aa9NtE/ke5IltYn2yTxXmR83mdtE+9gmh49t2msT7bOkNkLUhousbUznzp0xZMgQDBw4EBcuXMDMmTORl5enukt2H9vkaBP9C9e5c+fw7LPPIiMjA76+vvDz88PFixfZ1sY+S5kr2+TwsU17baJ9It+TLKlNtE/mucr8uMncJtrHNjl8bNNem2ifJbURojZcZG1j2rdvj6KiIjg7O2Pfvn2or6/HhQsXVHfJ7mObHG2if+HS6/UoLCxEeno6PDw8UFJSgsbGRra1sc9S5so2OXxs016baJ/I9yRLahPtk3muMj9uMreJ9rFNDh/btNcm2mdJbYSoDRdZ25iXX34ZK1aswIgRI5CTk4Nhw4Zh5MiRqrtk97FNjjbRv3C99NJLmD9/Pp588kn06dMHM2fOxJw5c9jWxj5LmSvb5PCxTXtton0i35MsqU20T+a5yvy4ydwm2sc2OXxs016baJ8ltRGiOmqfFNbSqayslNIlu49t6rjS0tIUPz8/ZdWqVYqiKIqPj4/yzTffiEgzcPHixRb9nCW1ca4t87FNDh/btNdmDt+fael7kqJYVpulzFXmx03mNtE+tsnhY5v22kT7LKmNELXRKYqiqL3QawkEBwdDp9Nd8/b169er4pLdxzY52v6KmpoadOjQoUU/+/XXX2PNmjW4ePEiFEWBXq9HTU0N9u3bx7Y29FnSXM3pEu2TuU20j23qu2Tymfs9Satton032lxledzM7ZLdxzY5fGxT3yW7z5LaCGlLbNQOsBRmzpwppUt2H9vUd/0R0b9wLV26FNHR0YiPj0doaCiysrJw9uxZtrWxz1LmyjY5fGzTXpton8j3JEtqE+2Tea4yP24yt4n2sU0OH9u01ybaZ0lthKgNF1nbiIcffhhlZWXQ6XS45ZZbAAC7du1C//79cfvtt6vmkt3HNjnaLiP6F67OnTtjyJAhOHjwIC5cuICZM2ciICCAbW3ss5S5sk0OH9u01ybaJ/I9yZLaRPtknqvMj5vMbaJ9bJPDxzbttYn2WVIbIWrDL75qI/773//C398fhYWFhrHvvvsOzzzzDPLz81Vzye5jmxxtl7n8C9fAgQMNv3Dl5eW12Ne+fXsUFRXB2dkZ+/btQ319PS5cuMC2NvZZylzZJoePbdprE+0T+Z5kSW2ifTLPVebHTeY20T62yeFjm/baRPssqY0QteEiaxvx7rvv4v3338ewYcMMY6GhoVi2bBliY2NVc8nuY5scbZcR/QvXyy+/jBUrVmDEiBHIycnBsGHDMHLkSLa1sc9S5so2OXxs016baJ/I9yRLahPtk3muMj9uMreJ9rFNDh/btNcm2mdJbYSojuhv0iJXx8/P75q3TZgwQTWX7D62tcwnuu0yOTk5Snh4uFJXV6cEBAQorq6uSkxMTIt9f6ayspJtKvj+jFbnyjY5fGzTXps5fH+kNe9JltZmKXOV+XGTuU20j21y+NimvTbRPktqI0RtdIqiKGov9FoC48ePR1JSEqysjA8ebmpqwvjx4/H111+r4pLdxzY52q7FuXPncNNNN5n8c8HBwdDpdNe8ff369a3JAqDNNtE+S5qruV2ifTK3ifaxTX2XLL62eE8CtNcm2ncjzlWGx60tXLL72CaHj23qu2T3WVIbIW0Nv/iqjRgyZAhWrVqF8PBwo/FVq1bh/vvvV80lu49tcrSJ/oVr5syZJjdcC0tq41xb5mObHD62aa9NtE/kexJgOW2ifTLPVebHTeY20T62yeFjm/ba/l979x5Tdf3HcfwFiEpFUuyUXBqhKStBIFFjseXwhq0M+0NxyrwUg5ZTanlBUDcIybHSEj1uqV2UNjUvia5mTvBSiERYSZJLUUMSnVPqsJEczvn90Tq/EH+p53yl74/zfGxscL7f8/q8Pl+3M89b/B6j87ypG2AW/CZrN7HZbMrMzNSlS5cUExMjh8Ohuro6WSwWWa3WO/rXGiOzzJ5HN3N0O3bs2D8eHzFixB3lSVJzc7N8fHz00EMPSZIOHjyoxx57TGFhYXTrpjzJO/ZKN3Pk0c29PDN3uxt5Rr0meVs3b9mrma+bmbsZnUc3c+TRzb08M3czOs+bugGm8e/ercC7OBwO59dff+3csGGD84MPPnBWV1ebIsvseXT797OcTqfz4sWLzubmZtfPFRUVzsbGRreyamtrnYmJic4jR464HrNarc6nn37a+d1339Gtm/K8aa90M0ce3XpeNyPzjH5N8pZuRueZfa9mvW5m72Z0Ht3MkUe3ntfN6Dxv6gaYAUNWALdk9Buu6dOnO2tra7s8fuzYMef06dPp1k153rJXupkjj249r5vReUa+JnlTN6PzzLxXM183M3czOo9u5sijW8/rZnSeN3UDzIIhK4BbMvoNV2pq6v88NnHixDvK8qZu7NW9PLqZI49uPa+b0XlGviY5nd7Tzeg8M+/VzNfNzN2MzqObOfLo1vO6GZ3nTd0As/C99Q0FAHg7m82muLi4Lo8PHz5cv/322x3n2e12ORyOLo93dHSovb2dbt2U5y17pZs58ujW87oZnWfka5I3dTM6z8x7NfN1M3M3o/PoZo48uvW8bkbneVM3wCwYsgK4JaPfcI0cOVIlJSVdHi8pKdHQoUPp1k153rJXupkjj249r5vReUa+JnlTN6PzzLxXM183M3czOo9u5sijW8/rZnSeN3UDzIIhK4BbMvoNV3Z2tqqqqjR27Fi9/vrrys7O1tixY1VVVaWcnBy6dVOet+yVbubIo1vP62Z0npGvSd7Uzeg8M+/VzNfNzN2MzqObOfLo1vO6GZ3nTd0As/BxOp3Of7sEAHOz2WzKzMzUpUuXFBMTI4fDobq6OlksFlmtVvXr1++OM51Op44ePaqTJ0/K19dX0dHRSkhIoFs35knesVe6mSOPbj2v293IM+o1ydu6ectezXzdzNzNm/Zq5m7etFe6mSPPm7oBZsGQFcBtMfINl9G8qRt7dS+PbubIo1vP63Y38ozkTd28Za9mvm5m7mZ0Ht3MkUe3ntfN6Dxv6gaYAUNWAAAAAAAAAPAA92QFAAAAAAAAAA8wZAUAAAAAAAAADzBkBQAAAAAAAAAPMGQFAABwQ3JysqKiolxfQ4YMUUpKij788END10lPT9fq1aslSYsWLdKiRYtu+Zzr169r69atbq+5Y8cOJScn3/RYVVWVoqKi3M6OiopSVVWVW89dvXq10tPT3V4bAAAAuFt6/dsFAAAA/l8tXrxYzz77rCTJbrfr6NGjys3NVVBQkFJTUw1fLzc397bO27t3r9atW6fJkycb3gEAAABAV/wmKwAAgJsCAwNlsVhksVgUEhKiSZMmKTExUfv27btr6wUGBt7yPKfTeVfWBwAAAHBzDFkBAAAM1KtXL/n7+0v687/6FxQUaPTo0Ro1apRsNpt+/fVXZWVlKTY2VsnJySopKVFHR4fr+V9++aXGjx+vuLg45efndzp24+0CPvvsM6WkpCg2NlZpaWn68ccfVVVVpZycHF24cEFRUVFqbGyU0+nUmjVrlJSUpISEBGVlZampqcmV09zcrJdffllxcXGaNGmSzp8/7/b+bTabcnJylJiYqOjoaKWkpGj//v2dzqmurta4ceMUGxurefPmqaWlxXXs1KlTSk9P19ChQzV+/HiVlpbedJ329nbl5eVp5MiRio+PV1ZWlpqbm93uDQAAAHiCISsAAIAB2tvbtW/fPn311VcaPXq06/EdO3aouLhYJSUluvfeezVnzhwFBwdr586dKioqUllZmdatWydJ+vnnn5Wdna2pU6dq+/btstvtqqmpuel6hw8fVm5urmbMmKHdu3crOjpamZmZio+P1+LFi9W/f38dOXJEISEh2rx5s8rKyvT2229ry5YtCg4O1uzZs9Xe3i5JmjdvnhwOh7Zt26aMjAx99NFHbl+HwsJCNTQ0aOPGjdqzZ48SEhKUm5ur69evu84pLS1Vbm6uSktL1dDQoKKiIklSW1ubMjIyNGzYMO3evVsLFy7U2rVrtWvXri7rlJaWqrq6Whs3btSnn36q1tZWLV++3O3eAAAAgCe4JysAAICbli1bpoKCAkl/Dgj79u2rGTNmaOLEia5zRo0apSeffFKSVFlZqaamJm3btk2+vr4aMGCAFi5cqJycHL366qvavn27EhISNHPmTEnSkiVLVF5eftO1t2zZoueee05Tp06VJC1YsED+/v5qaWlRYGCg/Pz8ZLFYJEnr16/XsmXLNHLkSElSfn6+kpKSdPjwYT3yyCOqra1VeXm5QkNDNWjQIJ04cUJffPGFW9dk+PDhmjVrlgYPHixJmj17trZt26YrV64oJCREkjRnzhw988wzkqS8vDzNmjVLeXl5+vzzzxUcHKzs7GxJ0qOPPqoLFy7o448/7nKP28bGRvXp00dhYWEKCgrSW2+9pWvXrrnVGQAAAPAUQ1YAAAA3zZ07V+PGjZMk9enTRxaLRX5+fp3OCQsLc31/+vRpXbt2TcOGDXM95nA41NbWpqtXr+r06dN6/PHHXcf8/f07/fx3DQ0NSktLc/3cu3dvLVy4sMt5ra2tunjxol577TX5+v73PzG1tbXp7Nmz+uOPPxQUFKTQ0FDXsZiYGLeHrKmpqdq/f7+2bt2qM2fOqK6uTpI63fYgJibG9f0TTzwhu92u8+fP68yZM6qvr1d8fLzreEdHR5drKklTpkzR3r17lZSUpBEjRmjMmDF68cUX3eoMAAAAeIohKwAAgJuCg4MVERHxj+f06dPH9b3dbteAAQO0du3aLuf99YFWN35o1V/3d71Rr16399e4v4ab7777riIjIzsd69evnyorK297zduxYMEC1dbW6oUXXtDUqVNlsVg0ZcqUTuf8fWj619r+/v6y2+1KTEzU0qVLb7nOoEGDdODAAVVUVKiiokLvvPOO9uzZo9LSUvn4+LjdHwAAAHAH92QFAADoJpGRkWpqatKDDz6oiIgIRUREqLGxUe+99558fHw0aNAg/fDDD67zHQ6H6uvrb5oVERHR6VhHR4eSk5NVU1PTach4//33Kzg4WJcvX3atGRISouLiYjU0NGjw4MFqaWnRuXPnXM85efKkW/uz2Wzas2ePVq5cqblz52rs2LGuD7X6+yD31KlTru+///57+fv7Kzw8XJGRkWpoaFB4eLir6/Hjx7Vp06Yua+3atUvl5eWaMGGCVqxYofXr16umpkZXrlxxqzsAAADgCYasAAAA3SQpKUlhYWGaP3++fvrpJ33zzTdasmSJAgIC5Ofnp8mTJ+vEiROyWq06c+aMVqxYoaampptmpaena/fu3dq5c6fOnTunoqIiOZ1ODRkyRAEBAWppadHZs2dlt9s1c+ZMrVq1SgcOHNDZs2eVl5enb7/9VgMGDNDAgQOVmJioxYsXq76+Xvv379fmzZtvuZdDhw51+qqqqlLv3r0VEBCgffv2qbGxUYcPH1Z+fr4kdfrgq5UrV6qyslLHjx/Xm2++qbS0NAUEBGjixIlqa2vT0qVLdfr0aR08eFCFhYUKDg7usv7vv/+uwsJCVVZW6pdfflFZWZn69++vBx54wM0/HQAAAMB93C4AAACgm/j5+clqtaqgoECTJ0/WPffco5SUFNe9VCMiImS1WlVUVCSr1aoxY8a4PiDqRsOHD9eyZcu0Zs0aXb58WdHR0Vq3bp369u2rp556ShEREXr++ef1ySef6KWXXlJra6uWLl0qm82m6OhobdiwQf369ZP059BzyZIlSktLU2hoqNLT07Vjx45/3EtGRkannx9++GEdOnRIxcXFWrFihTZt2qTw8HC98sorWrVqlU6ePKmBAwdKkmbNmqXc3FxdvXpVEyZM0BtvvCFJuu+++/T+++9r+fLlSk1NVVBQkKZNm6bMzMwu60+bNk0XL17U/Pnz1dLSoujoaFmt1pvevxUAAAC423ycN96ECwAAAAAAAABw27hdAAAAAAAAAAB4gCErAAAAAAAAAHiAISsAAAAAAAAAeIAhKwAAAAAAAAB4gCErAAAAAAAAAHiAISsAAAAAAAAAeIAhKwAAAAAAAAB4gCErAAAAAAAAAHiAISsAAAAAAAAAeIAhKwAAAAAAAAB4gCErAAAAAAAAAHiAISsAAAAAAAAAeOA/wW0rsBk7nDkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.metrics import confusion_matrix\n", "\n", "\n", "y_true = rounded_labels \n", "y_pred_classes = classes \n", "\n", "\n", "cm = confusion_matrix(y_true, y_pred_classes)\n", "\n", "\n", "plt.figure(figsize=(15, 12))\n", "\n", "\n", "sns.set(font_scale=0.8) \n", "sns.heatmap(cm, annot=True, fmt='g', cmap='Oranges', cbar=True,\n", " xticklabels=[f'Class {i}' for i in range(1, 58)], \n", " yticklabels=[f'Class {i}' for i in range(1, 58)], \n", " linewidths=0.5, linecolor='black')\n", "\n", "\n", "plt.xlabel('Predicted Labels', fontsize=10)\n", "plt.ylabel('True Labels', fontsize=10)\n", "plt.title('Confusion Matrix (57 Classes)', fontsize=12)\n", "\n", "\n", "plt.xticks(rotation=90, fontsize=8) \n", "plt.yticks(rotation=0, fontsize=8) \n", "\n", "# Display the plot\n", "plt.tight_layout()\n", "\n", "\n", "# Show the plot\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Confidence Interval 95%" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "from scipy import stats\n", "import numpy as np\n", "\n", "def compute_ci(model, X_test, y_test, model_name):\n", " _, acc = model.evaluate(X_test, y_test, verbose=0)\n", " n = len(X_test)\n", " z = 1.96 # for 95% confidence\n", " se = np.sqrt((acc * (1 - acc)) / n)\n", " ci_lower = acc - z * se\n", " ci_upper = acc + z * se\n", " print(f\"{model_name} Accuracy: {acc:.4f}\")\n", " print(f\"{model_name} 95% CI: ({ci_lower:.4f}, {ci_upper:.4f})\\n\")\n", " return acc\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model 1 Accuracy: 0.0610\n", "Model 1 95% CI: (0.0524, 0.0696)\n", "\n", "Model 2 Accuracy: 0.7393\n", "Model 2 95% CI: (0.7236, 0.7550)\n", "\n", "Model 3 Accuracy: 0.9127\n", "Model 3 95% CI: (0.9026, 0.9228)\n", "\n", "Model 4 Accuracy: 0.9860\n", "Model 4 95% CI: (0.9818, 0.9902)\n", "\n" ] } ], "source": [ "acc1 = compute_ci(model1, X_test, y_test, \"Model 1\")\n", "acc2 = compute_ci(model2, X_test, y_test, \"Model 2\")\n", "acc3 = compute_ci(model3, X_test, y_test, \"Model 3\")\n", "acc4 = compute_ci(model4, X_test, y_test, \"Model 4\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Statistical T Test" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def paired_ttest(model_a, model_b, X_test, y_test, name_a=\"Model A\", name_b=\"Model B\"):\n", " y_true = np.argmax(y_test, axis=1)\n", " pred_a = np.argmax(model_a.predict(X_test), axis=1)\n", " pred_b = np.argmax(model_b.predict(X_test), axis=1)\n", "\n", " correct_a = (pred_a == y_true).astype(int)\n", " correct_b = (pred_b == y_true).astype(int)\n", "\n", " t_stat, p_val = stats.ttest_rel(correct_a, correct_b)\n", " print(f\"T-test between {name_a} and {name_b}:\")\n", " print(f\" t-statistic = {t_stat:.4f}, p-value = {p_val:.4f}\")\n", " if p_val < 0.05:\n", " print(\" āœ… Statistically significant difference (p < 0.05)\\n\")\n", " else:\n", " print(\" āŒ No significant difference (p ≄ 0.05)\\n\")\n", "\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "94/94 [==============================] - 1s 6ms/step\n", "94/94 [==============================] - 5s 57ms/step\n", "T-test between Model 1 and Model 2:\n", " t-statistic = -77.9918, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 0s 5ms/step\n", "94/94 [==============================] - 4s 47ms/step\n", "T-test between Model 1 and Model 3:\n", " t-statistic = -128.8626, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 1s 5ms/step\n", "94/94 [==============================] - 4s 42ms/step\n", "T-test between Model 1 and Model 4:\n", " t-statistic = -190.4999, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 5s 57ms/step\n", "94/94 [==============================] - 4s 42ms/step\n", "T-test between Model 2 and Model 4:\n", " t-statistic = -30.3711, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 5s 57ms/step\n", "94/94 [==============================] - 4s 43ms/step\n", "T-test between Model 2 and Model 4:\n", " t-statistic = -30.3711, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 5s 58ms/step\n", "94/94 [==============================] - 4s 43ms/step\n", "T-test between Model 2 and Model 4:\n", " t-statistic = -30.3711, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 4s 47ms/step\n", "94/94 [==============================] - 4s 43ms/step\n", "T-test between Model 3 and Model 4:\n", " t-statistic = -13.8054, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 4s 47ms/step\n", "94/94 [==============================] - 4s 43ms/step\n", "T-test between Model 3 and Model 4:\n", " t-statistic = -13.8054, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n", "94/94 [==============================] - 4s 48ms/step\n", "94/94 [==============================] - 4s 43ms/step\n", "T-test between Model 3 and Model 4:\n", " t-statistic = -13.8054, p-value = 0.0000\n", " āœ… Statistically significant difference (p < 0.05)\n", "\n" ] } ], "source": [ "paired_ttest(model1, model2, X_test, y_test, \"Model 1\", \"Model 2\")\n", "paired_ttest(model1, model3, X_test, y_test, \"Model 1\", \"Model 3\")\n", "paired_ttest(model1, model4, X_test, y_test, \"Model 1\", \"Model 4\")\n", "paired_ttest(model2, model4, X_test, y_test, \"Model 2\", \"Model 4\")\n", "paired_ttest(model2, model4, X_test, y_test, \"Model 2\", \"Model 4\")\n", "paired_ttest(model2, model4, X_test, y_test, \"Model 2\", \"Model 4\")\n", "paired_ttest(model3, model4, X_test, y_test, \"Model 3\", \"Model 4\")\n", "paired_ttest(model3, model4, X_test, y_test, \"Model 3\", \"Model 4\")\n", "paired_ttest(model3, model4, X_test, y_test, \"Model 3\", \"Model 4\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cross Validation 5folds" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "šŸ“‚ Fold 1\n", "Epoch 1/20\n", "88/88 [==============================] - 19s 138ms/step - loss: 3.1158 - accuracy: 0.2557 - val_loss: 1.9362 - val_accuracy: 0.5493\n", "Epoch 2/20\n", "88/88 [==============================] - 10s 117ms/step - loss: 1.7937 - accuracy: 0.5414 - val_loss: 0.9637 - val_accuracy: 0.7436\n", "Epoch 3/20\n", "88/88 [==============================] - 10s 118ms/step - loss: 1.0545 - accuracy: 0.7186 - val_loss: 0.6119 - val_accuracy: 0.8607\n", "Epoch 4/20\n", "88/88 [==============================] - 10s 118ms/step - loss: 0.6701 - accuracy: 0.8193 - val_loss: 0.4347 - val_accuracy: 0.9000\n", "Epoch 5/20\n", "88/88 [==============================] - 10s 118ms/step - loss: 0.4875 - accuracy: 0.8691 - val_loss: 0.3252 - val_accuracy: 0.9300\n", "Epoch 6/20\n", "88/88 [==============================] - 10s 118ms/step - loss: 0.3749 - accuracy: 0.8998 - val_loss: 0.2439 - val_accuracy: 0.9436\n", "Epoch 7/20\n", "88/88 [==============================] - 10s 119ms/step - loss: 0.3015 - accuracy: 0.9196 - val_loss: 0.1806 - val_accuracy: 0.9521\n", "Epoch 8/20\n", "88/88 [==============================] - 10s 119ms/step - loss: 0.2070 - accuracy: 0.9448 - val_loss: 0.2125 - val_accuracy: 0.9571\n", "Epoch 9/20\n", "88/88 [==============================] - 10s 119ms/step - loss: 0.2214 - accuracy: 0.9409 - val_loss: 0.2228 - val_accuracy: 0.9507\n", "Epoch 10/20\n", "88/88 [==============================] - 10s 120ms/step - loss: 0.2000 - accuracy: 0.9455 - val_loss: 0.2300 - val_accuracy: 0.9493\n", "Epoch 11/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.1761 - accuracy: 0.9548 - val_loss: 0.1506 - val_accuracy: 0.9614\n", "Epoch 12/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.1164 - accuracy: 0.9654 - val_loss: 0.1927 - val_accuracy: 0.9600\n", "Epoch 13/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.1276 - accuracy: 0.9684 - val_loss: 0.1607 - val_accuracy: 0.9686\n", "Epoch 14/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.1305 - accuracy: 0.9680 - val_loss: 0.1473 - val_accuracy: 0.9629\n", "Epoch 15/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.0990 - accuracy: 0.9746 - val_loss: 0.1552 - val_accuracy: 0.9671\n", "Epoch 16/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.1377 - accuracy: 0.9655 - val_loss: 0.1804 - val_accuracy: 0.9636\n", "Epoch 17/20\n", "88/88 [==============================] - 10s 119ms/step - loss: 0.1547 - accuracy: 0.9616 - val_loss: 0.1612 - val_accuracy: 0.9671\n", "Epoch 18/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.1128 - accuracy: 0.9736 - val_loss: 0.1960 - val_accuracy: 0.9607\n", "Epoch 19/20\n", "88/88 [==============================] - 10s 119ms/step - loss: 0.0817 - accuracy: 0.9805 - val_loss: 0.1528 - val_accuracy: 0.9693\n", "Epoch 20/20\n", "88/88 [==============================] - 11s 123ms/step - loss: 0.0966 - accuracy: 0.9764 - val_loss: 0.2055 - val_accuracy: 0.9514\n", "44/44 [==============================] - 4s 47ms/step\n", "\n", "šŸ“‚ Fold 2\n", "Epoch 1/20\n", "88/88 [==============================] - 19s 141ms/step - loss: 3.1303 - accuracy: 0.2455 - val_loss: 1.8718 - val_accuracy: 0.5557\n", "Epoch 2/20\n", "88/88 [==============================] - 10s 119ms/step - loss: 1.7263 - accuracy: 0.5591 - val_loss: 1.0506 - val_accuracy: 0.7336\n", "Epoch 3/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 1.0792 - accuracy: 0.7141 - val_loss: 0.6536 - val_accuracy: 0.8407\n", "Epoch 4/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.6597 - accuracy: 0.8232 - val_loss: 0.3797 - val_accuracy: 0.9057\n", "Epoch 5/20\n", "88/88 [==============================] - 11s 123ms/step - loss: 0.4652 - accuracy: 0.8750 - val_loss: 0.3613 - val_accuracy: 0.9050\n", "Epoch 6/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.3440 - accuracy: 0.9043 - val_loss: 0.2712 - val_accuracy: 0.9393\n", "Epoch 7/20\n", "88/88 [==============================] - 11s 126ms/step - loss: 0.2699 - accuracy: 0.9257 - val_loss: 0.2449 - val_accuracy: 0.9500\n", "Epoch 8/20\n", "88/88 [==============================] - 11s 127ms/step - loss: 0.2301 - accuracy: 0.9357 - val_loss: 0.2362 - val_accuracy: 0.9543\n", "Epoch 9/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.2072 - accuracy: 0.9434 - val_loss: 0.2575 - val_accuracy: 0.9529\n", "Epoch 10/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.2080 - accuracy: 0.9441 - val_loss: 0.2226 - val_accuracy: 0.9586\n", "Epoch 11/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.1674 - accuracy: 0.9575 - val_loss: 0.2119 - val_accuracy: 0.9536\n", "Epoch 12/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.1632 - accuracy: 0.9575 - val_loss: 0.1701 - val_accuracy: 0.9650\n", "Epoch 13/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.1328 - accuracy: 0.9632 - val_loss: 0.2258 - val_accuracy: 0.9493\n", "Epoch 14/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.1442 - accuracy: 0.9652 - val_loss: 0.2495 - val_accuracy: 0.9529\n", "Epoch 15/20\n", "88/88 [==============================] - 11s 126ms/step - loss: 0.1024 - accuracy: 0.9734 - val_loss: 0.1624 - val_accuracy: 0.9693\n", "Epoch 16/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.0998 - accuracy: 0.9757 - val_loss: 0.2432 - val_accuracy: 0.9586\n", "Epoch 17/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.1295 - accuracy: 0.9682 - val_loss: 0.1850 - val_accuracy: 0.9579\n", "Epoch 18/20\n", "88/88 [==============================] - 11s 123ms/step - loss: 0.1220 - accuracy: 0.9673 - val_loss: 0.1933 - val_accuracy: 0.9621\n", "Epoch 19/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.0911 - accuracy: 0.9761 - val_loss: 0.1711 - val_accuracy: 0.9671\n", "Epoch 20/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.0829 - accuracy: 0.9807 - val_loss: 0.2280 - val_accuracy: 0.9486\n", "44/44 [==============================] - 4s 45ms/step\n", "\n", "šŸ“‚ Fold 3\n", "Epoch 1/20\n", "88/88 [==============================] - 20s 140ms/step - loss: 3.2117 - accuracy: 0.2193 - val_loss: 1.9973 - val_accuracy: 0.5071\n", "Epoch 2/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 1.7640 - accuracy: 0.5471 - val_loss: 0.9327 - val_accuracy: 0.7579\n", "Epoch 3/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 1.0223 - accuracy: 0.7355 - val_loss: 0.5250 - val_accuracy: 0.8657\n", "Epoch 4/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.6517 - accuracy: 0.8195 - val_loss: 0.3743 - val_accuracy: 0.9157\n", "Epoch 5/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.4429 - accuracy: 0.8805 - val_loss: 0.3085 - val_accuracy: 0.9321\n", "Epoch 6/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.3602 - accuracy: 0.9036 - val_loss: 0.2192 - val_accuracy: 0.9479\n", "Epoch 7/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.2544 - accuracy: 0.9271 - val_loss: 0.1540 - val_accuracy: 0.9650\n", "Epoch 8/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.2050 - accuracy: 0.9470 - val_loss: 0.1616 - val_accuracy: 0.9664\n", "Epoch 9/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.2019 - accuracy: 0.9496 - val_loss: 0.1976 - val_accuracy: 0.9557\n", "Epoch 10/20\n", "88/88 [==============================] - 11s 124ms/step - loss: 0.1846 - accuracy: 0.9509 - val_loss: 0.1865 - val_accuracy: 0.9614\n", "Epoch 11/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.1616 - accuracy: 0.9582 - val_loss: 0.1364 - val_accuracy: 0.9650\n", "Epoch 12/20\n", "88/88 [==============================] - 11s 123ms/step - loss: 0.1788 - accuracy: 0.9568 - val_loss: 0.1956 - val_accuracy: 0.9593\n", "Epoch 13/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.1361 - accuracy: 0.9659 - val_loss: 0.1793 - val_accuracy: 0.9650\n", "Epoch 14/20\n", "88/88 [==============================] - 11s 120ms/step - loss: 0.1587 - accuracy: 0.9627 - val_loss: 0.1488 - val_accuracy: 0.9686\n", "Epoch 15/20\n", "88/88 [==============================] - 11s 121ms/step - loss: 0.1122 - accuracy: 0.9698 - val_loss: 0.1306 - val_accuracy: 0.9700\n", "Epoch 16/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.1112 - accuracy: 0.9759 - val_loss: 0.1450 - val_accuracy: 0.9729\n", "Epoch 17/20\n", "88/88 [==============================] - 11s 124ms/step - loss: 0.1076 - accuracy: 0.9736 - val_loss: 0.1593 - val_accuracy: 0.9686\n", "Epoch 18/20\n", "88/88 [==============================] - 11s 123ms/step - loss: 0.0924 - accuracy: 0.9761 - val_loss: 0.1184 - val_accuracy: 0.9743\n", "Epoch 19/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 0.0749 - accuracy: 0.9805 - val_loss: 0.1243 - val_accuracy: 0.9707\n", "Epoch 20/20\n", "88/88 [==============================] - 11s 124ms/step - loss: 0.1215 - accuracy: 0.9720 - val_loss: 0.2001 - val_accuracy: 0.9521\n", "44/44 [==============================] - 4s 45ms/step\n", "\n", "šŸ“‚ Fold 4\n", "Epoch 1/20\n", "88/88 [==============================] - 23s 161ms/step - loss: 3.0839 - accuracy: 0.2516 - val_loss: 1.8859 - val_accuracy: 0.5500\n", "Epoch 2/20\n", "88/88 [==============================] - 11s 122ms/step - loss: 1.7734 - accuracy: 0.5511 - val_loss: 0.9863 - val_accuracy: 0.7271\n", "Epoch 3/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 1.0733 - accuracy: 0.7130 - val_loss: 0.5148 - val_accuracy: 0.8643\n", "Epoch 4/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.6850 - accuracy: 0.8062 - val_loss: 0.4065 - val_accuracy: 0.8986\n", "Epoch 5/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.4917 - accuracy: 0.8664 - val_loss: 0.3407 - val_accuracy: 0.9250\n", "Epoch 6/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.3614 - accuracy: 0.9032 - val_loss: 0.2619 - val_accuracy: 0.9379\n", "Epoch 7/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.2748 - accuracy: 0.9239 - val_loss: 0.2747 - val_accuracy: 0.9443\n", "Epoch 8/20\n", "88/88 [==============================] - 11s 127ms/step - loss: 0.2282 - accuracy: 0.9373 - val_loss: 0.2766 - val_accuracy: 0.9336\n", "Epoch 9/20\n", "88/88 [==============================] - 11s 127ms/step - loss: 0.2348 - accuracy: 0.9384 - val_loss: 0.2702 - val_accuracy: 0.9436\n", "Epoch 10/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1597 - accuracy: 0.9573 - val_loss: 0.1944 - val_accuracy: 0.9550\n", "Epoch 11/20\n", "88/88 [==============================] - 11s 127ms/step - loss: 0.1871 - accuracy: 0.9552 - val_loss: 0.2244 - val_accuracy: 0.9514\n", "Epoch 12/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1616 - accuracy: 0.9593 - val_loss: 0.2521 - val_accuracy: 0.9486\n", "Epoch 13/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1663 - accuracy: 0.9563 - val_loss: 0.2454 - val_accuracy: 0.9571\n", "Epoch 14/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.1091 - accuracy: 0.9741 - val_loss: 0.2026 - val_accuracy: 0.9600\n", "Epoch 15/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.1097 - accuracy: 0.9729 - val_loss: 0.2305 - val_accuracy: 0.9564\n", "Epoch 16/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1241 - accuracy: 0.9684 - val_loss: 0.2007 - val_accuracy: 0.9579\n", "Epoch 17/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.1516 - accuracy: 0.9648 - val_loss: 0.1885 - val_accuracy: 0.9629\n", "Epoch 18/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.1294 - accuracy: 0.9705 - val_loss: 0.2028 - val_accuracy: 0.9600\n", "Epoch 19/20\n", "88/88 [==============================] - 11s 130ms/step - loss: 0.0946 - accuracy: 0.9757 - val_loss: 0.2229 - val_accuracy: 0.9629\n", "Epoch 20/20\n", "88/88 [==============================] - 11s 131ms/step - loss: 0.1047 - accuracy: 0.9754 - val_loss: 0.1729 - val_accuracy: 0.9650\n", "44/44 [==============================] - 5s 50ms/step\n", "\n", "šŸ“‚ Fold 5\n", "Epoch 1/20\n", "88/88 [==============================] - 23s 155ms/step - loss: 3.1624 - accuracy: 0.2277 - val_loss: 2.0536 - val_accuracy: 0.4821\n", "Epoch 2/20\n", "88/88 [==============================] - 11s 126ms/step - loss: 1.7080 - accuracy: 0.5600 - val_loss: 0.9334 - val_accuracy: 0.7636\n", "Epoch 3/20\n", "88/88 [==============================] - 11s 126ms/step - loss: 0.9583 - accuracy: 0.7473 - val_loss: 0.5693 - val_accuracy: 0.8621\n", "Epoch 4/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.6383 - accuracy: 0.8323 - val_loss: 0.4071 - val_accuracy: 0.9021\n", "Epoch 5/20\n", "88/88 [==============================] - 12s 133ms/step - loss: 0.4372 - accuracy: 0.8866 - val_loss: 0.3020 - val_accuracy: 0.9279\n", "Epoch 6/20\n", "88/88 [==============================] - 11s 126ms/step - loss: 0.3252 - accuracy: 0.9157 - val_loss: 0.2606 - val_accuracy: 0.9407\n", "Epoch 7/20\n", "88/88 [==============================] - 11s 126ms/step - loss: 0.2735 - accuracy: 0.9293 - val_loss: 0.3487 - val_accuracy: 0.9350\n", "Epoch 8/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.2546 - accuracy: 0.9337 - val_loss: 0.2162 - val_accuracy: 0.9507\n", "Epoch 9/20\n", "88/88 [==============================] - 11s 125ms/step - loss: 0.1586 - accuracy: 0.9584 - val_loss: 0.2329 - val_accuracy: 0.9557\n", "Epoch 10/20\n", "88/88 [==============================] - 12s 133ms/step - loss: 0.1714 - accuracy: 0.9543 - val_loss: 0.2664 - val_accuracy: 0.9557\n", "Epoch 11/20\n", "88/88 [==============================] - 12s 134ms/step - loss: 0.1491 - accuracy: 0.9618 - val_loss: 0.1880 - val_accuracy: 0.9671\n", "Epoch 12/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1392 - accuracy: 0.9639 - val_loss: 0.1770 - val_accuracy: 0.9650\n", "Epoch 13/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1157 - accuracy: 0.9702 - val_loss: 0.2525 - val_accuracy: 0.9571\n", "Epoch 14/20\n", "88/88 [==============================] - 11s 128ms/step - loss: 0.1268 - accuracy: 0.9680 - val_loss: 0.2086 - val_accuracy: 0.9564\n", "Epoch 15/20\n", "88/88 [==============================] - 11s 131ms/step - loss: 0.0880 - accuracy: 0.9759 - val_loss: 0.2163 - val_accuracy: 0.9643\n", "Epoch 16/20\n", "88/88 [==============================] - 12s 134ms/step - loss: 0.1486 - accuracy: 0.9638 - val_loss: 0.2684 - val_accuracy: 0.9457\n", "Epoch 17/20\n", "88/88 [==============================] - 12s 132ms/step - loss: 0.1369 - accuracy: 0.9682 - val_loss: 0.1989 - val_accuracy: 0.9686\n", "Epoch 18/20\n", "88/88 [==============================] - 11s 131ms/step - loss: 0.1093 - accuracy: 0.9780 - val_loss: 0.2369 - val_accuracy: 0.9543\n", "Epoch 19/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.1285 - accuracy: 0.9688 - val_loss: 0.2197 - val_accuracy: 0.9636\n", "Epoch 20/20\n", "88/88 [==============================] - 11s 129ms/step - loss: 0.0967 - accuracy: 0.9761 - val_loss: 0.2218 - val_accuracy: 0.9586\n", "44/44 [==============================] - 5s 51ms/step\n", "\n", "šŸ“Š 5-Fold Cross-Validation Results (Averages):\n", "Accuracy: 95.51%\n", "Precision: 95.92%\n", "Recall: 95.51%\n", "F1-Score: 95.50%\n" ] } ], "source": [ "import numpy as np\n", "from sklearn.model_selection import KFold\n", "from sklearn.metrics import classification_report\n", "from tensorflow.keras.utils import to_categorical\n", "from tensorflow.keras.applications import EfficientNetB2\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, concatenate, Dense, Dropout, GlobalAveragePooling2D, Multiply\n", "from tensorflow.keras.models import Model\n", "import tensorflow.keras.backend as K\n", "\n", "\n", "\n", "def inception_module(x, filters):\n", " path1 = Conv2D(filters[0], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[1], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[2], (3, 3), activation='relu', padding='same')(path2)\n", " path3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x)\n", " path3 = Conv2D(filters[3], (1, 1), activation='relu', padding='same')(path3)\n", " return concatenate([path1, path2, path3])\n", "\n", "def attention_module(x):\n", " attention = GlobalAveragePooling2D()(x)\n", " attention = Dense(K.int_shape(x)[-1] // 8, activation='relu')(attention)\n", " attention = Dense(K.int_shape(x)[-1], activation='sigmoid')(attention)\n", " return Multiply()([x, attention])\n", "\n", "def build_model():\n", " input_layer = Input(shape=(150, 150, 3))\n", " base_model = EfficientNetB2(weights='imagenet', include_top=False, input_tensor=input_layer)\n", " for layer in base_model.layers[:-20]:\n", " layer.trainable = False\n", " x = base_model.output\n", " x = attention_module(x)\n", " x = inception_module(x, [32, 48, 64, 16])\n", " x = GlobalAveragePooling2D()(x)\n", " x = Dense(64, activation='relu')(x)\n", " x = Dropout(0.5)(x)\n", " output = Dense(57, activation='softmax')(x)\n", " model = Model(inputs=input_layer, outputs=output)\n", " return model\n", "\n", "#Cross-Validation \n", "\n", "kf = KFold(n_splits=5, shuffle=True, random_state=42)\n", "\n", "all_reports = []\n", "fold_idx = 1\n", "\n", "for train_index, val_index in kf.split(X):\n", " print(f\"\\nšŸ“‚ Fold {fold_idx}\")\n", "\n", " X_train_cv, X_val_cv = X[train_index], X[val_index]\n", " y_train_cv, y_val_cv = y[train_index], y[val_index]\n", "\n", " model = build_model()\n", " model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", " model.fit(X_train_cv, y_train_cv, validation_data=(X_val_cv, y_val_cv),\n", " epochs=20, batch_size=64, verbose=1)\n", "\n", " \n", " y_pred = np.argmax(model.predict(X_val_cv), axis=1)\n", " y_true = np.argmax(y_val_cv, axis=1)\n", " report = classification_report(y_true, y_pred, output_dict=True, zero_division=0)\n", " all_reports.append(report)\n", " fold_idx += 1\n", "\n", "\n", "\n", "def get_average_metric(metric_name):\n", " return np.mean([r['weighted avg'][metric_name] for r in all_reports]) * 100\n", "\n", "print(\"\\nšŸ“Š 5-Fold Cross-Validation Results (Averages):\")\n", "print(f\"Accuracy: {np.mean([r['accuracy'] for r in all_reports]) * 100:.2f}%\")\n", "print(f\"Precision: {get_average_metric('precision'):.2f}%\")\n", "print(f\"Recall: {get_average_metric('recall'):.2f}%\")\n", "print(f\"F1-Score: {get_average_metric('f1-score'):.2f}%\")\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "šŸ“Š 5-Fold Cross-Validation Results (Macro Averages):\n", "Accuracy: 95.51%\n", "Macro Precision: 95.66%\n", "Macro Recall: 95.20%\n", "Macro F1-Score: 95.00%\n" ] } ], "source": [ "def get_macro_metric(metric_name):\n", " return np.mean([r['macro avg'][metric_name] for r in all_reports]) * 100\n", "\n", "print(\"\\nšŸ“Š 5-Fold Cross-Validation Results (Macro Averages):\")\n", "print(f\"Accuracy: {np.mean([r['accuracy'] for r in all_reports]) * 100:.2f}%\")\n", "print(f\"Macro Precision: {get_macro_metric('precision'):.2f}%\")\n", "print(f\"Macro Recall: {get_macro_metric('recall'):.2f}%\")\n", "print(f\"Macro F1-Score: {get_macro_metric('f1-score'):.2f}%\")\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "šŸ“Š Per-Class Metrics (Averaged over 5 folds):\n", "Class | Precision | Recall | F1-Score\n", "----------------------------------------\n", "0 | 96.19 | 97.43 | 96.78\n", "1 | 96.22 | 96.41 | 96.29\n", "2 | 98.49 | 93.44 | 95.69\n", "3 | 94.42 | 98.42 | 96.37\n", "4 | 94.17 | 95.61 | 94.57\n", "5 | 93.54 | 98.68 | 96.00\n", "6 | 96.16 | 94.45 | 95.29\n", "7 | 98.18 | 96.36 | 97.05\n", "8 | 95.84 | 90.58 | 93.01\n", "9 | 85.68 | 93.90 | 88.74\n", "10 | 96.16 | 92.78 | 94.37\n", "11 | 96.37 | 96.55 | 96.40\n", "12 | 94.38 | 97.39 | 95.64\n", "13 | 96.14 | 93.80 | 94.93\n", "14 | 98.48 | 97.47 | 97.96\n", "15 | 91.06 | 95.41 | 92.98\n", "16 | 90.00 | 96.00 | 91.11\n", "17 | 91.83 | 99.28 | 95.30\n", "18 | 95.59 | 90.98 | 93.00\n", "19 | 98.39 | 96.13 | 97.18\n", "20 | 95.90 | 92.86 | 94.22\n", "21 | 94.38 | 94.36 | 94.16\n", "22 | 94.57 | 95.18 | 94.68\n", "23 | 97.95 | 95.60 | 96.73\n", "24 | 97.16 | 88.69 | 92.39\n", "25 | 97.88 | 98.75 | 98.29\n", "26 | 95.39 | 98.40 | 96.81\n", "27 | 100.00 | 98.46 | 99.20\n", "28 | 97.02 | 97.59 | 97.25\n", "29 | 100.00 | 100.00 | 100.00\n", "30 | 98.89 | 99.09 | 98.96\n", "31 | 99.09 | 96.61 | 97.79\n", "32 | 100.00 | 100.00 | 100.00\n", "33 | 93.16 | 96.09 | 94.14\n", "34 | 96.64 | 95.59 | 96.02\n", "35 | 96.89 | 97.69 | 97.23\n", "36 | 96.47 | 95.76 | 95.88\n", "37 | 95.01 | 94.91 | 94.79\n", "38 | 90.20 | 92.67 | 90.80\n", "39 | 88.67 | 100.00 | 93.18\n", "40 | 97.35 | 100.00 | 98.63\n", "41 | 93.71 | 98.10 | 95.67\n", "42 | 98.57 | 90.19 | 93.81\n", "43 | 98.18 | 90.00 | 92.38\n", "44 | 99.09 | 96.36 | 97.62\n", "45 | 100.00 | 100.00 | 100.00\n", "46 | 100.00 | 90.85 | 94.97\n", "47 | 100.00 | 100.00 | 100.00\n", "48 | 92.35 | 89.73 | 89.95\n", "49 | 94.79 | 90.63 | 92.48\n", "50 | 98.33 | 96.00 | 96.91\n", "51 | 75.00 | 85.71 | 75.14\n", "52 | 100.00 | 76.44 | 85.34\n", "53 | 97.62 | 95.61 | 96.59\n", "54 | 100.00 | 94.92 | 97.29\n", "55 | 90.00 | 96.00 | 91.11\n", "56 | 95.33 | 96.25 | 95.71\n" ] } ], "source": [ "import numpy as np\n", "\n", "# Get class names (optional; you can use class indices instead)\n", "class_indices = list(range(num_classes)) # or use your actual class labels if available\n", "\n", "# Collect per-class precision, recall, and f1 from all folds\n", "precision_per_class = {i: [] for i in class_indices}\n", "recall_per_class = {i: [] for i in class_indices}\n", "f1_per_class = {i: [] for i in class_indices}\n", "\n", "for report in all_reports:\n", " for class_idx in class_indices:\n", " str_idx = str(class_idx) # keys are strings in classification_report\n", " if str_idx in report:\n", " precision_per_class[class_idx].append(report[str_idx]['precision'] * 100)\n", " recall_per_class[class_idx].append(report[str_idx]['recall'] * 100)\n", " f1_per_class[class_idx].append(report[str_idx]['f1-score'] * 100)\n", "\n", "# Print average metrics per class\n", "print(\"\\nšŸ“Š Per-Class Metrics (Averaged over 5 folds):\")\n", "print(f\"{'Class':<8} | {'Precision':>9} | {'Recall':>7} | {'F1-Score':>9}\")\n", "print(\"-\" * 40)\n", "for i in class_indices:\n", " p = np.mean(precision_per_class[i]) if precision_per_class[i] else 0\n", " r = np.mean(recall_per_class[i]) if recall_per_class[i] else 0\n", " f1 = np.mean(f1_per_class[i]) if f1_per_class[i] else 0\n", " print(f\"{i:<8} | {p:9.2f} | {r:7.2f} | {f1:9.2f}\")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Ablation Study" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# baseline efficientNet+inception+attention" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 24s 143ms/step - loss: 3.3934 - accuracy: 0.1796 - val_loss: 2.3564 - val_accuracy: 0.4470\n", "Epoch 2/20\n", "110/110 [==============================] - 13s 119ms/step - loss: 2.2687 - accuracy: 0.4203 - val_loss: 1.5731 - val_accuracy: 0.6287\n", "Epoch 3/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 1.6147 - accuracy: 0.5647 - val_loss: 0.9998 - val_accuracy: 0.7707\n", "Epoch 4/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 1.1802 - accuracy: 0.6677 - val_loss: 0.6919 - val_accuracy: 0.8243\n", "Epoch 5/20\n", "110/110 [==============================] - 13s 120ms/step - loss: 0.8433 - accuracy: 0.7596 - val_loss: 0.4841 - val_accuracy: 0.8743\n", "Epoch 6/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.6659 - accuracy: 0.8091 - val_loss: 0.3773 - val_accuracy: 0.9027\n", "Epoch 7/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.5125 - accuracy: 0.8536 - val_loss: 0.2911 - val_accuracy: 0.9250\n", "Epoch 8/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.4133 - accuracy: 0.8790 - val_loss: 0.2588 - val_accuracy: 0.9323\n", "Epoch 9/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.3387 - accuracy: 0.8977 - val_loss: 0.2016 - val_accuracy: 0.9490\n", "Epoch 10/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.2673 - accuracy: 0.9221 - val_loss: 0.1796 - val_accuracy: 0.9563\n", "Epoch 11/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.2424 - accuracy: 0.9320 - val_loss: 0.1745 - val_accuracy: 0.9510\n", "Epoch 12/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.2180 - accuracy: 0.9349 - val_loss: 0.1498 - val_accuracy: 0.9613\n", "Epoch 13/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.1863 - accuracy: 0.9454 - val_loss: 0.1533 - val_accuracy: 0.9600\n", "Epoch 14/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.1641 - accuracy: 0.9507 - val_loss: 0.1348 - val_accuracy: 0.9657\n", "Epoch 15/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.1398 - accuracy: 0.9589 - val_loss: 0.1280 - val_accuracy: 0.9673\n", "Epoch 16/20\n", "110/110 [==============================] - 13s 123ms/step - loss: 0.1283 - accuracy: 0.9624 - val_loss: 0.1337 - val_accuracy: 0.9633\n", "Epoch 17/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.1226 - accuracy: 0.9633 - val_loss: 0.1325 - val_accuracy: 0.9687\n", "Epoch 18/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.1206 - accuracy: 0.9643 - val_loss: 0.1311 - val_accuracy: 0.9657\n", "Epoch 19/20\n", "110/110 [==============================] - 13s 122ms/step - loss: 0.1072 - accuracy: 0.9684 - val_loss: 0.1235 - val_accuracy: 0.9667\n", "Epoch 20/20\n", "110/110 [==============================] - 13s 123ms/step - loss: 0.0982 - accuracy: 0.9710 - val_loss: 0.1272 - val_accuracy: 0.9707\n" ] } ], "source": [ "from tensorflow.keras.applications import EfficientNetB2\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, concatenate, Dense, Dropout, GlobalAveragePooling2D, Flatten, Add, Multiply\n", "from tensorflow.keras.models import Model\n", "import tensorflow.keras.backend as K\n", "\n", "# Function for the Inception module\n", "def inception_module(x, filters):\n", " # 1x1 convolution\n", " path1 = Conv2D(filters[0], (1, 1), activation='relu', padding='same')(x)\n", " # 1x1 followed by 3x3\n", " path2 = Conv2D(filters[1], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[2], (3, 3), activation='relu', padding='same')(path2)\n", " # Max pooling followed by 1x1\n", " path3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x)\n", " path3 = Conv2D(filters[3], (1, 1), activation='relu', padding='same')(path3)\n", " return concatenate([path1, path2, path3])\n", "\n", "# Attention Layer\n", "def attention_module(x):\n", " attention = GlobalAveragePooling2D()(x)\n", " attention = Dense(K.int_shape(x)[-1] // 8, activation='relu')(attention)\n", " attention = Dense(K.int_shape(x)[-1], activation='sigmoid')(attention)\n", " return Multiply()([x, attention])\n", "\n", "# Input Layer\n", "input_layer = Input(shape=(150, 150, 3))\n", "\n", "# Pretrained EfficientNet-B2 Backbone\n", "base_model = EfficientNetB2(weights='imagenet', include_top=False, input_tensor=input_layer)\n", "for layer in base_model.layers: # Freeze most EfficientNet layers\n", " layer.trainable = False\n", "\n", "x = base_model.output\n", "\n", "# Apply Attention Layer after the EfficientNet feature map\n", "x = attention_module(x)\n", "\n", "# Custom Inception Block\n", "x = inception_module(x, [32, 48, 64, 16])\n", "\n", "# Global Average Pooling\n", "x = GlobalAveragePooling2D()(x)\n", "\n", "# Fully Connected Layers\n", "x = Dense(64, activation='relu')(x)\n", "x = Dropout(0.5)(x)\n", "output = Dense(57, activation='softmax')(x) # Adjust number of classes as needed\n", "\n", "# Final Model\n", "model = Model(inputs=input_layer, outputs=output)\n", "\n", "# Compile the Model\n", "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "\n", "hist = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64, verbose=1)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "94/94 [==============================] - 6s 45ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.9731 0.9891 0.9810 183\n", " 1 1.0000 0.9693 0.9844 163\n", " 2 0.9551 0.9868 0.9707 151\n", " 3 0.9894 1.0000 0.9947 93\n", " 4 0.9767 0.9767 0.9767 86\n", " 5 0.9608 0.9703 0.9655 101\n", " 6 0.9600 1.0000 0.9796 72\n", " 7 0.9375 1.0000 0.9677 30\n", " 8 1.0000 0.9494 0.9740 79\n", " 9 0.9344 0.8906 0.9120 64\n", " 10 0.9765 0.9765 0.9765 85\n", " 11 1.0000 0.9808 0.9903 52\n", " 12 1.0000 0.9615 0.9804 52\n", " 13 0.9888 1.0000 0.9944 88\n", " 14 1.0000 1.0000 1.0000 93\n", " 15 0.9451 0.9348 0.9399 92\n", " 16 1.0000 1.0000 1.0000 8\n", " 17 1.0000 0.9898 0.9949 98\n", " 18 0.9674 1.0000 0.9834 89\n", " 19 1.0000 0.9787 0.9892 47\n", " 20 1.0000 0.9815 0.9907 54\n", " 21 0.9836 0.8824 0.9302 68\n", " 22 0.9697 1.0000 0.9846 32\n", " 23 1.0000 0.9375 0.9677 64\n", " 24 0.9167 0.9706 0.9429 34\n", " 25 0.9851 0.9851 0.9851 67\n", " 26 0.9804 0.9615 0.9709 52\n", " 27 1.0000 0.8696 0.9302 23\n", " 28 0.9839 0.8971 0.9385 68\n", " 29 1.0000 0.8750 0.9333 8\n", " 30 0.8919 0.9167 0.9041 36\n", " 31 1.0000 0.8511 0.9195 47\n", " 32 1.0000 0.8750 0.9333 8\n", " 33 1.0000 1.0000 1.0000 32\n", " 34 1.0000 0.9286 0.9630 28\n", " 35 0.9672 1.0000 0.9833 59\n", " 36 0.9859 1.0000 0.9929 70\n", " 37 0.9722 0.9722 0.9722 36\n", " 38 0.9375 1.0000 0.9677 30\n", " 39 0.8276 1.0000 0.9057 24\n", " 40 0.9211 1.0000 0.9589 35\n", " 41 0.9459 1.0000 0.9722 35\n", " 42 1.0000 0.9688 0.9841 32\n", " 43 1.0000 1.0000 1.0000 17\n", " 44 0.8367 1.0000 0.9111 41\n", " 45 1.0000 1.0000 1.0000 7\n", " 46 1.0000 0.9429 0.9706 35\n", " 47 1.0000 0.9500 0.9744 20\n", " 48 0.8780 0.9474 0.9114 38\n", " 49 0.9310 1.0000 0.9643 27\n", " 50 0.9091 1.0000 0.9524 20\n", " 51 1.0000 1.0000 1.0000 10\n", " 52 0.8824 0.9375 0.9091 16\n", " 53 0.9767 0.9767 0.9767 43\n", " 54 1.0000 1.0000 1.0000 15\n", " 55 1.0000 1.0000 1.0000 8\n", " 56 0.9722 1.0000 0.9859 35\n", "\n", " accuracy 0.9707 3000\n", " macro avg 0.9688 0.9681 0.9674 3000\n", "weighted avg 0.9720 0.9707 0.9707 3000\n", "\n", "[[181 0 1 ... 0 0 1]\n", " [ 0 158 4 ... 0 0 0]\n", " [ 0 0 149 ... 0 0 0]\n", " ...\n", " [ 0 0 0 ... 15 0 0]\n", " [ 0 0 0 ... 0 8 0]\n", " [ 0 0 0 ... 0 0 35]]\n" ] }, { "data": { "text/plain": [ "
" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict=model.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# remove attention" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 22s 143ms/step - loss: 3.3969 - accuracy: 0.1770 - val_loss: 2.4202 - val_accuracy: 0.4313\n", "Epoch 2/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 2.3247 - accuracy: 0.4031 - val_loss: 1.5989 - val_accuracy: 0.6137\n", "Epoch 3/20\n", "110/110 [==============================] - 13s 123ms/step - loss: 1.7512 - accuracy: 0.5234 - val_loss: 1.1619 - val_accuracy: 0.7190\n", "Epoch 4/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 1.3796 - accuracy: 0.6240 - val_loss: 0.8828 - val_accuracy: 0.7880\n", "Epoch 5/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 1.1096 - accuracy: 0.6884 - val_loss: 0.6890 - val_accuracy: 0.8317\n", "Epoch 6/20\n", "110/110 [==============================] - 13s 119ms/step - loss: 0.9343 - accuracy: 0.7323 - val_loss: 0.5460 - val_accuracy: 0.8557\n", "Epoch 7/20\n", "110/110 [==============================] - 13s 119ms/step - loss: 0.7971 - accuracy: 0.7734 - val_loss: 0.4402 - val_accuracy: 0.8857\n", "Epoch 8/20\n", "110/110 [==============================] - 13s 119ms/step - loss: 0.6705 - accuracy: 0.8031 - val_loss: 0.3916 - val_accuracy: 0.8917\n", "Epoch 9/20\n", "110/110 [==============================] - 13s 120ms/step - loss: 0.5608 - accuracy: 0.8394 - val_loss: 0.3548 - val_accuracy: 0.9013\n", "Epoch 10/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.5001 - accuracy: 0.8519 - val_loss: 0.3030 - val_accuracy: 0.9163\n", "Epoch 11/20\n", "110/110 [==============================] - 13s 120ms/step - loss: 0.4726 - accuracy: 0.8583 - val_loss: 0.2751 - val_accuracy: 0.9213\n", "Epoch 12/20\n", "110/110 [==============================] - 13s 120ms/step - loss: 0.4173 - accuracy: 0.8704 - val_loss: 0.2456 - val_accuracy: 0.9273\n", "Epoch 13/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.3732 - accuracy: 0.8873 - val_loss: 0.2262 - val_accuracy: 0.9313\n", "Epoch 14/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.3324 - accuracy: 0.9003 - val_loss: 0.2116 - val_accuracy: 0.9390\n", "Epoch 15/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.3085 - accuracy: 0.9043 - val_loss: 0.2112 - val_accuracy: 0.9377\n", "Epoch 16/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.2777 - accuracy: 0.9193 - val_loss: 0.2024 - val_accuracy: 0.9410\n", "Epoch 17/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.2788 - accuracy: 0.9173 - val_loss: 0.1966 - val_accuracy: 0.9440\n", "Epoch 18/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.2570 - accuracy: 0.9197 - val_loss: 0.1974 - val_accuracy: 0.9427\n", "Epoch 19/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.2395 - accuracy: 0.9266 - val_loss: 0.1825 - val_accuracy: 0.9497\n", "Epoch 20/20\n", "110/110 [==============================] - 13s 121ms/step - loss: 0.2304 - accuracy: 0.9319 - val_loss: 0.1764 - val_accuracy: 0.9510\n" ] } ], "source": [ "from tensorflow.keras.applications import EfficientNetB2\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, concatenate, Dense, Dropout, GlobalAveragePooling2D, Flatten, Add, Multiply\n", "from tensorflow.keras.models import Model\n", "import tensorflow.keras.backend as K\n", "\n", "# Function for the Inception module\n", "def inception_module(x, filters):\n", " # 1x1 convolution\n", " path1 = Conv2D(filters[0], (1, 1), activation='relu', padding='same')(x)\n", " # 1x1 followed by 3x3\n", " path2 = Conv2D(filters[1], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[2], (3, 3), activation='relu', padding='same')(path2)\n", " # Max pooling followed by 1x1\n", " path3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x)\n", " path3 = Conv2D(filters[3], (1, 1), activation='relu', padding='same')(path3)\n", " return concatenate([path1, path2, path3])\n", "\n", "# Attention Layer\n", "def attention_module(x):\n", " attention = GlobalAveragePooling2D()(x)\n", " attention = Dense(K.int_shape(x)[-1] // 8, activation='relu')(attention)\n", " attention = Dense(K.int_shape(x)[-1], activation='sigmoid')(attention)\n", " return Multiply()([x, attention])\n", "\n", "# Input Layer\n", "input_layer = Input(shape=(150, 150, 3))\n", "\n", "# Pretrained EfficientNet-B2 Backbone\n", "base_model = EfficientNetB2(weights='imagenet', include_top=False, input_tensor=input_layer)\n", "for layer in base_model.layers: # Freeze most EfficientNet layers\n", " layer.trainable = False\n", "\n", "x = base_model.output\n", "\n", "# Apply Attention Layer after the EfficientNet feature map\n", "#x = attention_module(x)\n", "\n", "# Custom Inception Block\n", "x = inception_module(x, [32, 48, 64, 16])\n", "\n", "# Global Average Pooling\n", "x = GlobalAveragePooling2D()(x)\n", "\n", "# Fully Connected Layers\n", "x = Dense(64, activation='relu')(x)\n", "x = Dropout(0.5)(x)\n", "output = Dense(57, activation='softmax')(x) # Adjust number of classes as needed\n", "\n", "# Final Model\n", "model = Model(inputs=input_layer, outputs=output)\n", "\n", "# Compile the Model\n", "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "\n", "hist = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64, verbose=1)" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "predict=model.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# remove inception+attention both" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 22s 141ms/step - loss: 3.2865 - accuracy: 0.2037 - val_loss: 2.3204 - val_accuracy: 0.4720\n", "Epoch 2/20\n", "110/110 [==============================] - 13s 115ms/step - loss: 2.2666 - accuracy: 0.4190 - val_loss: 1.6418 - val_accuracy: 0.6277\n", "Epoch 3/20\n", "110/110 [==============================] - 13s 116ms/step - loss: 1.8520 - accuracy: 0.5117 - val_loss: 1.2832 - val_accuracy: 0.7140\n", "Epoch 4/20\n", "110/110 [==============================] - 13s 116ms/step - loss: 1.5715 - accuracy: 0.5747 - val_loss: 1.0419 - val_accuracy: 0.7617\n", "Epoch 5/20\n", "110/110 [==============================] - 13s 116ms/step - loss: 1.3616 - accuracy: 0.6304 - val_loss: 0.8880 - val_accuracy: 0.7980\n", "Epoch 6/20\n", "110/110 [==============================] - 13s 117ms/step - loss: 1.2220 - accuracy: 0.6716 - val_loss: 0.7670 - val_accuracy: 0.8280\n", "Epoch 7/20\n", "110/110 [==============================] - 13s 116ms/step - loss: 1.1253 - accuracy: 0.6889 - val_loss: 0.6742 - val_accuracy: 0.8510\n", "Epoch 8/20\n", "110/110 [==============================] - 13s 117ms/step - loss: 1.0063 - accuracy: 0.7221 - val_loss: 0.5928 - val_accuracy: 0.8680\n", "Epoch 9/20\n", "110/110 [==============================] - 13s 117ms/step - loss: 0.9459 - accuracy: 0.7371 - val_loss: 0.5274 - val_accuracy: 0.8843\n", "Epoch 10/20\n", "110/110 [==============================] - 13s 117ms/step - loss: 0.8758 - accuracy: 0.7494 - val_loss: 0.4843 - val_accuracy: 0.8920\n", "Epoch 11/20\n", "110/110 [==============================] - 13s 117ms/step - loss: 0.8164 - accuracy: 0.7663 - val_loss: 0.4367 - val_accuracy: 0.9017\n", "Epoch 12/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 0.7904 - accuracy: 0.7714 - val_loss: 0.4013 - val_accuracy: 0.9080\n", "Epoch 13/20\n", "110/110 [==============================] - 13s 117ms/step - loss: 0.7446 - accuracy: 0.7889 - val_loss: 0.3699 - val_accuracy: 0.9170\n", "Epoch 14/20\n", "110/110 [==============================] - 13s 120ms/step - loss: 0.6961 - accuracy: 0.8001 - val_loss: 0.3381 - val_accuracy: 0.9250\n", "Epoch 15/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 0.6625 - accuracy: 0.8123 - val_loss: 0.3201 - val_accuracy: 0.9280\n", "Epoch 16/20\n", "110/110 [==============================] - 13s 119ms/step - loss: 0.6299 - accuracy: 0.8216 - val_loss: 0.2925 - val_accuracy: 0.9327\n", "Epoch 17/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 0.6069 - accuracy: 0.8234 - val_loss: 0.2797 - val_accuracy: 0.9340\n", "Epoch 18/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 0.5797 - accuracy: 0.8296 - val_loss: 0.2646 - val_accuracy: 0.9353\n", "Epoch 19/20\n", "110/110 [==============================] - 13s 118ms/step - loss: 0.5643 - accuracy: 0.8357 - val_loss: 0.2516 - val_accuracy: 0.9390\n", "Epoch 20/20\n", "110/110 [==============================] - 13s 119ms/step - loss: 0.5392 - accuracy: 0.8404 - val_loss: 0.2411 - val_accuracy: 0.9443\n" ] } ], "source": [ "from tensorflow.keras.applications import EfficientNetB2\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, concatenate, Dense, Dropout, GlobalAveragePooling2D, Flatten, Add, Multiply\n", "from tensorflow.keras.models import Model\n", "import tensorflow.keras.backend as K\n", "\n", "# Function for the Inception module\n", "def inception_module(x, filters):\n", " # 1x1 convolution\n", " path1 = Conv2D(filters[0], (1, 1), activation='relu', padding='same')(x)\n", " # 1x1 followed by 3x3\n", " path2 = Conv2D(filters[1], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[2], (3, 3), activation='relu', padding='same')(path2)\n", " # Max pooling followed by 1x1\n", " path3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x)\n", " path3 = Conv2D(filters[3], (1, 1), activation='relu', padding='same')(path3)\n", " return concatenate([path1, path2, path3])\n", "\n", "# Attention Layer\n", "def attention_module(x):\n", " attention = GlobalAveragePooling2D()(x)\n", " attention = Dense(K.int_shape(x)[-1] // 8, activation='relu')(attention)\n", " attention = Dense(K.int_shape(x)[-1], activation='sigmoid')(attention)\n", " return Multiply()([x, attention])\n", "\n", "# Input Layer\n", "input_layer = Input(shape=(150, 150, 3))\n", "\n", "# Pretrained EfficientNet-B2 Backbone\n", "base_model = EfficientNetB2(weights='imagenet', include_top=False, input_tensor=input_layer)\n", "for layer in base_model.layers: # Freeze most EfficientNet layers\n", " layer.trainable = False\n", "\n", "x = base_model.output\n", "\n", "# Apply Attention Layer after the EfficientNet feature map\n", "#x = attention_module(x)\n", "\n", "# Custom Inception Block\n", "#x = inception_module(x, [32, 48, 64, 16])\n", "\n", "# Global Average Pooling\n", "x = GlobalAveragePooling2D()(x)\n", "\n", "# Fully Connected Layers\n", "x = Dense(64, activation='relu')(x)\n", "x = Dropout(0.5)(x)\n", "output = Dense(57, activation='softmax')(x) # Adjust number of classes as needed\n", "\n", "# Final Model\n", "model = Model(inputs=input_layer, outputs=output)\n", "\n", "# Compile the Model\n", "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "\n", "hist = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64, verbose=1)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "94/94 [==============================] - 4s 43ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.9188 0.9891 0.9526 183\n", " 1 0.9643 0.9939 0.9789 163\n", " 2 0.9737 0.9801 0.9769 151\n", " 3 0.9485 0.9892 0.9684 93\n", " 4 0.9222 0.9651 0.9432 86\n", " 5 0.8772 0.9901 0.9302 101\n", " 6 0.9710 0.9306 0.9504 72\n", " 7 0.9643 0.9000 0.9310 30\n", " 8 0.9600 0.9114 0.9351 79\n", " 9 0.8806 0.9219 0.9008 64\n", " 10 0.9500 0.8941 0.9212 85\n", " 11 0.9800 0.9423 0.9608 52\n", " 12 0.9615 0.9615 0.9615 52\n", " 13 0.9551 0.9659 0.9605 88\n", " 14 0.9892 0.9892 0.9892 93\n", " 15 0.8269 0.9348 0.8776 92\n", " 16 1.0000 0.8750 0.9333 8\n", " 17 0.9694 0.9694 0.9694 98\n", " 18 0.8333 0.9551 0.8901 89\n", " 19 1.0000 0.9574 0.9783 47\n", " 20 0.9615 0.9259 0.9434 54\n", " 21 0.9667 0.8529 0.9062 68\n", " 22 1.0000 0.9688 0.9841 32\n", " 23 0.9524 0.9375 0.9449 64\n", " 24 0.8710 0.7941 0.8308 34\n", " 25 0.9851 0.9851 0.9851 67\n", " 26 0.9231 0.9231 0.9231 52\n", " 27 0.9500 0.8261 0.8837 23\n", " 28 0.9254 0.9118 0.9185 68\n", " 29 1.0000 0.8750 0.9333 8\n", " 30 0.9459 0.9722 0.9589 36\n", " 31 0.9744 0.8085 0.8837 47\n", " 32 1.0000 0.7500 0.8571 8\n", " 33 0.9688 0.9688 0.9688 32\n", " 34 1.0000 0.8929 0.9434 28\n", " 35 0.9825 0.9492 0.9655 59\n", " 36 0.9589 1.0000 0.9790 70\n", " 37 1.0000 1.0000 1.0000 36\n", " 38 0.9000 0.9000 0.9000 30\n", " 39 0.9583 0.9583 0.9583 24\n", " 40 0.8293 0.9714 0.8947 35\n", " 41 0.9444 0.9714 0.9577 35\n", " 42 0.9655 0.8750 0.9180 32\n", " 43 1.0000 0.7059 0.8276 17\n", " 44 1.0000 0.9268 0.9620 41\n", " 45 1.0000 1.0000 1.0000 7\n", " 46 0.9062 0.8286 0.8657 35\n", " 47 1.0000 0.9500 0.9744 20\n", " 48 0.8889 0.8421 0.8649 38\n", " 49 1.0000 0.9630 0.9811 27\n", " 50 1.0000 0.9000 0.9474 20\n", " 51 1.0000 0.9000 0.9474 10\n", " 52 1.0000 0.8750 0.9333 16\n", " 53 1.0000 0.9302 0.9639 43\n", " 54 1.0000 1.0000 1.0000 15\n", " 55 1.0000 1.0000 1.0000 8\n", " 56 1.0000 0.9714 0.9855 35\n", "\n", " accuracy 0.9443 3000\n", " macro avg 0.9580 0.9268 0.9404 3000\n", "weighted avg 0.9466 0.9443 0.9442 3000\n", "\n", "[[181 0 1 ... 0 0 0]\n", " [ 0 162 0 ... 0 0 0]\n", " [ 1 0 148 ... 0 0 0]\n", " ...\n", " [ 0 0 0 ... 15 0 0]\n", " [ 0 0 0 ... 0 8 0]\n", " [ 0 0 1 ... 0 0 34]]\n" ] }, { "data": { "text/plain": [ "
" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict=model.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# fine tuned efficientNet+inception+attention" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "110/110 [==============================] - 26s 163ms/step - loss: 2.8947 - accuracy: 0.2886 - val_loss: 1.5217 - val_accuracy: 0.6317\n", "Epoch 2/20\n", "110/110 [==============================] - 15s 139ms/step - loss: 1.4678 - accuracy: 0.6133 - val_loss: 0.6569 - val_accuracy: 0.8303\n", "Epoch 3/20\n", "110/110 [==============================] - 15s 133ms/step - loss: 0.7952 - accuracy: 0.7913 - val_loss: 0.3322 - val_accuracy: 0.9233\n", "Epoch 4/20\n", "110/110 [==============================] - 15s 132ms/step - loss: 0.4984 - accuracy: 0.8687 - val_loss: 0.2965 - val_accuracy: 0.9327\n", "Epoch 5/20\n", "110/110 [==============================] - 15s 133ms/step - loss: 0.3454 - accuracy: 0.9047 - val_loss: 0.2251 - val_accuracy: 0.9497\n", "Epoch 6/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.2724 - accuracy: 0.9273 - val_loss: 0.1832 - val_accuracy: 0.9610\n", "Epoch 7/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.2247 - accuracy: 0.9394 - val_loss: 0.1412 - val_accuracy: 0.9637\n", "Epoch 8/20\n", "110/110 [==============================] - 15s 138ms/step - loss: 0.1811 - accuracy: 0.9563 - val_loss: 0.1289 - val_accuracy: 0.9740\n", "Epoch 9/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.1509 - accuracy: 0.9591 - val_loss: 0.1234 - val_accuracy: 0.9700\n", "Epoch 10/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.1417 - accuracy: 0.9630 - val_loss: 0.1298 - val_accuracy: 0.9723\n", "Epoch 11/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.1360 - accuracy: 0.9651 - val_loss: 0.1128 - val_accuracy: 0.9780\n", "Epoch 12/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.1026 - accuracy: 0.9740 - val_loss: 0.1112 - val_accuracy: 0.9780\n", "Epoch 13/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.0895 - accuracy: 0.9769 - val_loss: 0.0917 - val_accuracy: 0.9837\n", "Epoch 14/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.1138 - accuracy: 0.9711 - val_loss: 0.1133 - val_accuracy: 0.9750\n", "Epoch 15/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.1226 - accuracy: 0.9720 - val_loss: 0.1324 - val_accuracy: 0.9750\n", "Epoch 16/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.0934 - accuracy: 0.9770 - val_loss: 0.1542 - val_accuracy: 0.9760\n", "Epoch 17/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.0820 - accuracy: 0.9786 - val_loss: 0.1307 - val_accuracy: 0.9790\n", "Epoch 18/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.0808 - accuracy: 0.9810 - val_loss: 0.1671 - val_accuracy: 0.9743\n", "Epoch 19/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.0899 - accuracy: 0.9790 - val_loss: 0.1200 - val_accuracy: 0.9800\n", "Epoch 20/20\n", "110/110 [==============================] - 15s 134ms/step - loss: 0.0889 - accuracy: 0.9807 - val_loss: 0.0979 - val_accuracy: 0.9807\n" ] } ], "source": [ "from tensorflow.keras.applications import EfficientNetB2\n", "from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, concatenate, Dense, Dropout, GlobalAveragePooling2D, Flatten, Add, Multiply\n", "from tensorflow.keras.models import Model\n", "import tensorflow.keras.backend as K\n", "\n", "# Function for the Inception module\n", "def inception_module(x, filters):\n", " # 1x1 convolution\n", " path1 = Conv2D(filters[0], (1, 1), activation='relu', padding='same')(x)\n", " # 1x1 followed by 3x3\n", " path2 = Conv2D(filters[1], (1, 1), activation='relu', padding='same')(x)\n", " path2 = Conv2D(filters[2], (3, 3), activation='relu', padding='same')(path2)\n", " # Max pooling followed by 1x1\n", " path3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(x)\n", " path3 = Conv2D(filters[3], (1, 1), activation='relu', padding='same')(path3)\n", " return concatenate([path1, path2, path3])\n", "\n", "# Attention Layer\n", "def attention_module(x):\n", " attention = GlobalAveragePooling2D()(x)\n", " attention = Dense(K.int_shape(x)[-1] // 8, activation='relu')(attention)\n", " attention = Dense(K.int_shape(x)[-1], activation='sigmoid')(attention)\n", " return Multiply()([x, attention])\n", "\n", "# Input Layer\n", "input_layer = Input(shape=(150, 150, 3))\n", "\n", "# Pretrained EfficientNet-B2 Backbone\n", "base_model = EfficientNetB2(weights='imagenet', include_top=False, input_tensor=input_layer)\n", "for layer in base_model.layers[:-20]: # Freeze most EfficientNet layers\n", " layer.trainable = False\n", "\n", "x = base_model.output\n", "\n", "# Apply Attention Layer after the EfficientNet feature map\n", "x = attention_module(x)\n", "\n", "# Custom Inception Block\n", "x = inception_module(x, [32, 48, 64, 16])\n", "\n", "# Global Average Pooling\n", "x = GlobalAveragePooling2D()(x)\n", "\n", "# Fully Connected Layers\n", "x = Dense(64, activation='relu')(x)\n", "x = Dropout(0.5)(x)\n", "output = Dense(57, activation='softmax')(x) # Adjust number of classes as needed\n", "\n", "# Final Model\n", "model = Model(inputs=input_layer, outputs=output)\n", "\n", "# Compile the Model\n", "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", "\n", "hist = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=64, verbose=1)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "94/94 [==============================] - 6s 47ms/step\n", " precision recall f1-score support\n", "\n", " 0 0.9945 0.9836 0.9890 183\n", " 1 0.9939 0.9939 0.9939 163\n", " 2 1.0000 1.0000 1.0000 151\n", " 3 0.9789 1.0000 0.9894 93\n", " 4 0.9884 0.9884 0.9884 86\n", " 5 0.9619 1.0000 0.9806 101\n", " 6 1.0000 0.9583 0.9787 72\n", " 7 0.9677 1.0000 0.9836 30\n", " 8 0.9634 1.0000 0.9814 79\n", " 9 0.9500 0.8906 0.9194 64\n", " 10 0.9643 0.9529 0.9586 85\n", " 11 0.9630 1.0000 0.9811 52\n", " 12 1.0000 1.0000 1.0000 52\n", " 13 1.0000 1.0000 1.0000 88\n", " 14 1.0000 1.0000 1.0000 93\n", " 15 0.9149 0.9348 0.9247 92\n", " 16 1.0000 1.0000 1.0000 8\n", " 17 0.9898 0.9898 0.9898 98\n", " 18 0.9674 1.0000 0.9834 89\n", " 19 1.0000 1.0000 1.0000 47\n", " 20 0.9811 0.9630 0.9720 54\n", " 21 1.0000 0.9412 0.9697 68\n", " 22 1.0000 1.0000 1.0000 32\n", " 23 0.9394 0.9688 0.9538 64\n", " 24 1.0000 1.0000 1.0000 34\n", " 25 0.9710 1.0000 0.9853 67\n", " 26 1.0000 1.0000 1.0000 52\n", " 27 0.9565 0.9565 0.9565 23\n", " 28 0.9429 0.9706 0.9565 68\n", " 29 1.0000 1.0000 1.0000 8\n", " 30 1.0000 1.0000 1.0000 36\n", " 31 0.9767 0.8936 0.9333 47\n", " 32 0.8889 1.0000 0.9412 8\n", " 33 1.0000 0.9062 0.9508 32\n", " 34 1.0000 1.0000 1.0000 28\n", " 35 1.0000 0.9831 0.9915 59\n", " 36 0.9859 1.0000 0.9929 70\n", " 37 1.0000 1.0000 1.0000 36\n", " 38 1.0000 1.0000 1.0000 30\n", " 39 1.0000 0.9583 0.9787 24\n", " 40 1.0000 0.9143 0.9552 35\n", " 41 1.0000 1.0000 1.0000 35\n", " 42 0.9697 1.0000 0.9846 32\n", " 43 1.0000 1.0000 1.0000 17\n", " 44 1.0000 0.8780 0.9351 41\n", " 45 1.0000 1.0000 1.0000 7\n", " 46 0.9714 0.9714 0.9714 35\n", " 47 1.0000 1.0000 1.0000 20\n", " 48 0.8605 0.9737 0.9136 38\n", " 49 1.0000 1.0000 1.0000 27\n", " 50 1.0000 1.0000 1.0000 20\n", " 51 1.0000 1.0000 1.0000 10\n", " 52 1.0000 1.0000 1.0000 16\n", " 53 0.9767 0.9767 0.9767 43\n", " 54 1.0000 1.0000 1.0000 15\n", " 55 1.0000 1.0000 1.0000 8\n", " 56 0.9722 1.0000 0.9859 35\n", "\n", " accuracy 0.9807 3000\n", " macro avg 0.9823 0.9815 0.9815 3000\n", "weighted avg 0.9812 0.9807 0.9806 3000\n", "\n", "[[180 0 0 ... 0 0 0]\n", " [ 0 162 0 ... 0 0 0]\n", " [ 0 0 151 ... 0 0 0]\n", " ...\n", " [ 0 0 0 ... 15 0 0]\n", " [ 0 0 0 ... 0 8 0]\n", " [ 0 0 0 ... 0 0 35]]\n" ] }, { "data": { "text/plain": [ "
" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "predict=model.predict(X_test)\n", "classes=np.argmax(predict,axis=1)\n", "rounded_labels=np.argmax(y_test, axis=1)\n", "print(classification_report(rounded_labels,classes,digits=4))\n", "cnf_matrix=confusion_matrix(rounded_labels,classes)\n", "print(cnf_matrix)\n", "plt.figure(figsize=(12, 8))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 4 }