{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "#Perform a practical on Logistic regression."
      ],
      "metadata": {
        "id": "7BnvnjoHye4r"
      }
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 258
        },
        "id": "d1bf8152",
        "outputId": "86214c64-868c-434a-bb87-a75048d99372"
      },
      "source": [
        "from sklearn.datasets import load_iris\n",
        "import pandas as pd\n",
        "\n",
        "# Load the dataset\n",
        "iris = load_iris()\n",
        "X = iris.data\n",
        "y = iris.target\n",
        "\n",
        "# Convert to a pandas DataFrame for easier handling\n",
        "df = pd.DataFrame(X, columns=iris.feature_names)\n",
        "df['target'] = y\n",
        "\n",
        "# For binary classification, let's consider only two classes (e.g., class 0 and class 1)\n",
        "df_binary = df[df['target'].isin([0, 1])]\n",
        "\n",
        "X_binary = df_binary.drop('target', axis=1)\n",
        "y_binary = df_binary['target']\n",
        "\n",
        "print(\"Dataset loaded successfully.\")\n",
        "print(\"Shape of the dataset:\", df_binary.shape)\n",
        "print(\"First 5 rows of the dataset:\")\n",
        "display(df_binary.head())"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Dataset loaded successfully.\n",
            "Shape of the dataset: (100, 5)\n",
            "First 5 rows of the dataset:\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \\\n",
              "0                5.1               3.5                1.4               0.2   \n",
              "1                4.9               3.0                1.4               0.2   \n",
              "2                4.7               3.2                1.3               0.2   \n",
              "3                4.6               3.1                1.5               0.2   \n",
              "4                5.0               3.6                1.4               0.2   \n",
              "\n",
              "   target  \n",
              "0       0  \n",
              "1       0  \n",
              "2       0  \n",
              "3       0  \n",
              "4       0  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-8635f01a-98bc-4cb9-beaf-f8e2fa39eceb\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>sepal length (cm)</th>\n",
              "      <th>sepal width (cm)</th>\n",
              "      <th>petal length (cm)</th>\n",
              "      <th>petal width (cm)</th>\n",
              "      <th>target</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>5.1</td>\n",
              "      <td>3.5</td>\n",
              "      <td>1.4</td>\n",
              "      <td>0.2</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>4.9</td>\n",
              "      <td>3.0</td>\n",
              "      <td>1.4</td>\n",
              "      <td>0.2</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>4.7</td>\n",
              "      <td>3.2</td>\n",
              "      <td>1.3</td>\n",
              "      <td>0.2</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>4.6</td>\n",
              "      <td>3.1</td>\n",
              "      <td>1.5</td>\n",
              "      <td>0.2</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>5.0</td>\n",
              "      <td>3.6</td>\n",
              "      <td>1.4</td>\n",
              "      <td>0.2</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-8635f01a-98bc-4cb9-beaf-f8e2fa39eceb')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-8635f01a-98bc-4cb9-beaf-f8e2fa39eceb button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-8635f01a-98bc-4cb9-beaf-f8e2fa39eceb');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    <div id=\"df-f0a14fa0-3724-464e-a8a2-93b2b1b00b41\">\n",
              "      <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f0a14fa0-3724-464e-a8a2-93b2b1b00b41')\"\n",
              "                title=\"Suggest charts\"\n",
              "                style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "      </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "      <script>\n",
              "        async function quickchart(key) {\n",
              "          const quickchartButtonEl =\n",
              "            document.querySelector('#' + key + ' button');\n",
              "          quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "          quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "          try {\n",
              "            const charts = await google.colab.kernel.invokeFunction(\n",
              "                'suggestCharts', [key], {});\n",
              "          } catch (error) {\n",
              "            console.error('Error during call to suggestCharts:', error);\n",
              "          }\n",
              "          quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "          quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "        }\n",
              "        (() => {\n",
              "          let quickchartButtonEl =\n",
              "            document.querySelector('#df-f0a14fa0-3724-464e-a8a2-93b2b1b00b41 button');\n",
              "          quickchartButtonEl.style.display =\n",
              "            google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "        })();\n",
              "      </script>\n",
              "    </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"display(df_binary\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"sepal length (cm)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.2073644135332772,\n        \"min\": 4.6,\n        \"max\": 5.1,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          4.9,\n          5.0,\n          4.7\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sepal width (cm)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.2588435821108957,\n        \"min\": 3.0,\n        \"max\": 3.6,\n        \"num_unique_values\": 5,\n        \"samples\": [\n          3.0,\n          3.6,\n          3.2\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"petal length (cm)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.07071067811865474,\n        \"min\": 1.3,\n        \"max\": 1.5,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          1.4,\n          1.3,\n          1.5\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"petal width (cm)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0,\n        \"min\": 0.2,\n        \"max\": 0.2,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0.2\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"target\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 0,\n        \"max\": 0,\n        \"num_unique_values\": 1,\n        \"samples\": [\n          0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 472
        },
        "id": "00f77a3f",
        "outputId": "be30a1df-df5b-4961-b3f0-aee78671739f"
      },
      "source": [
        "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "# Assuming y_test and y_pred are available from previous steps\n",
        "# If not, you'll need to run the model training and prediction steps first.\n",
        "\n",
        "# Calculate the confusion matrix\n",
        "cm = confusion_matrix(y_test, y_pred)\n",
        "\n",
        "# Display the confusion matrix\n",
        "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=iris.target_names[0:2]) # Assuming classes 0 and 1\n",
        "disp.plot()\n",
        "plt.title('Confusion Matrix')\n",
        "plt.show()"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAAHHCAYAAABz3mgLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAARpdJREFUeJzt3Xl0FFX6//FPJ5BOSNJhhwRiWA0gSADFn0a2LwgysslBRJkxoOCMgAjIOjMQCCAjCiKIbCqLE8QFRURl2FQQXFgMAkKEsIgCooCEsITQfX9/MOmxSdCE7tjp4v06p86hb1XdeqoPIQ/PvbfKZowxAgAAKOaC/B0AAABAQZC0AACAgEDSAgAAAgJJCwAACAgkLQAAICCQtAAAgIBA0gIAAAICSQsAAAgIJC0AACAgkLQA17G9e/eqbdu2ioqKks1m07Jly3za/8GDB2Wz2bRgwQKf9hvIWrZsqZYtW/o7DCAgkbQAfpaRkaG//vWvqlGjhkJDQ+VwOJSYmKjnn39e58+fL9JrJyUlaceOHZo4caJeffVV3XLLLUV6vT9Sr169ZLPZ5HA48v0e9+7dK5vNJpvNpmeffbbQ/R85ckRjx45VWlqaD6IFUBAl/B0AcD17//33dd9998lut+uhhx5S/fr1dfHiRX366acaNmyYdu3apblz5xbJtc+fP6/PPvtM//jHPzRgwIAiuUZcXJzOnz+vkiVLFkn/v6dEiRI6d+6c3nvvPXXv3t1jX2pqqkJDQ3XhwoVr6vvIkSMaN26cqlWrpoSEhAKft2rVqmu6HgCSFsBvDhw4oB49eiguLk7r1q1TdHS0e1///v21b98+vf/++0V2/Z9++kmSVLp06SK7hs1mU2hoaJH1/3vsdrsSExP12muv5UlaFi9erHvuuUdLly79Q2I5d+6cSpUqpZCQkD/keoAVMTwE+MnkyZOVlZWll19+2SNhyVWrVi098cQT7s+XLl3S+PHjVbNmTdntdlWrVk1///vflZ2d7XFetWrV1KFDB3366adq2rSpQkNDVaNGDS1atMh9zNixYxUXFydJGjZsmGw2m6pVqybp8rBK7p9/bezYsbLZbB5tq1ev1p133qnSpUsrIiJC8fHx+vvf/+7ef7U5LevWrVOzZs0UHh6u0qVLq3Pnztq9e3e+19u3b5969eql0qVLKyoqSr1799a5c+eu/sVe4cEHH9SHH36oX375xd22efNm7d27Vw8++GCe40+ePKmhQ4eqQYMGioiIkMPhUPv27bV9+3b3MR9//LFuvfVWSVLv3r3dw0y599myZUvVr19fW7duVfPmzVWqVCn393LlnJakpCSFhobmuf927dqpTJkyOnLkSIHvFbA6khbAT9577z3VqFFDd9xxR4GO79Onj8aMGaPGjRvrueeeU4sWLTRp0iT16NEjz7H79u1Tt27ddNddd2nKlCkqU6aMevXqpV27dkmSunbtqueee06S9MADD+jVV1/VtGnTChX/rl271KFDB2VnZyslJUVTpkxRp06dtHHjxt88b82aNWrXrp2OHz+usWPHasiQIdq0aZMSExN18ODBPMd3795dZ86c0aRJk9S9e3ctWLBA48aNK3CcXbt2lc1m09tvv+1uW7x4serUqaPGjRvnOX7//v1atmyZOnTooKlTp2rYsGHasWOHWrRo4U4g6tatq5SUFEnSo48+qldffVWvvvqqmjdv7u7nxIkTat++vRISEjRt2jS1atUq3/ief/55VahQQUlJSXI6nZKkOXPmaNWqVZoxY4ZiYmIKfK+A5RkAf7jTp08bSaZz584FOj4tLc1IMn369PFoHzp0qJFk1q1b526Li4szksz69evdbcePHzd2u908+eST7rYDBw4YSeaZZ57x6DMpKcnExcXliSE5Odn8+p+M5557zkgyP/3001Xjzr3G/Pnz3W0JCQmmYsWK5sSJE+627du3m6CgIPPQQw/lud7DDz/s0ee9995rypUrd9Vr/vo+wsPDjTHGdOvWzbRu3doYY4zT6TSVK1c248aNy/c7uHDhgnE6nXnuw263m5SUFHfb5s2b89xbrhYtWhhJZvbs2fnua9GihUfbf/7zHyPJTJgwwezfv99ERESYLl26/O49AtcbKi2AH2RmZkqSIiMjC3T8Bx98IEkaMmSIR/uTTz4pSXnmvtSrV0/NmjVzf65QoYLi4+O1f//+a475SrlzYd599125XK4CnXP06FGlpaWpV69eKlu2rLv95ptv1l133eW+z1/729/+5vG5WbNmOnHihPs7LIgHH3xQH3/8sY4dO6Z169bp2LFj+Q4NSZfnwQQFXf6n0el06sSJE+6hr23bthX4mna7Xb179y7QsW3bttVf//pXpaSkqGvXrgoNDdWcOXMKfC3gekHSAviBw+GQJJ05c6ZAxx86dEhBQUGqVauWR3vlypVVunRpHTp0yKP9hhtuyNNHmTJldOrUqWuMOK/7779fiYmJ6tOnjypVqqQePXrojTfe+M0EJjfO+Pj4PPvq1q2rn3/+WWfPnvVov/JeypQpI0mFupc//elPioyM1Ouvv67U1FTdeuuteb7LXC6XS88995xq164tu92u8uXLq0KFCvr66691+vTpAl+zSpUqhZp0++yzz6ps2bJKS0vT9OnTVbFixQKfC1wvSFoAP3A4HIqJidHOnTsLdd6VE2GvJjg4ON92Y8w1XyN3vkWusLAwrV+/XmvWrNFf/vIXff3117r//vt111135TnWG97cSy673a6uXbtq4cKFeuedd65aZZGkp556SkOGDFHz5s3173//W//5z3+0evVq3XTTTQWuKEmXv5/C+Oqrr3T8+HFJ0o4dOwp1LnC9IGkB/KRDhw7KyMjQZ5999rvHxsXFyeVyae/evR7tP/74o3755Rf3SiBfKFOmjMdKm1xXVnMkKSgoSK1bt9bUqVP1zTffaOLEiVq3bp0++uijfPvOjTM9PT3Pvj179qh8+fIKDw/37gau4sEHH9RXX32lM2fO5Dt5Oddbb72lVq1a6eWXX1aPHj3Utm1btWnTJs93UtAEsiDOnj2r3r17q169enr00Uc1efJkbd682Wf9A1ZB0gL4yfDhwxUeHq4+ffroxx9/zLM/IyNDzz//vKTLwxuS8qzwmTp1qiTpnnvu8VlcNWvW1OnTp/X111+7244ePap33nnH47iTJ0/mOTf3IWtXLsPOFR0drYSEBC1cuNAjCdi5c6dWrVrlvs+i0KpVK40fP14vvPCCKleufNXjgoOD81Rx3nzzTf3www8ebbnJVX4JXmGNGDFC3333nRYuXKipU6eqWrVqSkpKuur3CFyveLgc4Cc1a9bU4sWLdf/996tu3boeT8TdtGmT3nzzTfXq1UuS1LBhQyUlJWnu3Ln65Zdf1KJFC3355ZdauHChunTpctXltNeiR48eGjFihO69914NHDhQ586d06xZs3TjjTd6TERNSUnR+vXrdc899yguLk7Hjx/Xiy++qKpVq+rOO++8av/PPPOM2rdvr9tvv12PPPKIzp8/rxkzZigqKkpjx4712X1cKSgoSP/85z9/97gOHTooJSVFvXv31h133KEdO3YoNTVVNWrU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oEaNGumrr75S3759FR4erqSkJH355Zdq2rSp1qxZo5tuukkhISGSpOeff15TpkzRnDlz1KhRI73yyivq1KmTdu3apdq1a2v69Olavny53njjDd1www06fPiwDh8+7I4pKChI06dPV/Xq1bV//37169dPw4cP90iYULxdvGDTyxNj1LLLKYVHuvwdDnBNHGWdCi4h/fKT5z//p34uodha2X6KCr5k5Tktlk1aLl26pK5duyouLk6S1KBBA0lScnKypkyZoq5du0q6XFn55ptvNGfOHCUlJalChQqSpHLlyqly5cruPp999lmNGDFCPXr0kCQ9/fTT+uijjzRt2jTNnDlT3333nWrXrq0777xTNpvNfd1cgwYNcv+5WrVqmjBhgv72t79dNWnJzs5Wdvb//gHJzMz08luBNy7lSBP/Wk0y0uP/yjv/BQBQ9IpnKuWlhg0bqnXr1mrQoIHuu+8+zZs3T6dOndLZs2eVkZGhRx55RBEREe5twoQJysjIuGp/mZmZOnLkiBITEz3aExMTtXv3bklSr169lJaWpvj4eA0cOFCrVq3yOHbNmjVq3bq1qlSposjISP3lL3/RiRMndO5c/uXYSZMmKSoqyr3FxsZ6+a3gWuUmLD/+EKJJSzKosiCgZZ4MlvOSVLqC5wq4MuUv6dRPlvx/7HXHJZv7/UPXvBXTibiWTFqCg4O1evVqffjhh6pXr55mzJih+Ph47dy5U5I0b948paWlubedO3fq888/9+qajRs31oEDBzR+/HidP39e3bt3V7du3SRdXpHUoUMH3XzzzVq6dKm2bt2qmTNnSro8FyY/o0aN0unTp93br4ea8MfJTVh+OGDXv17fJ0dZ5rIgsF3KCdLer0up0Z3/m4Busxkl3Jmlb7ay5NkKjA9WDplimrRYNq222WxKTExUYmKixowZo7i4OG3cuFExMTHav3+/evbsme95uXNYnM7//XJyOByKiYnRxo0b1aJFC3f7xo0b1bRpU4/j7r//ft1///3q1q2b7r77bp08eVJbt26Vy+XSlClTFBR0OU984403fjN+u90uu91+zfePgjl/NkhHDvzvez52OEQZO8MUWfqSylbK0fi+1bVvR5hSFu2Xy2nTyeOXf2QiSztVMqSYPjIS+B1vzy2vodMO69vtpZT+VSnd2/cnhZZyadWSsv4ODT7AW54DzBdffKG1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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "497db522",
        "outputId": "9be83809-0517-4076-9a1f-e395b64973f3"
      },
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.metrics import accuracy_score, confusion_matrix, classification_report\n",
        "\n",
        "# Split the data into training and testing sets (Step 3)\n",
        "X_train, X_test, y_train, y_test = train_test_split(X_binary, y_binary, test_size=0.2, random_state=42)\n",
        "\n",
        "print(\"Data split successfully.\")\n",
        "print(\"Shape of X_train:\", X_train.shape)\n",
        "print(\"Shape of X_test:\", X_test.shape)\n",
        "print(\"Shape of y_train:\", y_train.shape)\n",
        "print(\"Shape of y_test:\", y_test.shape)\n",
        "\n",
        "# Train the Logistic Regression model (Step 4)\n",
        "model = LogisticRegression()\n",
        "model.fit(X_train, y_train)\n",
        "\n",
        "print(\"\\nLogistic Regression model trained successfully.\")\n",
        "\n",
        "# Make predictions on the test set\n",
        "y_pred = model.predict(X_test)\n",
        "\n",
        "print(\"Predictions made successfully.\")\n",
        "\n",
        "# Evaluate the model (Step 5)\n",
        "accuracy = accuracy_score(y_test, y_pred)\n",
        "print(f\"\\nAccuracy: {accuracy:.2f}\")\n",
        "\n",
        "# You can also print other metrics like precision, recall, and F1-score\n",
        "print(\"\\nClassification Report:\")\n",
        "print(classification_report(y_test, y_pred))"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Data split successfully.\n",
            "Shape of X_train: (80, 4)\n",
            "Shape of X_test: (20, 4)\n",
            "Shape of y_train: (80,)\n",
            "Shape of y_test: (20,)\n",
            "\n",
            "Logistic Regression model trained successfully.\n",
            "Predictions made successfully.\n",
            "\n",
            "Accuracy: 1.00\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       1.00      1.00      1.00        12\n",
            "           1       1.00      1.00      1.00         8\n",
            "\n",
            "    accuracy                           1.00        20\n",
            "   macro avg       1.00      1.00      1.00        20\n",
            "weighted avg       1.00      1.00      1.00        20\n",
            "\n"
          ]
        }
      ]
    }
  ]
}