{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<h1>Sentiment Analysis Model</h1>\n", "<h5>Created by: Cristopher Ian Artacho</h5>\n", "<h5>BSCS 3A</h5>\n", "\n", "<h5>Using a dataset from kaggle, the aim of this project is to train a model that could identify a user statement as \"Positive\", \"Negative\", or \"Neutral\".</h5>" ] }, { "cell_type": "code", "execution_count": 265, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[nltk_data] Downloading package stopwords to C:\\Users\\Cristopher\n", "[nltk_data] Artacho\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import accuracy_score, classification_report, confusion_matrix, f1_score\n", "import nltk\n", "\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.naive_bayes import MultinomialNB\n", "\n", "from nltk.corpus import stopwords\n", "import re\n", "\n", "import joblib\n", "\n", "nltk.download('stopwords')\n", "stop_words = set(stopwords.words('english'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<h1>Data Exploration and Preprocessing</h1>\n", "<h5>In this process, we will get to understand our data, and the dataset. In case that there are missing values, noise, and/or errors in the data, we will need to clean it in order to reduce the complexity of the data, allowing the model to better understand the dataset. </h5>" ] }, { "cell_type": "code", "execution_count": 266, "metadata": {}, "outputs": [], "source": [ "# Load dataset\n", "df = pd.read_csv(\"sentiment_analysis.csv\") # Replace with your actual dataset path" ] }, { "cell_type": "code", "execution_count": 267, "metadata": {}, "outputs": [], "source": [ "# Keep only relevant columns\n", "df = df[[\"text\", \"sentiment\"]]" ] }, { "cell_type": "code", "execution_count": 268, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'pandas.core.frame.DataFrame'>\n", "RangeIndex: 499 entries, 0 to 498\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 text 499 non-null object\n", " 1 sentiment 499 non-null object\n", "dtypes: object(2)\n", "memory usage: 7.9+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 269, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "394\n", "3\n" ] } ], "source": [ "for col in df:\n", " print(df[col].nunique())" ] }, { "cell_type": "code", "execution_count": 270, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sentiment\n", "neutral 199\n", "positive 166\n", "negative 134\n", "Name: count, dtype: int64" ] }, "execution_count": 270, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['sentiment'].value_counts()" ] }, { "cell_type": "code", "execution_count": 271, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9M0lEQVR4nO3de1xUdf7H8fcgMoBcFAUBRVC8l5KaIpqCl0Q0N0srjTZv6dYPNSU347d5wXIpy0vrWm43L6XldlHT0jRTTEXzsmqmkbKY7gpqJiKayOX8/ujh/JoALwjOcHo9H4/zeHC+3+98z2fGEd+e850zFsMwDAEAAJiUi6MLAAAAqEyEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQCSpKFDhyosLMzRZTjcwoULZbFYdPTo0Uo/1m9f86NHj8pisejll1+u9GNL0tSpU2WxWG7JsQBHIuwADvDNN99o4MCBCg0Nlbu7u+rVq6e7775bc+fOrdTjnjhxQlOnTtXevXsr9TiV5eLFi5o6dao2bdp0XeM3bdoki8Vi26xWq+rWrauYmBj99a9/1enTpx1S163kzLUBt4qF78YCbq1t27apW7duatCggYYMGaLAwEAdP35c27dvV0ZGho4cOVJpx961a5fat2+vBQsWaOjQoXZ9BQUFKi4ultVqrbTj36wff/xR/v7+mjJliqZOnXrN8Zs2bVK3bt00duxYtW/fXkVFRTp9+rS2bdumVatWydfXV//85z/VvXt322OKiopUUFAgq9V63Wc9brSuK377mh89elQNGzbUSy+9pAkTJlz3POWtrbCwUIWFhXJ3d6+QYwHOytXRBQC/N9OnT5evr6927typmjVr2vWdOnXKMUVJql69usOOXdm6dOmigQMH2rXt27dPvXr10oABA3Tw4EEFBQVJkqpVq6Zq1apVaj0XLlxQjRo1HP6au7q6ytWVfwZgflzGAm6xjIwM3XbbbSWCjiQFBASUaHv33XfVrl07eXh4yM/PT4MGDdLx48ftxsTExOj222/XwYMH1a1bN3l6eqpevXqaMWOGbcymTZvUvn17SdKwYcNsl3YWLlwo6errR+bNm6dGjRrJ09NTvXr10vHjx2UYhp577jnVr19fHh4euvfee/XTTz+VqH/NmjXq0qWLatSoIW9vb/Xt21fffvut3ZihQ4fKy8tL//3vf9W/f395eXnJ399fEyZMUFFRka0ef39/SVJycrKt/hs5k/JrERERmjNnjnJycvT3v//d1l7amp1du3YpNjZWderUkYeHhxo2bKjhw4dfV11XnltGRob69Okjb29vxcfHl/qa/9rs2bMVGhoqDw8PRUdH68CBA3b9MTExiomJKfG4X895rdpKW7NTWFio5557TuHh4bJarQoLC9P//u//Kj8/325cWFiY7rnnHm3ZskUdOnSQu7u7GjVqpMWLF5f+ggMORNgBbrHQ0FDt3r27xD9epZk+fboeffRRNWnSRLNmzdK4ceO0YcMGde3aVTk5OXZjz549q969eysiIkIzZ85U8+bNNXHiRK1Zs0aS1KJFC02bNk2SNGrUKL3zzjt655131LVr16vWsGTJEr366qsaM2aMnnrqKaWmpurBBx/Us88+q7Vr12rixIkaNWqUVq1aVeLSyzvvvKO+ffvKy8tLL774oiZNmqSDBw/qrrvuKrEAuKioSLGxsapdu7ZefvllRUdHa+bMmXr99dclSf7+/nrttdckSffdd5+t/vvvv/+ar2NZBg4cKA8PD61bt67MMadOnVKvXr109OhRPfPMM5o7d67i4+O1ffv2666rsLBQsbGxCggI0Msvv6wBAwZcta7Fixfrb3/7mxISEpSUlKQDBw6oe/fuOnny5A09v/K8Zo899pgmT56stm3bavbs2YqOjlZKSooGDRpUYuyRI0c0cOBA3X333Zo5c6Zq1aqloUOHlgizgMMZAG6pdevWGdWqVTOqVatmREVFGU8//bTx+eefG5cvX7Ybd/ToUaNatWrG9OnT7dq/+eYbw9XV1a49OjrakGQsXrzY1pafn28EBgYaAwYMsLXt3LnTkGQsWLCgRF1DhgwxQkNDbfuZmZmGJMPf39/IycmxtSclJRmSjIiICKOgoMDWPnjwYMPNzc24dOmSYRiGcf78eaNmzZrGyJEj7Y6TnZ1t+Pr62rUPGTLEkGRMmzbNbmybNm2Mdu3a2fZPnz5tSDKmTJlSov7SbNy40ZBkfPDBB2WOiYiIMGrVqmXbX7BggSHJyMzMNAzDMJYvX25IMnbu3FnmHFer68pze+aZZ0rtK+019/DwMP7zn//Y2nfs2GFIMsaPH29ri46ONqKjo68559VqmzJlivHrfwb27t1r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I+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTI+wAAABTc2jY2bx5s/r166fg4GBZLBatWLHCrt9isZS6vfTSS7YxYWFhJfpfeOGFW/xMAACAs3Jo2Llw4YIiIiI0b968UvuzsrLstrffflsWi0UDBgywGzdt2jS7cWPGjLkV5QMAgCrA1ZEHj4uLU1xcXJn9gYGBdvsrV65Ut27d1KhRI7t2b2/vEmMBAACkKrRm5+TJk/r00081YsSIEn0vvPCCateurTZt2uill15SYWHhVefKz89Xbm6u3QYAAMzJoWd2bsSiRYvk7e2t+++/36597Nixatu2rfz8/LRt2zYlJSUpKytLs2bNKnOulJQUJScnV3bJAADACVSZsPP2228rPj5e7u7udu2JiYm2n1u3bi03Nzf96U9/UkpKiqxWa6lzJSUl2T0uNzdXISEhlVM4AABwqCoRdr766iulp6dr2bJl1xwbGRmpwsJCHT16VM2aNSt1jNVqLTMIAQAAc6kSa3beeusttWvXThEREdccu3fvXrm4uCggIOAWVAYAAJydQ8/s5OXl6ciRI7b9zMxM7d27V35+fmrQoIGkXy4xffDBB5o5c2aJx6elpWnHjh3q1q2bvL29lZaWpvHjx+uRRx5RrVq1btnzAAAAzsuhYWfXrl3q1q2bbf/KOpohQ4Zo4cKFkqT3339fhmFo8ODBJR5vtVr1/vvva+rUqcrPz1fDhg01fvx4u/U4AADg981iGIbh6CIcLTc3V76+vjp37px8fHwcXQ4AmFa7Py92dAlwIrtfevSmHn+9/35XiTU7AAAA5UXYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAAplYlvvW8KuCuoPi1m70rKACg4nBmBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBph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qmnTpjpy5IgCAwN1+fJl5eTk2I05efJkqWt8fs1qtcrHx8duAwAA5lSlwk5eXp4yMjIUFBSkdu3aqXr16tqwYYOtPz09XceOHVNUVJQDqwQAAM7EqS9jTZgwQf369VNoaKhOnDihKVOmqFq1aho8eLB8fX01YsQIJSYmys/PTz4+PhozZoyioqL4JBYAALBx6rDzn//8R4MHD9aZM2fk7++vu+66S9u3b5e/v78kafbs2XJxcdGAAQOUn5+v2NhYvfrqqw6uGgAAOBOnDjvvv//+Vfvd3d01b948zZs37xZVBAAAqpoqtWYHAADgRhF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqTl12ElJSVH79u3l7e2tgIAA9e/fX+np6XZjYmJiZLFY7LbHH3/cQRUDAABn49RhJzU1VQkJCdq+fbvWr1+vgoIC9erVSxcuXLAbN3LkSGVlZdm2GTNmOKhiAADgbFwdXcDVrF271m5/4cKFCggI0O7du9W1a1dbu6enpwIDA291eQAAoApw6jM7v3Xu3DlJkp+fn137kiVLVKdOHd1+++1KSkrSxYsXHVEeAABwQk59ZufXiouLNW7cOHXu3Fm33367rf3hhx9WaGiogoODtX//fk2cOFHp6en6+OOPy5wrPz9f+fn5tv3c3NxKrR0AADhOlQk7CQkJOnDggLZs2WLXPmrUKNvPrVq1UlBQkHr06KGMjAyFh4eXOldKSoqSk5MrtV4AAOAcqsRlrNGjR2v16tXauHGj6tevf9WxkZGRkqQjR46UOSYpKUnnzp2zbcePH6/QegEAgPNw6jM7hmFozJgxWr58uTZt2qSGDRte8zF79+6VJAUFBZU5xmq1ymq1VlSZAADAiTl12ElISNDSpUu1cuVKeXt7Kzs7W5Lk6+srDw8PZWRkaOnSperTp49q166t/fv3a/z48eratatat27t4OoBAIAzcOqw89prr0n65caB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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.countplot(x=df[\"sentiment\"])\n", "plt.title(\"Sentiment Distribution\")\n", "plt.savefig(\"sentiment_distribution.png\")\n", "plt.show()\n", "plt.close() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<h1>Text Preprocessing and Feature Engineering</h1>\n", "<h5>In this process, we will transform the text to its most basic format, without numbers, stopwords and punctuation that would be unecessary and unrelated to the data.</h5>" ] }, { "cell_type": "code", "execution_count": 272, "metadata": {}, "outputs": [], "source": [ "def clean_text(text):\n", " text = text.lower() \n", " text = re.sub(r'[^a-zA-Z\\s]', '', text) \n", " text = ' '.join([word for word in text.split() if word not in stop_words]) \n", " return text\n" ] }, { "cell_type": "code", "execution_count": 273, "metadata": {}, "outputs": [], "source": [ "df[\"Cleaned_Text\"] = df[\"text\"].apply(clean_text)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will create a new column that will contain the preprocessed text and separate it from the original" ] }, { "cell_type": "code", "execution_count": 274, "metadata": {}, "outputs": [], "source": [ "\n", "sentiment_mapping = {\"neutral\": 0, \"positive\": 1, \"negative\": 2}\n", "df[\"sentiment\"] = df[\"sentiment\"].map(sentiment_mapping)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<h1>Training the Model</h1>\n", "<h5>After cleaning the data, and processing the text, it is time to train the model in order to help it classify which statements are \"Positive\", \"Negative\" or \"Neutral\". For this, we will use Logistic Regression that assumes the frequency of words to classify.</h5>" ] }, { "cell_type": "code", "execution_count": 275, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(df[\"Cleaned_Text\"], df[\"sentiment\"], test_size=0.1, random_state=42)\n" ] }, { "cell_type": "code", "execution_count": 276, "metadata": {}, "outputs": [], "source": [ "vectorizer = TfidfVectorizer(max_features=5000)\n", "X_train_tfidf = vectorizer.fit_transform(X_train)\n", "X_test_tfidf = vectorizer.transform(X_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "TF-IDF (Term Frequency-Inverse Document Frequency) determines how important is the word based on how many times it appeared in the text, we will use this in order to detect the words that belong to the \"spam\" and \"ham\" classes" ] }, { "cell_type": "code", "execution_count": 277, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>#sk-container-id-26 {\n", " /* Definition of color scheme common for light and dark mode */\n", " --sklearn-color-text: black;\n", " --sklearn-color-line: gray;\n", " /* Definition of color scheme for unfitted estimators */\n", " --sklearn-color-unfitted-level-0: #fff5e6;\n", " --sklearn-color-unfitted-level-1: #f6e4d2;\n", " --sklearn-color-unfitted-level-2: #ffe0b3;\n", " --sklearn-color-unfitted-level-3: chocolate;\n", " /* Definition of color scheme for fitted estimators */\n", " --sklearn-color-fitted-level-0: #f0f8ff;\n", " --sklearn-color-fitted-level-1: #d4ebff;\n", " --sklearn-color-fitted-level-2: #b3dbfd;\n", " --sklearn-color-fitted-level-3: cornflowerblue;\n", "\n", " /* Specific color for light theme */\n", " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", " --sklearn-color-icon: #696969;\n", "\n", " @media (prefers-color-scheme: dark) {\n", " /* Redefinition of color scheme for dark theme */\n", " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", " --sklearn-color-icon: #878787;\n", " }\n", "}\n", "\n", "#sk-container-id-26 {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "#sk-container-id-26 pre {\n", " padding: 0;\n", "}\n", "\n", "#sk-container-id-26 input.sk-hidden--visually {\n", " border: 0;\n", " clip: rect(1px 1px 1px 1px);\n", " clip: rect(1px, 1px, 1px, 1px);\n", " height: 1px;\n", " margin: -1px;\n", " overflow: hidden;\n", " padding: 0;\n", " position: absolute;\n", " width: 1px;\n", "}\n", "\n", "#sk-container-id-26 div.sk-dashed-wrapped {\n", " border: 1px dashed var(--sklearn-color-line);\n", " margin: 0 0.4em 0.5em 0.4em;\n", " box-sizing: border-box;\n", " padding-bottom: 0.4em;\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "#sk-container-id-26 div.sk-container {\n", " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", " so we also need the `!important` here to be able to override the\n", " default hidden behavior on the sphinx rendered scikit-learn.org.\n", " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", " display: inline-block !important;\n", " position: relative;\n", "}\n", "\n", "#sk-container-id-26 div.sk-text-repr-fallback {\n", " display: none;\n", "}\n", "\n", "div.sk-parallel-item,\n", "div.sk-serial,\n", "div.sk-item {\n", " /* draw centered vertical line to link estimators */\n", " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", " background-size: 2px 100%;\n", " background-repeat: no-repeat;\n", " background-position: center center;\n", "}\n", "\n", "/* Parallel-specific style estimator block */\n", "\n", "#sk-container-id-26 div.sk-parallel-item::after {\n", " content: \"\";\n", " width: 100%;\n", " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", " flex-grow: 1;\n", "}\n", "\n", "#sk-container-id-26 div.sk-parallel {\n", " display: flex;\n", " align-items: stretch;\n", " justify-content: center;\n", " background-color: var(--sklearn-color-background);\n", " position: relative;\n", "}\n", "\n", "#sk-container-id-26 div.sk-parallel-item {\n", " display: flex;\n", " flex-direction: column;\n", "}\n", "\n", "#sk-container-id-26 div.sk-parallel-item:first-child::after {\n", " align-self: flex-end;\n", " width: 50%;\n", "}\n", "\n", "#sk-container-id-26 div.sk-parallel-item:last-child::after {\n", " align-self: flex-start;\n", " width: 50%;\n", "}\n", "\n", "#sk-container-id-26 div.sk-parallel-item:only-child::after {\n", " width: 0;\n", "}\n", "\n", "/* Serial-specific style estimator block */\n", "\n", "#sk-container-id-26 div.sk-serial {\n", " display: flex;\n", " flex-direction: column;\n", " align-items: center;\n", " background-color: var(--sklearn-color-background);\n", " padding-right: 1em;\n", " padding-left: 1em;\n", "}\n", "\n", "\n", "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", "clickable and can be expanded/collapsed.\n", "- Pipeline and ColumnTransformer use this feature and define the default style\n", "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", "*/\n", "\n", "/* Pipeline and ColumnTransformer style (default) */\n", "\n", "#sk-container-id-26 div.sk-toggleable {\n", " /* Default theme specific background. It is overwritten whether we have a\n", " specific estimator or a Pipeline/ColumnTransformer */\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "/* Toggleable label */\n", "#sk-container-id-26 label.sk-toggleable__label {\n", " cursor: pointer;\n", " display: block;\n", " width: 100%;\n", " margin-bottom: 0;\n", " padding: 0.5em;\n", " box-sizing: border-box;\n", " text-align: center;\n", "}\n", "\n", "#sk-container-id-26 label.sk-toggleable__label-arrow:before {\n", " /* Arrow on the left of the label */\n", " content: \"▸\";\n", " float: left;\n", " margin-right: 0.25em;\n", " color: var(--sklearn-color-icon);\n", "}\n", "\n", "#sk-container-id-26 label.sk-toggleable__label-arrow:hover:before {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "/* Toggleable content - dropdown */\n", "\n", "#sk-container-id-26 div.sk-toggleable__content {\n", " max-height: 0;\n", " max-width: 0;\n", " overflow: hidden;\n", " text-align: left;\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-26 div.sk-toggleable__content.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "#sk-container-id-26 div.sk-toggleable__content pre {\n", " margin: 0.2em;\n", " border-radius: 0.25em;\n", " color: var(--sklearn-color-text);\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-26 div.sk-toggleable__content.fitted pre {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "#sk-container-id-26 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", " /* Expand drop-down */\n", " max-height: 200px;\n", " max-width: 100%;\n", " overflow: auto;\n", "}\n", "\n", "#sk-container-id-26 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", " content: \"▾\";\n", "}\n", "\n", "/* Pipeline/ColumnTransformer-specific style */\n", "\n", "#sk-container-id-26 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-26 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator-specific style */\n", "\n", "/* Colorize estimator box */\n", "#sk-container-id-26 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-26 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "#sk-container-id-26 div.sk-label label.sk-toggleable__label,\n", "#sk-container-id-26 div.sk-label label {\n", " /* The background is the default theme color */\n", " color: var(--sklearn-color-text-on-default-background);\n", "}\n", "\n", "/* On hover, darken the color of the background */\n", "#sk-container-id-26 div.sk-label:hover label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "/* Label box, darken color on hover, fitted */\n", "#sk-container-id-26 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator label */\n", "\n", "#sk-container-id-26 div.sk-label label {\n", " font-family: monospace;\n", " font-weight: bold;\n", " display: inline-block;\n", " line-height: 1.2em;\n", "}\n", "\n", "#sk-container-id-26 div.sk-label-container {\n", " text-align: center;\n", "}\n", "\n", "/* Estimator-specific */\n", "#sk-container-id-26 div.sk-estimator {\n", " font-family: monospace;\n", " border: 1px dotted var(--sklearn-color-border-box);\n", " border-radius: 0.25em;\n", " box-sizing: border-box;\n", " margin-bottom: 0.5em;\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-26 div.sk-estimator.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "/* on hover */\n", "#sk-container-id-26 div.sk-estimator:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-26 div.sk-estimator.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", "\n", "/* Common style for \"i\" and \"?\" */\n", "\n", ".sk-estimator-doc-link,\n", "a:link.sk-estimator-doc-link,\n", "a:visited.sk-estimator-doc-link {\n", " float: right;\n", " font-size: smaller;\n", " line-height: 1em;\n", " font-family: monospace;\n", " background-color: var(--sklearn-color-background);\n", " border-radius: 1em;\n", " height: 1em;\n", " width: 1em;\n", " text-decoration: none !important;\n", " margin-left: 1ex;\n", " /* unfitted */\n", " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-unfitted-level-1);\n", "}\n", "\n", ".sk-estimator-doc-link.fitted,\n", "a:link.sk-estimator-doc-link.fitted,\n", "a:visited.sk-estimator-doc-link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", ".sk-estimator-doc-link:hover,\n", "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", ".sk-estimator-doc-link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", ".sk-estimator-doc-link.fitted:hover,\n", "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", ".sk-estimator-doc-link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "/* Span, style for the box shown on hovering the info icon */\n", ".sk-estimator-doc-link span {\n", " display: none;\n", " z-index: 9999;\n", " position: relative;\n", " font-weight: normal;\n", " right: .2ex;\n", " padding: .5ex;\n", " margin: .5ex;\n", " width: min-content;\n", " min-width: 20ex;\n", " max-width: 50ex;\n", " color: var(--sklearn-color-text);\n", " box-shadow: 2pt 2pt 4pt #999;\n", " /* unfitted */\n", " background: var(--sklearn-color-unfitted-level-0);\n", " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", "}\n", "\n", ".sk-estimator-doc-link.fitted span {\n", " /* fitted */\n", " background: var(--sklearn-color-fitted-level-0);\n", " border: var(--sklearn-color-fitted-level-3);\n", "}\n", "\n", ".sk-estimator-doc-link:hover span {\n", " display: block;\n", "}\n", "\n", "/* \"?\"-specific style due to the `<a>` HTML tag */\n", "\n", "#sk-container-id-26 a.estimator_doc_link {\n", " float: right;\n", " font-size: 1rem;\n", " line-height: 1em;\n", " font-family: monospace;\n", " background-color: var(--sklearn-color-background);\n", " border-radius: 1rem;\n", " height: 1rem;\n", " width: 1rem;\n", " text-decoration: none;\n", " /* unfitted */\n", " color: var(--sklearn-color-unfitted-level-1);\n", " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", "}\n", "\n", "#sk-container-id-26 a.estimator_doc_link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", "#sk-container-id-26 a.estimator_doc_link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "#sk-container-id-26 a.estimator_doc_link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", "}\n", "</style><div id=\"sk-container-id-26\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-26\" type=\"checkbox\" checked><label for=\"sk-estimator-id-26\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div>" ], "text/plain": [ "LogisticRegression()" ] }, "execution_count": 277, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Train Logistic Regression Model\n", "LRmodel = LogisticRegression()\n", "LRmodel.fit(X_train_tfidf, y_train)" ] }, { "cell_type": "code", "execution_count": 278, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>#sk-container-id-27 {\n", " /* Definition of color scheme common for light and dark mode */\n", " --sklearn-color-text: black;\n", " --sklearn-color-line: gray;\n", " /* Definition of color scheme for unfitted estimators */\n", " --sklearn-color-unfitted-level-0: #fff5e6;\n", " --sklearn-color-unfitted-level-1: #f6e4d2;\n", " --sklearn-color-unfitted-level-2: #ffe0b3;\n", " --sklearn-color-unfitted-level-3: chocolate;\n", " /* Definition of color scheme for fitted estimators */\n", " --sklearn-color-fitted-level-0: #f0f8ff;\n", " --sklearn-color-fitted-level-1: #d4ebff;\n", " --sklearn-color-fitted-level-2: #b3dbfd;\n", " --sklearn-color-fitted-level-3: cornflowerblue;\n", "\n", " /* Specific color for light theme */\n", " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", " --sklearn-color-icon: #696969;\n", "\n", " @media (prefers-color-scheme: dark) {\n", " /* Redefinition of color scheme for dark theme */\n", " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", " --sklearn-color-icon: #878787;\n", " }\n", "}\n", "\n", "#sk-container-id-27 {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "#sk-container-id-27 pre {\n", " padding: 0;\n", "}\n", "\n", "#sk-container-id-27 input.sk-hidden--visually {\n", " border: 0;\n", " clip: rect(1px 1px 1px 1px);\n", " clip: rect(1px, 1px, 1px, 1px);\n", " height: 1px;\n", " margin: -1px;\n", " overflow: hidden;\n", " padding: 0;\n", " position: absolute;\n", " width: 1px;\n", "}\n", "\n", "#sk-container-id-27 div.sk-dashed-wrapped {\n", " border: 1px dashed var(--sklearn-color-line);\n", " margin: 0 0.4em 0.5em 0.4em;\n", " box-sizing: border-box;\n", " padding-bottom: 0.4em;\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "#sk-container-id-27 div.sk-container {\n", " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", " so we also need the `!important` here to be able to override the\n", " default hidden behavior on the sphinx rendered scikit-learn.org.\n", " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", " display: inline-block !important;\n", " position: relative;\n", "}\n", "\n", "#sk-container-id-27 div.sk-text-repr-fallback {\n", " display: none;\n", "}\n", "\n", "div.sk-parallel-item,\n", "div.sk-serial,\n", "div.sk-item {\n", " /* draw centered vertical line to link estimators */\n", " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", " background-size: 2px 100%;\n", " background-repeat: no-repeat;\n", " background-position: center center;\n", "}\n", "\n", "/* Parallel-specific style estimator block */\n", "\n", "#sk-container-id-27 div.sk-parallel-item::after {\n", " content: \"\";\n", " width: 100%;\n", " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", " flex-grow: 1;\n", "}\n", "\n", "#sk-container-id-27 div.sk-parallel {\n", " display: flex;\n", " align-items: stretch;\n", " justify-content: center;\n", " background-color: var(--sklearn-color-background);\n", " position: relative;\n", "}\n", "\n", "#sk-container-id-27 div.sk-parallel-item {\n", " display: flex;\n", " flex-direction: column;\n", "}\n", "\n", "#sk-container-id-27 div.sk-parallel-item:first-child::after {\n", " align-self: flex-end;\n", " width: 50%;\n", "}\n", "\n", "#sk-container-id-27 div.sk-parallel-item:last-child::after {\n", " align-self: flex-start;\n", " width: 50%;\n", "}\n", "\n", "#sk-container-id-27 div.sk-parallel-item:only-child::after {\n", " width: 0;\n", "}\n", "\n", "/* Serial-specific style estimator block */\n", "\n", "#sk-container-id-27 div.sk-serial {\n", " display: flex;\n", " flex-direction: column;\n", " align-items: center;\n", " background-color: var(--sklearn-color-background);\n", " padding-right: 1em;\n", " padding-left: 1em;\n", "}\n", "\n", "\n", "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", "clickable and can be expanded/collapsed.\n", "- Pipeline and ColumnTransformer use this feature and define the default style\n", "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", "*/\n", "\n", "/* Pipeline and ColumnTransformer style (default) */\n", "\n", "#sk-container-id-27 div.sk-toggleable {\n", " /* Default theme specific background. It is overwritten whether we have a\n", " specific estimator or a Pipeline/ColumnTransformer */\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "/* Toggleable label */\n", "#sk-container-id-27 label.sk-toggleable__label {\n", " cursor: pointer;\n", " display: block;\n", " width: 100%;\n", " margin-bottom: 0;\n", " padding: 0.5em;\n", " box-sizing: border-box;\n", " text-align: center;\n", "}\n", "\n", "#sk-container-id-27 label.sk-toggleable__label-arrow:before {\n", " /* Arrow on the left of the label */\n", " content: \"▸\";\n", " float: left;\n", " margin-right: 0.25em;\n", " color: var(--sklearn-color-icon);\n", "}\n", "\n", "#sk-container-id-27 label.sk-toggleable__label-arrow:hover:before {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "/* Toggleable content - dropdown */\n", "\n", "#sk-container-id-27 div.sk-toggleable__content {\n", " max-height: 0;\n", " max-width: 0;\n", " overflow: hidden;\n", " text-align: left;\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-27 div.sk-toggleable__content.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "#sk-container-id-27 div.sk-toggleable__content pre {\n", " margin: 0.2em;\n", " border-radius: 0.25em;\n", " color: var(--sklearn-color-text);\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-27 div.sk-toggleable__content.fitted pre {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "#sk-container-id-27 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", " /* Expand drop-down */\n", " max-height: 200px;\n", " max-width: 100%;\n", " overflow: auto;\n", "}\n", "\n", "#sk-container-id-27 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", " content: \"▾\";\n", "}\n", "\n", "/* Pipeline/ColumnTransformer-specific style */\n", "\n", "#sk-container-id-27 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-27 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator-specific style */\n", "\n", "/* Colorize estimator box */\n", "#sk-container-id-27 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-27 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "#sk-container-id-27 div.sk-label label.sk-toggleable__label,\n", "#sk-container-id-27 div.sk-label label {\n", " /* The background is the default theme color */\n", " color: var(--sklearn-color-text-on-default-background);\n", "}\n", "\n", "/* On hover, darken the color of the background */\n", "#sk-container-id-27 div.sk-label:hover label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "/* Label box, darken color on hover, fitted */\n", "#sk-container-id-27 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator label */\n", "\n", "#sk-container-id-27 div.sk-label label {\n", " font-family: monospace;\n", " font-weight: bold;\n", " display: inline-block;\n", " line-height: 1.2em;\n", "}\n", "\n", "#sk-container-id-27 div.sk-label-container {\n", " text-align: center;\n", "}\n", "\n", "/* Estimator-specific */\n", "#sk-container-id-27 div.sk-estimator {\n", " font-family: monospace;\n", " border: 1px dotted var(--sklearn-color-border-box);\n", " border-radius: 0.25em;\n", " box-sizing: border-box;\n", " margin-bottom: 0.5em;\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-27 div.sk-estimator.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "/* on hover */\n", "#sk-container-id-27 div.sk-estimator:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-27 div.sk-estimator.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", "\n", "/* Common style for \"i\" and \"?\" */\n", "\n", ".sk-estimator-doc-link,\n", "a:link.sk-estimator-doc-link,\n", "a:visited.sk-estimator-doc-link {\n", " float: right;\n", " font-size: smaller;\n", " line-height: 1em;\n", " font-family: monospace;\n", " background-color: var(--sklearn-color-background);\n", " border-radius: 1em;\n", " height: 1em;\n", " width: 1em;\n", " text-decoration: none !important;\n", " margin-left: 1ex;\n", " /* unfitted */\n", " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-unfitted-level-1);\n", "}\n", "\n", ".sk-estimator-doc-link.fitted,\n", "a:link.sk-estimator-doc-link.fitted,\n", "a:visited.sk-estimator-doc-link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", ".sk-estimator-doc-link:hover,\n", "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", ".sk-estimator-doc-link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", ".sk-estimator-doc-link.fitted:hover,\n", "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", ".sk-estimator-doc-link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "/* Span, style for the box shown on hovering the info icon */\n", ".sk-estimator-doc-link span {\n", " display: none;\n", " z-index: 9999;\n", " position: relative;\n", " font-weight: normal;\n", " right: .2ex;\n", " padding: .5ex;\n", " margin: .5ex;\n", " width: min-content;\n", " min-width: 20ex;\n", " max-width: 50ex;\n", " color: var(--sklearn-color-text);\n", " box-shadow: 2pt 2pt 4pt #999;\n", " /* unfitted */\n", " background: var(--sklearn-color-unfitted-level-0);\n", " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", "}\n", "\n", ".sk-estimator-doc-link.fitted span {\n", " /* fitted */\n", " background: var(--sklearn-color-fitted-level-0);\n", " border: var(--sklearn-color-fitted-level-3);\n", "}\n", "\n", ".sk-estimator-doc-link:hover span {\n", " display: block;\n", "}\n", "\n", "/* \"?\"-specific style due to the `<a>` HTML tag */\n", "\n", "#sk-container-id-27 a.estimator_doc_link {\n", " float: right;\n", " font-size: 1rem;\n", " line-height: 1em;\n", " font-family: monospace;\n", " background-color: var(--sklearn-color-background);\n", " border-radius: 1rem;\n", " height: 1rem;\n", " width: 1rem;\n", " text-decoration: none;\n", " /* unfitted */\n", " color: var(--sklearn-color-unfitted-level-1);\n", " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", "}\n", "\n", "#sk-container-id-27 a.estimator_doc_link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", "#sk-container-id-27 a.estimator_doc_link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "#sk-container-id-27 a.estimator_doc_link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", "}\n", "</style><div id=\"sk-container-id-27\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-27\" type=\"checkbox\" checked><label for=\"sk-estimator-id-27\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(random_state=42)</pre></div> </div></div></div></div>" ], "text/plain": [ "RandomForestClassifier(random_state=42)" ] }, "execution_count": 278, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Train Random Forest Model\n", "RFCmodel = RandomForestClassifier(n_estimators=100, random_state=42)\n", "RFCmodel.fit(X_train_tfidf, y_train)" ] }, { "cell_type": "code", "execution_count": 279, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>#sk-container-id-28 {\n", " /* Definition of color scheme common for light and dark mode */\n", " --sklearn-color-text: black;\n", " --sklearn-color-line: gray;\n", " /* Definition of color scheme for unfitted estimators */\n", " --sklearn-color-unfitted-level-0: #fff5e6;\n", " --sklearn-color-unfitted-level-1: #f6e4d2;\n", " --sklearn-color-unfitted-level-2: #ffe0b3;\n", " --sklearn-color-unfitted-level-3: chocolate;\n", " /* Definition of color scheme for fitted estimators */\n", " --sklearn-color-fitted-level-0: #f0f8ff;\n", " --sklearn-color-fitted-level-1: #d4ebff;\n", " --sklearn-color-fitted-level-2: #b3dbfd;\n", " --sklearn-color-fitted-level-3: cornflowerblue;\n", "\n", " /* Specific color for light theme */\n", " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n", " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n", " --sklearn-color-icon: #696969;\n", "\n", " @media (prefers-color-scheme: dark) {\n", " /* Redefinition of color scheme for dark theme */\n", " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n", " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n", " --sklearn-color-icon: #878787;\n", " }\n", "}\n", "\n", "#sk-container-id-28 {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "#sk-container-id-28 pre {\n", " padding: 0;\n", "}\n", "\n", "#sk-container-id-28 input.sk-hidden--visually {\n", " border: 0;\n", " clip: rect(1px 1px 1px 1px);\n", " clip: rect(1px, 1px, 1px, 1px);\n", " height: 1px;\n", " margin: -1px;\n", " overflow: hidden;\n", " padding: 0;\n", " position: absolute;\n", " width: 1px;\n", "}\n", "\n", "#sk-container-id-28 div.sk-dashed-wrapped {\n", " border: 1px dashed var(--sklearn-color-line);\n", " margin: 0 0.4em 0.5em 0.4em;\n", " box-sizing: border-box;\n", " padding-bottom: 0.4em;\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "#sk-container-id-28 div.sk-container {\n", " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n", " but bootstrap.min.css set `[hidden] { display: none !important; }`\n", " so we also need the `!important` here to be able to override the\n", " default hidden behavior on the sphinx rendered scikit-learn.org.\n", " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n", " display: inline-block !important;\n", " position: relative;\n", "}\n", "\n", "#sk-container-id-28 div.sk-text-repr-fallback {\n", " display: none;\n", "}\n", "\n", "div.sk-parallel-item,\n", "div.sk-serial,\n", "div.sk-item {\n", " /* draw centered vertical line to link estimators */\n", " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n", " background-size: 2px 100%;\n", " background-repeat: no-repeat;\n", " background-position: center center;\n", "}\n", "\n", "/* Parallel-specific style estimator block */\n", "\n", "#sk-container-id-28 div.sk-parallel-item::after {\n", " content: \"\";\n", " width: 100%;\n", " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n", " flex-grow: 1;\n", "}\n", "\n", "#sk-container-id-28 div.sk-parallel {\n", " display: flex;\n", " align-items: stretch;\n", " justify-content: center;\n", " background-color: var(--sklearn-color-background);\n", " position: relative;\n", "}\n", "\n", "#sk-container-id-28 div.sk-parallel-item {\n", " display: flex;\n", " flex-direction: column;\n", "}\n", "\n", "#sk-container-id-28 div.sk-parallel-item:first-child::after {\n", " align-self: flex-end;\n", " width: 50%;\n", "}\n", "\n", "#sk-container-id-28 div.sk-parallel-item:last-child::after {\n", " align-self: flex-start;\n", " width: 50%;\n", "}\n", "\n", "#sk-container-id-28 div.sk-parallel-item:only-child::after {\n", " width: 0;\n", "}\n", "\n", "/* Serial-specific style estimator block */\n", "\n", "#sk-container-id-28 div.sk-serial {\n", " display: flex;\n", " flex-direction: column;\n", " align-items: center;\n", " background-color: var(--sklearn-color-background);\n", " padding-right: 1em;\n", " padding-left: 1em;\n", "}\n", "\n", "\n", "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n", "clickable and can be expanded/collapsed.\n", "- Pipeline and ColumnTransformer use this feature and define the default style\n", "- Estimators will overwrite some part of the style using the `sk-estimator` class\n", "*/\n", "\n", "/* Pipeline and ColumnTransformer style (default) */\n", "\n", "#sk-container-id-28 div.sk-toggleable {\n", " /* Default theme specific background. It is overwritten whether we have a\n", " specific estimator or a Pipeline/ColumnTransformer */\n", " background-color: var(--sklearn-color-background);\n", "}\n", "\n", "/* Toggleable label */\n", "#sk-container-id-28 label.sk-toggleable__label {\n", " cursor: pointer;\n", " display: block;\n", " width: 100%;\n", " margin-bottom: 0;\n", " padding: 0.5em;\n", " box-sizing: border-box;\n", " text-align: center;\n", "}\n", "\n", "#sk-container-id-28 label.sk-toggleable__label-arrow:before {\n", " /* Arrow on the left of the label */\n", " content: \"▸\";\n", " float: left;\n", " margin-right: 0.25em;\n", " color: var(--sklearn-color-icon);\n", "}\n", "\n", "#sk-container-id-28 label.sk-toggleable__label-arrow:hover:before {\n", " color: var(--sklearn-color-text);\n", "}\n", "\n", "/* Toggleable content - dropdown */\n", "\n", "#sk-container-id-28 div.sk-toggleable__content {\n", " max-height: 0;\n", " max-width: 0;\n", " overflow: hidden;\n", " text-align: left;\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-28 div.sk-toggleable__content.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "#sk-container-id-28 div.sk-toggleable__content pre {\n", " margin: 0.2em;\n", " border-radius: 0.25em;\n", " color: var(--sklearn-color-text);\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-28 div.sk-toggleable__content.fitted pre {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "#sk-container-id-28 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n", " /* Expand drop-down */\n", " max-height: 200px;\n", " max-width: 100%;\n", " overflow: auto;\n", "}\n", "\n", "#sk-container-id-28 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n", " content: \"▾\";\n", "}\n", "\n", "/* Pipeline/ColumnTransformer-specific style */\n", "\n", "#sk-container-id-28 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-28 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator-specific style */\n", "\n", "/* Colorize estimator box */\n", "#sk-container-id-28 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-28 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "#sk-container-id-28 div.sk-label label.sk-toggleable__label,\n", "#sk-container-id-28 div.sk-label label {\n", " /* The background is the default theme color */\n", " color: var(--sklearn-color-text-on-default-background);\n", "}\n", "\n", "/* On hover, darken the color of the background */\n", "#sk-container-id-28 div.sk-label:hover label.sk-toggleable__label {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "/* Label box, darken color on hover, fitted */\n", "#sk-container-id-28 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n", " color: var(--sklearn-color-text);\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Estimator label */\n", "\n", "#sk-container-id-28 div.sk-label label {\n", " font-family: monospace;\n", " font-weight: bold;\n", " display: inline-block;\n", " line-height: 1.2em;\n", "}\n", "\n", "#sk-container-id-28 div.sk-label-container {\n", " text-align: center;\n", "}\n", "\n", "/* Estimator-specific */\n", "#sk-container-id-28 div.sk-estimator {\n", " font-family: monospace;\n", " border: 1px dotted var(--sklearn-color-border-box);\n", " border-radius: 0.25em;\n", " box-sizing: border-box;\n", " margin-bottom: 0.5em;\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-0);\n", "}\n", "\n", "#sk-container-id-28 div.sk-estimator.fitted {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-0);\n", "}\n", "\n", "/* on hover */\n", "#sk-container-id-28 div.sk-estimator:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-2);\n", "}\n", "\n", "#sk-container-id-28 div.sk-estimator.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-2);\n", "}\n", "\n", "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n", "\n", "/* Common style for \"i\" and \"?\" */\n", "\n", ".sk-estimator-doc-link,\n", "a:link.sk-estimator-doc-link,\n", "a:visited.sk-estimator-doc-link {\n", " float: right;\n", " font-size: smaller;\n", " line-height: 1em;\n", " font-family: monospace;\n", " background-color: var(--sklearn-color-background);\n", " border-radius: 1em;\n", " height: 1em;\n", " width: 1em;\n", " text-decoration: none !important;\n", " margin-left: 1ex;\n", " /* unfitted */\n", " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-unfitted-level-1);\n", "}\n", "\n", ".sk-estimator-doc-link.fitted,\n", "a:link.sk-estimator-doc-link.fitted,\n", "a:visited.sk-estimator-doc-link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n", ".sk-estimator-doc-link:hover,\n", "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n", ".sk-estimator-doc-link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n", ".sk-estimator-doc-link.fitted:hover,\n", "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n", ".sk-estimator-doc-link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "/* Span, style for the box shown on hovering the info icon */\n", ".sk-estimator-doc-link span {\n", " display: none;\n", " z-index: 9999;\n", " position: relative;\n", " font-weight: normal;\n", " right: .2ex;\n", " padding: .5ex;\n", " margin: .5ex;\n", " width: min-content;\n", " min-width: 20ex;\n", " max-width: 50ex;\n", " color: var(--sklearn-color-text);\n", " box-shadow: 2pt 2pt 4pt #999;\n", " /* unfitted */\n", " background: var(--sklearn-color-unfitted-level-0);\n", " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n", "}\n", "\n", ".sk-estimator-doc-link.fitted span {\n", " /* fitted */\n", " background: var(--sklearn-color-fitted-level-0);\n", " border: var(--sklearn-color-fitted-level-3);\n", "}\n", "\n", ".sk-estimator-doc-link:hover span {\n", " display: block;\n", "}\n", "\n", "/* \"?\"-specific style due to the `<a>` HTML tag */\n", "\n", "#sk-container-id-28 a.estimator_doc_link {\n", " float: right;\n", " font-size: 1rem;\n", " line-height: 1em;\n", " font-family: monospace;\n", " background-color: var(--sklearn-color-background);\n", " border-radius: 1rem;\n", " height: 1rem;\n", " width: 1rem;\n", " text-decoration: none;\n", " /* unfitted */\n", " color: var(--sklearn-color-unfitted-level-1);\n", " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n", "}\n", "\n", "#sk-container-id-28 a.estimator_doc_link.fitted {\n", " /* fitted */\n", " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n", " color: var(--sklearn-color-fitted-level-1);\n", "}\n", "\n", "/* On hover */\n", "#sk-container-id-28 a.estimator_doc_link:hover {\n", " /* unfitted */\n", " background-color: var(--sklearn-color-unfitted-level-3);\n", " color: var(--sklearn-color-background);\n", " text-decoration: none;\n", "}\n", "\n", "#sk-container-id-28 a.estimator_doc_link.fitted:hover {\n", " /* fitted */\n", " background-color: var(--sklearn-color-fitted-level-3);\n", "}\n", "</style><div id=\"sk-container-id-28\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>MultinomialNB()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" checked><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> MultinomialNB<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.naive_bayes.MultinomialNB.html\">?<span>Documentation for MultinomialNB</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>MultinomialNB()</pre></div> </div></div></div></div>" ], "text/plain": [ "MultinomialNB()" ] }, "execution_count": 279, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Train Naïve Bayes Model\n", "MNBmodel = MultinomialNB()\n", "MNBmodel.fit(X_train_tfidf, y_train)" ] }, { "cell_type": "code", "execution_count": 280, "metadata": {}, "outputs": [], "source": [ "# Predictions\n", "LRy_pred = LRmodel.predict(X_test_tfidf)" ] }, { "cell_type": "code", "execution_count": 281, "metadata": {}, "outputs": [], "source": [ "# Predictions\n", "RFCy_pred = RFCmodel.predict(X_test_tfidf)\n" ] }, { "cell_type": "code", "execution_count": 282, "metadata": {}, "outputs": [], "source": [ "# Predictions\n", "MNBy_pred = MNBmodel.predict(X_test_tfidf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "<h1>Model Evaluation</h1>\n", "<h5>After training the model, we will use Evaluation metrics in order to judge if the model's predictions are correct.</h5>\n", "<h5></h5>" ] }, { "cell_type": "code", "execution_count": 283, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.7600\n", "Classification Report:\n", " precision recall f1-score support\n", "\n", " 0 0.70 0.78 0.74 18\n", " 1 0.79 0.71 0.75 21\n", " 2 0.82 0.82 0.82 11\n", "\n", " accuracy 0.76 50\n", " macro avg 0.77 0.77 0.77 50\n", "weighted avg 0.76 0.76 0.76 50\n", "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHiCAYAAAB4GX3vAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABkKElEQVR4nO3de1xUZf4H8M+AMCAMqFxEjZsoYutoXkpzFShGFDUVC01LZd1drYzWLe2XbKX+bFPXDC1bTfMnu9gaWd4Lky3wEiaFqaz3AkTygqCCN5DL9/eHP87PaQZlYHDA83m/XryS5zzzPM85z5nh07mNRkQERERERKQadrYeABERERHdWwyARERERCrDAEhERESkMgyARERERCrDAEhERESkMgyARERERCrDAEhERESkMgyARERERCrDAEhERESkMgyARERERCrDAEhERESkMgyARERERCrDAEhERESkMgyARERERCrDAEhERESkMlYNgLm5udBoNNBoNPjpp5+s2TRZ6NKlS4iNjUXr1q3h7u6OsWPHorCwsF5tBQQEKPP6659BgwYZ1RURrFixAt27d4ezszO8vb0xYsQIXL16tV7js+Z6EBER0S0trNlYSkoKPDw8AADbt2/Hiy++aM3myQLR0dHIysrCrFmz4ODggIULFyIqKgqZmZmwt7e3qK0lS5aYBLi8vDy88cYbJgEwPj4eCxYsQExMDOLi4nD16lXs2bMHN27cgKurq8Xjs+Z6EBER0f8RKxo+fLg89dRT8uSTT8rQoUOt2TRZYMeOHQJAEhMTlbJt27YJAElOTrZKH3PnzhWNRiP5+flK2dGjR8Xe3l7i4+OtMr57sR5ERERqZLVTwOXl5UhLS0NERAQiIiKQlpaGsrIys3V37dqFyMhIuLu7w93dHeHh4dixY4fF9RITE6HRaJCXl2f0uoCAAMTGxpq0p9FoMGfOHGzatAl6vR5OTk4ICgrCl19+CQC4ePEiZsyYge7du0On08HNzQ0GgwEZGRkWr8eNGzfg5uaGP/7xjyavW716NTQaDQ4ePGi23YbaunUrtFotxo4dq5RFRUXBw8MDW7ZssUofa9euxYABA+Dr66uUrVu3Dg4ODpg1axYAmBw1tHR892I9iIiI1MhqAXDnzp24du2aEgBv3LiBnTt3mtTbunUrHn/8ceTn5+PVV1/FO++8gw4dOmDl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u+h0OomJiZGzZ8/WWv9u/ebl5YlGo5GpU6fesd/CwkKZOHGitGnTRrRarfTr18/so342bNgg/fr1Ezc3N3FxcRGDwSD79u0zqvO3v/1N+vfvL15eXuLo6CiBgYESGxsrp06duvPKExER0R1Z5QggERERETUfzfoaQCIiIiKyHAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpzD0NgM8++yw0Go3yk56efi+7t8icOXOg0WjuWu+XX37B8OHD4e7uDo1Gg9jY2Aa1ZytNfXxERERkPVYNgF999RUee+wxuLm5oVWrVhgwYAA2b96sLH/hhReQlJSE+Ph4a3ZrUy+//DK+++47/Pd//zeSkpIwdepUWw9JsWnTJixZssTWw6i3gIAA5X8WHBwc0KlTJ/zhD3/AL7/8Yuuh1Utznw8iIrp/aERErNFQYmIiJk+ejN69e2PixIlo0aIFvvrqK9jZ2WHDhg1GddPT0/HYY48hLS0N4eHh1uje6iorK1FZWQknJ6c71mvbti3GjRt31z/sdW3PmmJjY5Geno68vLy71rXF+O4mICAArVu3xiuvvIKKigocPHgQK1asQJs2bZCdnQ0PDw9bD9EilswHERFRY2phjUbOnz+PuLg4PProo9i5cydatLjV7PPPP4+CggJrdHHPtWjRQlmPO7lw4QJatWpltfZspamOr0OHDnj22WeV3zt16oS4uDj84x//wMsvv2zDkRERETVfVjkFvHbtWly9ehWvv/66SYh44IEHLG7v4sWLmDFjBrp37w6dTgc3NzcYDAZkZGSY1D169ChGjhwJb29vuLi4oFu3bpgzZ06963Xq1MnoOkVzEhMTleUigrlz5yq///oawLq0V2PXrl2IjIyEu7s73N3dER4ejh07dli8XWr6+sc//oFTp04Z9Z+YmFiv8R05cgRDhw6FTqeDTqfDsGHDcOzYMbPbJTMzE9HR0dDpdAgKCsLq1avvuN6WeOyxxwAAJ06cMCq/cOECpkyZAh8fHzg5OaFXr1748ssvjerUXOeYkZGBHj16wMnJCb1798aePXvqtb41NBoN5syZg02bNkGv18PJyQlBQUFK/5bMBxER0b1glUM+u3btgkajQVhYmDWaQ05ODlavXo1nn30WL730EkpKSrBq1SpERETgxx9/REhICADg5s2biIqKws2bN/Hyyy+jTZs2OH78OLZs2WIU7upaDwAWL16MK1euYMOGDdi4caPZ8YWGhiIpKQkAMGHCBERHR2P06NEAgKCgIIvbA4CtW7ciOjoanTp1wquvvgpvb2+kp6dj5cqViIyMtGi71Ixt5cqVOHr0KBISEpR++vfvb/H4CgsLERYWBo1Go1y/+e677yIsLAyHDx+Gp6enUf2JEyciIiICCxcuxJo1a/CHP/wBPXv2RK9evWpd/7qquf7v9tO/paWlGDhwIC5cuIC4uDh4e3vj888/x4gRI/Dvf//b5DKD0aNHY/z48YiNjcXy5csRFRWFQ4cOITAwsF7rCwCZmZlYunQppkyZgsDAQPz444/KqV5L5qNGTRi30hUaRERExsQK9Hq9eHl51bl+WlqaAJC0tDSzy0tLS6W0tNSo7NSpU6LRaGTmzJlK2YEDBwSArFq1yqhuRUWF0e91rXe72bNnS102DwCZPXv2Xevdqb3Kykrx8/OT4OBguXLlitGyM2fOKP+u63apMWnSJPH397/r2O42vpplGRkZStnu3bsFgMydO1cpW7NmjQCQGTNmKGX5+fmi0WiM6tWVv7+/REZGyoULF+TcuXOSlpYmv/nNb8Te3l6ys7OVeq+//ro4ODgYlVVVVYler5fw8HCT9XjzzTeVstzcXLGzs5O4uDiL17cGALGzs5P9+/cblVdWVhr9bsl8AKjT/kdERFQfVjkFfO3aNavePFBz2g24dXNCcXExWrZsCU9PT+Tm5ir1XFxcAADffvstbt68qZT/+jR0XevZSlZWFvLz8xEXFwdXV1ejZe3atVP+XdftYm3p6eno2LEjHn30UaVswIABCAwMNPson+joaOXfvr6+8PT0rPe1oDt27ICXlxd8fHzw2GOPwdXVFdu3b0e3bt2UOhs2bMDDDz8MHx8fFBUVoaioCBcvXkT//v2RkZGBqqoqozbHjRun/DsgIACPPPIIdu7cWe/1BYBBgwahZ8+eRmX29vb1WmcA6NKlC7p06VLv1xMREd2JVQKgi4sLysrKrNEUAKC6uhpLly5F586d4eTkBE9PT3h5eeHChQtG/XTq1AlTpkxBYmIivLy8MHToUCxevBiXLl0yaq+u9WylJrx17dr1jvXqul2s7ezZs/Dz8zMp9/PzM/tIFh8fH6PfW7ZsaRS8LdG3b1+kpqZiy5YtGDNmDHJyckxOwf7888/IyMiAl5eX0c+HH36ImzdvorS01Ki+r6+v0e8PPPCA0XpYur4AlNPv1nLs2LFarzkkIiJqKKsEQH9/fxQVFeH69evWaA4LFy7E9OnT0bdvX3z88cdITU1FamoqPD09Ta6J+vDDD5GVlYX/+q//wtWrVzFjxgw8+uijJoGorvWaMku2iy3Z2Vnv8ZKenp4wGAx44oknsG7dOgQGBmLixImorq5W6mg0GgwePFjZHr/++fVRVXMcHR0bNM663AlORETUVFjlHOjAgQOxbds27Ny5E1FRUXetX/PHtrKy0uzy5ORkhIaGYu3atUpZRUUFLl++bLZ+r1690KtXL8THx+Pdd9/FK6+8gq+//hrDhg2rV717rebmgyNHjiAiIqLWepZuF2t9s0e7du2Qn59vUn7q1Cll7PeCnZ0dZs+ejWHDhmH9+vUYO3YsAKBjx464ceMGDAZDndo5ffq00RG7goICo6OCjbW+/KYVIiJqKqxyqObZZ59Fy5Yt8dZbb5mEOnPXftU8Guann34y2569vT0cHByMyj766COTtktLS03Kav5A3359X13r2Urv3r3h6+uLpUuX4sqVK0bLCgsLlX/XdbvU0Ol0KCoqqnV5XYWHhyMnJwd79+5Vynbv3o28vLx7/iDvqKgodO7cGQsXLlTKoqOjsXv3brOPCTp9+rRJ2bp165R/5+XlITMz0+gO9sZaX0vmIyQkxOqnlYmIiGpYJf20b98eCQkJmDp1Kvr37698E0jNM+x+/U0gfn5+eOSRRzBv3jxUV1fDzc0Nffr0Uf7gjRgxAnPmzMFzzz2HXr164ccff8TmzZtNrv365ptvEBcXh5iYGHTp0gXFxcV4//334efnZ/R4jbrWO3ToEA4dOqT8G4BytM3V1RWjRo2yaLvUtT17e3t88MEHiI6ORp8+fTBp0iR4e3tjz549uHbtGtavX2/RdqnRv39/vP/++5gyZQpGjRoFR0dH6PV6dOjQwaLxvfDCC/jggw8watQoTJ8+HQCQkJAAb29vvPDCCxZtk4bSaDSYNm0apk+fjh07diAyMhKvvvoqPvvsMxgMBkydOhVdu3ZFQUEBvv76a7i5uSElJcWojRUrVuDq1avw9fXF3//+d2i1WsTFxSnLG2t97zYftzt+/Hi9+yEiIrora95SvG3bNhk4cKC4uLiIu7u79O/fXzZs2GC27k8//SRhYWGi1WoFgCQkJCjLysvLZebMmdK+fXtxdnaWsLAwOXjwoAQFBcmwYcOUejk5ORIbGysBAQGi1WrFx8dHYmJi5Pjx40Z91bVezeM/zP3U9vgO3OExMJa2l56eLgaDQXQ6neh0OgkNDZXt27dbvF1qVFVVySuvvCJt27YVjUYjAGTNmjX1Gt/hw4dlyJAh4uLiIi4uLjJkyBA5cuSIUZ2ax8Dk5uYalfv7+8ukSZPMbqM78ff3N7teJSUl4urqKhEREUpZUVGRTJs2TR544AFxdHQUX19fiYmJkdTUVJP13blzp3Tr1k20Wq307NlT0tPTTfqoy/rWuNM+cLu7zcev27Ty25OIiEhhte8CJmrq5syZg7lz5zapG2aIiIhswXq3axIRERFRs8AASERERKQyDIBEREREKsNrAImIiIhUhkcAiYiIiFSGAZCIiIhIZRgAie5gzpw5Vv0KN2u3R43n2WefhUajUX7S09MbVK8x/fLLLxg+fDjc3d2h0WgQGxt7z8dARM0LAyARkRkvvPACkpKSEB8fb5V6jenll1/Gd999h//+7/9GUlISpk6dqiyrqKjAvHnzEBkZCTc3N5uFVFK3TZs2YcmSJbYeBt2GN4EQ3UFlZSUqKyvh5OTUJNujxpeeno7HHnsMaWlpd/wu6LrWawxt27bFuHHjzP6BvXz5Mlq3bo3AwEC0a9cOGRkZNhkjqVtsbCzS09ORl5dn66HQ/+ERQKI7aNGihVXDmrXbIwKACxcuoFWrVmaX6XQ65OfnIycnB3/+85/v7cCIqMliAKR7ruY6uIyMDPTo0QNOTk7o3bs39uzZY7a+RqPBnDlzsGnTJuj1ejg5OSEoKAhffvmlUufChQuYMmUKfHx84OTkhF69ehktv92uXbsQGRkJd3d3uLu7Izw8HDt27DCq06lTJ6Prumpz9OhRjBw5Et7e3nBxcUG3bt0wZ84ck3p1be/IkSMYOnQodDoddDodhg0bhmPHjhnVSUxMhEajQWZmJqKjo6HT6RAUFITVq1fX2m5Tdq/n9+LFi5gxYwa6d+8OnU4HNzc3GAwGZGRkNPq6WlPNfqDRaCAimDt3rvL77dcA2tvbw9fX16p913W/B+r2fqvLfl/D2vuLLdRl+9XM76+PmAUEBBjNb10/Ty353LXmfNTsk//4xz9w6tQpo8/BxMREi7cdWU8LWw+A1Gv06NEYP348YmNjsXz5ckRFReHQoUMIDAw0qZuZmYmlS5diypQpCAwMxI8//qh8MJaWlmLgwIG4cOEC4uLi4O3tjc8//xwjRozAv//9b6NTXVu3bkV0dDQ6deqEV199Fd7e3khPT8fKlSsRGRmp1Fu8eDGuXLmCDRs2YOPGjWbHf/PmTURFReHmzZt4+eWX0aZNGxw/fhxbtmwx+TCvS3uFhYUICwuDRqNRrid79913ERYWhsOHD8PT09Oo/sSJExEREYGFCxdizZo1+MMf/oCePXuiV69ed9v0Tc69nN+cnBysXr0azz77LF566SWUlJRg1apViIiIwI8//oiQkBAbbAHLhYaGIikpCQAwYcIEREdHY/To0QCAoKCgRuvXkv2+LvNh6X4PWG9/sQVLtp8l6vp5erd61p6Pmn105cqVOHr0KBISEpTX9e/fv97rS1YgRPfY7NmzBYC8+eabSllubq7Y2dlJXFycSX0AYmdnJ/v37zcqr6ysFBGR119/XRwcHCQ7O1tZVlVVJXq9XsLDw43q+/n5SXBwsFy5csWorTNnztxxrOYcOHBAAMiqVauMyisqKszWv1t7NcsyMjKUst27dwsAmTt3rlK2Zs0aASAzZsxQyvLz80Wj0RjVay7u9fyWlpZKaWmp0fJTp06JRqORmTNnmowvLS1NAEhaWtod16Ou9RoDAJk9e/Zd661fv77BY6zrfl/X+ajrfl/DWvuLrdR1+9W8z3Nzc43K/f39ZdKkScrvdf08tbSeteajxqRJk8Tf39/k9WQ7PAVMNjNu3Djl3wEBAXjkkUewc+dOs3UHDRqEnj17GpXZ29sDADZs2ICHH34YPj4+KCoqQlFRES5evIj+/fsjIyMDVVVVAICsrCzk5+cjLi4Orq6uRm21a9fO4vG7uLgAAL799lvcvHlTKW/Ron4H1tPT09GxY0c8+uijStmAAQMQGBho9q7N6Oho5d++vr7w9PREQUFBvfq2tXs5vzWntYBbN+UUFxejZcuW8PT0RG5ubmOu5n2hrvt9XefD0v0esM7+YivW/tyoUdfP07vVs/Z8UNPFU8BkM7++LumBBx5AWlqa2bp3Oi33888/o7y8HF5eXmaXl5aWonXr1sof965du9ZzxMY6deqEKVOmYOXKldiwYQN++9vfIiIiApMnT0br1q0tbu/s2bPw8/MzKffz88Mvv/xiUu7j42P0e8uWLY3+oDQn93J+q6ur8f7772PZsmXIzc01CgRlZWX1GP39o6qqChcuXDAq8/LyMvpjXtf9vq7zYel+D1hnf7EVa39u1Kjr5+nd6ll7PqjpYgCkJsXR0dFseW13OAK3LjIePHgwZsyYYXb5r48+WNOHH36IqVOnYvv27di+fTtmzJiBVatW4cCBA41+t6+d3f1zAP9ezu/ChQsRHx+PZ555Bm+99RY8PDwA3DoyIip/Ktbp06dNrhnLzc1FQECAUZkt93ug6X4e1FVDtp8lRzBr+zytb73a3Gk+qOliACSbOX36tNH/ORYUFNTrbsWOHTvixo0bMBgMd6xX84ftyJEjiIiIsLif2vTq1Qu9evVCfHw83n33Xbzyyiv4+uuvMWzYMIvaadeuHfLz803KT506ZfbGGLWw9vwmJycjNDQUa9euVcoqKipw+fJls/Vr/jhWVlbesf+61mvKfHx8kJqaalJmzt32+7rOh7X3+7ruL7Z2t+1Xsz9dv35deU11dTUKCwvNtlfXz9O71WuszyF+A1LTc/8cQqBmZ926dcq/8/LykJmZibCwMIvbiY6Oxu7du80+xuP06dPKv3v37g1fX18sXboUV65cMapX24fqnZSWlpr8sa/5gKzP9Tzh4eHIycnB3r17lbLdu3cjLy/P5ncu2pK159fe3h4ODg5Gyz/66KNag9sDDzwAAPjpp5/uOM661mvKnJycYDAYjH5+fUSqrvt9XefD2vt9XfcXW6nr9uvQoQOAW9dS1tiyZUutl3nU9fP0bvUa63NIp9OhqKioWf8P0v2GRwDJZlasWIGrV6/C19cXf//736HVahEXF2dxO6+++io+++wzGAwGTJ06FV27dkVBQQG+/vpruLm5ISUlBcCtP/wffPABoqOj0adPH0yaNAne3t7Ys2cPrl27hvXr1wMADh06hEOHDin/BqAcLXJ1dcWoUaMAAN988w3i4uIQExODLl26oLi4GO+//z78/PyMHm9Q1/ZeeOEFfPDBBxg1ahSmT58OAEhISIC3tzdeeOEFi7fL/cLa8ztixAjMmTMHzz33HHr16oUff/wRmzdvNvt4C+DWtU+PPPII5s2bh+rqari5uaFPnz4m1z3VtZ4tLFu2DJcvX8bhw4cB3Ho0x549e9CqVSu8+OKLFrVV1/2+rvNh7f2+rvuLrdR1+/Xr1w+enp54+eWXcfr0aVy/fh3JycnKJQu/VtfP07vVa6zPof79++P999/HlClTMGrUKDg6OkKv1ytBl2zA1rchk/rUPGZg586d0q1bN9FqtdKzZ09JT083Wx91eMRFUVGRTJs2TR544AFxdHQUX19fiYmJkdTUVJO66enpYjAYRKfTiU6nk9DQUNm+fbvJ+Mz93P4Yg5ycHImNjZWAgADRarXi4+MjMTExcvz4cbPre7f2REQOHz4sQ4YMERcXF3FxcZEhQ4bIkSNHjOrU9fEQzcW9nt/y8nKZOXOmtG/fXpydnSUsLEwOHjwoQUFBMmzYMLP9//TTTxIWFiZarVYASEJCQoPqWdvdtqG/v3+d9r+6qOt+X+Nu8yFSt/2+rusqYtn+cq9Zsv327t0rDz30kDg7O0vfvn0lKyur1sfA3O3z1JLPXWvPh8itR/G88sor0rZtW9FoNAJA1qxZc9fXUePhdwHTPTdnzhzMnTtX9RfcExE1VF0/T/m5S7/GawCJiIiIVIYBkIiIiEhlGACJiIiIVIbXABIRERGpDI8AEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMAyARERGRyjAAEhEREakMA6DKXbp0CbGxsWjdujXc3d0xduxYFBYW2npYzYY1t19AQAA0Go3Zn0GDBjVav/cTW83H7t278dhjj6F169bw9PREZGQk9u3bZ41VatZsNR+3mzFjBjQaDV588cX6rgaZUVFRgXnz5iEyMhJubm7QaDRIT083W5fvj6apha0HQLYVHR2NrKwszJo1Cw4ODli4cCGioqKQmZkJe3t7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kcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpDAMgERERkcowABIRERGpzP8Cp3cD0bgnZQcAAAAASUVORK5CYII=", "text/plain": [ "<Figure size 800x600 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# LOGISTIC REGRESSION MODEL EVALUATION\n", "LRaccuracy = accuracy_score(y_test, LRy_pred)\n", "LRf1 = f1_score(y_test, LRy_pred, average=\"macro\")\n", "LRreport = classification_report(y_test, LRy_pred)\n", "\n", "print(f\"Accuracy: {LRaccuracy:.4f}\")\n", "print(\"Classification Report:\\n\", classification_report(y_test, LRy_pred))\n", "\n", "text_output = f\"Accuracy: {LRaccuracy:.4f}\\nF1 Score: {LRf1:.4f}\\n\\nClassification Report:\\n{LRreport}\"\n", "\n", "plt.figure(figsize=(8, 6))\n", "plt.text(0.01, 0.99, text_output, fontsize=12, ha='left', va='top', family=\"monospace\")\n", "plt.axis(\"off\")\n", "\n", "plt.savefig(\"LRclassification_report.png\", bbox_inches=\"tight\", dpi=300)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note: This can be made better if we use different algorithms such as Naive Bayes" ] }, { "cell_type": "code", "execution_count": 284, "metadata": {}, "outputs": [ { "data": { "image/png": "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zO8Ryc3NlZXVqFEDUqkUSUlJRfZkODs7Y/fu3XJlZ86c+fhFElGpxsmWRGrM19cX1tbW6Ny5M/7++2/cuXMHR48eRUBAAB48eAAACAwMxE8//YSdO3fixo0bGDly5Af3gLC3t4efnx8GDRqEnTt3yur8448/AACVK1eGRCLBnj178OTJE6SlpcHExATjx4/H2LFjsXbtWiQmJiImJgaLFy/G2rVrAQAjRoxAQkICJkyYgPj4eGzcuBGRkZGqfouISGRMJIjUmKGhIY4fP45KlSqha9eucHZ2xuDBg/H69WtZD8W4cePQr18/+Pn5wc3NDSYmJvjmm28+WG94eDi6d++OkSNHonr16hg6dCjS09MBABUqVEBoaCgmTZqEMmXKYPTo0QCA6dOnIyQkBGFhYXB2dka7du2wd+9eODg4AAAqVaqEbdu2YefOnahbty4iIiIwa9YsFb47RKQOJEJRM7KIiIiIPoI9EkRERKQwJhJERESkMCYSREREpDAmEkRERKQwJhJERESkMCYSREREpDAmEkRERKQwJhJERESkMCYSREREpDAmEkRERKQwJhJERESkMCYSREREpLD/B7+wG4CuvHPTAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cm = confusion_matrix(y_test, LRy_pred)\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=sentiment_mapping.keys(), yticklabels=sentiment_mapping.keys())\n", "plt.xlabel(\"Predicted\")\n", "plt.ylabel(\"Actual\")\n", "plt.title(\"Logistic Regression Confusion Matrix\")\n", "plt.savefig(\"LRconfusion_matrix.png\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 285, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model saved successfully\n" ] } ], "source": [ "# SAVING THE MODEL AS A .pkl FILE\n", "joblib.dump(LRmodel, \"LRsentimentAnalysis_model.pkl\")\n", "joblib.dump(vectorizer, \"vectorizer.pkl\")\n", "print(\"Model saved successfully\")" ] }, { "cell_type": "code", "execution_count": 286, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.7600\n", "Classification Report:\n", " precision recall f1-score support\n", "\n", " 0 0.65 0.83 0.73 18\n", " 1 0.83 0.71 0.77 21\n", " 2 0.89 0.73 0.80 11\n", "\n", " accuracy 0.76 50\n", " macro avg 0.79 0.76 0.77 50\n", "weighted avg 0.78 0.76 0.76 50\n", "\n" ] }, { "data": { "image/png": "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/jClXTKNt7d3o98f3t7eJsVR6+IeQCIiIiKZ4TmARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERELeLy5cuIiYlBhw4d4OzsjEmTJqG4uNikunx8fKBQKBr9GTFihE6sEAJr1qxB3759YW9vD3d3d0RGRuLatWvmGBYB2LhxY6NzERoaqhdrzu2AzMfG0h0gIqIHU1RUFHJycjB//nwolUosXboUERERyM7OhrW1tVF1rVixQi+BKygowBtvvKGXAMbFxWHJkiWIjo5GbGwsrl27hv379+PmzZtwdHRs9rjo/yQkJMDV1VX6u1OnTnox5twOyIwEERGRme3evVsAEBs3bpTKdu7cKQCIpKQks7SxcOFCoVAoRGFhoVR2/PhxYW1tLeLi4szSBjVuw4YNAoDIz8+/a1xrbAdkGlkcAr506RLmzp2Lvn37Qq1Ww8nJCVqtFpmZmY3G7927F+Hh4XB2doazszNCQ0Oxe/duo+MadpEXFBTovM7HxwcxMTF69SkUCsTHx2Pbtm3QaDSws7ODn58fvv32W7OP4+bNm3BycsLf//53vdetX78eCoUChw8fbrReIqJ72bFjB1QqFSZNmiSVRUREwMXFBSkpKWZpY9OmTRg+fDg8PT2lss2bN0OpVGL+/PkAwMO+LUwIgYqKCgghGl3eGtsBmUYWCWBeXh7Wr1+PkJAQJCQkYMGCBSgqKkJYWBhOnDihE7tjxw48/vjjKCwsxKuvvop3330XXbt2xdq1a02KM1Z2djb++te/YvTo0VixYgW0Wq2UQJpzHPb29hg/fjy2bt2K2tpandcmJyfjoYceQr9+/Zo1FiKSr9zcXPj7+8POzk4qs7KygkajQW5ubrPrz8rKwunTpzFlyhS9co1Gg5SUFLi7u0OtVsPT0xObN29udpukr1+/ftJOhhdeeAE3btzQWd7S2wE1g6V3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lquALcnb2xsTJ06ERqNBYWEhVqxYAa1Wi4EDB1q6a20C1x8REZH8tPlDwM899xx++OEH/Pnnn3B2dkZUVBSWLVsGJycnS3etTeD6IyIikp82nwASERERkXHa/DmARERERGQcJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhkhgkgERERkcwwASQiIiKSGSaARERERDLDBJCIiIhIZpgAEhEREckME0AiIiIimWECSERERCQzTACJiIiIZIYJIBEREZHMMAEkIiIikhkmgEREREQywwSQiIiISGaYABIRERHJDBNAIiIiIplhAkhEREQkM0wAiYiIiGSGCSARERGRzDABJCIiIpIZJoBEREREMsMEkIiIiEhmmAASERERyQwTQCIiIiKZYQJIREREJDNMAImIiIhk5v8HXuBkATUdQBwAAAAASUVORK5CYII=", "text/plain": [ "<Figure size 800x600 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# RANDOM FOREST CLASSIFICATION MODEL EVALUATION\n", "RFCaccuracy = accuracy_score(y_test, RFCy_pred)\n", "RFCf1 = f1_score(y_test, RFCy_pred, average=\"macro\")\n", "RFCreport = classification_report(y_test, RFCy_pred)\n", "\n", "print(f\"Accuracy: {RFCaccuracy:.4f}\")\n", "print(\"Classification Report:\\n\", classification_report(y_test, RFCy_pred))\n", "\n", "text_output = f\"Accuracy: {RFCaccuracy:.4f}\\nF1 Score: {RFCf1:.4f}\\n\\nClassification Report:\\n{RFCreport}\"\n", "\n", "plt.figure(figsize=(8, 6))\n", "plt.text(0.01, 0.99, text_output, fontsize=12, ha='left', va='top', family=\"monospace\")\n", "plt.axis(\"off\")\n", "\n", "plt.savefig(\"RFCclassification_report.png\", bbox_inches=\"tight\", dpi=300)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 287, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "<Figure size 600x400 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "conf_matrix = confusion_matrix(y_test, RFCy_pred)\n", "# Confusion Matrix Visualization\n", "plt.figure(figsize=(6, 4))\n", "sns.heatmap(conf_matrix, annot=True, cmap='Blues', fmt='d', xticklabels=sentiment_mapping.keys(), yticklabels=sentiment_mapping.keys())\n", "plt.xlabel(\"Predicted\")\n", "plt.ylabel(\"Actual\")\n", "plt.title(\"Regression Forest ClassificationConfusion Matrix\")\n", "plt.savefig(\"RFCConfusion Matrix\")\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 288, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model Saved Successfully\n" ] } ], "source": [ "# SAVING THE MODEL AS A .pkl FILE\n", "joblib.dump(RFCmodel, \"RFCsentimentAnalysis_model.pkl\")\n", "print(\"Model Saved Successfully\")" ] }, { "cell_type": "code", "execution_count": 289, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.7200\n", "Classification Report:\n", " precision recall f1-score support\n", "\n", " 0 0.64 0.78 0.70 18\n", " 1 0.75 0.71 0.73 21\n", " 2 0.88 0.64 0.74 11\n", "\n", " accuracy 0.72 50\n", " macro avg 0.75 0.71 0.72 50\n", "weighted avg 0.74 0.72 0.72 50\n", "\n" ] }, { "data": { "image/png": "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OnRIp438/HwMGzbM5P5FRUXhwIEDBvdWFRYWGnxPYGBgk29wPHr0aFRXVyM5OVkuS0tLQ1lZGZ577jmz201JSUFVVVWjh39ra2sxYcIEFBYWYteuXY3essXYOD8/P+zZs0fnJtS//PILzp49C41G88C+EhERUeMkIYRoaiX5+fnw8/PDhx9+2OjhzgZr1qzB9evXcerUKXz99deYMWMG/Pz80K5dO7z++usmtTty5EicP38ekydPhr+/Py5fvoz169cjPz8f3333nc7evp07dyIqKgr+/v6YPn06PD09cfDgQdy8eRMpKSkA7iaD//Ef/wEbGxvMmTMHALBy5UpIkoRTp07B3d1dp31JkrBo0SIsXrzYYP8qKiowYMAAFBQUYNasWQgKCkJRURG+//57uLi4IC0tTe89DYdBmzItQgiEhobi+PHj8pNAli1bBm9vbxw+fFjvHnzGthsaGopTp06huLhY5wkvDd588018/PHHiI2NxYABA3SW+fv7yxfXGBu3bt06zJw5E3369MGMGTNQVVWFNWvWoLS0FNnZ2ejVq5dpK4aIiIjussSlxMY+CUQIIXx8fAzeLsbHx8fkdv/5z3+KKVOmCD8/P+Hg4CA6deokIiIidG7jcq+MjAyh1WqFWq0WarVahISEiF27dunEnDp1SowcOVI4OTkJJycnMXLkSHH69GmD9QEQixYtemAfS0tLxezZs0XXrl1FmzZthLe3t4iOjhbp6emN1mmJaSkrKxPTpk0Trq6uQq1Wi+joaFFcXNxo/MPazc/PF5IkiVmzZjUaExoa2ujtgKZPn25ynBBCbNmyRTz99NPCxcVFODk5Ca1WK7KysoxeD0RERKTPInsAiYiIiKj1aNXnABIRERGR6ZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihXmkCeCLL74ISZLkV0ZGxqNs3iSLFy+GJEkPjfv1118xevRouLq6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HlLjuP6IiIiUxyLnAFqTj48PJk6cCI1Gg4KCAiQkJECr1SI4ONjaXWsVuP6IiIiUp9UfAn755ZexZ88eXLx4Ea6uroiKisKHH37IJyQYieuPiIhIeVp9AkhEREREpmn15wASERERkWmYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlIYJoBERERECsMEkIiIiEhhmAASERERKQwTQCIiIiKFYQJIREREpDBMAImIiIgUhgkgERERkcIwASQiIiJSGCaARERERArDBJCIiIhIYZgAEhERESkME0AiIiIihWECSERERKQwTACJiIiIFIYJIBEREZHCMAEkIiIiUhgmgEREREQKwwSQiIiISGGYABIREREpDBNAIiIiIoVhAkhERESkMEwAiYiIiBSGCSARERGRwjABJCIiIlKY/w+59gMbhF6BXgAAAABJRU5ErkJggg==", "text/plain": [ "<Figure size 800x600 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# MULTINOMIAL NAIVE BAYES MODEL EVALUATION\n", "MNBaccuracy = accuracy_score(y_test, MNBy_pred)\n", "MNBf1 = f1_score(y_test, MNBy_pred, average=\"macro\")\n", "MNBreport = classification_report(y_test, MNBy_pred)\n", "\n", "print(f\"Accuracy: {MNBaccuracy:.4f}\")\n", "print(\"Classification Report:\\n\", classification_report(y_test, MNBy_pred))\n", "\n", "text_output = f\"Accuracy: {MNBaccuracy:.4f}\\nF1 Score: {MNBf1:.4f}\\n\\nClassification Report:\\n{MNBreport}\"\n", "\n", "plt.figure(figsize=(8, 6))\n", "plt.text(0.01, 0.99, text_output, fontsize=12, ha='left', va='top', family=\"monospace\")\n", "plt.axis(\"off\")\n", "\n", "plt.savefig(\"MNBclassification_report.png\", bbox_inches=\"tight\", dpi=300)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 290, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "<Figure size 600x400 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "conf_matrix = confusion_matrix(y_test, MNBy_pred)\n", "# Confusion Matrix Visualization\n", "plt.figure(figsize=(6, 4))\n", "sns.heatmap(conf_matrix, annot=True, cmap='Blues', fmt='d', xticklabels=sentiment_mapping.keys(), yticklabels=sentiment_mapping.keys())\n", "plt.xlabel(\"Predicted\")\n", "plt.ylabel(\"Actual\")\n", "plt.title(\"Naive Bayes Confusion Matrix\")\n", "plt.savefig(\"MNBConfusion Matrix\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 291, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model Saved Successfully\n" ] } ], "source": [ "# SAVING THE MODEL AS A .pkl FILE\n", "joblib.dump(MNBmodel, \"MNBsentimentAnalysis_model.pkl\")\n", "print(\"Model Saved Successfully\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }