diff --git a/Project.ipynb b/Project.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..bf65247bad01083a5d2b61e2edd354bbb0cb1c29 --- /dev/null +++ b/Project.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"mount_file_id":"1E5wejs86UEHxovHI7I-dXFEij5ojLF7O","authorship_tag":"ABX9TyPBkAqeGnHdZi0GUirGATXp"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"hFVC9j-7V8_Q","executionInfo":{"status":"ok","timestamp":1709854096789,"user_tz":-60,"elapsed":1136,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"outputs":[],"source":["import pandas as pd\n","\n","# Define the path to data in Google Drive\n","file_path = '/content/drive/MyDrive/Text_Mining/sms_data.csv'\n","\n","# Load the CSV file into a DataFrame\n","df = pd.read_csv(file_path, header=0)"]},{"cell_type":"markdown","source":["**Data Exploration**"],"metadata":{"id":"6H0Y9cX_Wq8S"}},{"cell_type":"code","source":["df.head(10)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":363},"id":"b19L7_k2WhNc","executionInfo":{"status":"ok","timestamp":1709854096791,"user_tz":-60,"elapsed":24,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"6bdef282-5b3a-423f-a90f-e0c02d4fd4f4"},"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" Text Spam\n","0 99923 is your one time password to proceed on ... 0\n","1 Sir, please don't send mail to jannu.. few mor... 0\n","2 Paytm never calls you asking for OTP. Sharing ... 0\n","3 Sir,\\nFor evening party are you going with yo... 0\n","4 Dear Client , your account has been activated ... 0\n","5 No not now 0\n","6 I don't use whatsApp 0\n","7 Shall we go shah ghouse restaurant? 0\n","8 Dear IndiGo Customer, fly to Nairobi with retu... 1\n","9 Thanks for the cheque but pls don't forget abo... 0"],"text/html":["\n"," <div id=\"df-a391a640-8c05-4cae-a032-d8711d30c9d0\" 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>Spam</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>99923 is your one time password to proceed on ...</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>Sir, please don't send mail to jannu.. few mor...</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>Paytm never calls you asking for OTP. Sharing ...</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>Sir,\\nFor evening party are you going with yo...</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>Dear Client , your account has been activated ...</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>5</th>\n"," <td>No not now</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>6</th>\n"," <td>I don't use whatsApp</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>7</th>\n"," <td>Shall we go shah ghouse restaurant?</td>\n"," <td>0</td>\n"," </tr>\n"," <tr>\n"," <th>8</th>\n"," <td>Dear IndiGo Customer, fly to Nairobi with retu...</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>9</th>\n"," <td>Thanks for the cheque but pls don't forget abo...</td>\n"," <td>0</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a391a640-8c05-4cae-a032-d8711d30c9d0')\"\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-a391a640-8c05-4cae-a032-d8711d30c9d0 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-a391a640-8c05-4cae-a032-d8711d30c9d0');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n","<div id=\"df-a612e58b-dd47-4331-a353-e41d5eb6ec25\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-a612e58b-dd47-4331-a353-e41d5eb6ec25')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-a612e58b-dd47-4331-a353-e41d5eb6ec25 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n","</div>\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"df","summary":"{\n \"name\": \"df\",\n \"rows\": 3068,\n \"fields\": [\n {\n \"column\": \"Text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2621,\n \"samples\": [\n \"Congratulations my friend\",\n \"Hi, Settle other bank's Credit Card dues with ease through affordable EMIs, and save money!\\nGet your HDFC Bank Credit Card hdfcbk.io/a/P5XbEgPB with Credit Limit up to Rs. 300000 & avail Balance Transfer T&C\",\n \"Redeem ur Rs.500 TRENDS 'Discount Coupons' on shopping of latest styles worth Rs.1250 @TRENDS . Valid on select merchandise. Offer valid till 30 Nov. T&C\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Spam\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":2}]},{"cell_type":"code","source":["df.info()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"2jLWLCRzWc9_","executionInfo":{"status":"ok","timestamp":1709854097108,"user_tz":-60,"elapsed":333,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"de5e0643-39ce-4cbc-d21d-471e4a2f7a7f"},"execution_count":3,"outputs":[{"output_type":"stream","name":"stdout","text":["<class 'pandas.core.frame.DataFrame'>\n","RangeIndex: 3068 entries, 0 to 3067\n","Data columns (total 2 columns):\n"," # Column Non-Null Count Dtype \n","--- ------ -------------- ----- \n"," 0 Text 3068 non-null object\n"," 1 Spam 3068 non-null int64 \n","dtypes: int64(1), object(1)\n","memory usage: 48.1+ KB\n"]}]},{"cell_type":"markdown","source":["**Text Preprocessing**"],"metadata":{"id":"XCZ5a_IlW5cL"}},{"cell_type":"markdown","source":["Removing Sensitive information like Social security number, mobile number, email address, credit card numbers and bank account numbers"],"metadata":{"id":"s7Eo2eGGXD2C"}},{"cell_type":"code","source":["\n","import re\n","\n","# Define a function to remove sensitive information\n","def remove_sensitive_info(text):\n"," # Remove phone numbers\n"," text = re.sub(r'\\b\\+\\d{10,12}\\b|\\b\\d{9,11}\\b', '', text)\n","\n"," # Remove email addresses\n"," text = re.sub(r'\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,3}\\b', '', text)\n","\n"," # Remove social security number, credit card numbers and bank account numbers\n"," # Assuming length of account number is 10 to 16 digits\n"," # Assuming social security number is 10 to 16 digits\n"," # Credit card number is 16 digits\n"," text = re.sub(r'\\b\\d{10,16}\\b', '', text)\n","\n"," # Remove OTPs(one time passwords) (4 to 6 digits)\n"," text = re.sub(r'\\b\\d{4,6}\\b', '', text)\n","\n"," return text\n","\n","# Apply the function to the 'Text'\n","df['Text'] = df['Text'].apply(remove_sensitive_info)"],"metadata":{"id":"SwpKoFYuXAIv","executionInfo":{"status":"ok","timestamp":1709854097110,"user_tz":-60,"elapsed":15,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["# Check for rows with sensitive information and print them\n","# This code should not print anything if the sensitive information is removed.\n","for index, row in df.iterrows():\n"," text = row['Text']\n"," if re.search(r'\\b\\+\\d{10,12}\\b|\\b\\d{9,11}\\b', text) or re.search(r'\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,3}\\b', text):\n"," print(f\"Row {index}: {text}\")"],"metadata":{"id":"ZqkWKpYbXNqQ","executionInfo":{"status":"ok","timestamp":1709854097524,"user_tz":-60,"elapsed":428,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"execution_count":5,"outputs":[]},{"cell_type":"markdown","source":["Lowercasing, removing punctuations & special characters, tokenization, removing stop words and Lemmatization."],"metadata":{"id":"P8dydnFqXgBB"}},{"cell_type":"code","source":["import nltk\n","nltk.download('punkt')\n","nltk.download('stopwords')\n","nltk.download('wordnet')\n","import re\n","from nltk import word_tokenize, pos_tag\n","from nltk.corpus import stopwords\n","from nltk.stem import WordNetLemmatizer\n","\n","def preprocess_text(text):\n"," # Lowercasing\n"," text = text.lower()\n","\n"," # Remove punctuations and special characters\n"," text = re.sub(r'[^a-zA-Z0-9\\s]', '', text)\n","\n"," # Tokenization\n"," tokens = word_tokenize(text)\n","\n"," # Remove stopwords\n"," stop_words = set(stopwords.words('english'))\n"," tokens = [word for word in tokens if word not in stop_words]\n","\n"," # Lemmatization\n"," lemmatizer = WordNetLemmatizer()\n"," tokens = [lemmatizer.lemmatize(word, pos='v') for word in tokens]\n","\n"," return tokens"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ZT4c9tHpXaoE","executionInfo":{"status":"ok","timestamp":1709854101721,"user_tz":-60,"elapsed":4206,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"0201f5fc-3dc0-4b26-e644-68e86c934eab"},"execution_count":6,"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 stopwords to /root/nltk_data...\n","[nltk_data] Unzipping corpora/stopwords.zip.\n","[nltk_data] Downloading package wordnet to /root/nltk_data...\n"]}]},{"cell_type":"code","source":["# example usage of the above function \"preprocess_text\"\n","tokens = preprocess_text(df['Text'].iloc[0])\n","print(tokens)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Q8ZLJCxtXqK_","executionInfo":{"status":"ok","timestamp":1709854104316,"user_tz":-60,"elapsed":2605,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"758808b4-0019-4e42-de22-bb1cadcb4bd5"},"execution_count":7,"outputs":[{"output_type":"stream","name":"stdout","text":["['one', 'time', 'password', 'proceed', 'phonepe', 'valid', '10', 'minutes', 'share', 'otp', 'anyone', 'gzbmdyq76e3']\n"]}]},{"cell_type":"markdown","source":["**Exploratory Data Analysis**"],"metadata":{"id":"Y-g0l0l_X1iX"}},{"cell_type":"code","source":["# counting spam and non-spam SMS's. '1' indicates spam and 'o' indicates non-spam.\n","print(df['Spam'].value_counts())"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qlRULg46X3gl","executionInfo":{"status":"ok","timestamp":1709854104317,"user_tz":-60,"elapsed":11,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"2b5637c3-b183-4cb7-de54-902893c98843"},"execution_count":8,"outputs":[{"output_type":"stream","name":"stdout","text":["0 2669\n","1 399\n","Name: Spam, dtype: int64\n"]}]},{"cell_type":"code","source":["# Visualize the counts\n","\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","sns.countplot(x='Spam', data=df, hue=\"Spam\")\n","plt.title('Class Distribution')\n","plt.xlabel('Class')\n","plt.ylabel('Count')\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":472},"id":"q5COiGKXYf90","executionInfo":{"status":"ok","timestamp":1709854105105,"user_tz":-60,"elapsed":795,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"59d64de5-93f4-425f-e22f-65e4e0f87f71"},"execution_count":9,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 640x480 with 1 Axes>"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1m0lEQVR4nO3deXRV1d3/8c9NIBdCJqZMGgIBRIIMymQKIpRICAHkJ7aiyCRg1QQLsUhR5pbSgoJMSu2jRJ9CQamgBWVKBFTCFBqZqWAkKCRQkFxIJQnJ+f3hk1uuYQxJbsh+v9a6a3H23uec785akA/n7HOuzbIsSwAAAAbzcHcBAAAA7kYgAgAAxiMQAQAA4xGIAACA8QhEAADAeAQiAABgPAIRAAAwHoEIAAAYj0AEAACMRyACUELDhg01dOhQd5dxy6ZMmSKbzVYh5+ratau6du3q3N60aZNsNptWrFhRIecfOnSoGjZsWCHnAqoiAhFgkKNHj+pXv/qVIiIiVKNGDfn5+alTp06aO3eufvjhB3eXd01JSUmy2WzOT40aNRQaGqqYmBjNmzdP58+fL5PznDhxQlOmTFF6enqZHK8sVebagNtdNXcXAKBirFmzRr/4xS9kt9s1ePBg3XPPPcrPz9fnn3+usWPHav/+/XrzzTfdXeZ1TZs2TY0aNVJBQYGysrK0adMmjR49WrNnz9ZHH32kVq1aOcdOmDBBv/3tb2/q+CdOnNDUqVPVsGFDtWnT5ob3W79+/U2dpzSuVdtf/vIXFRUVlXsNQFVFIAIMkJGRoQEDBig8PFwpKSkKCQlx9sXHx+vIkSNas2aNGyu8cbGxsWrXrp1ze/z48UpJSVHv3r3Vt29fHTx4UDVr1pQkVatWTdWqle8/c//5z3/k7e0tLy+vcj3P9VSvXt2t5wdud9wyAwwwc+ZMXbhwQW+99ZZLGCrWpEkT/frXv77q/mfPntVvfvMbtWzZUj4+PvLz81NsbKy+/PLLEmPnz5+vFi1ayNvbW7Vr11a7du20dOlSZ//58+c1evRoNWzYUHa7XYGBgXrooYe0e/fuUs/v5z//uSZOnKhjx47pr3/9q7P9SmuINmzYoM6dOysgIEA+Pj5q1qyZXnrpJUk/rvtp3769JGnYsGHO23NJSUmSflwndM899ygtLU1dunSRt7e3c9+friEqVlhYqJdeeknBwcGqVauW+vbtq+PHj7uMudqarcuPeb3arrSGKDc3Vy+88ILCwsJkt9vVrFkzvfLKK7Isy2WczWZTQkKCVq1apXvuuUd2u10tWrTQ2rVrr/wDB6ogrhABBvjHP/6hiIgI/exnPyvV/l9//bVWrVqlX/ziF2rUqJGys7P15z//WQ8++KAOHDig0NBQST/etnn++ef16KOP6te//rUuXryoPXv2aPv27XriiSckSc8884xWrFihhIQERUZG6syZM/r888918OBB3XfffaWe46BBg/TSSy9p/fr1Gjly5BXH7N+/X71791arVq00bdo02e12HTlyRF988YUkqXnz5po2bZomTZqkp59+Wg888IAkufzczpw5o9jYWA0YMEBPPvmkgoKCrlnX9OnTZbPZNG7cOJ06dUqvvfaaoqOjlZ6e7rySdSNupLbLWZalvn376tNPP9Xw4cPVpk0brVu3TmPHjtV3332nOXPmuIz//PPP9cEHH+i5556Tr6+v5s2bp/79+yszM1N169a94TqB25YFoErLycmxJFkPP/zwDe8THh5uDRkyxLl98eJFq7Cw0GVMRkaGZbfbrWnTpjnbHn74YatFixbXPLa/v78VHx9/w7UUW7x4sSXJ2rlz5zWPfe+99zq3J0+ebF3+z9ycOXMsSdbp06eveoydO3dakqzFixeX6HvwwQctSdaiRYuu2Pfggw86tz/99FNLknXHHXdYDofD2f7ee+9Zkqy5c+c62376877aMa9V25AhQ6zw8HDn9qpVqyxJ1u9//3uXcY8++qhls9msI0eOONskWV5eXi5tX375pSXJmj9/folzAVURt8yAKs7hcEiSfH19S30Mu90uD48f/7koLCzUmTNnnLebLr/VFRAQoG+//VY7d+686rECAgK0fft2nThxotT1XI2Pj881nzYLCAiQJH344YelXoBst9s1bNiwGx4/ePBgl5/9o48+qpCQEH388celOv+N+vjjj+Xp6annn3/epf2FF16QZVn65JNPXNqjo6PVuHFj53arVq3k5+enr7/+ulzrBCoLAhFQxfn5+UnSLT2WXlRUpDlz5qhp06ay2+2qV6+e6tevrz179ignJ8c5bty4cfLx8VGHDh3UtGlTxcfHO29HFZs5c6b27dunsLAwdejQQVOmTCmzX7oXLly4ZvB77LHH1KlTJ40YMUJBQUEaMGCA3nvv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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["The dataset is imbalanced, with a significantly higher number of non-spam (class 0) records compared to spam (class 1) records."],"metadata":{"id":"VzNBKJnaZPFD"}},{"cell_type":"markdown","source":["**Text Representations:**"],"metadata":{"id":"eIRTsj7GbO3V"}},{"cell_type":"markdown","source":["TF-IDF Vectorization:"],"metadata":{"id":"u0pWxiQKbUlE"}},{"cell_type":"code","source":["from sklearn.feature_extraction.text import TfidfVectorizer\n","\n","df_tfidf = df.copy()\n","\n","# Apply the preprocessing function to the 'Text' column\n","df_tfidf['Processed_Text'] = df_tfidf['Text'].apply(preprocess_text)\n","\n","# Join the preprocessed tokens into a single string for each document\n","df_tfidf['Processed_Text_Joined'] = df_tfidf['Processed_Text'].apply(' '.join)\n","\n","# Convert the preprocessed text into numerical features using TF-IDF vectorization\n","tfidf_vectorizer = TfidfVectorizer()\n","X_tfidf = tfidf_vectorizer.fit_transform(df_tfidf['Processed_Text_Joined'])\n","y_tfidf = df_tfidf['Spam']"],"metadata":{"id":"6TB2__MIbWhk","executionInfo":{"status":"ok","timestamp":1709854106690,"user_tz":-60,"elapsed":1595,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"execution_count":10,"outputs":[]},{"cell_type":"markdown","source":["Word Embeddings:"],"metadata":{"id":"Wkv8r8tyccUA"}},{"cell_type":"code","source":["from gensim.models import Word2Vec\n","import numpy as np\n","\n","# Apply the preprocessing function to the 'Text' column\n","df_word2vec = df.copy()\n","df_word2vec['Processed_Text'] = df_word2vec['Text'].apply(preprocess_text)\n","\n","# Train Word2Vec model\n","embedding_size = 100\n","word2vec_model = Word2Vec(sentences=df_word2vec['Processed_Text'], vector_size=embedding_size, window=5, min_count=1, workers=4)\n","\n","# Function to get the document vector by averaging the word vectors\n","def get_doc_vector(doc, model):\n"," word_vectors = [model.wv[word] for word in doc if word in model.wv]\n"," if not word_vectors:\n"," # If no words found in the model's vocabulary, return a vector of zeros\n"," return np.zeros(model.vector_size)\n"," return np.mean(word_vectors, axis=0)\n","\n","# Get document vectors for the entire dataset\n","X_word2vec = np.vstack([get_doc_vector(doc, word2vec_model) for doc in df_word2vec['Processed_Text']])\n","y_word2vec = df_word2vec['Spam']"],"metadata":{"id":"soCKqhKVceB2","executionInfo":{"status":"ok","timestamp":1709854109111,"user_tz":-60,"elapsed":2426,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"execution_count":11,"outputs":[]},{"cell_type":"markdown","source":["Splitting the data into train and test"],"metadata":{"id":"ntcnbvu1eapr"}},{"cell_type":"code","source":["# Split the data into train and test sets with a balanced proportion of each label\n","from sklearn.model_selection import StratifiedShuffleSplit\n","\n","stratified_split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)\n","\n","# For TF-IDF Vectorization\n","for train_index, test_index in stratified_split.split(X_tfidf, y_tfidf):\n"," X_train_tfidf, X_test_tfidf = X_tfidf[train_index], X_tfidf[test_index]\n"," y_train_tfidf, y_test_tfidf = y_tfidf.iloc[train_index], y_tfidf.iloc[test_index]\n","\n","# For Word2Vec Vectorization\n","for train_index, test_index in stratified_split.split(X_word2vec, y_word2vec):\n"," X_train_word2vec, X_test_word2vec = X_word2vec[train_index], X_word2vec[test_index]\n"," y_train_word2vec, y_test_word2vec = y_word2vec.iloc[train_index], y_word2vec.iloc[test_index]"],"metadata":{"id":"8W7xx0ppebri","executionInfo":{"status":"ok","timestamp":1709854109112,"user_tz":-60,"elapsed":44,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"execution_count":12,"outputs":[]},{"cell_type":"markdown","source":["**Methods**"],"metadata":{"id":"EQOl-TlpdLKr"}},{"cell_type":"markdown","source":["### Dummy Classifier with TF-IDF Vectorization:"],"metadata":{"id":"byz82JWBdbjP"}},{"cell_type":"code","source":["from sklearn.dummy import DummyClassifier\n","from sklearn.metrics import accuracy_score, classification_report, roc_auc_score, roc_curve\n","\n","# Create and fit the Random Classifier for TF-IDF Vectorization\n","random_clf_tfidf = DummyClassifier(strategy=\"uniform\", random_state=42)\n","random_clf_tfidf.fit(X_train_tfidf, y_train_tfidf)\n","\n","# Predictions\n","y_pred_tfidf = random_clf_tfidf.predict(X_test_tfidf)\n","y_proba_tfidf = random_clf_tfidf.predict_proba(X_test_tfidf)[:, 1]\n","\n","# Evaluation metrics for TF-IDF Vectorization\n","accuracy_tfidf = accuracy_score(y_test_tfidf, y_pred_tfidf)\n","roc_auc_tfidf = roc_auc_score(y_test_tfidf, y_proba_tfidf)\n","classification_report_tfidf = classification_report(y_test_tfidf, y_pred_tfidf)\n","\n","# ROC Curve for TF-IDF Vectorization\n","fpr_tfidf, tpr_tfidf, _ = roc_curve(y_test_tfidf, y_proba_tfidf)\n","\n","# Print results for TF-IDF Vectorization\n","print(\"TF-IDF Vectorization Results:\")\n","print(f\"Accuracy: {accuracy_tfidf:.4f}\")\n","print(f\"ROC AUC Score: {roc_auc_tfidf:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"dmGsbv2bEKYL","executionInfo":{"status":"ok","timestamp":1709854109113,"user_tz":-60,"elapsed":36,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"f8af925e-815c-41b3-966b-b709db985b12"},"execution_count":13,"outputs":[{"output_type":"stream","name":"stdout","text":["TF-IDF Vectorization Results:\n","Accuracy: 0.4902\n","ROC AUC Score: 0.5000\n"]}]},{"cell_type":"markdown","source":["### Dummy Classifier with Word2Vec Vectorization"],"metadata":{"id":"77Bw0TlvHYUP"}},{"cell_type":"code","source":["\n","# Create and fit the Random Classifier for Word2Vec Vectorization\n","random_clf_word2vec = DummyClassifier(strategy=\"uniform\", random_state=42)\n","random_clf_word2vec.fit(X_train_word2vec, y_train_word2vec)\n","\n","# Predictions\n","y_pred_word2vec = random_clf_word2vec.predict(X_test_word2vec)\n","y_proba_word2vec = random_clf_word2vec.predict_proba(X_test_word2vec)[:, 1]\n","\n","# Evaluation metrics for Word2Vec Vectorization\n","accuracy_word2vec = accuracy_score(y_test_word2vec, y_pred_word2vec)\n","roc_auc_word2vec = roc_auc_score(y_test_word2vec, y_proba_word2vec)\n","classification_report_word2vec = classification_report(y_test_word2vec, y_pred_word2vec)\n","\n","# ROC Curve for Word2Vec Vectorization\n","fpr_word2vec, tpr_word2vec, _ = roc_curve(y_test_word2vec, y_proba_word2vec)\n","\n","# Print results for Word2Vec Vectorization\n","print(\"Word2Vec Vectorization Results:\")\n","print(f\"Accuracy: {accuracy_word2vec:.4f}\")\n","print(f\"ROC AUC Score: {roc_auc_word2vec:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"oUyjbNaaErQz","executionInfo":{"status":"ok","timestamp":1709854109113,"user_tz":-60,"elapsed":22,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"b5a98f36-b7ac-49b1-dc7f-b4b462db7565"},"execution_count":14,"outputs":[{"output_type":"stream","name":"stdout","text":["Word2Vec Vectorization Results:\n","Accuracy: 0.4902\n","ROC AUC Score: 0.5000\n"]}]},{"cell_type":"markdown","source":["###Support Vector Classifier with TF-IDF Vectorization:"],"metadata":{"id":"c39UENrDGyFs"}},{"cell_type":"code","source":["from sklearn.model_selection import GridSearchCV"],"metadata":{"id":"A47e_OPcGzeO","executionInfo":{"status":"ok","timestamp":1709854109114,"user_tz":-60,"elapsed":17,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}}},"execution_count":15,"outputs":[]},{"cell_type":"code","source":["from sklearn.svm import SVC\n","\n","# Define the SVM model\n","svm_model = SVC(probability=True)\n","\n","# Define the hyperparameter grid for SVM\n","param_grid_svm = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}\n","\n","# Create an instance of GridSearchCV for SVM\n","grid_search_svm = GridSearchCV(svm_model, param_grid_svm, cv=5, scoring='roc_auc')\n","\n","# Fit the grid search on the training data\n","grid_search_svm.fit(X_train_tfidf, y_train_tfidf)\n","\n","# Get the best SVM model from the grid search\n","best_svm_model = grid_search_svm.best_estimator_\n","\n","# Make predictions on the test data\n","y_pred_svm = best_svm_model.predict(X_test_tfidf)\n","y_pred_proba_svm = best_svm_model.predict_proba(X_test_tfidf)[:, 1]\n","\n","# Evaluate the model\n","accuracy_svm = accuracy_score(y_test_tfidf, y_pred_svm)\n","classification_report_svm = classification_report(y_test_tfidf, y_pred_svm)\n","auc_svm = roc_auc_score(y_test_tfidf, y_pred_proba_svm)\n","\n","# Print results\n","print(f\"Best SVM Model: {best_svm_model}\")\n","print(f\"Accuracy: {accuracy_svm:.4f}\")\n","print(f\"AUC: {auc_svm:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"PcwzFKTUds2h","executionInfo":{"status":"ok","timestamp":1709854139185,"user_tz":-60,"elapsed":30087,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"74f443c6-984e-4246-fc5b-a30b8cffa7da"},"execution_count":16,"outputs":[{"output_type":"stream","name":"stdout","text":["Best SVM Model: SVC(C=10, probability=True)\n","Accuracy: 0.9577\n","AUC: 0.9863\n"]}]},{"cell_type":"markdown","source":["### Support Vector Classifier with Word2Vec Vectorization:"],"metadata":{"id":"P4jZ0uQ0rG_A"}},{"cell_type":"code","source":["# Define the SVM model\n","svm_model_word2vec = SVC(probability=True)\n","\n","# Define the hyperparameter grid for SVM\n","param_grid_svm_word2vec = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}\n","\n","# Create an instance of GridSearchCV for SVM with Word2Vec\n","grid_search_svm_word2vec = GridSearchCV(svm_model_word2vec, param_grid_svm_word2vec, cv=5, scoring='roc_auc')\n","\n","# Fit the grid search on the training data\n","grid_search_svm_word2vec.fit(X_train_word2vec, y_train_word2vec)\n","\n","# Get the best SVM model from the grid search\n","best_svm_model_word2vec = grid_search_svm_word2vec.best_estimator_\n","\n","# Make predictions on the test data\n","y_pred_svm_word2vec = best_svm_model_word2vec.predict(X_test_word2vec)\n","y_pred_proba_svm_word2vec = best_svm_model_word2vec.predict_proba(X_test_word2vec)[:, 1]\n","\n","# Evaluate the model\n","accuracy_svm_word2vec = accuracy_score(y_test_word2vec, y_pred_svm_word2vec)\n","classification_report_svm_word2vec = classification_report(y_test_word2vec, y_pred_svm_word2vec)\n","auc_svm_word2vec = roc_auc_score(y_test_word2vec, y_pred_proba_svm_word2vec)\n","\n","# Print results\n","print(f\"Best SVM Model with Word2Vec: {best_svm_model_word2vec}\")\n","print(f\"Accuracy: {accuracy_svm_word2vec:.4f}\")\n","print(f\"AUC: {auc_svm_word2vec:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eo5G4GDHrVdF","executionInfo":{"status":"ok","timestamp":1709854157458,"user_tz":-60,"elapsed":18478,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"966668db-d137-457c-a8c0-936a17f8fcaa"},"execution_count":17,"outputs":[{"output_type":"stream","name":"stdout","text":["Best SVM Model with Word2Vec: SVC(C=10, probability=True)\n","Accuracy: 0.9007\n","AUC: 0.9508\n"]}]},{"cell_type":"markdown","source":["### Random Forest Classifier with TF-IDF Vectorization"],"metadata":{"id":"t9PbIpfAH8Iu"}},{"cell_type":"code","source":["from sklearn.ensemble import RandomForestClassifier\n","\n","# Define the Random Forest model\n","random_forest_model_tfidf = RandomForestClassifier()\n","\n","# Define the hyperparameter grid for Random Forest\n","param_grid_rf_tfidf = {\n"," 'n_estimators': [50, 100, 200],\n"," 'max_depth': [None, 10, 20],\n"," 'min_samples_split': [2, 5, 10],\n"," 'min_samples_leaf': [1, 2, 4]\n","}\n","\n","# Create an instance of GridSearchCV for Random Forest\n","grid_search_rf_tfidf = GridSearchCV(random_forest_model_tfidf, param_grid_rf_tfidf, cv=5, scoring='roc_auc')\n","\n","# Fit the grid search on the training data\n","grid_search_rf_tfidf.fit(X_train_tfidf, y_train_tfidf)\n","\n","# Get the best Random Forest model from the grid search\n","best_rf_model_tfidf = grid_search_rf_tfidf.best_estimator_\n","\n","# Make predictions on the test data\n","y_pred_rf_tfidf = best_rf_model_tfidf.predict(X_test_tfidf)\n","y_pred_proba_rf_tfidf = best_rf_model_tfidf.predict_proba(X_test_tfidf)[:, 1]\n","\n","# Evaluate the model\n","accuracy_rf_tfidf = accuracy_score(y_test_tfidf, y_pred_rf_tfidf)\n","classification_report_rf_tfidf = classification_report(y_test_tfidf, y_pred_rf_tfidf)\n","auc_rf_tfidf = roc_auc_score(y_test_tfidf, y_pred_proba_rf_tfidf)\n","\n","# Print results\n","print(f\"Best Random Forest Model with TF-IDF: {best_rf_model_tfidf}\")\n","print(f\"Accuracy: {accuracy_rf_tfidf:.4f}\")\n","print(f\"AUC: {auc_rf_tfidf:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"iGJMQ8mEIC8n","executionInfo":{"status":"ok","timestamp":1709854461689,"user_tz":-60,"elapsed":304267,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"8d2fff69-1650-4e94-ee00-a16458df416f"},"execution_count":18,"outputs":[{"output_type":"stream","name":"stdout","text":["Best Random Forest Model with TF-IDF: RandomForestClassifier(min_samples_split=5)\n","Accuracy: 0.9642\n","AUC: 0.9882\n"]}]},{"cell_type":"markdown","source":["### Random Forest Classifier with Word2Vec Vectorization"],"metadata":{"id":"ETnM2kJrILLz"}},{"cell_type":"code","source":["# Define the Random Forest model\n","random_forest_model_word2vec = RandomForestClassifier()\n","\n","# Define the hyperparameter grid for Random Forest\n","param_grid_rf_word2vec = {\n"," 'n_estimators': [50, 100, 200],\n"," 'max_depth': [None, 10, 20],\n"," 'min_samples_split': [2, 5, 10],\n"," 'min_samples_leaf': [1, 2, 4]\n","}\n","\n","# Create an instance of GridSearchCV for Random Forest\n","grid_search_rf_word2vec = GridSearchCV(random_forest_model_word2vec, param_grid_rf_word2vec, cv=5, scoring='roc_auc')\n","\n","# Fit the grid search on the training data\n","grid_search_rf_word2vec.fit(X_train_word2vec, y_train_word2vec)\n","\n","# Get the best Random Forest model from the grid search\n","best_rf_model_word2vec = grid_search_rf_word2vec.best_estimator_\n","\n","# Make predictions on the test data\n","y_pred_rf_word2vec = best_rf_model_word2vec.predict(X_test_word2vec)\n","y_pred_proba_rf_word2vec = best_rf_model_word2vec.predict_proba(X_test_word2vec)[:, 1]\n","\n","# Evaluate the model\n","accuracy_rf_word2vec = accuracy_score(y_test_word2vec, y_pred_rf_word2vec)\n","classification_report_rf_word2vec = classification_report(y_test_word2vec, y_pred_rf_word2vec)\n","auc_rf_word2vec = roc_auc_score(y_test_word2vec, y_pred_proba_rf_word2vec)\n","\n","# Print results\n","print(f\"Best Random Forest Model with Word2Vec: {best_rf_model_word2vec}\")\n","print(f\"Accuracy: {accuracy_rf_word2vec:.4f}\")\n","print(f\"AUC: {auc_rf_word2vec:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pWBOvVMsIPTj","executionInfo":{"status":"ok","timestamp":1709855020095,"user_tz":-60,"elapsed":558483,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"891de2dc-f2af-4ae8-957a-fd0ffbfd8011"},"execution_count":19,"outputs":[{"output_type":"stream","name":"stdout","text":["Best Random Forest Model with Word2Vec: RandomForestClassifier(min_samples_leaf=2, min_samples_split=5,\n"," n_estimators=200)\n","Accuracy: 0.9397\n","AUC: 0.9739\n"]}]},{"cell_type":"markdown","source":["### XGBoost Classifier with TF-IDF vectorization"],"metadata":{"id":"4gRWud9P7DZ4"}},{"cell_type":"code","source":["from xgboost import XGBClassifier\n","\n","# Define the XGBoost model\n","xgb_model_tfidf = XGBClassifier()\n","\n","# Define the hyperparameter grid for XGBoost\n","param_grid_xgb_tfidf = {\n"," 'learning_rate': [0.01, 0.1, 0.2],\n"," 'n_estimators': [50, 100, 200],\n"," 'max_depth': [3, 5, 7],\n"," 'subsample': [0.8, 1.0],\n"," 'colsample_bytree': [0.8, 1.0],\n"," 'gamma': [0, 1, 5]\n","}\n","\n","# Create an instance of GridSearchCV for XGBoost\n","grid_search_xgb_tfidf = GridSearchCV(xgb_model_tfidf, param_grid_xgb_tfidf, cv=5, scoring='roc_auc')\n","\n","# Fit the grid search on the training data\n","grid_search_xgb_tfidf.fit(X_train_tfidf, y_train_tfidf)\n","\n","# Get the best XGBoost model from the grid search\n","best_xgb_model_tfidf = grid_search_xgb_tfidf.best_estimator_\n","\n","# Make predictions on the test data\n","y_pred_xgb_tfidf = best_xgb_model_tfidf.predict(X_test_tfidf)\n","y_pred_proba_xgb_tfidf = best_xgb_model_tfidf.predict_proba(X_test_tfidf)[:, 1]\n","\n","# Evaluate the model\n","accuracy_xgb_tfidf = accuracy_score(y_test_tfidf, y_pred_xgb_tfidf)\n","classification_report_xgb_tfidf = classification_report(y_test_tfidf, y_pred_xgb_tfidf)\n","auc_xgb_tfidf = roc_auc_score(y_test_tfidf, y_pred_proba_xgb_tfidf)\n","\n","# Print results\n","print(f\"Best XGBoost Model with TF-IDF: {best_xgb_model_tfidf}\")\n","print(f\"Accuracy: {accuracy_xgb_tfidf:.4f}\")\n","print(f\"AUC: {auc_xgb_tfidf:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"GtLG6DlC7LL2","executionInfo":{"status":"ok","timestamp":1709855778032,"user_tz":-60,"elapsed":758262,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"a2579811-2779-4527-edea-e5e85c35f2ea"},"execution_count":20,"outputs":[{"output_type":"stream","name":"stdout","text":["Best XGBoost Model with TF-IDF: XGBClassifier(base_score=None, booster=None, callbacks=None,\n"," colsample_bylevel=None, colsample_bynode=None,\n"," colsample_bytree=1.0, device=None, early_stopping_rounds=None,\n"," enable_categorical=False, eval_metric=None, feature_types=None,\n"," gamma=0, grow_policy=None, importance_type=None,\n"," interaction_constraints=None, learning_rate=0.1, max_bin=None,\n"," max_cat_threshold=None, max_cat_to_onehot=None,\n"," max_delta_step=None, max_depth=5, max_leaves=None,\n"," min_child_weight=None, missing=nan, monotone_constraints=None,\n"," multi_strategy=None, n_estimators=100, n_jobs=None,\n"," num_parallel_tree=None, random_state=None, ...)\n","Accuracy: 0.9658\n","AUC: 0.9855\n"]}]},{"cell_type":"markdown","source":["### XGBoost Classifier with Word2Vec vectorization"],"metadata":{"id":"5bmdEdl4Mccq"}},{"cell_type":"code","source":["# Define the XGBoost model\n","xgb_model_word2vec = XGBClassifier()\n","\n","# Define the hyperparameter grid for XGBoost\n","param_grid_xgb_word2vec = {\n"," 'learning_rate': [0.01, 0.1, 0.2],\n"," 'n_estimators': [50, 100, 200],\n"," 'max_depth': [3, 5, 7],\n"," 'subsample': [0.8, 1.0],\n"," 'colsample_bytree': [0.8, 1.0],\n"," 'gamma': [0, 1, 5]\n","}\n","\n","# Create an instance of GridSearchCV for XGBoost\n","grid_search_xgb_word2vec = GridSearchCV(xgb_model_word2vec, param_grid_xgb_word2vec, cv=5, scoring='roc_auc')\n","\n","# Fit the grid search on the training data\n","grid_search_xgb_word2vec.fit(X_train_word2vec, y_train_word2vec)\n","\n","# Get the best XGBoost model from the grid search\n","best_xgb_model_word2vec = grid_search_xgb_word2vec.best_estimator_\n","\n","# Make predictions on the test data\n","y_pred_xgb_word2vec = best_xgb_model_word2vec.predict(X_test_word2vec)\n","y_pred_proba_xgb_word2vec = best_xgb_model_word2vec.predict_proba(X_test_word2vec)[:, 1]\n","\n","# Evaluate the model\n","accuracy_xgb_word2vec = accuracy_score(y_test_word2vec, y_pred_xgb_word2vec)\n","classification_report_xgb_word2vec = classification_report(y_test_word2vec, y_pred_xgb_word2vec)\n","auc_xgb_word2vec = roc_auc_score(y_test_word2vec, y_pred_proba_xgb_word2vec)\n","\n","# Print results\n","print(f\"Best XGBoost Model with Word2Vec: {best_xgb_model_word2vec}\")\n","print(f\"Accuracy: {accuracy_xgb_word2vec:.4f}\")\n","print(f\"AUC: {auc_xgb_word2vec:.4f}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ZrBbL-vDMkh_","executionInfo":{"status":"ok","timestamp":1709857158691,"user_tz":-60,"elapsed":1380723,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"6bafb840-9879-4423-aac4-306bbbae3488"},"execution_count":21,"outputs":[{"output_type":"stream","name":"stdout","text":["Best XGBoost Model with Word2Vec: XGBClassifier(base_score=None, booster=None, callbacks=None,\n"," colsample_bylevel=None, colsample_bynode=None,\n"," colsample_bytree=1.0, device=None, early_stopping_rounds=None,\n"," enable_categorical=False, eval_metric=None, feature_types=None,\n"," gamma=0, grow_policy=None, importance_type=None,\n"," interaction_constraints=None, learning_rate=0.2, max_bin=None,\n"," max_cat_threshold=None, max_cat_to_onehot=None,\n"," max_delta_step=None, max_depth=3, max_leaves=None,\n"," min_child_weight=None, missing=nan, monotone_constraints=None,\n"," multi_strategy=None, n_estimators=200, n_jobs=None,\n"," num_parallel_tree=None, random_state=None, ...)\n","Accuracy: 0.9479\n","AUC: 0.9797\n"]}]},{"cell_type":"markdown","source":["### ROC-AUC Plot"],"metadata":{"id":"PSl-0qeVh26v"}},{"cell_type":"code","source":["fpr_svm, tpr_svm, _ = roc_curve(y_test_tfidf, y_pred_proba_svm)\n","fpr_rf_tfidf, tpr_rf_tfidf, _ = roc_curve(y_test_tfidf, y_pred_proba_rf_tfidf)\n","fpr_xgb_tfidf, tpr_xgb_tfidf, _ = roc_curve(y_test_tfidf, y_pred_proba_xgb_tfidf)\n","\n","plt.plot(fpr_svm, tpr_svm, label=f'SVM (AUC = {auc_svm:.4f})')\n","plt.plot(fpr_rf_tfidf, tpr_rf_tfidf, label=f'Random Forest (AUC = {auc_rf_tfidf:.4f})')\n","plt.plot(fpr_xgb_tfidf, tpr_xgb_tfidf, label=f'XGBoost (AUC = {auc_xgb_tfidf:.4f})')\n","plt.plot([0, 1], [0, 1], 'k--', label='Random (AUC = 0.5000)')\n","plt.xlabel('False Positive Rate')\n","plt.ylabel('True Positive Rate')\n","plt.title('Comparison of ROC-AUC')\n","plt.legend()\n","plt.show()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":472},"id":"o82ct6Fbjc0T","executionInfo":{"status":"ok","timestamp":1709859469328,"user_tz":-60,"elapsed":1028,"user":{"displayName":"M UMAMAHESWARABABU","userId":"03911918872891061132"}},"outputId":"12b3fa0f-8c4f-4ed1-b0be-5fe51cb54037"},"execution_count":25,"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 640x480 with 1 Axes>"],"image/png":"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\n"},"metadata":{}}]}]} \ No newline at end of file