{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# NLP Sentiment Classification on an Imbalanced Dataset\n",
        "# Project 2-2"
      ],
      "metadata": {
        "id": "7WEIuC1cGZUx"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Objective\n",
        "The objective of this project is to preprocess an NLP dataset,\n",
        "apply different feature representation methods, train multiple\n",
        "classification models, and evaluate their performance."
      ],
      "metadata": {
        "id": "wxAH9J_JGdyh"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import pandas as pd\n",
        "import numpy as np\n",
        "import re\n",
        "import nltk\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "from nltk.corpus import stopwords\n",
        "from nltk.tokenize import word_tokenize\n",
        "from nltk.stem import PorterStemmer\n",
        "\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n",
        "\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.naive_bayes import MultinomialNB\n",
        "from sklearn.svm import LinearSVC\n",
        "from sklearn.ensemble import RandomForestClassifier\n",
        "\n",
        "from sklearn.metrics import (\n",
        "    accuracy_score,\n",
        "    precision_score,\n",
        "    recall_score,\n",
        "    f1_score,\n",
        "    classification_report,\n",
        "    confusion_matrix\n",
        ")"
      ],
      "metadata": {
        "id": "BRhN3KKcGbFA"
      },
      "execution_count": 1,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "nltk.download('punkt')\n",
        "nltk.download('punkt_tab')\n",
        "nltk.download('stopwords')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "muzwKzUdGobF",
        "outputId": "111d5f0d-ec8c-4e05-e5bc-1dcf03514dac"
      },
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "[nltk_data] Downloading package punkt to /root/nltk_data...\n",
            "[nltk_data]   Unzipping tokenizers/punkt.zip.\n",
            "[nltk_data] Downloading package punkt_tab to /root/nltk_data...\n",
            "[nltk_data]   Unzipping tokenizers/punkt_tab.zip.\n",
            "[nltk_data] Downloading package stopwords to /root/nltk_data...\n",
            "[nltk_data]   Unzipping corpora/stopwords.zip.\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "True"
            ]
          },
          "metadata": {},
          "execution_count": 2
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df = pd.read_csv(\"/unbalanceddataset (1).csv\")\n",
        "\n",
        "df.head()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 206
        },
        "id": "5P-2uJQ5HR-b",
        "outputId": "64f2d677-d99f-408d-d74f-97ab5a824e04"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                                text sentiment\n",
              "0  Java Concurrency in Practice is probably the b...  positive\n",
              "1    haha aww hun i bet you are more creative tha...  positive\n",
              "2  _pickle lol, thank you very much Hope you`re h...  positive\n",
              "3  Out for an evening on the town with jeremy. Sa...  negative\n",
              "4   - just took over the #1 Most Endorsed spot on...  positive"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-5405d5c5-6f29-457f-b384-4035e78b73f8\" 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>text</th>\n",
              "      <th>sentiment</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Java Concurrency in Practice is probably the b...</td>\n",
              "      <td>positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>haha aww hun i bet you are more creative tha...</td>\n",
              "      <td>positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>_pickle lol, thank you very much Hope you`re h...</td>\n",
              "      <td>positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Out for an evening on the town with jeremy. Sa...</td>\n",
              "      <td>negative</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>- just took over the #1 Most Endorsed spot on...</td>\n",
              "      <td>positive</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-5405d5c5-6f29-457f-b384-4035e78b73f8')\"\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-5405d5c5-6f29-457f-b384-4035e78b73f8 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-5405d5c5-6f29-457f-b384-4035e78b73f8');\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>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "df",
              "summary": "{\n  \"name\": \"df\",\n  \"rows\": 2600,\n  \"fields\": [\n    {\n      \"column\": \"text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 2600,\n        \"samples\": [\n          \" Looking forward to following your journey on this endeavor - just subscribed to your blog\",\n          \"Frustrated with copying 13Gigs across USB 1.1.Stupid old servers\",\n          \" Thanks so much Jon.....same to your mom    That is so sweet of you to think of all of us\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sentiment\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"negative\",\n          \"positive\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "df['sentiment'].value_counts().plot(kind='bar')\n",
        "\n",
        "plt.title('Sentiment Class Distribution')\n",
        "plt.xlabel('Sentiment')\n",
        "plt.ylabel('Number of Samples')\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 519
        },
        "id": "O_5c3dHKHyNl",
        "outputId": "d034ce04-c05f-4b81-d0bc-8072029b0fc4"
      },
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAH2CAYAAACRCpO5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUG9JREFUeJzt3Xt8j/X/x/Hnx/hsxjaGbYRtJjRnI1aOkTmkRAenHKPDyDn2rTDlkCIppZNTkUoo5JxTmXNDlKIxxVBsM7Lj9fsjPr8+bdiHbZ/N9bjfbtfttut9vT/X9bpma8/e1/u6LothGIYAAABMrJCzCwAAAHA2AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhEAADA9AhFwm+jdu7cCAgKcXYZTNW/eXM2bN3d2Gbds7ty5slgsOnbsWK4f678/N8eOHZPFYtHrr7+e68eWpHHjxsliseTJsYDrIRABN+HAgQN65JFH5O/vLzc3N91xxx26//779dZbb+XqcU+ePKlx48YpOjo6V4+TWy5duqRx48Zp06ZNDn3u9OnTGjFihKpVqyZ3d3cVK1ZMISEheuWVVxQfH58rteaUTZs2yWKx2BZXV1f5+vqqefPmmjhxos6ePZsjx7nZ721eyM+1AVdZeJcZ4Jht27apRYsWqlixonr16iU/Pz+dOHFC27dv19GjR3XkyJFcO/bu3bvVoEEDzZkzR71797bblpqaqoyMDLm6uuba8W/Vn3/+qTJlymjs2LEaN25ctj6za9cutWvXTklJSerRo4dCQkIk/fO9WLRoke655x6tXbtWkmyjQ/npD++mTZvUokULPffcc2rQoIHS09N19uxZbdu2TcuXL5eXl5c+//xz3XfffbbPpKenKzU1Va6urtkePbmZ762U+efm2LFjCgwM1GuvvaYRI0Y4dK43U1taWprS0tLk5uaWI8cCblZhZxcAFDQTJkyQl5eXdu3apRIlSthtO3PmjHOKklSkSBGnHTu3xMfH6+GHH5aLi4t++OEHVatWzW77hAkT9MEHHzipOsc0adJEjzzyiF3bvn371Lp1a3Xu3FmHDh1S2bJlJUkuLi5ycXHJ1XouXryoYsWKOf3npnDhwipcmD9FcD4umQEOOnr0qKpXr54pDEmSj49PprZPPvlEISEhKlq0qLy9vdWlSxedOHHCrk/z5s1Vo0YNHTp0SC1atJC7u7vuuOMOTZkyxdZn06ZNatCggSSpT58+tkswc+fOlXT9uSAzZ85UpUqV5O7urtatW+vEiRMyDEMvv/yyypcvr6JFi+qhhx7SuXPnMtW/atUqNWnSRMWKFZOHh4fat2+vgwcP2vXp3bu3ihcvrj/++EMdO3ZU8eLFVaZMGY0YMULp6em2esqUKSNJioyMtNV/vdGM9957T3/88YemTZuWKQxJkq+vr1588cVrfj4lJUVjxoxRSEiIvLy8VKxYMTVp0kQbN27M1HfRokUKCQmRh4eHPD09VbNmTb355pu27ampqYqMjNSdd94pNzc3lSpVSo0bN9a6deuuefwbqV27tqZPn674+Hi9/fbbtvas5hDt3r1bYWFhKl26tIoWLarAwED17dtX0o2/t1f/fY4ePap27drJw8ND3bt3t2271tyzN954Q/7+/ipatKiaNWumH3/80W77teZs/XufN6otqzlEaWlpevnllxUUFCRXV1cFBATof//7n5KTk+36BQQE6IEHHtB3332nu+++W25ubqpUqZLmz5+f9TccuA4CEeAgf39/7dmzJ9Mfh6xMmDBBPXv21J133qlp06ZpyJAh2rBhg5o2bZpp7sv58+fVpk0b1a5dW1OnTlW1atU0atQorVq1SpJ01113afz48ZKkAQMG6OOPP9bHH3+spk2bXreGBQsW6J133tGgQYM0fPhwbd68WY899phefPFFrV69WqNGjdKAAQO0fPnyTJdIPv74Y7Vv317FixfXq6++qpdeekmHDh1S48aNM034TU9PV1hYmEqVKqXXX39dzZo109SpU/X+++9LksqUKaN3331XkvTwww/b6u/UqdM1a//6669VtGjRTCMr2ZWYmKgPP/xQzZs316uvvqpx48bp7NmzCgsLs5uHtW7dOnXt2lUlS5bUq6++qsmTJ6t58+b6/vvvbX3GjRunyMhItWjRQm+//bZeeOEFVaxYUXv37r2p2q565JFHVLRoUdtlv6ycOXNGrVu31rFjxzR69Gi99dZb6t69u7Zv3y4pe9/btLQ0hYWFycfHR6+//ro6d+583brmz5+vGTNmKDw8XBEREfrxxx9133336fTp0w6d3838uz/55JMaM2aM6tWrpzfeeEPNmjXTpEmT1KVLl0x9jxw5okceeUT333+/pk6dqpIl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p6fdAgAAbl9OvWQWHh6uhQsX6quvvpKHh4dtzo+Xl5eKFi0qLy8v9evXT8OGDZO3t7c8PT01aNAghYaGqlGjRpKk1q1bKzg4WE888YSmTJmiuLg4vfjiiwoPD5erq6sk6emnn9bbb7+t559/Xn379tW3336rzz//XCtXcjkIAAA4eYTo3XffVUJCgpo3b66yZcvals8++8zW54033tADDzygzp07q2nTpvLz89OSJUts211cXLRixQq5uLgoNDRUPXr0UM+ePTV+/Hhbn8DAQK1cuVLr1q1T7dq1NXXqVH344YcKCwvL0/MFAAD5U756DlF+ZebnEDGp2lyYVA3gdlJgn0MEAADgDAQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgek4NRFu2bFGHDh1Urlw5WSwWLVu2zG67xWLJcnnttddsfQICAjJtnzx5st1+9u/fryZNmsjNzU0VKlTQlClT8uL0AABAAeHUQHTx4kXVrl1bM2fOzHL7qVOn7JbZs2fLYrGoc+fOdv3Gjx9v12/QoEG2bYmJiWrdurX8/f21Z88evfbaaxo3bpzef//9XD03AABQcBR25sHbtm2rtm3bXnO7n5+f3fpXX32lFi1aqFKlSnbtHh4emfpetWDBAqWkpGj27NmyWq2qXr26oqOjNW3aNA0YMODWTwIAABR4BWYO0enTp7Vy5Ur169cv07bJkyerVKlSqlu3rl577TWlpaXZtkVFRalp06ayWq22trCwMB0+fFjnz5/Pk9oBAED+5tQRIkfMmzdPHh4e6tSpk137c889p3r16snb21vbtm1TRESETp06pWnTpkmS4uLiFBgYaPcZX19f27aSJUtmOlZycrKSk5Nt64mJiTl9OgAAIB8pMIFo9uzZ6t69u9zc3Ozahw0bZvu6Vq1aslqteuqppzRp0iS5urre1LEmTZqkyMjIW6oXAAAUHAXiktnWrVt1+PBhPfnkkzfs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AAoGh0eIPv74Yy1ZskTt2rXLjXqu6fLlyxo1apS6du1qNzHqueeeU7169eTt7a1t27YpIiJCp06d0rRp0yRJcXFxmSaC+/r62raVLFky07GSk5OVnJxsW09MTMyNUwIAAPmEw4HIy8tLlSpVyo1arik1NVWPPfaYDMPQu+++a7dt2LBhtq9r1aolq9Wqp556SpMmTZKrq+tNHW/SpEmKjIy8pZoBAEDB4fAls3HjxikyMlJ///13btSTydUwdPz4ca1bt+6Gt801bNhQaWlpOnbsmCTJz89Pp0+ftutzdf1a844iIiKUkJBgW06cOHHrJwIAAPIth0eIHnvsMX366afy8fFRQECAihQpYrd97969OVbc1TD066+/auPGjSpVqtQNPxMdHa1ChQrJx8dHkhQaGqoXXnhBqamptlrXrVunqlWrZnm5TJJcXV1venQJAAAUPA4Hol69emnPnj3q0aOHfH19ZbFYbvrgSUlJOnLkiG09JiZG0dHR8vb2VtmyZfXII49o7969WrFihdLT0xUXFydJ8vb2ltVqVVRUlHbs2KEWLVrIw8NDUVFRGjp0qHr06GELO926dVNkZKT69eunUaNG6ccff9Sbb76pN95446brBgAAtxeHn1RdrFgxrVmzRo0bN77lg2/atEktWrTI1N6rVy+NGzfumk/F3rhxo5o3b669e/fq2Wef1c8//6zk5GQFBgbqiSee0LBhw+xGePbv36/w8HDt2rVLpUuX1qBBgzRq1Khs18mTqmEWPKkawO3Ekb/fDo8QVahQIcdCQfPmzXW9PHajrFavXj1t3779hsepVauWtm7d6nB9AADAHByeVD116lQ9//zztknLAAAABZ3DI0Q9evTQpUuXFBQUJHd390yTqs+dO5djxQEAAOQFhwPR9OnTc6EMAAAA57mpu8wAAABuJw4Hon+7fPmyUlJS7NrMdhcWAAAo+ByeVH3x4kUNHDhQPj4+KlasmEqWLGm3AAAAFDQOB6Lnn39e3377rd599125urrqww8/VGRkpMqVK6f58+fnRo0AAAC5yuFLZsuXL9f8+fPVvHlz9enTR02aNFHlypXl7++vBQsWqHv37rlRJwAAQK5xeITo3Llztrfde3p62m6zb9y4sbZs2ZKz1QEAAOQBhwNRpUqVFBMTI0mqVq2aPv/8c0n/jByVKFEiR4sDAADICw4H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bVFRUZoxY4YyMjJypCgAAIC8lO1A9NBDD2VqO3z4sEaPHq3ly5ere/fu3LkFAAAKpJuaQ3Ty5En1799fNWvWVFpamqKjozVv3jz5+/vndH0AAAC5zqFAlJCQoFGjRqly5co6ePCgNmzYoOXLl6tGjRq5VR8AAECuy/YlsylTpujVV1+Vn5+fPv300ywvoQEAABREFiOrJx5moVChQipatKhatWolFxeXa/a70ctXC6LExER5eXkpISHBdO81Cxi90tklIA8dm3z9dwUCQEHiyN/vbI8Q9ezZ84a33QMAABRE2Q5Ec+fOzcUyAAAAnIcnVQMAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANPL9pOqAQC3F95VaC68q/D6GCECAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACmRyACAACml68D0bhx42SxWOyWatWq2bZfvnxZ4eHhKlWqlIoXL67OnTvr9OnTdvuIjY1V+/bt5e7uLh8fH40cOVJpaWl5fSoAACAfy/dvu69evbrWr19vWy9c+P9LHjp0qFauXKkvvvhCXl5eGjhwoDp16qTvv/9ekpSenq727dvLz89P27Zt06lTp9SzZ08VKVJEEydOzPNzAQAA+VO+D0SFCxeWn59fpvaEhAR99NFHWrhwoe677z5J0pw5c3TXXXdp+/btatSokdauXatDhw5p/fr18vX1VZ06dfTyyy9r1KhRGjdunKxWa16fDgAAyIfy9SUzSfr1119Vrlw5VapUSd27d1dsbKwkac+ePUpNTVWrVq1sfatVq6aKFSsqKipKkhQVFaWaNWvK19fX1icsLEyJiYk6ePBg3p4IAADIt/L1CFHDhg01d+5cVa1aVadOnVJkZKSaNGmiH3/8UXFxcbJarSpRooTdZ3x9fRUXFydJiouLswtDV7df3XYtycnJSk5Otq0nJibm0BkBAID8KF8HorZt29q+rlWrlho2bCh/f399/vnnKlq0aK4dd9KkSYqMjMy1/QMAgPwl318y+7cSJUqoSpUqOnLkiPz8/JSSkqL4+Hi7PqdPn7bNOfLz88t019nV9azmJV0VERGhhIQE23LixImcPREAAJCvFKhAlJSUpKNHj6ps2bIKCQlRkSJFtGHDBtv2w4cPKzY2VqGhoZKk0NBQHThwQGfOnLH1WbdunTw9PRUcHHzN47i6usrT09NuAQAAt698fclsxIgR6tChg/z9/XXy5EmNHTtWLi4u6tq1q7y8vNSvXz8NGzZM3t7e8vT01KBBgxQaGqpGjRpJklq3bq3g4GA98cQTmjJliuLi4vTiiy8qPDxcrq6uTj47AACQX+TrQPT777+ra9eu+uuvv1SmTBk1btxY27dvV5kyZSRJb7zxhgoVKqTOnTsrOTlZYWFheuedd2yfd3Fx0YoVK/TMM88oNDRUxYoVU69evTR+/HhnnRIAAMiH8nUgWrRo0XW3u7m5aebMmZo5c+Y1+/j7++ubb77J6dIAAMBtpEDNIQIAAMgNBCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6BCIAAGB6+ToQTZo0SQ0aNJCHh4d8fHzUsWNHHT582K5P8+bNZbFY7Jann37ark9sbKzat28vd3d3+fj4aOTIkUpLS8vLUwEAAPlYYWcXcD2bN29WeHi4GjRooLS0NP3vf/9T69atdejQIRUrVszWr3///ho/frxt3d3d3fZ1enq62rdvLz8/P23btk2nTp1Sz549VaRIEU2cODFPzwcAAORP+ToQrV692m597ty58vHx0Z49e9S0aVNbu7u7u/z8/LLcx9q1a3Xo0CGtX79evr6+qlOnjl5++WWNGjVK48aNk9VqzdVzAAAA+V++vmT2XwkJCZIkb29vu/YFCxaodOnSqlGjhiIiInTp0iXbtqioKNWsWVO+vr62trCwMCUmJurgwYN5UzgAAMjX8vUI0b9lZGRoyJAhuvfee1WjRg1be7du3eTv769y5cpp//79GjVqlA4fPqwlS5ZIkuLi4uzCkCTbelxcXJbHSk5OVnJysm09MTExp08HAADkIwUmEIWHh+vHH3/Ud999Z9c+YMAA29c1a9ZU2bJl1bJlSx09elRBQUE3daxJkyYpMjLyluoFAAAFR4G4ZDZw4ECtWLFCGzduVPny5a/bt2HDhpKkI0eOSJL8/Px0+vRpuz5X16817ygiIkIJCQm25cSJE7d6CgAAIB/L14HIMAwNHDhQS5cu1bfffqvAwMAbfiY6OlqSVLZsWUlSaGioDhw4oDNnztj6rFu3Tp6engoODs5yH66urvL09LRbAADA7StfXzILDw/XwoUL9dVXX8nDw8M258fLy0tFixbV0aNHtXDhQrVr106lSpXS/v37NXToUDVt2lS1atWSJLVu3VrBwcF64oknNGXKFMXFxenFF19UeHi4XF1dnXl6AAAgn8jXI0TvvvuuEhIS1Lx5c5UtW9a2fPbZZ5Ikq9Wq9evXq3Xr1qpWrZqGDx+uzp07a/ny5bZ9uLi4aMWKFXJxcVFoaKh69Oihnj172j23CAAAmFu+HiEyDOO62ytUqKDNmzffcD/+/v765ptvcqosAABwm8nXI0QAAAB5gUAEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMj0AEAABMz1SBaObMmQoICJCbm5saNmyonTt3OrskAACQD5gmEH322WcaNmyYxo4dq71796p27doKCwvTmTNnnF0aAABwMtMEomnTpql///7q06ePgoODNWvWLLm7u2v27NnOLg0AADiZKQJRSkqK9uzZo1atWtnaChUqpFatWikqKsqJlQEAgPygsLMLyAt//vmn0tPT5evra9fu6+urn3/+OVP/5ORkJScn29YTEhIkSYmJiblbaD6UkXzJ2SUgD5nxZ9zM+P02FzP+fl89Z8MwbtjXFIHIUZMmTVJkZGSm9goVKjihGiDveE13dgUAcouZf78vXLggLy+v6/YxRSAqXbq0XFxcdPr0abv206dPy8/PL1P/iIgIDRs2zLaekZGhc+fOqVSpUrJYLLleL5wrMTFRFSpU0IkTJ+Tp6enscgDkIH6/zcUwDF24cEHlypW7YV9T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hrp27WrX/umnn2rQoEH6888/nVQZgFvl5eWlvXv3KigoSB4eHtq3b58qVaqk48ePq2rVqrp8+bKzS4STMUIEXJGamqr69etnag8JCVFaWpoTKgKQU1xdXZWYmJip/ZdfflGZMmWcUBHyGwIRcMUTTzyhd999N1P7+++/r+7duzuhIgA55cEHH9T48eOVmpoq6Z+XusbGxmrUqFHq3Lmzk6tDfsAlM+CKQYMGaf78+apQoYIaNWok6Z/nEMXGxqpnz562W/Eladq0ac4qE8BNSEhI0COPPKLdu3frwoULKleunOLi4tSoUSOtWrVKxYoVc3aJcDICEXBFixYtstXPYrHo22+/zeVqAOSG77//Xvv27VNSUpLq1aunVq1aObsk5BMEIgCAKWzYsEEbNmzQmTNnlJGRYbdt9uzZTqoK+QXvMgMA3PYiIyM1fvx41a9fX2XLlpXFYnF2SchnGCECANz2ypYtqylTpuiJJ55wdinIp7jLDABw20tJSdE999zj7DKQjxGIAAC3vSeffFILFy50dhnIx5hDBAC47V2+fFnvv/++1q9fr1q1atk9RkPiURpgDhEAwASu91gNHqUBiUAEAADAHCIAAAACEQAAMD0CEQAAMD0CEQDT2bRpkywWi+Lj451dCoB8gkAEwGnOnj2rZ555RhUrVpSrq6v8/PwUFham77//PseO0bx5cw0ZMsSu7Z577tGpU6fk5eWVY8e5Wb1791bHjh2dXQZgejyHCIDTdO7cWSkpKZo3b54qVaqk06dPa8OGDfrrr79y9bhWq1V+fn65egwABYwBAE5w/vx5Q5KxadOm6/bp16+fUbp0acPDw8No0aKFER0dbds+duxYo3bt2sb8+fMNf39/w9PT03j88ceNxMREwzAMo1evXoYkuyUmJsbYuHGjIck4f/68YRiGMWfOHMPLy8tYvny5UaVKFaNo0aJG586djYsXLxpz5841/P39jRIlShiDBg0y0tLSbMe/fPmyMXz4cKNcuXKGu7u7cffddxsbN260bb+639WrVxvVqlUzihUrZoSFhRknT5601f/f+v79eQB5h0tmAJyiePHiKl68uJYtW6bk5OQs+zz66KM6c+aMVq1apT179qhevXpq2bKlzp07Z+tz9OhRLVu2TCtWrNCKFSu0efNmTZ48WZL05ptvKjQ0VP3799epU6d06tQpVahQIctjXbp0STNmzNCiRYu0evVqbdq0SQ8//LC++eYbffPNN/r444/13nvvafHixbbPDBw4UFFRUVq0aJH279+vRx99VG3atNGvv/5qt9/XX39dH3/8sbZs2aLY2FiNGDFCkjRixAg99thjatOmja0+3rcFOImzExkA81q8eLFRsmRJw83NzbjnnnuMiIgIY9++fYZhGMbWrVsNT09P4/Lly3afCQoKMt577z3DMP4ZYXF3d7eNCBmGYYwcOdJo2LChbb1Zs2bG4MGD7faR1QiRJOPIkSO2Pk899ZTh7u5uXLhwwdYWFhZmPPXUU4ZhGMbx48cNFxcX448//rDbd8uWLY2IiIhr7nfmzJmGr6+vbb1Xr17GQw89lK3vF4DcwxwiAE7TuXNntW/fXlu3btX27du1atUqTZkyRR9++KEuXryopKQklSpVyu4zf//9t44ePWpbDwgIkIeHh229bNmyOnPmjMO1uLu7KygoyLbu6+urgIAAFS9e3K7t6r4PHDig9PR0ValSxW4/ycnJdjX/d783Wx+A3EUgAuBUbm5uuv/++3X//ffrpZde0pNPPqmxY8fq2WefVdmyZbVp06ZMnylRooTt6/++pNNisSgjI8PhOrLaz/X2nZSUJBcXF+3Zs0cuLi52/f4dorLah8Ebk4B8h0AEIF8JDg7WsmXLVK9ePcXFxalw4cIKCAi46f1ZrValp6fnXIFX1K1bV+np6Tpz5oyaNGly0/vJrfoAOIZJ1QCc4q+//tJ9992nTz75RPv371dMTIy++OILTZkyRQ899JBatWql0NBQdezYUWvXrtWxY8e0bds2vfDCC9q9e3e2jxMQEKAdO3bo2LFj+vPPP29q9CgrVapUUffu3dWzZ08tWbJEMTEx2rlzpyZNmqSVK1c6VN/+/ft1+PBh/fnnn0pNTc2R+gA4hkAEwCmKFy+uhg0b6o033lDTpk1Vo0YNvfTSS+rfv7/efvttWSwWffPNN2ratKn69OmjKlWqqEuXLjp+/Lh8fX2zfZwRI0bIxcVFwcHBKlOmjGJjY3PsHObMmaOePXtq+PDhqlq1qjp27Khdu3apYsWK2d5H//79VbVqVdWvX19lypTJ0YdSAsg+i8HFbAAAYHKMEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANMjEAEAANP7P5DJ9BVAf/9mAAAAAElFTkSuQmCC\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"Class Distribution BEFORE Balancing\")\n",
        "print(\"-----------------------------------\")\n",
        "print(df['sentiment'].value_counts())\n",
        "\n",
        "print(\"\\nClass Distribution Percentage:\")\n",
        "print((df['sentiment'].value_counts(normalize=True) * 100).round(2))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "S1k4D_LoCBpF",
        "outputId": "1a3778ed-fcae-421b-cd27-4a0bdce5aff1"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Class Distribution BEFORE Balancing\n",
            "-----------------------------------\n",
            "sentiment\n",
            "positive    2000\n",
            "negative     600\n",
            "Name: count, dtype: int64\n",
            "\n",
            "Class Distribution Percentage:\n",
            "sentiment\n",
            "positive    76.92\n",
            "negative    23.08\n",
            "Name: proportion, dtype: float64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "stemmer = PorterStemmer()\n",
        "stop_words = set(stopwords.words('english'))\n",
        "\n",
        "def preprocess_text(text):\n",
        "\n",
        "    # Convert to lowercase\n",
        "    text = text.lower()\n",
        "\n",
        "    # Remove URLs\n",
        "    text = re.sub(r'http\\S+|www\\.\\S+', '', text)\n",
        "\n",
        "    # Remove HTML tags\n",
        "    text = re.sub(r'<.*?>', '', text)\n",
        "\n",
        "    # Remove numbers, punctuation and special characters\n",
        "    text = re.sub(r'[^a-zA-Z\\s]', '', text)\n",
        "\n",
        "    # Tokenization\n",
        "    tokens = word_tokenize(text)\n",
        "\n",
        "    # Remove stop words\n",
        "    tokens = [word for word in tokens if word not in stop_words]\n",
        "\n",
        "    # Stemming\n",
        "    tokens = [stemmer.stem(word) for word in tokens]\n",
        "\n",
        "    # Reconstruct cleaned text\n",
        "    clean_text = ' '.join(tokens)\n",
        "\n",
        "    return clean_text"
      ],
      "metadata": {
        "id": "1gY4lpgaH3Jh"
      },
      "execution_count": 7,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "df['clean_text'] = df['text'].apply(preprocess_text)"
      ],
      "metadata": {
        "id": "796d1cw9H6Yy"
      },
      "execution_count": 8,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "df[['text', 'clean_text', 'sentiment']].head()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 206
        },
        "id": "tfuSngV1H9ot",
        "outputId": "a6b25a27-aa87-436f-f973-550c2f3f21d4"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                                text  \\\n",
              "0  Java Concurrency in Practice is probably the b...   \n",
              "1    haha aww hun i bet you are more creative tha...   \n",
              "2  _pickle lol, thank you very much Hope you`re h...   \n",
              "3  Out for an evening on the town with jeremy. Sa...   \n",
              "4   - just took over the #1 Most Endorsed spot on...   \n",
              "\n",
              "                                          clean_text sentiment  \n",
              "0  java concurr practic probabl best java book iv...  positive  \n",
              "1                           haha aww hun bet creativ  positive  \n",
              "2           pickl lol thank much hope your great day  positive  \n",
              "3               even town jeremi sad carri cant come  negative  \n",
              "4          took endors spot twindexxcom thank endors  positive  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-c54df600-e7c1-4dba-99bf-d98abba19b7d\" 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>text</th>\n",
              "      <th>clean_text</th>\n",
              "      <th>sentiment</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Java Concurrency in Practice is probably the b...</td>\n",
              "      <td>java concurr practic probabl best java book iv...</td>\n",
              "      <td>positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>haha aww hun i bet you are more creative tha...</td>\n",
              "      <td>haha aww hun bet creativ</td>\n",
              "      <td>positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>_pickle lol, thank you very much Hope you`re h...</td>\n",
              "      <td>pickl lol thank much hope your great day</td>\n",
              "      <td>positive</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Out for an evening on the town with jeremy. Sa...</td>\n",
              "      <td>even town jeremi sad carri cant come</td>\n",
              "      <td>negative</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>- just took over the #1 Most Endorsed spot on...</td>\n",
              "      <td>took endors spot twindexxcom thank endors</td>\n",
              "      <td>positive</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-c54df600-e7c1-4dba-99bf-d98abba19b7d')\"\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-c54df600-e7c1-4dba-99bf-d98abba19b7d 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-c54df600-e7c1-4dba-99bf-d98abba19b7d');\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>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"df[['text', 'clean_text', 'sentiment']]\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"  haha aww hun i bet you are more creative than me\",\n          \" - just took over the #1 Most Endorsed spot on twindexx.com - thanks to the endorsement by \",\n          \"_pickle lol, thank you very much Hope you`re having a great day!\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"clean_text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"haha aww hun bet creativ\",\n          \"took endors spot twindexxcom thank endors\",\n          \"pickl lol thank much hope your great day\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sentiment\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 2,\n        \"samples\": [\n          \"negative\",\n          \"positive\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 9
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"BEFORE PREPROCESSING:\")\n",
        "print(df['text'].iloc[0])\n",
        "\n",
        "print(\"\\nAFTER PREPROCESSING:\")\n",
        "print(df['clean_text'].iloc[0])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9ZM54lZdDJ13",
        "outputId": "2225e413-1a7b-40b8-bb2e-6e23d6e54e0a"
      },
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "BEFORE PREPROCESSING:\n",
            "Java Concurrency in Practice is probably the best Java book I`ve ever bought. There`s a recipe in there for interrupting blocking IO ops\n",
            "\n",
            "AFTER PREPROCESSING:\n",
            "java concurr practic probabl best java book ive ever bought there recip interrupt block io op\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "X = df['clean_text']\n",
        "y = df['sentiment']"
      ],
      "metadata": {
        "id": "KLDVrF_fIAJ2"
      },
      "execution_count": 11,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "X_train, X_test, y_train, y_test = train_test_split(\n",
        "    X,\n",
        "    y,\n",
        "    test_size=0.30,\n",
        "    random_state=42,\n",
        "    stratify=y\n",
        ")"
      ],
      "metadata": {
        "id": "Dmn8UTgPIC2I"
      },
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"Training size:\", len(X_train))\n",
        "print(\"Testing size:\", len(X_test))\n",
        "\n",
        "print(\"\\nTraining distribution:\")\n",
        "print(y_train.value_counts())\n",
        "\n",
        "print(\"\\nTesting distribution:\")\n",
        "print(y_test.value_counts())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6CAau2MzIFR1",
        "outputId": "0303590c-c42f-4f86-f9db-6aafc31ea5f1"
      },
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Training size: 1820\n",
            "Testing size: 780\n",
            "\n",
            "Training distribution:\n",
            "sentiment\n",
            "positive    1400\n",
            "negative     420\n",
            "Name: count, dtype: int64\n",
            "\n",
            "Testing distribution:\n",
            "sentiment\n",
            "positive    600\n",
            "negative    180\n",
            "Name: count, dtype: int64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "count_vectorizer = CountVectorizer()\n",
        "\n",
        "X_train_count = count_vectorizer.fit_transform(X_train)\n",
        "X_test_count = count_vectorizer.transform(X_test)\n",
        "\n",
        "print(\"CountVectorizer training shape:\", X_train_count.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "DbLZjRLoIIC8",
        "outputId": "9b572616-d691-423e-a70d-282be8cc4c00"
      },
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "CountVectorizer training shape: (1820, 3659)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "tfidf_vectorizer = TfidfVectorizer()\n",
        "\n",
        "X_train_tfidf = tfidf_vectorizer.fit_transform(X_train)\n",
        "X_test_tfidf = tfidf_vectorizer.transform(X_test)\n",
        "\n",
        "print(\"TF-IDF training shape:\", X_train_tfidf.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "13aDZSIYILUN",
        "outputId": "fee341e3-7d27-4edf-b749-2761b3986533"
      },
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "TF-IDF training shape: (1820, 3659)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "def evaluate_model(model_name, model, X_train, X_test, y_train, y_test):\n",
        "\n",
        "    model.fit(X_train, y_train)\n",
        "\n",
        "    y_pred = model.predict(X_test)\n",
        "\n",
        "    accuracy = accuracy_score(y_test, y_pred)\n",
        "\n",
        "    precision = precision_score(\n",
        "        y_test,\n",
        "        y_pred,\n",
        "        pos_label='negative',\n",
        "        zero_division=0\n",
        "    )\n",
        "\n",
        "    recall = recall_score(\n",
        "        y_test,\n",
        "        y_pred,\n",
        "        pos_label='negative',\n",
        "        zero_division=0\n",
        "    )\n",
        "\n",
        "    f1 = f1_score(\n",
        "        y_test,\n",
        "        y_pred,\n",
        "        pos_label='negative',\n",
        "        zero_division=0\n",
        "    )\n",
        "\n",
        "    print(\"=\" * 60)\n",
        "    print(model_name)\n",
        "    print(\"=\" * 60)\n",
        "\n",
        "    print(\"Accuracy:\", round(accuracy, 4))\n",
        "    print(\"Precision (Negative):\", round(precision, 4))\n",
        "    print(\"Recall (Negative):\", round(recall, 4))\n",
        "    print(\"F1 Score (Negative):\", round(f1, 4))\n",
        "\n",
        "    print(\"\\nClassification Report:\")\n",
        "    print(classification_report(y_test, y_pred))\n",
        "\n",
        "    print(\"\\nConfusion Matrix:\")\n",
        "    print(confusion_matrix(y_test, y_pred))\n",
        "\n",
        "    return {\n",
        "        'Model': model_name,\n",
        "        'Accuracy': accuracy,\n",
        "        'Precision': precision,\n",
        "        'Recall': recall,\n",
        "        'F1 Score': f1\n",
        "    }"
      ],
      "metadata": {
        "id": "WC7_uHvWIOnB"
      },
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "results_tfidf = []"
      ],
      "metadata": {
        "id": "JArhO4U5IRjR"
      },
      "execution_count": 17,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "lr = LogisticRegression(max_iter=1000, random_state=42)\n",
        "\n",
        "results_tfidf.append(\n",
        "    evaluate_model(\n",
        "        \"Logistic Regression - TF-IDF\",\n",
        "        lr,\n",
        "        X_train_tfidf,\n",
        "        X_test_tfidf,\n",
        "        y_train,\n",
        "        y_test\n",
        "    )\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "HrZ3XsV_IWIk",
        "outputId": "0bb94ebe-b3cc-4679-f5da-4139e2b81ef5"
      },
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Logistic Regression - TF-IDF\n",
            "============================================================\n",
            "Accuracy: 0.8244\n",
            "Precision (Negative): 0.9216\n",
            "Recall (Negative): 0.2611\n",
            "F1 Score (Negative): 0.4069\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.92      0.26      0.41       180\n",
            "    positive       0.82      0.99      0.90       600\n",
            "\n",
            "    accuracy                           0.82       780\n",
            "   macro avg       0.87      0.63      0.65       780\n",
            "weighted avg       0.84      0.82      0.78       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 47 133]\n",
            " [  4 596]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "nb = MultinomialNB()\n",
        "\n",
        "results_tfidf.append(\n",
        "    evaluate_model(\n",
        "        \"Naive Bayes - TF-IDF\",\n",
        "        nb,\n",
        "        X_train_tfidf,\n",
        "        X_test_tfidf,\n",
        "        y_train,\n",
        "        y_test\n",
        "    )\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VYI65EeAIXiV",
        "outputId": "016bcf90-fefa-45e8-c35f-8348fdcc4742"
      },
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Naive Bayes - TF-IDF\n",
            "============================================================\n",
            "Accuracy: 0.791\n",
            "Precision (Negative): 1.0\n",
            "Recall (Negative): 0.0944\n",
            "F1 Score (Negative): 0.1726\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       1.00      0.09      0.17       180\n",
            "    positive       0.79      1.00      0.88       600\n",
            "\n",
            "    accuracy                           0.79       780\n",
            "   macro avg       0.89      0.55      0.53       780\n",
            "weighted avg       0.84      0.79      0.72       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 17 163]\n",
            " [  0 600]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "svm = LinearSVC(random_state=42)\n",
        "\n",
        "results_tfidf.append(\n",
        "    evaluate_model(\n",
        "        \"Linear SVM - TF-IDF\",\n",
        "        svm,\n",
        "        X_train_tfidf,\n",
        "        X_test_tfidf,\n",
        "        y_train,\n",
        "        y_test\n",
        "    )\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "G4FC_fPoIamw",
        "outputId": "1ae696fc-2805-4d48-e5c7-984dbf6a8a37"
      },
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Linear SVM - TF-IDF\n",
            "============================================================\n",
            "Accuracy: 0.8615\n",
            "Precision (Negative): 0.8103\n",
            "Recall (Negative): 0.5222\n",
            "F1 Score (Negative): 0.6351\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.81      0.52      0.64       180\n",
            "    positive       0.87      0.96      0.91       600\n",
            "\n",
            "    accuracy                           0.86       780\n",
            "   macro avg       0.84      0.74      0.77       780\n",
            "weighted avg       0.86      0.86      0.85       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 94  86]\n",
            " [ 22 578]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "rf = RandomForestClassifier(\n",
        "    n_estimators=200,\n",
        "    random_state=42\n",
        ")\n",
        "\n",
        "results_tfidf.append(\n",
        "    evaluate_model(\n",
        "        \"Random Forest - TF-IDF\",\n",
        "        rf,\n",
        "        X_train_tfidf,\n",
        "        X_test_tfidf,\n",
        "        y_train,\n",
        "        y_test\n",
        "    )\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fUwJf2o0Ide2",
        "outputId": "5511476d-5a53-45d6-9706-7dfc9398e394"
      },
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Random Forest - TF-IDF\n",
            "============================================================\n",
            "Accuracy: 0.8462\n",
            "Precision (Negative): 0.8191\n",
            "Recall (Negative): 0.4278\n",
            "F1 Score (Negative): 0.562\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.82      0.43      0.56       180\n",
            "    positive       0.85      0.97      0.91       600\n",
            "\n",
            "    accuracy                           0.85       780\n",
            "   macro avg       0.83      0.70      0.73       780\n",
            "weighted avg       0.84      0.85      0.83       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 77 103]\n",
            " [ 17 583]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "results_count = []\n",
        "\n",
        "models = {\n",
        "    'Logistic Regression': LogisticRegression(max_iter=1000, random_state=42),\n",
        "    'Naive Bayes': MultinomialNB(),\n",
        "    'Linear SVM': LinearSVC(random_state=42),\n",
        "    'Random Forest': RandomForestClassifier(\n",
        "        n_estimators=200,\n",
        "        random_state=42\n",
        "    )\n",
        "}\n",
        "\n",
        "for name, model in models.items():\n",
        "\n",
        "    result = evaluate_model(\n",
        "        name + \" - CountVectorizer\",\n",
        "        model,\n",
        "        X_train_count,\n",
        "        X_test_count,\n",
        "        y_train,\n",
        "        y_test\n",
        "    )\n",
        "\n",
        "    results_count.append(result)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "O0jNEnb7Ii8m",
        "outputId": "00c50038-562b-47bb-b394-afe0419b4006"
      },
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Logistic Regression - CountVectorizer\n",
            "============================================================\n",
            "Accuracy: 0.8526\n",
            "Precision (Negative): 0.7928\n",
            "Recall (Negative): 0.4889\n",
            "F1 Score (Negative): 0.6048\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.79      0.49      0.60       180\n",
            "    positive       0.86      0.96      0.91       600\n",
            "\n",
            "    accuracy                           0.85       780\n",
            "   macro avg       0.83      0.73      0.76       780\n",
            "weighted avg       0.85      0.85      0.84       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 88  92]\n",
            " [ 23 577]]\n",
            "============================================================\n",
            "Naive Bayes - CountVectorizer\n",
            "============================================================\n",
            "Accuracy: 0.8462\n",
            "Precision (Negative): 0.8846\n",
            "Recall (Negative): 0.3833\n",
            "F1 Score (Negative): 0.5349\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.88      0.38      0.53       180\n",
            "    positive       0.84      0.98      0.91       600\n",
            "\n",
            "    accuracy                           0.85       780\n",
            "   macro avg       0.86      0.68      0.72       780\n",
            "weighted avg       0.85      0.85      0.82       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 69 111]\n",
            " [  9 591]]\n",
            "============================================================\n",
            "Linear SVM - CountVectorizer\n",
            "============================================================\n",
            "Accuracy: 0.8564\n",
            "Precision (Negative): 0.7361\n",
            "Recall (Negative): 0.5889\n",
            "F1 Score (Negative): 0.6543\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.74      0.59      0.65       180\n",
            "    positive       0.88      0.94      0.91       600\n",
            "\n",
            "    accuracy                           0.86       780\n",
            "   macro avg       0.81      0.76      0.78       780\n",
            "weighted avg       0.85      0.86      0.85       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[106  74]\n",
            " [ 38 562]]\n",
            "============================================================\n",
            "Random Forest - CountVectorizer\n",
            "============================================================\n",
            "Accuracy: 0.8564\n",
            "Precision (Negative): 0.8617\n",
            "Recall (Negative): 0.45\n",
            "F1 Score (Negative): 0.5912\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.86      0.45      0.59       180\n",
            "    positive       0.86      0.98      0.91       600\n",
            "\n",
            "    accuracy                           0.86       780\n",
            "   macro avg       0.86      0.71      0.75       780\n",
            "weighted avg       0.86      0.86      0.84       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[ 81  99]\n",
            " [ 13 587]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "results_df = pd.DataFrame(results_tfidf + results_count)\n",
        "\n",
        "results_df"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 300
        },
        "id": "8MA3TachImh7",
        "outputId": "ce15deac-e963-45ef-ebeb-6496bc38a5df"
      },
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                   Model  Accuracy  Precision    Recall  \\\n",
              "0           Logistic Regression - TF-IDF  0.824359   0.921569  0.261111   \n",
              "1                   Naive Bayes - TF-IDF  0.791026   1.000000  0.094444   \n",
              "2                    Linear SVM - TF-IDF  0.861538   0.810345  0.522222   \n",
              "3                 Random Forest - TF-IDF  0.846154   0.819149  0.427778   \n",
              "4  Logistic Regression - CountVectorizer  0.852564   0.792793  0.488889   \n",
              "5          Naive Bayes - CountVectorizer  0.846154   0.884615  0.383333   \n",
              "6           Linear SVM - CountVectorizer  0.856410   0.736111  0.588889   \n",
              "7        Random Forest - CountVectorizer  0.856410   0.861702  0.450000   \n",
              "\n",
              "   F1 Score  \n",
              "0  0.406926  \n",
              "1  0.172589  \n",
              "2  0.635135  \n",
              "3  0.562044  \n",
              "4  0.604811  \n",
              "5  0.534884  \n",
              "6  0.654321  \n",
              "7  0.591241  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-1838f622-1cd4-4578-aee0-73257e988ad1\" 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>Model</th>\n",
              "      <th>Accuracy</th>\n",
              "      <th>Precision</th>\n",
              "      <th>Recall</th>\n",
              "      <th>F1 Score</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Logistic Regression - TF-IDF</td>\n",
              "      <td>0.824359</td>\n",
              "      <td>0.921569</td>\n",
              "      <td>0.261111</td>\n",
              "      <td>0.406926</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Naive Bayes - TF-IDF</td>\n",
              "      <td>0.791026</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.094444</td>\n",
              "      <td>0.172589</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Linear SVM - TF-IDF</td>\n",
              "      <td>0.861538</td>\n",
              "      <td>0.810345</td>\n",
              "      <td>0.522222</td>\n",
              "      <td>0.635135</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Random Forest - TF-IDF</td>\n",
              "      <td>0.846154</td>\n",
              "      <td>0.819149</td>\n",
              "      <td>0.427778</td>\n",
              "      <td>0.562044</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Logistic Regression - CountVectorizer</td>\n",
              "      <td>0.852564</td>\n",
              "      <td>0.792793</td>\n",
              "      <td>0.488889</td>\n",
              "      <td>0.604811</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Naive Bayes - CountVectorizer</td>\n",
              "      <td>0.846154</td>\n",
              "      <td>0.884615</td>\n",
              "      <td>0.383333</td>\n",
              "      <td>0.534884</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Linear SVM - CountVectorizer</td>\n",
              "      <td>0.856410</td>\n",
              "      <td>0.736111</td>\n",
              "      <td>0.588889</td>\n",
              "      <td>0.654321</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Random Forest - CountVectorizer</td>\n",
              "      <td>0.856410</td>\n",
              "      <td>0.861702</td>\n",
              "      <td>0.450000</td>\n",
              "      <td>0.591241</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-1838f622-1cd4-4578-aee0-73257e988ad1')\"\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-1838f622-1cd4-4578-aee0-73257e988ad1 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-1838f622-1cd4-4578-aee0-73257e988ad1');\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=\"id_d86293d5-262d-4e70-8c5d-a222f4e211ca\">\n",
              "    <style>\n",
              "      .colab-df-generate {\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-generate: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",
              "      [theme=dark] .colab-df-generate {\n",
              "        background-color: #3B4455;\n",
              "        fill: #D2E3FC;\n",
              "      }\n",
              "\n",
              "      [theme=dark] .colab-df-generate: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",
              "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('results_df')\"\n",
              "            title=\"Generate code using this dataframe.\"\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",
              "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "    <script>\n",
              "      (() => {\n",
              "      const buttonEl =\n",
              "        document.querySelector('#id_d86293d5-262d-4e70-8c5d-a222f4e211ca button.colab-df-generate');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      buttonEl.onclick = () => {\n",
              "        google.colab.notebook.generateWithVariable('results_df');\n",
              "      }\n",
              "      })();\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "results_df",
              "summary": "{\n  \"name\": \"results_df\",\n  \"rows\": 8,\n  \"fields\": [\n    {\n      \"column\": \"Model\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 8,\n        \"samples\": [\n          \"Naive Bayes - TF-IDF\",\n          \"Naive Bayes - CountVectorizer\",\n          \"Logistic Regression - TF-IDF\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Accuracy\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.02345976193758417,\n        \"min\": 0.791025641025641,\n        \"max\": 0.8615384615384616,\n        \"num_unique_values\": 6,\n        \"samples\": [\n          0.8243589743589743,\n          0.791025641025641,\n          0.8564102564102564\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Precision\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.082495491366066,\n        \"min\": 0.7361111111111112,\n        \"max\": 1.0,\n        \"num_unique_values\": 8,\n        \"samples\": [\n          1.0,\n          0.8846153846153846,\n          0.9215686274509803\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Recall\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.15797264681854623,\n        \"min\": 0.09444444444444444,\n        \"max\": 0.5888888888888889,\n        \"num_unique_values\": 8,\n        \"samples\": [\n          0.09444444444444444,\n          0.38333333333333336,\n          0.2611111111111111\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"F1 Score\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.1599264480892487,\n        \"min\": 0.17258883248730963,\n        \"max\": 0.654320987654321,\n        \"num_unique_values\": 8,\n        \"samples\": [\n          0.17258883248730963,\n          0.5348837209302325,\n          0.4069264069264069\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 23
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "results_df.sort_values(\n",
        "    by='F1 Score',\n",
        "    ascending=False\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 300
        },
        "id": "oQULyCWiIpSU",
        "outputId": "f6bf6e5d-a643-465e-f130-8360fd9bfa1a"
      },
      "execution_count": 24,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                   Model  Accuracy  Precision    Recall  \\\n",
              "6           Linear SVM - CountVectorizer  0.856410   0.736111  0.588889   \n",
              "2                    Linear SVM - TF-IDF  0.861538   0.810345  0.522222   \n",
              "4  Logistic Regression - CountVectorizer  0.852564   0.792793  0.488889   \n",
              "7        Random Forest - CountVectorizer  0.856410   0.861702  0.450000   \n",
              "3                 Random Forest - TF-IDF  0.846154   0.819149  0.427778   \n",
              "5          Naive Bayes - CountVectorizer  0.846154   0.884615  0.383333   \n",
              "0           Logistic Regression - TF-IDF  0.824359   0.921569  0.261111   \n",
              "1                   Naive Bayes - TF-IDF  0.791026   1.000000  0.094444   \n",
              "\n",
              "   F1 Score  \n",
              "6  0.654321  \n",
              "2  0.635135  \n",
              "4  0.604811  \n",
              "7  0.591241  \n",
              "3  0.562044  \n",
              "5  0.534884  \n",
              "0  0.406926  \n",
              "1  0.172589  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-eb79487c-09eb-4fef-b80c-f8f2165f4301\" 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>Model</th>\n",
              "      <th>Accuracy</th>\n",
              "      <th>Precision</th>\n",
              "      <th>Recall</th>\n",
              "      <th>F1 Score</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Linear SVM - CountVectorizer</td>\n",
              "      <td>0.856410</td>\n",
              "      <td>0.736111</td>\n",
              "      <td>0.588889</td>\n",
              "      <td>0.654321</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Linear SVM - TF-IDF</td>\n",
              "      <td>0.861538</td>\n",
              "      <td>0.810345</td>\n",
              "      <td>0.522222</td>\n",
              "      <td>0.635135</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Logistic Regression - CountVectorizer</td>\n",
              "      <td>0.852564</td>\n",
              "      <td>0.792793</td>\n",
              "      <td>0.488889</td>\n",
              "      <td>0.604811</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Random Forest - CountVectorizer</td>\n",
              "      <td>0.856410</td>\n",
              "      <td>0.861702</td>\n",
              "      <td>0.450000</td>\n",
              "      <td>0.591241</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Random Forest - TF-IDF</td>\n",
              "      <td>0.846154</td>\n",
              "      <td>0.819149</td>\n",
              "      <td>0.427778</td>\n",
              "      <td>0.562044</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Naive Bayes - CountVectorizer</td>\n",
              "      <td>0.846154</td>\n",
              "      <td>0.884615</td>\n",
              "      <td>0.383333</td>\n",
              "      <td>0.534884</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Logistic Regression - TF-IDF</td>\n",
              "      <td>0.824359</td>\n",
              "      <td>0.921569</td>\n",
              "      <td>0.261111</td>\n",
              "      <td>0.406926</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Naive Bayes - TF-IDF</td>\n",
              "      <td>0.791026</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.094444</td>\n",
              "      <td>0.172589</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-eb79487c-09eb-4fef-b80c-f8f2165f4301')\"\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-eb79487c-09eb-4fef-b80c-f8f2165f4301 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-eb79487c-09eb-4fef-b80c-f8f2165f4301');\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>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \")\",\n  \"rows\": 8,\n  \"fields\": [\n    {\n      \"column\": \"Model\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 8,\n        \"samples\": [\n          \"Linear SVM - TF-IDF\",\n          \"Naive Bayes - CountVectorizer\",\n          \"Linear SVM - CountVectorizer\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Accuracy\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.02345976193758417,\n        \"min\": 0.791025641025641,\n        \"max\": 0.8615384615384616,\n        \"num_unique_values\": 6,\n        \"samples\": [\n          0.8564102564102564,\n          0.8615384615384616,\n          0.791025641025641\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Precision\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.08249549136606601,\n        \"min\": 0.7361111111111112,\n        \"max\": 1.0,\n        \"num_unique_values\": 8,\n        \"samples\": [\n          0.8103448275862069,\n          0.8846153846153846,\n          0.7361111111111112\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Recall\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.15797264681854623,\n        \"min\": 0.09444444444444444,\n        \"max\": 0.5888888888888889,\n        \"num_unique_values\": 8,\n        \"samples\": [\n          0.5222222222222223,\n          0.38333333333333336,\n          0.5888888888888889\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"F1 Score\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.1599264480892487,\n        \"min\": 0.17258883248730963,\n        \"max\": 0.654320987654321,\n        \"num_unique_values\": 8,\n        \"samples\": [\n          0.6351351351351351,\n          0.5348837209302325,\n          0.654320987654321\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 24
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from imblearn.over_sampling import RandomOverSampler\n",
        "from imblearn.under_sampling import RandomUnderSampler\n",
        "from imblearn.over_sampling import SMOTE\n",
        "from collections import Counter"
      ],
      "metadata": {
        "id": "uC_rhQDhFlJ3"
      },
      "execution_count": 25,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "ros = RandomOverSampler(random_state=42)\n",
        "\n",
        "X_train_ros, y_train_ros = ros.fit_resample(\n",
        "    X_train_tfidf,\n",
        "    y_train\n",
        ")\n",
        "\n",
        "print(\"BEFORE Random Oversampling:\")\n",
        "print(Counter(y_train))\n",
        "\n",
        "print(\"\\nAFTER Random Oversampling:\")\n",
        "print(Counter(y_train_ros))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fHnkjBvxFvp5",
        "outputId": "0354c41d-9f0d-45ef-ce29-0165db1a7ea8"
      },
      "execution_count": 26,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "BEFORE Random Oversampling:\n",
            "Counter({'positive': 1400, 'negative': 420})\n",
            "\n",
            "AFTER Random Oversampling:\n",
            "Counter({'positive': 1400, 'negative': 1400})\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "before_counts = pd.Series(y_train).value_counts()\n",
        "after_counts = pd.Series(y_train_ros).value_counts()\n",
        "\n",
        "fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n",
        "\n",
        "before_counts.plot(kind='bar', ax=axes[0])\n",
        "axes[0].set_title('Before Random Oversampling')\n",
        "axes[0].set_xlabel('Sentiment')\n",
        "axes[0].set_ylabel('Number of Samples')\n",
        "\n",
        "after_counts.plot(kind='bar', ax=axes[1])\n",
        "axes[1].set_title('After Random Oversampling')\n",
        "axes[1].set_xlabel('Sentiment')\n",
        "axes[1].set_ylabel('Number of Samples')\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 407
        },
        "id": "fgLFyuyUF6F0",
        "outputId": "f1bb7c68-df53-4077-86fa-6f53c8cffa97"
      },
      "execution_count": 27,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1000x400 with 2 Axes>"
            ],
            "image/png": "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7J48eXK2zzXwb5YtW2ZxroFdu3Zp586dNjvvSb169eTm5pbhEna3X5oNjoMt3bCb7777Tj///LOkW8fvLFy4UMePH9fAgQPNDV7t2rXVtWtXjRw5Uvv371f9+vWVJ08eHT9+XEuWLNHEiRMznPTkdo8//rjat2+vWbNmKSEhQbVr19auXbs0b948NW/e3Hzil3vp37+/li9friZNmqhDhw6qUqWKrl69qkOHDumrr77SqVOnLHabyqrw8HA1atRIn3zyiQYPHqyCBQvq6aef1pgxY3Tjxg098sgjWrNmjU6ePGn1c6erVKmS/vOf/2jatGlKTExU9erVtX79+ky3TL7//vtau3atatasqTfeeENubm6aOXOmkpOTNWbMmGzXkFUDBw7Ujz/+qNGjR2v79u1q0aKFvLy89MMPP+jzzz9X2bJlNW/evAyPa9SokfLnz69+/frJ1dVVLVq0sFheokQJvf/++xo0aJBOnTql5s2bK3/+/Dp58qS+/vprdenSRf369btnbfPmzdO0adP0/PPPq0SJErp8+bJmz54tHx8f8xc7jRs31rhx49SgQQO1adNG8fHxmjp1qkqWLGneBS8nhYSEaPTo0Tp16pRKlSqlL7/8Uvv379esWbOUJ0+eHF+fdOsa32vWrFGNGjX0+uuvKzU1VVOmTFH58uXNH1IBPByWL1+uy5cvq1mzZpkuf+qppxQQEKDY2NgMX4am8/LyUnh4uL788kuVKlVK/v7+Kl++vMqXL6+pU6eqZs2aqlChgjp37qzixYvr/Pnz2r59u37//XcdOHAgx19Tr169NGHCBI0aNUqLFi1S/fr15e7urqZNm6pr1666cuWKZs+ercDAwEy/DMiKAQMGaMGCBWrQoIF69eqlvHnzatasWSpatKhFVgQEBGjQoEEaPny4GjRooGbNmunYsWOaNm2annzySbVt2zanXnam3N3d9dVXX6levXqqWbOmOnbsqIiICCUkJGjhwoXat2+f3nzzTYuTt6Vr1aqV2rZtq2nTpik6Otp8MtJ0OfG5qn79+goODlaNGjUUFBSko0ePasqUKWrcuLH5GPMmTZpowYIF8vX1VXh4uLZv365169apYMGCOfZzul3JkiVVs2ZNvf7660pOTtaECRNUsGDBu+5Gf7+CgoLUq1cvjR07Vs2aNVODBg104MABfffddypUqFCWD63E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HPNYsWLFzP82DEMTJkzQu+++q+eee06SNH/+fAUFBWnZsmVq3bq1jh49qlWrVmn37t2KiIiQJE2ePFmNGjXSxx9/rJCQkByrFwAAR/Eg81oiswEAuBurt3T36dNHefLk0ZkzZ+Tt7W0eb9WqlVatWpWjxS1fvlwRERF66aWXFBgYqCeeeEKzZ882Lz958qTi4uIUFRVlHvP19VW1atW0fft2SdL27dvl5+dnDm9JioqKkouLi3bu3Jmj9QIA4CgeZF5LZDYAAHdj9ZbuNWvWaPXq1SpSpIjF+GOPPabTp0/nWGGS9Ntvv2n69Onq27ev3n77be3evVs9e/aUu7u72rdvr7i4OElSUFCQxeOCgoLMy+Li4hQYGGix3M3NTf7+/uY5d0pOTlZycrL5flJSUk6+LAAAbO5B5rVEZgMAcDdWN91Xr161+MY83cWLF+Xh4ZEjRaVLS0tTRESEPvzwQ0nSE088ocOHD2vGjBlq3759jq7rdiNHjtTw4cNt9vwAANjag8xricwGAOBurN69vFatWpo/f775vslkUlpamsaMGaO6devmaHGFCxdWeHi4xVjZsmV15swZSVJwcLAk6fz58xZzzp8/b14WHBys+Ph4i+U3b97UxYsXzXPuNGjQICUmJppvZ8+ezZHXAwDAg/Ig81oiswEAuBurt3SPGTNG9erV0549e5SSkqIBAwboyJEjunjxorZu3ZqjxdWoUUPHjh2zGPvll19UtGhRSbdO0BIcHKz169erUqVKkm7tVrZz5069/vrrkqTIyEglJCRo7969qlKliiRpw4YNSktLU7Vq1TJdr4eHh022AgAA8KA8yLyWyGwAAO7G6i3d5cuX1y+//KKaNWvqueee09WrV/XCCy/oxx9/VIkSJXK0uD59+mjHjh368MMPdeLECS1cuFCzZs1St27dJN361r537956//33tXz5ch06dEjt2rVTSEiImjdvLunWt+wNGjRQ586dtWvXLm3dulXdu3dX69atOQsqAMBpPci8lshsAADuxuot3dKts42+8847OV1LBk8++aS+/vprDRo0SCNGjFCxYsU0YcIExcTEmOcMGDBAV69eVZcuXZSQkKCaNWtq1apV8vT0NM+JjY1V9+7dVa9ePbm4uKhFixaaNGmSzesHAMCeHlReS2Q2AAB3YzIMw7D2QZcuXdKnn36qo0ePSpLC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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "lr_ros = LogisticRegression(max_iter=1000, random_state=42)\n",
        "\n",
        "ros_result = evaluate_model(\n",
        "    \"Logistic Regression - Random Oversampling\",\n",
        "    lr_ros,\n",
        "    X_train_ros,\n",
        "    X_test_tfidf,\n",
        "    y_train_ros,\n",
        "    y_test\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RS82HpcoGKqe",
        "outputId": "961f0b26-9e98-436c-e86a-a5140a61816b"
      },
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Logistic Regression - Random Oversampling\n",
            "============================================================\n",
            "Accuracy: 0.85\n",
            "Precision (Negative): 0.674\n",
            "Recall (Negative): 0.6778\n",
            "F1 Score (Negative): 0.6759\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.67      0.68      0.68       180\n",
            "    positive       0.90      0.90      0.90       600\n",
            "\n",
            "    accuracy                           0.85       780\n",
            "   macro avg       0.79      0.79      0.79       780\n",
            "weighted avg       0.85      0.85      0.85       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[122  58]\n",
            " [ 59 541]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "rus = RandomUnderSampler(random_state=42)\n",
        "\n",
        "X_train_rus, y_train_rus = rus.fit_resample(\n",
        "    X_train_tfidf,\n",
        "    y_train\n",
        ")\n",
        "\n",
        "print(\"BEFORE Random Undersampling:\")\n",
        "print(Counter(y_train))\n",
        "\n",
        "print(\"\\nAFTER Random Undersampling:\")\n",
        "print(Counter(y_train_rus))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MrN58tQjGp-C",
        "outputId": "4f15b930-191a-4b18-bb05-ad7497888d6f"
      },
      "execution_count": 29,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "BEFORE Random Undersampling:\n",
            "Counter({'positive': 1400, 'negative': 420})\n",
            "\n",
            "AFTER Random Undersampling:\n",
            "Counter({'negative': 420, 'positive': 420})\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "before_counts = pd.Series(y_train).value_counts()\n",
        "after_rus_counts = pd.Series(y_train_rus).value_counts()\n",
        "\n",
        "fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n",
        "\n",
        "before_counts.plot(kind='bar', ax=axes[0])\n",
        "axes[0].set_title('Before Random Undersampling')\n",
        "axes[0].set_xlabel('Sentiment')\n",
        "axes[0].set_ylabel('Number of Samples')\n",
        "\n",
        "after_rus_counts.plot(kind='bar', ax=axes[1])\n",
        "axes[1].set_title('After Random Undersampling')\n",
        "axes[1].set_xlabel('Sentiment')\n",
        "axes[1].set_ylabel('Number of Samples')\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 407
        },
        "id": "voZtSnSZHD-u",
        "outputId": "15ab6f9f-fcd6-42d1-d116-ac7000cf4623"
      },
      "execution_count": 30,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1000x400 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "lr_rus = LogisticRegression(max_iter=1000, random_state=42)\n",
        "\n",
        "rus_result = evaluate_model(\n",
        "    \"Logistic Regression - Random Undersampling\",\n",
        "    lr_rus,\n",
        "    X_train_rus,\n",
        "    X_test_tfidf,\n",
        "    y_train_rus,\n",
        "    y_test\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "EPzn9KR5HPEF",
        "outputId": "57886335-fae2-4cd1-afbc-a5bdb522fb85"
      },
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Logistic Regression - Random Undersampling\n",
            "============================================================\n",
            "Accuracy: 0.7795\n",
            "Precision (Negative): 0.5136\n",
            "Recall (Negative): 0.8389\n",
            "F1 Score (Negative): 0.6371\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.51      0.84      0.64       180\n",
            "    positive       0.94      0.76      0.84       600\n",
            "\n",
            "    accuracy                           0.78       780\n",
            "   macro avg       0.73      0.80      0.74       780\n",
            "weighted avg       0.84      0.78      0.79       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[151  29]\n",
            " [143 457]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "smote = SMOTE(random_state=42)\n",
        "\n",
        "X_train_smote, y_train_smote = smote.fit_resample(\n",
        "    X_train_tfidf,\n",
        "    y_train\n",
        ")\n",
        "\n",
        "print(\"BEFORE SMOTE:\")\n",
        "print(Counter(y_train))\n",
        "\n",
        "print(\"\\nAFTER SMOTE:\")\n",
        "print(Counter(y_train_smote))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5FrMvGhLHdLq",
        "outputId": "4ecec2ad-94b3-4496-86bb-32f3dd390f75"
      },
      "execution_count": 32,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "BEFORE SMOTE:\n",
            "Counter({'positive': 1400, 'negative': 420})\n",
            "\n",
            "AFTER SMOTE:\n",
            "Counter({'positive': 1400, 'negative': 1400})\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "before_counts = pd.Series(y_train).value_counts()\n",
        "after_smote_counts = pd.Series(y_train_smote).value_counts()\n",
        "\n",
        "fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n",
        "\n",
        "before_counts.plot(kind='bar', ax=axes[0])\n",
        "axes[0].set_title('Before SMOTE')\n",
        "axes[0].set_xlabel('Sentiment')\n",
        "axes[0].set_ylabel('Number of Samples')\n",
        "\n",
        "after_smote_counts.plot(kind='bar', ax=axes[1])\n",
        "axes[1].set_title('After SMOTE')\n",
        "axes[1].set_xlabel('Sentiment')\n",
        "axes[1].set_ylabel('Number of Samples')\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 407
        },
        "id": "4Am074KkHqpT",
        "outputId": "cc042d31-bcb3-488b-b6ec-2853d2660b7c"
      },
      "execution_count": 33,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1000x400 with 2 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVIpJREFUeJzt3XlclPX+///nsLsBYgJyIkFNDS030nBJPaK4laZlJuWSaYu7ZWkn106ZlmuZ2uIaZsd+5jFLzHA9insumZmWipVAiYBgIsL1+8OP820CjMEZZhgf99ttbjfmfb3nul4XNTx9zbWMyTAMQwAAAAAAwObcHF0AAAAAAACuiqYbAAAAAAA7oekGAAAAAMBOaLoBAAAAALATmm4AAAAAAOyEphsAAAAAADuh6QYAAAAAwE5ougEAAAAAsBOabgAAAAAA7ISmG3BBb775pmrUqCF3d3c1bNjQ0eUAAID/s3z5ctWtW1eenp7y9/d3dDkASgFNN+AgS5YskclksngEBgaqbdu2Wr9+fYnX+9VXX+nFF19UixYttHjxYr3++us2rLrk8vPztWzZMjVr1kwBAQGqVKmSateurb59+2rXrl3meVu2bDH/Pj766KNC19WiRQuZTCbVr1+/wLLc3FzNnTtX9957rypVqqSKFSvq3nvv1dy5c5Wbm2ueN2nSpAK//8Iebdq0kST179+/yDk+Pj62/WUBAMqkd999VyaTSc2aNSt0+ffff6/+/furZs2aev/99/Xee+/p0qVLmjRpkrZs2VKqtf72228aMWKE6tatq3LlyikwMFBNmzbVSy+9pKysLPO86/nn6+urP/74o8B6Tpw4Yc7Dt956q8DypKQkPfPMMwoLC5O3t7cCAwPVvXt37dixw2JeWFhYsXJ5yZIlknTDOc8884xtf1nATfJwdAHArW7KlCkKDw+XYRhKSUnRkiVL1LlzZ33++efq2rWr1evbtGmT3Nzc9OGHH8rLy8sOFZfM8OHDNW/ePHXr1k2xsbHy8PDQ8ePHtX79etWoUUP33XefxXwfHx+tWLFCjz/+uMX46dOntXPnzkIb3ezsbHXp0kVbt25V165d1b9/f7m5uSk+Pl4jRozQ6tWr9cUXX6hChQrq0aOHatWqZX5tVlaWnn32WT300EPq0aOHeTwoKMj8s7e3tz744IMC23V3dy/x7wUA4Dri4uIUFhamPXv26OTJkxY5I137YDk/P19z5swxL/v99981efJkSTJ/0GtvaWlpioyMVGZmpp588knVrVtX58+f1+HDhzV//nw9++yzqlixonm+h4eHLl26pM8//1y9evWyWFdcXJx8fHx0+fLlAtvZsWOHOnfuLEl66qmnFBERoeTkZC1ZskStWrXSnDlzNGzYMEnS7NmzLZr9L7/8Uh9//LFmzZql2267zTzevHlz88/t27dX3759C2y3du3aJfzNAHZiAHCIxYsXG5KMvXv3WoynpaUZnp6eRp8+fUq03gEDBhgVKlSwRYmGYRhGfn6+cenSpZtaR3JysmEymYxBgwYVuv6UlBTz882bNxuSjB49ehgeHh7Gb7/9ZjH/tddeM4KCgoyWLVsa9erVs1g2ePBgQ5Lx9ttvF9jOO++8Y0gynnnmmUJr/O233wxJxsSJEwtd3q9fP5v+XgEAruWnn34yJBmrV682qlatakyaNKnAnMmTJxuSLLLt7/KnpLKysopcNn36dEOSsWPHjgLLMjIyjD/++MP8/Hr+dejQwejevXuB+XfeeafRs2dPQ5Lx5ptvmsfT0tKM4OBgIygoyDh58qTFay5dumS0atXKcHNzK7QGwzCMN99805BknDp1qtDlkowhQ4YUuY+AM+H0csDJ+Pv7q1y5cvLwsDwRJT8/X7Nnz1a9evXk4+OjoKAgPf3007pw4YJ5jslk0uLFi5WdnV3gNKyrV6/q1VdfVc2aNeXt7a2wsDC9/PLLysnJsdhOWFiYunbtqg0bNigyMlLlypXTwoULJUnp6ekaOXKkQkND5e3trVq1amnatGnKz8+/4T6dOnVKhmGoRYsWBZZdP63+r7p16yZvb2+tWrXKYnzFihXq1atXgaPLP//8sz788EP985//1NChQwusb8iQIWrbtq0++OAD/fzzzzesFwAAa8XFxaly5crq0qWLHn74YcXFxVksDwsL08SJEyVJVatWlclkUv/+/VW1alVJ0uTJk83ZPWnSJPPrvv/+ez388MMKCAiQj4+PIiMjtXbtWot1X79kbevWrXruuecUGBio22+/vchaf/zxR7m7uxc4y0ySfH19Cz2brE+fPlq/fr3S09PNY3v37tWJEyfUp0+fAvMXLlyo5ORkvfnmm6pZs6bFsnLlymnp0qUymUyaMmVKkXUCroKmG3CwjIwM/f777/rt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7tCWLVs0bdq0ItfTqVMnubu7a/ny5UXeTG3ZsmXy8PBQx44dbVY/AODWFhcXp8DAQM2bN6/AstWrV+uzzz7TggULiszvoj4Qr1GjhqRrZ32V1tHcGjVqqHLlyjp37lyRc/r06aNFixbJzc2t0JuxXte1a1clJiZq1apVBW4OK0mnT5/W9u3bFR0dXaJ/2wBlCdd0A04mNzdXX331lby8vMwNcq9evZSXl6dXX321wPyrV69afH1HYTp37izp2p1T/2zmzJmSpC5duvxtXb169VJiYqI2bNhQYFl6err5g4LCJCcn67vvviswfuXKFSUkJBR66vt1JpNJc+fO1cSJE/XEE08UuY3Q0FANGDBAX3/9tflOsH+2YMECbdq0SQMHDrzh16gAAFBcf/zxh1avXq2uXbvq4YcfLvAYOnSoLl68WOArvv6sfPnyklQgywMDA9WmTRstXLiw0Cb4t99+K3Hdu3fvVnZ2doHxPXv26Pz586pTp06Rr23btq1effVVvfPOOwoODi5y3tNPP63AwECNGTNGP/30k8Wyy5cva8CAATIMQxMmTCjxfgBlBUe6AQdbv369vv/+e0nXrs1asWKFTpw4obFjx8rX11eS1Lp1az399NOaOnWqDh48qA4dOsjT01MnTpzQqlWrNGfOHD388MNFbqNBgwbq16+f3nvvPaWnp6t169bas2ePli5dqu7duxfrhiNjxozR2rVr1bVrV/Xv319NmjRRdna2jhw5ok8//VSnT5/WbbfdVuhrf/75ZzVt2lT//Oc/1a5dOwUHBys1NVUff/yxDh06pJEjRxb5WunajVK6dev2tzXOmjVL33//vZ577jnFx8ebj2hv2LBB//3vf9W6dWvNmDHjb9dTlKtXr+qjjz4qdNlDDz2kChUqlHjdAICyZ+3atbp48aIefPDBQpffd999qlq1quLi4vToo48WOqdcuXKKiIjQJ598otq1aysgIED169dX/fr1NW/ePLVs2VJ33323Bg0apBo1aiglJUWJiYn6+eefdejQoRLVvXz5csXFxemhhx5SkyZN5OXlpWPHjmnRokXy8fHRyy+/XORr3dzc9Morr/ztNqpUqaJPP/1UXbp0UePGjfXUU08pIiJCycnJWrJkiU6ePKk5c+aoefPmJdoHSfrhhx8KzeWgoCC1b9++xOsFbI2mG3CwP3/C6+Pjo7p1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/vvvLzDu5+en9PT00i8IKAN+++03BQYGFhjPzs62CHQAsBXyGigZMtu10HSjTAoODtbJkycLjP/vf/9TjRo1HFAR4PwiIyP1xRdfmJ9fD+0PPvhAUVFRjioLgAsjr4GSIbNdi4ejCwBKYtCgQRoxYoQWLVokk8mkX3/9VYmJiXrhhRc0fvx4R5cHOKXXX39dnTp10nfffaerV69qzpw5+u6777Rz505t3brV0eUBcEHkNVAyZLZrMRmGYTi6CMBahmHo9ddf19SpU3Xp0iVJkre3t1544QW9+uqrDq4OcF4//vij3njjDR06dEhZWVlq3LixXnrpJd19992OLg2ACyKvgZIjs10HTTfKtCtXrujkyZPKyspSRESEKlas6OiSAADAX5DXAG5lXNONMumjjz7SpUuX5OXlpYiICDVt2pQAB/5GdHS0lixZoszMTEeXAuAWQV4DJUNmuxaabpRJo0aNUmBgoPr06aMvv/xSeXl5ji4JcHr16tXTuHHjFBwcrEceeUT//e9/lZub6+iyALgw8hooGTLbtdB0o0w6d+6cVq5cKZPJpF69eqlatWoaMmSIdu7c6ejSAKc1Z84c/fLLL1qzZo0qVKigvn37KigoSIMHD+amLADsgrwGSobMdi1c040y79KlS/rss8+0YsUKff3117r99tv1448/OroswOldvnxZn3/+uV577TUdOXKEI1AA7Iq8BkqOzC7b+MowlHnly5dXTEyMLly4oDNnzujYsWOOLglwesnJyVq5cqU++ugjHT58WE2bNnV0SQBcHHkNlAyZXfZxejnKrEuXLikuLk6dO3fWP/7xD82ePVsPPfSQjh496ujSAKeUmZmpxYsXq3379goNDdX8+fP14IMP6sSJE9q1a5ejywPgoshrwHpktmvh9HKUSb1799a6detUvnx59erVS7GxsYqKinJ0WYBTK1eunCpXrqxHH31UsbGxioyMdHRJAFwceQ2UDJntWji9HGWSu7u7/vOf/ygmJkbu7u6OLgcoE9auXat27drJzY2TnACUDvIaKBky27VwpBsAAAAAADvhSDfKjLlz52rw4MHy8fHR3Llzbzh3+PDhpVQV4NwaN26shIQEVa5cWY0aNZLJZCpy7oEDB0qxMgCuirwGSobMdl003SgzZs2apdjYWPn4+GjWrFlFzjOZTIQ48H+6desmb29v8883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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "lr_smote = LogisticRegression(max_iter=1000, random_state=42)\n",
        "\n",
        "smote_result = evaluate_model(\n",
        "    \"Logistic Regression - SMOTE\",\n",
        "    lr_smote,\n",
        "    X_train_smote,\n",
        "    X_test_tfidf,\n",
        "    y_train_smote,\n",
        "    y_test\n",
        ")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "R_eqw4-hIOK5",
        "outputId": "8fe73427-c001-423c-98fa-951840b6470c"
      },
      "execution_count": 34,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "============================================================\n",
            "Logistic Regression - SMOTE\n",
            "============================================================\n",
            "Accuracy: 0.8436\n",
            "Precision (Negative): 0.6576\n",
            "Recall (Negative): 0.6722\n",
            "F1 Score (Negative): 0.6648\n",
            "\n",
            "Classification Report:\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "    negative       0.66      0.67      0.66       180\n",
            "    positive       0.90      0.90      0.90       600\n",
            "\n",
            "    accuracy                           0.84       780\n",
            "   macro avg       0.78      0.78      0.78       780\n",
            "weighted avg       0.84      0.84      0.84       780\n",
            "\n",
            "\n",
            "Confusion Matrix:\n",
            "[[121  59]\n",
            " [ 63 537]]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "original_lr_result = results_tfidf[0].copy()\n",
        "original_lr_result['Model'] = 'Original Imbalanced'\n",
        "\n",
        "comparison_df = pd.DataFrame([\n",
        "    original_lr_result,\n",
        "    ros_result,\n",
        "    rus_result,\n",
        "    smote_result\n",
        "])\n",
        "\n",
        "comparison_df = comparison_df[\n",
        "    ['Model', 'Accuracy', 'Precision', 'Recall', 'F1 Score']\n",
        "]\n",
        "\n",
        "comparison_df.round(4)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 174
        },
        "id": "yapx4zQvIbKa",
        "outputId": "5db5c7a9-2225-4cb4-b44b-ab9aafe266d3"
      },
      "execution_count": 35,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                                        Model  Accuracy  Precision  Recall  \\\n",
              "0                         Original Imbalanced    0.8244     0.9216  0.2611   \n",
              "1   Logistic Regression - Random Oversampling    0.8500     0.6740  0.6778   \n",
              "2  Logistic Regression - Random Undersampling    0.7795     0.5136  0.8389   \n",
              "3                 Logistic Regression - SMOTE    0.8436     0.6576  0.6722   \n",
              "\n",
              "   F1 Score  \n",
              "0    0.4069  \n",
              "1    0.6759  \n",
              "2    0.6371  \n",
              "3    0.6648  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-ce78c834-0991-4c85-adda-3fbfcde01ac0\" 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>Model</th>\n",
              "      <th>Accuracy</th>\n",
              "      <th>Precision</th>\n",
              "      <th>Recall</th>\n",
              "      <th>F1 Score</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Original Imbalanced</td>\n",
              "      <td>0.8244</td>\n",
              "      <td>0.9216</td>\n",
              "      <td>0.2611</td>\n",
              "      <td>0.4069</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Logistic Regression - Random Oversampling</td>\n",
              "      <td>0.8500</td>\n",
              "      <td>0.6740</td>\n",
              "      <td>0.6778</td>\n",
              "      <td>0.6759</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Logistic Regression - Random Undersampling</td>\n",
              "      <td>0.7795</td>\n",
              "      <td>0.5136</td>\n",
              "      <td>0.8389</td>\n",
              "      <td>0.6371</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Logistic Regression - SMOTE</td>\n",
              "      <td>0.8436</td>\n",
              "      <td>0.6576</td>\n",
              "      <td>0.6722</td>\n",
              "      <td>0.6648</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-ce78c834-0991-4c85-adda-3fbfcde01ac0')\"\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-ce78c834-0991-4c85-adda-3fbfcde01ac0 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-ce78c834-0991-4c85-adda-3fbfcde01ac0');\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>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"comparison_df\",\n  \"rows\": 4,\n  \"fields\": [\n    {\n      \"column\": \"Model\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 4,\n        \"samples\": [\n          \"Logistic Regression - Random Oversampling\",\n          \"Logistic Regression - SMOTE\",\n          \"Original Imbalanced\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Accuracy\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.03183293629769855,\n        \"min\": 0.7795,\n        \"max\": 0.85,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.85,\n          0.8436,\n          0.8244\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Precision\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.16936127066127013,\n        \"min\": 0.5136,\n        \"max\": 0.9216,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.674,\n          0.6576,\n          0.9216\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Recall\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.2466894809269337,\n        \"min\": 0.2611,\n        \"max\": 0.8389,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.6778,\n          0.6722,\n          0.2611\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"F1 Score\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.127233836563497,\n        \"min\": 0.4069,\n        \"max\": 0.6759,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.6759,\n          0.6648,\n          0.4069\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 35
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "plot_df = comparison_df.set_index('Model')[\n",
        "    ['Accuracy', 'Recall', 'F1 Score']\n",
        "]\n",
        "\n",
        "plot_df.plot(\n",
        "    kind='bar',\n",
        "    figsize=(11, 5)\n",
        ")\n",
        "\n",
        "plt.title('Performance Before and After Handling Class Imbalance')\n",
        "plt.xlabel('Method')\n",
        "plt.ylabel('Score')\n",
        "plt.ylim(0, 1)\n",
        "plt.xticks(rotation=20, ha='right')\n",
        "plt.legend(title='Metric')\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 507
        },
        "id": "hhj2Syi0Infy",
        "outputId": "01d48f54-def9-458f-8b71-33b394252d38"
      },
      "execution_count": 36,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1100x500 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAABEEAAAHqCAYAAADrglBeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAwcpJREFUeJzs3XlcTfn/B/DXbbultGlToghZEsoSkSWyy74Mshs0Yx3bd+xLGGM39jD23WQZ+05ky75FhKEiSou2+/n94XfPuCpDqiv39Xw8enA/93POeZ97+5zufZ/PIhNCCBARERERERERfee01B0AEREREREREVFeYBKEiIiIiIiIiDQCkyBEREREREREpBGYBCEiIiIiIiIijcAkCBERERERERFpBCZBiIiIiIiIiEgjMAlCRERERERERBqBSRAiIiIiIiIi0ghMghARERERERGRRmAShIgon/ntt99QvHhxaGtro2LFiuoOhzIRHx+P3r17w8bGBjKZDIMHD1Z3SHlqwoQJkMlkObrPtLQ0jBgxAvb29tDS0oKvr2+O7v97sHr1ashkMjx69Egqq1OnDurUqSM9fvToEWQyGVavXp3n8X2pj2P/Xh0/fhwymQzbtm3LsX3mRhskIvpeMAlCRPSVlF88lD/6+vooVaoU/P39ERkZmaPHOnjwIEaMGIGaNWti1apVmDZtWo7uX9N0795d5b3T0dGBvb09OnbsiFu3bmV7v9OmTcPq1avRv39/rF27Fl27ds3BqL9P7du3h0wmw8iRIzN9PjAwEL/99hvatm2LNWvWYMiQIbh16xYmTJig8qU/tynb+8WLFzN9vk6dOihfvnyexZMfRUZGYvjw4XB2dkaBAgVgaGgINzc3TJkyBW/evFF3eJ+UGwkLIiLKWzrqDoCI6HsxadIkODo64t27dzh9+jQWL16Mffv24caNGyhQoECOHOPo0aPQ0tLCypUroaenlyP71HRyuRwrVqwA8L63wYMHD7BkyRLs378ft27dgq2t7Rfv8+jRo6hevTrGjx+f0+F+l+Li4rB79244ODhg48aNmD59eoa72EePHoWdnR3mzJkjlW3btg0TJ05EnTp14ODgkMdR50/FihVDUlISdHV11XL8CxcuoEmTJoiPj0eXLl3g5uYGALh48SKmT5+OkydP4uDBg2qJjYiINAOTIEREOaRx48Zwd3cH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jxZWVlbCwMBANG3aVGXZWyHeL0Ht7e0tjIyMhIWFhejTp4+0fPWH72lm711+vEYTEeUGmRC5PNMWEREREX23du3ahVatWuH06dOoWbOmusMhIiL6JCZBiIiIiOizJCUlqaxclJ6ejoYNG+LixYt48eJFtla2IiIiykucE4SIiIiIPstPP/2EpKQkeHh4IDk5GTt27MDZs2cxbdo0JkCIiChfYE8QIiIiIvosGzZswO+//46wsDC8e/cOTk5O6N+/v1onFCUiIvoSal0i9+TJk2jevDlsbW0hk8k+a5m+48ePo3LlypDL5XBycsLq1atzPU4iIiIiAjp37oxLly4hNjYWycnJuHnzJhMgRESUr6g1CZKQkABXV9fPXl8+PDwcTZs2Rd26dREaGorBgwejd+/eOHDgQC5HSkRERERERET53TczHEYmk2Hnzp3w9fXNss7IkSOxd+9e3LhxQyrr2LEj3rx5g/379+dBlERERERERESUX+WriVGDg4Ph7e2tUubj44PBgwdnuU1ycjKSk5OlxwqFAjExMShUqBBkMlluhUpEREREREREeUQIgbdv38LW1hZaWlkPeslXSZAXL17A2tpapcza2hpxcXEZlmxTCggIwMSJE/MqRCIiIiIiIiJSkydPnqBIkSJZPp+vkiDZMXr0aAwdOlR6HBsbi6JFi+LJkycwNjZWY2RERERERERElBPi4uJgb2+PggULfrJevkqC2NjYIDIyUqUsMjISxsbGWa5NL5fLIZfLM5QbGxszCUJERERERET0HfmvaS/UujrMl/Lw8MCRI0dUyg4dOgQPDw81RURERERERERE+YVakyDx8fEIDQ1FaGgogPdL4IaGhiIiIgLA+6Es3bp1k+r/+OOPePjwIUaMGIE7d+7gjz/+wJYtWzBkyBB1hE9ERERERERE+YhakyAXL15EpUqVUKlSJQDA0KFDUalSJYwbNw4A8Pz5cykhAgCOjo7Yu3cvDh06BFdXV/z+++9YsWIFfHx81BI/EREREREREeUfMiGEUHcQeSkuLg4mJiaIjY3lnCBEREREREQaRqFQICUlRd1h0BfS1dWFtrZ2ls9/7nf9fDUxKhEREREREVF2paSkIDw8HAqFQt2hUDaYmprCxsbmPyc//RQmQYiIiIiIiOi7J4TA8+fPoa2tDXt7e2hp5at1QjSaEAKJiYmIiooCABQuXDjb+2IShIiIiIiIiL57aWlpSExMhK2tLQoUKKDucOgLGRgYAACioqJgZWX1yaExn8LUFxEREREREX330tPTAQB6enpqjoSyS5m8Sk1NzfY+mAQhIiIiIiIijfE180mQeuXEe8ckCBERERERERFpBCZBiIiIiIiIiDSMTCbDrl271B1GnmMShIiIiIiIiEgNunfvDplMhh9//DHDcwMHDoRMJkP37t0/a1/Hjx+HTCbDmzdvPqv+8+fP0bhx4y+I9vvAJAgRERERERGRmtjb22PTpk1ISkqSyt69e4cNGzagaNGiOX68lJQUAICNjQ3kcnmO7/9bxyQIERERERERkZpUrlwZ9vb22LFjh1S2Y8cOFC1aFJUqVZLKFAoFAgIC4OjoCAMDA7i6umLbtm0AgEePHqFu3boAADMzM5UeJHXq1IG/vz8GDx4MCwsL+Pj4AMg4HObp06fo1KkTzM3NYWhoCHd3d5w/fz6Xzz7v6ag7ACIiIiIiIiJN1rNnT6xatQo//PADACAwMBA9evTA8ePHpToBAQFYt24dlixZgpIlS+LkyZPo0qULLC0t4enpie3bt6NNmza4e/cujI2NYWBgIG27Zs0a9O/fH2fOnMn0+PHx8fDy8oKdnR2CgoJgY2ODy5cvQ6FQ5Op5qwOTIERERERERERq1KVLF4wePRqPHz8GAJw5cwabNm2SkiDJycmYNm0aDh8+DA8PDwBA8eLFcfr0aSxduhReXl4wNzcHAFhZWcHU1FRl/yVLlsTMmTOzPP6GDRsQHR2NCxcuSPtxcnLK4bP8NjAJQkRERERERKRGlpaWaNq0KVavXg0hBJo2bQoLCwvp+bCwMCQmJqJBgwYq26WkpKgMmcmKm5vbJ58PDQ1FpUqVpATI94xJECIiIiIiIiI169mzJ/z9/QEAixYtUnkuPj4eALB3717Y2dmpPPc5k5saGhp+8vkPh85875gEISIiIiIiIlKzRo0aISUlBTKZTJq8VKls2bKQy+WIiIiAl5dXptvr6ekBANLT07/42BUqVMCKFSsQExPz3fcG4eowRERERERERGqmra2N27dv49atW9DW1lZ5rmDBghg+fDiGDBmCNWvW4MGDB7h8+TIWLFiANWvWAACKFSsGmUyGPXv2IDo6Wuo98jk6deoEGxsb+Pr64syZM3j48CG2b9+O4ODgHD3HbwGTIERERERERETfAGNjYxgbG2f63OTJkzF27FgEBASgTJkyaNSoEfbu3QtHR0cAgJ2dHSZOnIhRo0bB2tpaGlrzOfT09HDw4EFYWVmhSZMmcHFxwfTp0zMkY74HMiGEUHcQeSkuLg4mJiaIjY3N8peLiIiIiIiIvi/v3r1DeHg4HB0doa+vr+5wKBs+9R5+7nd99gQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZgEoSIiIiIiIiINAKTIERERERERESkEZgEISIiIiIiIiKNwCQIEREREREREWkEHXUHQERERERERKQuDqP25unxHk1vmq3tgoOD4enpiUaNGmHv3ryN+XvCniBERERERERE37iVK1fip59+wsmTJ/HPP/+oLY6UlBS1HTsnMAlCRERERERE9A2Lj4/H5s2b0b9/fzRt2hSrV69WeX737t2oUqUK9PX1YWFhgVatWknPJScnY+TIkbC3t4dcLoeTkxNWrlwJAFi9ejVMTU1V9rVr1y7IZDLp8YQJE1CxYkWsWLECjo6O0NfXBwDs378fnp6eMDU1RaFChdCsWTM8ePBAZV9Pnz5Fp06dYG5uDkNDQ7i7u+P8+fN49OgRtLS0cPHiRZX6c+fORbFixaBQKL72JcsSkyBERERERERE37AtW7bA2dkZpUuXRpcuXRAYGAghBABg7969aNWqFZo0aYIrV67gyJEjqFq1qrRtt27dsHHjRsyfPx+3b9/G0qVLYWRk9EXHDwsLw/bt27Fjxw6EhoYCABISEjB06FBcvHgRR44cgZaWFlq1aiUlMOLj4+Hl5YVnz54hKCgIV69exYgRI6BQKODg4ABvb2+sWrVK5TirVq1C9+7doaWVe6kKzglCRERERERE9A1buXIlunTpAgBo1KgRYmNjceLECdSpUwdTp05Fx44dMXHiRKm+q6srAODevXvYsmULDh06BG9vbwBA8eLFv/j4KSkp+PPPP2FpaSmVtWnTRqVOYGAgLC0tcevWLZQvXx4bNmxAdHQ0Lly4AHNzcwCAk5OTVL9379748ccfMXv2bMjlcly+fBnXr1/HX3/99cXxfQn2BCEiIiIiIiL6Rt29exchISHo1KkTAEBHRwcdOnSQhrSEhoaifv36mW4bGhoKbW1teHl5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+Omnn9C1a1dpKExmfvjhB1hYWKBly5Y4deoUwsPDcfz4cfz88894+vRpjr4uWWEShIiIiIiIiCifunjxIipVqoRKlSoBAIYOHYpKlSph3LhxWW7j4+OD3bt3o3nz5ihVqhT8/Pzg7OyMgwcPQkfn/awZY8eOxbBhwzBu3DiUKVMGHTp0QFRUFACgQIECOHDgAGJiYlClShW0bdsW9evXx8KFCz8Za4ECBXDy5EkULVoUrVu3RpkyZdCrVy+8e/cOxsbGOfSKfJpMCCHy5EjfiLi4OJiYmCA2NjbPXuRvjcOoveoO4bM8mt5U3SEQfVfY9ok0T35p9wDwSL+zukP4PBNi1R0B0X/KL20/r//mv3v3DuHh4XB0dIS+vn6eHptyxqfew8/9rs+eIERERERERESkEZgEISIiIiIiIiKNwCQIEREREREREWkEJkGIiIiIiIiISCMwCUJEREREREQaQ8PWBvmu5MR7xyQIERERERERffe0tbUBACkpKWqOhLIrMTERAKCrq5vtfejkVDBERERERERE3yodHR0UKFAA0dHR0NXVhZYW+wTkF0IIJCYmIioqCqamplJCKzuYBCEiIiIiIqLvnkwmQ+HChREeHo7Hjx+rOxzKBlNTU9jY2HzVPpgEISKib8sEE3VH8PkmxKo7AiIiIvoCenp6KFmyJIfE5EO6urpf1QNEiUkQIiKibHJZ46LuED7Ldb/r6g6BiIjom6GlpQV9fX11h0FqwiQIERERERER5T32/iQ14EwwRERERERERKQR2BOEiIiIiIiI6BM4BPb7wZ4gRERERERERKQRmAQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUbQUXcARERERET5hcsaF3WH8Nmu+11XdwhERN8c9gQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZQexJk0aJFcHBwgL6+PqpVq4aQkJBP1n/z5g0GDhyIwoULQy6Xo1SpUti3b18eRUtERERERERE+ZWOOg++efNmDB06FEuWLEG1atUwd+5c+Pj44O7du7CysspQPyUlBQ0aNICVlRW2bdsGOzs7PH78GKampnkfPBERERERERHlK2pNgsyePRt9+vRBjx49AABLlizB3r17ERgYiFGjRmWoHxgYiJiYGJw9exa6uroAAAcHh7wMmYiIiIiIiIjyKbUNh0lJScGlS5fg7e39bzBaWvD29kZwcHCm2wQFBcHDwwMDBw6EtbU1ypcvj2nTpiE9PT3L4yQnJyMuLk7lh4iIiIiIiIg0j9qSIC9fvkR6ejqsra1Vyq2trfHixYtMt3n48CG2bduG9PR07Nu3D2PHjsXvv/+OKVOmZHmcgIAAmJiYSD/29vY5eh5ERERERERElD+ofWLUL6FQKGBlZYVly5bBzc0NHTp0wP/+9z8sWbIky21Gjx6N2NhY6efJkyd5GDERERERERERfSvUNieIhYUFtLW1ERkZqVIeGRkJGxubTLcpXLgwdHV1oa2tLZWVKVMGL168QEpKCvT09DJsI5fLIZfLczZ4IiIiIiIiIsp31NYTRE9PD25ubjhy5IhUplAocOTIEXh4eGS6Tc2aNREWFgaFQiGV3bt3D4ULF840AUJEREREREREpKTW4TBDhw7F8uXLsWbNGty+fRv9+/dHQkKCtFpMt27dMHr0aKl+//79ERMTg0GDBuHevXvYu3cvpk2bhoEDB6rrFIiIiIiIiIgon1DrErkdOnRAdHQ0xo0bhxcvXqBixYrYv3+/NFlqREQEtLT+zdPY29vjwIEDGDJkCCpUqAA7OzsMGjQII0eOVNcpEBEREREREVE+odYkCAD4+/vD398/0+eOHz+eoczDwwPnzp3L5aiIiIiIiIiI6HuTr1aHISIiIiIiIiLKLiZBiIiIiIiIiEgjMAlCRERERERERBqBSRAiIiIiIiIi0ghMghARERERERGRRmAShIiIiIiIiIg0wlclQVJSUnD37l2kpaXlVDxERERERERERLkiW0mQxMRE9OrVCwUKFEC5cuUQEREBAPjpp58wffr0HA2QiIiIiIiIiCgnZCsJMnr0aFy9ehXHjx+Hvr6+VO7t7Y3NmzfnWHBERERERERERDlFJzsb7dq1C5s3b0b16tUhk8mk8nLlyuHBgwc5FhwRERERERERUU7JVk+Q6OhoWFlZZShPSEhQSYoQEREREREREX0rspUEcXd3x969e6XHysTHihUr4OHhkTORERERERERERHloGwNh5k2bRoaN26MW7duIS0tDfPmzcOtW7dw9uxZnDhxIqdjJCIiIiIiIiL6atnqCeLp6YmrV68iLS0NLi4uOHjwIKysrBAcHAw3N7ecjpGIiIiIiIiI6Kt9cU+Q1NRU9OvXD2PHjsXy5ctzIyYiIiIiIiIiohz3xT1BdHV1sX379tyIhYiIiIiIiIgo12RrOIyvry927dqVw6EQEREREREREeWebE2MWrJkSUyaNAlnzpyBm5sbDA0NVZ7/+eefcyQ4IiIiIiIiIqKckq0kyMqVK2FqaopLly7h0qVLKs/JZDImQYiIiIiIiIjom5OtJEh4eHhOx0FERERERERElKuyNSfIh4QQEELkRCxERERERERERLkm20mQP//8Ey4uLjAwMICBgQEqVKiAtWvX5mRsREREREREREQ5JlvDYWbPno2xY8fC398fNWvWBACcPn0aP/74I16+fIkhQ4bkaJBERERERERERF8rW0mQBQsWYPHixejWrZtU1qJFC5QrVw4TJkxgEoSIiIiIiIiIvjnZGg7z/Plz1KhRI0N5jRo18Pz5868OioiIiIiIiIgop2UrCeLk5IQtW7ZkKN+8eTNKliz51UEREREREREREeW0bA2HmThxIjp06ICTJ09Kc4KcOXMGR44cyTQ5QkRERERERESkbtnqCdKmTRucP38eFhYW2LVrF3bt2gULCwuEhISgVatWOR0jEREREREREdFXy1ZPEABwc3PDunXrcjIWIiIiIiIiIqJck62eIPv27cOBAwcylB84cAB///33VwdFRERERERERJTTspUEGTVqFNLT0zOUCyEwatSorw6KiIiIiIiIiCinZSsJcv/+fZQtWzZDubOzM8LCwr46KCIiIiIiIiKinJatJIiJiQkePnyYoTwsLAyGhoZfHRQRERERERERUU7LVhKkZcuWGDx4MB48eCCVhYWFYdiwYWjRokWOBUdERERERERElFOylQSZOXMmDA0N4ezsDEdHRzg6OsLZ2RmFChXCrFmzcjpGIiIiIiIiIqKvlq0lck1MTHD27FkcOnQIV69ehYGBAVxdXVGrVq2cjo+IiIiIiIiIKEd8UU+Q4OBg7NmzBwAgk8nQsGFDWFlZYdasWWjTpg369u2L5OTkXAmUiIiIiIiIiOhrfFESZNKkSbh586b0+Pr16+jTpw8aNGiAUaNGYffu3QgICMjxIImIiIiIiIiIvtYXJUFCQ0NRv3596fGmTZtQtWpVLF++HEOHDsX8+fOxZcuWHA+SiIiIiIiIiOhrfVES5PXr17C2tpYenzhxAo0bN5YeV6lSBU+ePMm56IiIiIiIiIiIcsgXJUGsra0RHh4OAEhJScHly5dRvXp16fm3b99CV1c3ZyMkIiIiIiIiIsoBX5QEadKkCUaNGoVTp05h9OjRKFCggMqKMNeuXUOJEiVyPEgiIiIiIiIioq/1RUvkTp48Ga1bt4aXlxeMjIywZs0a6OnpSc8HBgaiYcOGOR4kEREREREREdHX+qIkiIWFBU6ePInY2FgYGRlBW1tb5fmtW7fCyMgoRwMkIiIiIiIiIsoJX5QEUTIxMcm03Nzc/KuCISIiIiIiIiLKLV80JwgRERERERERUX7FJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQa4ZtIgixatAgODg7Q19dHtWrVEBIS8lnbbdq0CTKZDL6+vrkbIBERERERERHle2pPgmzevBlDhw7F+PHjcfnyZbi6usLHxwdRUVGf3O7Ro0cYPnw4atWqlUeREhEREREREVF+lq0lcnPS7Nmz0adPH/To0QMAsGTJEuzduxeBgYEYNWpUptukp6fjhx9+wMSJE3Hq1Cm8efMmDyMmyshljYu6Q/gs1/2uqzsEIiIiIiIitVFrT5CUlBRcunQJ3t7eUpmWlha8vb0RHByc5XaTJk2ClZUVevXq9Z/HSE5ORlxcnMoPEREREREREWketSZBXr58ifT0dFhbW6uUW1tb48WLF5luc/r0aaxcuRLLly//rGMEBATAxMRE+rG3t//quImIiIiIiIgo/1H7nCBf4u3bt+jatSuWL18OCwuLz9pm9OjRiI2NlX6ePHmSy1ESERERERER0bdIrXOCWFhYQFtbG5GRkSrlkZGRsLGxyVD/wYMHePToEZo3by6VKRQKAICOjg7u3r2LEiVKqGwjl8shl8tzIXoiIiIiIiIiyk/U2hNET08Pbm5uOHLkiFSmUChw5MgReHh4ZKjv7OyM69evIzQ0VPpp0aIF6tati9DQUA51ISIiIiIiIqIsqX11mKFDh8LPzw/u7u6oWrUq5s6di4SEBGm1mG7dusHOzg4BAQHQ19dH+fLlVbY3NTUFgAzlREREREREREQfUnsSpEOHDoiOjsa4cePw4sULVKxYEfv375cmS42IiICWVr6auoSIiIiIiIiIvkFqT4IAgL+/P/z9/TN97vjx45/cdvXq1TkfEBERERERERF9d9jFgoiIiIiIiIg0ApMgRERERERERKQRmAQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZgEoSIiIiIiIiINAKTIERERERERESkEZgEISIiIiIiIiKNwCQIEREREREREWkEJkGIiIiIiIiISCMwCUJEREREREREGoFJECIiIiIiIiLSCEyCEBEREREREZFGYBKEiIiIiIiIiDQCkyBEREREREREpBGYBCEiIiIiIiIijcAkCBERERERERFpBCZBiIiIiIiIiEgjMAlCRERERERERBqBSRAiIiIiIiIi0ghMghARERERERGRRmAShIiIiIiIiIg0ApMgRERERERERKQRmAQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZgEoSIiIiIiIiINAKTIERERERERESkEXTUHQBRliaYqDuCz+dYVN0REBERERER0X9gTxAiIiIiIiIi0ghMghARERERERGRRmAShIiIiIiIiIg0ApMgRERERERERKQRmAQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZgEoSIiIiIiIiINAKTIERERERERESkEZgEISIiIiIiIiKN8E0kQRYtWgQHBwfo6+ujWrVqCAkJybLu8uXLUatWLZiZmcHMzAze3t6frE9EREREREREBHwDSZDNmzdj6NChGD9+PC5fvgxXV1f4+PggKioq0/rHjx9Hp06dcOzYMQQHB8Pe3h4NGzbEs2fP8jhyIiIiIiIiIspP1J4EmT17Nvr06YMePXqgbNmyWLJkCQoUKIDAwMBM669fvx4DBgxAxYoV4ezsjBUrVkChUODIkSN5HDkRERERERER5SdqTYKkpKTg0qVL8Pb2lsq0tLTg7e2N4ODgz9pHYmIiUlNTYW5unlthEhEREREREdF3QEedB3/58iXS09NhbW2tUm5tbY07d+581j5GjhwJW1tblUTKh5KTk5GcnCw9jouLy37ARERERERERJRvqX04zNeYPn06Nm3ahJ07d0JfXz/TOgEBATAxMZF+7O3t8zhKIiIiIiIiIvoWqDUJYmFhAW1tbURGRqqUR0ZGwsbG5pPbzpo1C9OnT8fBgwdRoUKFLOuNHj0asbGx0s+TJ09yJHYiIiIiIiIiyl/UmgTR09ODm5ubyqSmyklOPTw8stxu5syZmDx5Mvbv3w93d/dPHkMul8PY2Fjlh4iIiIiIiIg0j1rnBAGAoUOHws/PD+7u7qhatSrmzp2LhIQE9OjRAwDQrVs32NnZISAgAAAwY8YMjBs3Dhs2bICDgwNevHgBADAyMoKRkZHazoOIiIiIiIiIvm1qT4J06NAB0dHRGDduHF68eIGKFSti//790mSpERER0NL6t8PK4sWLkZKSgrZt26rsZ/z48ZgwYUJehk5ERERERERE+YjakyAA4O/vD39//0yfO378uMrjR48e5X5ARERERERERPTdyderwxARERERERERfS4mQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZgEoSIiIiIiIiINAKTIERERERERESkEZgEISIiIiIiIiKNwCQIEREREREREWkEJkGIiIiIiIiISCMwCUJEREREREREGoFJECIiIiIiIiLSCEyCEBEREREREZFGYBKEiIiIiIiIiDQCkyBEREREREREpBGYBCEiIiIiIiIijcAkCBERERERERFpBCZBiIiIiIiIiEgjMAlCRERERERERBqBSRAiIiIiIiIi0ghMghARERERERGRRmAShIiIiIiIiIg0ApMgRERERERERKQRmAQhIiIiIiIiIo3AJAgRERERERERaQQmQYiIiIiIiIhIIzAJQkREREREREQagUkQIiIiIiIiItIITIIQERERERERkUZgEoSIiIiIiIiINAKTIERERERERESkEZgEISIiIiIiIiKNwCQIEREREREREWkEJkGIiIiIiIiISCMwCUJEREREREREGoFJECIiIiIiIiLSCEyCEBEREREREZFGYBKEiIiIiIiIiDQCkyBEREREREREpBGYBCEiIiIiIiIijcAkCBERERERERFpBCZBiIiIiIiIiEgjMAlCRERERERERBqBSRAiIiIiIiIi0ghMghARERERERGRRmAShIiIiIiIiIg0ApMgRERERERERKQRmAQhIiIiIiIiIo3AJAgRERERERER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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import ConfusionMatrixDisplay\n",
        "\n",
        "# Predictions BEFORE balancing\n",
        "y_pred_before = lr.predict(X_test_tfidf)\n",
        "\n",
        "# Predictions AFTER Random Oversampling\n",
        "y_pred_after = lr_ros.predict(X_test_tfidf)\n",
        "\n",
        "# Confusion matrices\n",
        "cm_before = confusion_matrix(\n",
        "    y_test,\n",
        "    y_pred_before,\n",
        "    labels=['negative', 'positive']\n",
        ")\n",
        "\n",
        "cm_after = confusion_matrix(\n",
        "    y_test,\n",
        "    y_pred_after,\n",
        "    labels=['negative', 'positive']\n",
        ")\n",
        "\n",
        "fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n",
        "\n",
        "ConfusionMatrixDisplay(\n",
        "    confusion_matrix=cm_before,\n",
        "    display_labels=['Negative', 'Positive']\n",
        ").plot(ax=axes[0], colorbar=False)\n",
        "\n",
        "axes[0].set_title('Before Balancing')\n",
        "\n",
        "ConfusionMatrixDisplay(\n",
        "    confusion_matrix=cm_after,\n",
        "    display_labels=['Negative', 'Positive']\n",
        ").plot(ax=axes[1], colorbar=False)\n",
        "\n",
        "axes[1].set_title('After Random Oversampling')\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 407
        },
        "id": "aJM6CUBvI2HD",
        "outputId": "b3b0f0d7-9509-4dfb-892b-a1838ecf0c4f"
      },
      "execution_count": 37,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1000x400 with 2 Axes>"
            ],
            "image/png": "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b2/j8OHDduOjRo0ynJ2djdOnT9/0+TZo0CDL51u+fHnj+PHjdusmJiZmuv/WrVsNSca8efNsY+vXrzckGevXr7/pfaOjow2LxWKcOnXKNtatWzdDkvHyyy/brXvfffcZNWrUsN1et26dIckYPHhwpu1arVbbf4eFhRndunWz3c74923cuLHdesOGDTOcnZ2Ny5cvG4ZhGL/99pvh4uJitG7d2m7b48aNMyTZbRMA7kY7d+40JBlr1qwxDCP9s7F48eLGkCFD7NYbO3asIcn4448/bGN//PGHIckYO3Zspu02atTIqFy5spGUlGQbs1qtRu3atY0yZcrYxjI+b+vWrWukpqbest4TJ04Ykozx48cbf/zxh/Hbb78ZmzZtMv7zn/8YkozPPvvMbv2s+kpUVJRRqlQpu7GM/vndd9/Zxs6fP2+4u7sbw4cPt40NHTrUkGRs27bNbj1/f39DknHixAnbmJubm9G0aVMjLS3Ntu57771nSDI+/vhj21hGj50/f75t7ODBg4Ykw8nJyfjhhx9s46tWrTIkGbNnz77p61StWjXD39//puu8/fbbhiRj2bJlhmEYxsyZMw1Jxt69e+3Wq1ChgvHwww/bbmd3nyLj38rPz884f/683bqtWrUyKlaseNP6srs/kfEeioqKsuvZDz74oGGxWIx+/frZxlJTU43ixYsbDRo0sI1l1Onp6WmcOXPGNr5t2zZDkjFs2DDbWMb/B9djH8Ie00FhCu+//77WrFmjNWvW6H//+58aNmyoXr166fPPP7et89lnn8nf319NmjTRn3/+afurUaOGfHx8tH79+ps+xsqVKyVJzzzzjN348OHDJUlfffWV3XjJkiUVFRVlN/bZZ5+pXr16CgwMtKuhcePGSktL03fffXfL5xoeHm57rl9//bUmT56suLg4NW/e3G56w/VHQ1NSUnThwgVFREQoICBAP/30000f4/r7Xr16VX/++adq164twzD0888/Z1q/X79+drfr1aun48eP224vWbJEFosl01FNSZku8ZyVPn362K1Xr149paWl6dSpU5Kkb7/9VqmpqRowYIDd/QYNGnTLbQPA3SAmJkZFihRRw4YNJaV/NrZv314LFizINL0+uy5evKh169apXbt2unLliq3nXLhwQVFRUTpy5IjOnj1rd5/evXvL2dk5248xduxYBQUFKTg4WPXq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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Conclusion\n",
        "\n",
        "The original dataset was imbalanced, containing 2,000 positive samples and 600 negative samples.\n",
        "\n",
        "After splitting the dataset, the training set contained 1,400 positive samples and 420 negative samples. Different text representation techniques and classification models were evaluated.\n",
        "\n",
        "Before handling class imbalance, the models showed relatively high accuracy, but their ability to detect the minority negative class was limited. For example, Logistic Regression with TF-IDF achieved an accuracy of 82.44%, but the recall for the negative class was only 26.11%.\n",
        "\n",
        "Three techniques were applied to handle class imbalance: Random Oversampling, Random Undersampling, and SMOTE.\n",
        "\n",
        "Random Oversampling provided the best overall balance, achieving an accuracy of 85.00%, a recall of 67.78%, and an F1-score of 67.59% for the negative class.\n",
        "\n",
        "Random Undersampling achieved the highest negative-class recall of 83.89%, but its overall accuracy decreased to 77.95%.\n",
        "\n",
        "SMOTE also improved minority-class detection, achieving a recall of 67.22% and an F1-score of 66.48%.\n",
        "\n",
        "The confusion matrix further showed that Random Oversampling increased the number of correctly classified negative samples from 47 to 122.\n",
        "\n",
        "Therefore, Random Oversampling was selected as the most balanced approach for this dataset because it improved minority-class detection while maintaining good overall accuracy."
      ],
      "metadata": {
        "id": "GcqsVcj1JMN5"
      }
    }
  ]
}