{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "id": "LrZxDXsA2Qeu"
      },
      "outputs": [],
      "source": [
        "!pip install tensorflow scikit-learn matplotlib -q"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import tensorflow as tf\n",
        "from tensorflow import keras\n",
        "from sklearn.datasets import load_iris\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.preprocessing import StandardScaler\n",
        "from sklearn.metrics import accuracy_score, confusion_matrix, classification_report\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt"
      ],
      "metadata": {
        "id": "aNpqNth62ZCM"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "data = load_iris()\n",
        "X = data.data\n",
        "y = data.target\n",
        "\n",
        "print(\"Feature shape:\", X.shape)\n",
        "print(\"Classes:\", np.unique(y))\n",
        "print(\"Class names:\", data.target_names)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6mmSOszi2aTY",
        "outputId": "6edd6a43-0fcb-4d1f-acb0-8b166a7fa820"
      },
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Feature shape: (150, 4)\n",
            "Classes: [0 1 2]\n",
            "Class names: ['setosa' 'versicolor' 'virginica']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "scaler = StandardScaler()\n",
        "X = scaler.fit_transform(X)\n",
        "\n",
        "X_train, X_test, y_train, y_test = train_test_split(\n",
        "    X, y, test_size=0.2, random_state=42\n",
        ")"
      ],
      "metadata": {
        "id": "hbY0CuVc2kWf"
      },
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "model = keras.Sequential([\n",
        "    keras.layers.Dense(3, activation='softmax', input_shape=(X.shape[1],))\n",
        "])\n",
        "\n",
        "model.compile(\n",
        "    optimizer='adam',\n",
        "    loss='sparse_categorical_crossentropy',\n",
        "    metrics=['accuracy']\n",
        ")\n",
        "\n",
        "model.summary()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 216
        },
        "id": "5E-Chkho2mb2",
        "outputId": "4dbf4843-d019-4faa-be5a-dcf4c7779e1b"
      },
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.12/dist-packages/keras/src/layers/core/dense.py:106: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
            "  super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1mModel: \"sequential\"\u001b[0m\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense (\u001b[38;5;33mDense\u001b[0m)                   │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m3\u001b[0m)              │            \u001b[38;5;34m15\u001b[0m │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                   │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">3</span>)              │            <span style=\"color: #00af00; text-decoration-color: #00af00\">15</span> │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m15\u001b[0m (60.00 B)\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">15</span> (60.00 B)\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m15\u001b[0m (60.00 B)\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">15</span> (60.00 B)\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "history = model.fit(\n",
        "    X_train, y_train,\n",
        "    epochs=50,\n",
        "    batch_size=8,\n",
        "    validation_split=0.2\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "KqCSSLeK2nZl",
        "outputId": "92077eb4-99c1-4604-b534-e196420323ea"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 92ms/step - accuracy: 0.5417 - loss: 0.9964 - val_accuracy: 0.5417 - val_loss: 1.0056\n",
            "Epoch 2/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 30ms/step - accuracy: 0.5521 - loss: 0.9662 - val_accuracy: 0.5417 - val_loss: 0.9827\n",
            "Epoch 3/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - accuracy: 0.5729 - loss: 0.9401 - val_accuracy: 0.5417 - val_loss: 0.9608\n",
            "Epoch 4/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 21ms/step - accuracy: 0.5938 - loss: 0.9148 - val_accuracy: 0.6250 - val_loss: 0.9407\n",
            "Epoch 5/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 22ms/step - accuracy: 0.6354 - loss: 0.8901 - val_accuracy: 0.6250 - val_loss: 0.9225\n",
            "Epoch 6/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - accuracy: 0.6562 - loss: 0.8679 - val_accuracy: 0.6250 - val_loss: 0.9044\n",
            "Epoch 7/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 21ms/step - accuracy: 0.6667 - loss: 0.8468 - val_accuracy: 0.6250 - val_loss: 0.8875\n",
            "Epoch 8/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 20ms/step - accuracy: 0.6979 - loss: 0.8266 - val_accuracy: 0.6250 - val_loss: 0.8718\n",
            "Epoch 9/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - accuracy: 0.6979 - loss: 0.8088 - val_accuracy: 0.6250 - val_loss: 0.8561\n",
            "Epoch 10/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - accuracy: 0.7083 - loss: 0.7907 - val_accuracy: 0.6667 - val_loss: 0.8426\n",
            "Epoch 11/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 27ms/step - accuracy: 0.7188 - loss: 0.7745 - val_accuracy: 0.6667 - val_loss: 0.8288\n",
            "Epoch 12/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 25ms/step - accuracy: 0.7188 - loss: 0.7594 - val_accuracy: 0.6667 - val_loss: 0.8160\n",
            "Epoch 13/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 20ms/step - accuracy: 0.7188 - loss: 0.7443 - val_accuracy: 0.7083 - val_loss: 0.8042\n",
            "Epoch 14/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - accuracy: 0.7188 - loss: 0.7312 - val_accuracy: 0.7500 - val_loss: 0.7925\n",
            "Epoch 15/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 19ms/step - accuracy: 0.7188 - loss: 0.7180 - val_accuracy: 0.7500 - val_loss: 0.7816\n",
            "Epoch 16/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - accuracy: 0.7188 - loss: 0.7061 - val_accuracy: 0.7500 - val_loss: 0.7712\n",
            "Epoch 17/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 20ms/step - accuracy: 0.7292 - loss: 0.6947 - val_accuracy: 0.7500 - val_loss: 0.7611\n",
            "Epoch 18/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 20ms/step - accuracy: 0.7292 - loss: 0.6838 - val_accuracy: 0.7500 - val_loss: 0.7518\n",
            "Epoch 19/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 20ms/step - accuracy: 0.7292 - loss: 0.6737 - val_accuracy: 0.7500 - val_loss: 0.7426\n",
            "Epoch 20/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - accuracy: 0.7396 - loss: 0.6642 - val_accuracy: 0.7917 - val_loss: 0.7330\n",
            "Epoch 21/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 27ms/step - accuracy: 0.7396 - loss: 0.6546 - val_accuracy: 0.7917 - val_loss: 0.7251\n",
            "Epoch 22/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.7500 - loss: 0.6458 - val_accuracy: 0.7917 - val_loss: 0.7173\n",
            "Epoch 23/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - accuracy: 0.7396 - loss: 0.6377 - val_accuracy: 0.7917 - val_loss: 0.7089\n",
            "Epoch 24/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 15ms/step - accuracy: 0.7500 - loss: 0.6296 - val_accuracy: 0.7917 - val_loss: 0.7020\n",
            "Epoch 25/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - accuracy: 0.7604 - loss: 0.6221 - val_accuracy: 0.7917 - val_loss: 0.6945\n",
            "Epoch 26/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 29ms/step - accuracy: 0.7604 - loss: 0.6147 - val_accuracy: 0.7917 - val_loss: 0.6878\n",
            "Epoch 27/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step - accuracy: 0.7604 - loss: 0.6077 - val_accuracy: 0.7917 - val_loss: 0.6809\n",
            "Epoch 28/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - accuracy: 0.7604 - loss: 0.6011 - val_accuracy: 0.7917 - val_loss: 0.6746\n",
            "Epoch 29/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - accuracy: 0.7500 - loss: 0.5949 - val_accuracy: 0.7917 - val_loss: 0.6676\n",
            "Epoch 30/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - accuracy: 0.7604 - loss: 0.5886 - val_accuracy: 0.7917 - val_loss: 0.6620\n",
            "Epoch 31/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - accuracy: 0.7500 - loss: 0.5826 - val_accuracy: 0.7917 - val_loss: 0.6559\n",
            "Epoch 32/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - accuracy: 0.7500 - loss: 0.5771 - val_accuracy: 0.7917 - val_loss: 0.6499\n",
            "Epoch 33/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - accuracy: 0.7604 - loss: 0.5715 - val_accuracy: 0.7917 - val_loss: 0.6447\n",
            "Epoch 34/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - accuracy: 0.7604 - loss: 0.5662 - val_accuracy: 0.7917 - val_loss: 0.6399\n",
            "Epoch 35/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step - accuracy: 0.7604 - loss: 0.5613 - val_accuracy: 0.7917 - val_loss: 0.6347\n",
            "Epoch 36/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 12ms/step - accuracy: 0.7708 - loss: 0.5563 - val_accuracy: 0.7917 - val_loss: 0.6298\n",
            "Epoch 37/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5518 - val_accuracy: 0.7917 - val_loss: 0.6245\n",
            "Epoch 38/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7604 - loss: 0.5471 - val_accuracy: 0.7917 - val_loss: 0.6195\n",
            "Epoch 39/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5426 - val_accuracy: 0.7917 - val_loss: 0.6154\n",
            "Epoch 40/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5382 - val_accuracy: 0.7917 - val_loss: 0.6112\n",
            "Epoch 41/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - accuracy: 0.7604 - loss: 0.5344 - val_accuracy: 0.7917 - val_loss: 0.6061\n",
            "Epoch 42/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7604 - loss: 0.5301 - val_accuracy: 0.7917 - val_loss: 0.6022\n",
            "Epoch 43/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5264 - val_accuracy: 0.7917 - val_loss: 0.5976\n",
            "Epoch 44/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7604 - loss: 0.5223 - val_accuracy: 0.7917 - val_loss: 0.5943\n",
            "Epoch 45/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5187 - val_accuracy: 0.7917 - val_loss: 0.5903\n",
            "Epoch 46/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5153 - val_accuracy: 0.7917 - val_loss: 0.5860\n",
            "Epoch 47/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7708 - loss: 0.5116 - val_accuracy: 0.7917 - val_loss: 0.5825\n",
            "Epoch 48/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7812 - loss: 0.5082 - val_accuracy: 0.7917 - val_loss: 0.5788\n",
            "Epoch 49/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7812 - loss: 0.5050 - val_accuracy: 0.7917 - val_loss: 0.5756\n",
            "Epoch 50/50\n",
            "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 8ms/step - accuracy: 0.7812 - loss: 0.5016 - val_accuracy: 0.7917 - val_loss: 0.5720\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "loss, accuracy = model.evaluate(X_test, y_test)\n",
        "print(\"Test Accuracy:\", accuracy)\n",
        "\n",
        "y_pred = model.predict(X_test)\n",
        "y_pred_classes = np.argmax(y_pred, axis=1)\n",
        "\n",
        "print(\"\\nConfusion Matrix:\")\n",
        "print(confusion_matrix(y_test, y_pred_classes))\n",
        "\n",
        "print(\"\\nClassification Report:\")\n",
        "print(classification_report(y_test, y_pred_classes))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "jIyXfiou2otv",
        "outputId": "f03d6c51-2c96-46c5-9dff-156795a26d92"
      },
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 555ms/step - accuracy: 0.9333 - loss: 0.4650\n",
            "Test Accuracy: 0.9333333373069763\n",
            "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 163ms/step\n",
            "\n",
            "Confusion Matrix:\n",
            "[[10  0  0]\n",
            " [ 0  7  2]\n",
            " [ 0  0 11]]\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       1.00      1.00      1.00        10\n",
            "           1       1.00      0.78      0.88         9\n",
            "           2       0.85      1.00      0.92        11\n",
            "\n",
            "    accuracy                           0.93        30\n",
            "   macro avg       0.95      0.93      0.93        30\n",
            "weighted avg       0.94      0.93      0.93        30\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "plt.plot(history.history['accuracy'], label='train acc')\n",
        "plt.plot(history.history['val_accuracy'], label='val acc')\n",
        "plt.legend()\n",
        "plt.title(\"Accuracy\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 452
        },
        "id": "bG8RrDr92qCQ",
        "outputId": "c16134aa-e220-4de2-9d9c-87f2b5753cc1"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Example input: [sepal length, sepal width, petal length, petal width]\n",
        "sample = np.array([[5.1, 3.5, 1.4, 0.2]])\n",
        "\n",
        "# Apply same scaling\n",
        "sample = scaler.transform(sample)\n",
        "\n",
        "prediction = model.predict(sample)\n",
        "class_index = np.argmax(prediction)\n",
        "\n",
        "print(\"Raw probabilities:\", prediction)\n",
        "print(\"Predicted class:\", data.target_names[class_index])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "i9CMZh-x2r8Q",
        "outputId": "16fd35cd-eeab-40f8-a034-753f5760cca8"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 178ms/step\n",
            "Raw probabilities: [[0.91116357 0.05701385 0.03182261]]\n",
            "Predicted class: setosa\n"
          ]
        }
      ]
    }
  ]
}