{ "cells": [ { "cell_type": "markdown", "id": "1", "metadata": { "id": "1" }, "source": [ "# Support Vector Machine (SVM)" ] }, { "cell_type": "code", "execution_count": 7, "id": "2", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2", "outputId": "b35b2f03-7b2b-4623-ffbd-1a4eda72085a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SVM model ready for training\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import scipy.sparse as sp\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.model_selection import GridSearchCV\n", "from sklearn.svm import SVC, LinearSVC\n", "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report\n", "from sklearn.preprocessing import StandardScaler\n", "import time\n", "import joblib\n", "import nltk\n", "from nltk.corpus import stopwords\n", "from nltk.tokenize import word_tokenize\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "# Download NLTK data\n", "nltk.download('punkt', quiet=True)\n", "nltk.download('stopwords', quiet=True)\n", "print(\"SVM model ready for training\")" ] }, { "cell_type": "markdown", "id": "b7943951", "metadata": {}, "source": [ "back to root to call functions from helpers.py file" ] }, { "cell_type": "code", "execution_count": 2, "id": "ad3ceb28", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "e:\\AI_ML\\proj\\sentiment-analysis-of-amazon-reviews-using-machine-learning-ml-queens\\notebooks\n", "E:\\AI_ML\\proj\\sentiment-analysis-of-amazon-reviews-using-machine-learning-ml-queens\n" ] } ], "source": [ "import os\n", "from pathlib import Path\n", "print(Path.cwd())\n", "os.chdir(Path('..').resolve())\n", "from src.utils.helpers import save\n", "print(Path.cwd())" ] }, { "cell_type": "markdown", "id": "3", "metadata": { "id": "3" }, "source": [ "## Data Acquisition" ] }, { "cell_type": "markdown", "id": "c379147f", "metadata": {}, "source": [ "load dataset" ] }, { "cell_type": "code", "execution_count": 3, "id": "6MB9TCponc-l", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6MB9TCponc-l", "outputId": "8bfb9b54-6b12-4eb5-d275-818969b23f7b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X_train shape: (79972, 100000)\n", "y_train shape: (79972,)\n" ] } ], "source": [ "X_train_tfidf = sp.load_npz('data/vectorizers/X_train_tfidf.npz').tocsr()\n", "print(f\"X_train shape: {X_train_tfidf.shape}\")\n", "y_train = pd.read_csv('data/processed/y_train.csv').squeeze()\n", "print(f\"y_train shape: {y_train.shape}\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "05278c8e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X_valid shape: (20000, 100000)\n", "y_valid shape: (20000,)\n" ] } ], "source": [ "X_valid = sp.load_npz('data/vectorizers/X_valid_tfidf.npz').tocsr()\n", "print(f\"X_valid shape: {X_valid.shape}\")\n", "y_valid = pd.read_csv('data/processed/y_valid.csv').squeeze()\n", "print(f\"y_valid shape: {y_valid.shape}\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "957857db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X_test shape: (20000, 100000)\n", "y_test shape: (20000,)\n" ] } ], "source": [ "X_test_tfidf = sp.load_npz('data/vectorizers/X_test_tfidf.npz').tocsr()\n", "print(f\"X_test shape: {X_test_tfidf.shape}\")\n", "y_test = pd.read_csv('data/processed/y_test.csv').squeeze()\n", "print(f\"y_test shape: {y_test.shape}\")" ] }, { "cell_type": "markdown", "id": "36b8737a", "metadata": {}, "source": [ "## Hyperparameter Tuning with GridSearchCV\n", "\n", "We use `GridSearchCV` to systematically explore the best hyperparameters and optimize for F1-score.\n", "\n", "Note: We use a smaller subset of hyperparameters to balance computational efficiency with model quality.\n", "`LinearSVC` with kernel='linear' is significantly faster than `SVC`, but we also test `SVC` with linear kernel for comparison." ] }, { "cell_type": "code", "execution_count": 8, "id": "594c2df2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting GridSearchCV for LinearSVC...\n", "Fitting 3 folds for each of 40 candidates, totalling 120 fits\n", "\n", "GridSearchCV completed in 85.3992 seconds\n" ] } ], "source": [ "# Define the hyperparameter search space\n", "param_grid = {\n", " 'C': [0.01, 0.1, 1.0, 10.0, 100.0], # Regularization strength\n", " 'loss': ['squared_hinge', 'hinge'], # Loss function for LinearSVC\n", " 'penalty': ['l1', 'l2'], # Regularization type\n", " 'max_iter': [2000, 3000], # Convergence iterations\n", "}\n", "# Base estimator — LinearSVC (efficient for sparse TF-IDF data)\n", "base_svm = LinearSVC(dual='auto', random_state=42, verbose=0)\n", "print(\"Starting GridSearchCV for LinearSVC...\")\n", "search_start = time.time()\n", "grid_search = GridSearchCV(\n", " estimator=base_svm,\n", " param_grid=param_grid,\n", " scoring='f1', # Optimize for F1 (balanced metric for binary sentiment)\n", " cv=3, # 3-fold cross-validation\n", " n_jobs=10,\n", " verbose=2,\n", " refit=True # Refit best model on the full training set\n", ")\n", "grid_search.fit(X_train_tfidf, y_train)\n", "search_time = time.time() - search_start\n", "print(f\"\\nGridSearchCV completed in {search_time:.4f} seconds\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "81bb55ea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best Parameters:\n", " C: 1.0\n", " loss: hinge\n", " max_iter: 2000\n", " penalty: l2\n", "\n", "Best CV F1-Score: 0.8875\n" ] } ], "source": [ "# Inspect the best hyperparameters found\n", "print(\"Best Parameters:\")\n", "for param, value in grid_search.best_params_.items():\n", " print(f\" {param}: {value}\")\n", "print(f\"\\nBest CV F1-Score: {grid_search.best_score_:.4f}\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "34e60062", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Top 10 hyperparameter combinations (by F1):\n", " params mean_test_score std_test_score rank_test_score\n", " {'C': 1.0, 'loss': 'hinge', 'max_iter': 2000, 'penalty': 'l2'} 0.887476 0.000835 1\n", " {'C': 1.0, 'loss': 'hinge', 'max_iter': 3000, 'penalty': 'l2'} 0.887476 0.000835 1\n", " {'C': 1.0, 'loss': 'squared_hinge', 'max_iter': 3000, 'penalty': 'l2'} 0.886403 0.000776 3\n", " {'C': 1.0, 'loss': 'squared_hinge', 'max_iter': 2000, 'penalty': 'l2'} 0.886403 0.000776 3\n", " {'C': 0.1, 'loss': 'squared_hinge', 'max_iter': 3000, 'penalty': 'l2'} 0.884512 0.001699 5\n", " {'C': 0.1, 'loss': 'squared_hinge', 'max_iter': 2000, 'penalty': 'l2'} 0.884512 0.001699 5\n", " {'C': 1.0, 'loss': 'squared_hinge', 'max_iter': 2000, 'penalty': 'l1'} 0.881586 0.001206 7\n", " {'C': 1.0, 'loss': 'squared_hinge', 'max_iter': 3000, 'penalty': 'l1'} 0.881586 0.001206 7\n", "{'C': 10.0, 'loss': 'squared_hinge', 'max_iter': 2000, 'penalty': 'l2'} 0.872585 0.000389 9\n", "{'C': 10.0, 'loss': 'squared_hinge', 'max_iter': 3000, 'penalty': 'l2'} 0.872585 0.000389 9\n" ] } ], "source": [ "# CV results summary — top 10 combinations\n", "cv_results = pd.DataFrame(grid_search.cv_results_)\n", "top_results = (\n", " cv_results[['params', 'mean_test_score', 'std_test_score', 'rank_test_score']]\n", " .sort_values('rank_test_score')\n", " .head(10)\n", ")\n", "print(\"Top 10 hyperparameter combinations (by F1):\")\n", "print(top_results.to_string(index=False))" ] }, { "cell_type": "markdown", "id": "11", "metadata": { "id": "11" }, "source": [ "## SVM Model Training (LinearSVC for efficiency)" ] }, { "cell_type": "code", "execution_count": 12, "id": "7d9d81ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Final SVM Model trained with best hyperparameters:\n", " Training set size: (79972, 100000)\n", " F1-Score (CV): 0.8875\n" ] } ], "source": [ "# Retrieve the best estimator (already refit on the full training set)\n", "svm_classifier = grid_search.best_estimator_\n", "\n", "print(f\"Final SVM Model trained with best hyperparameters:\")\n", "print(f\" Training set size: {X_train_tfidf.shape}\")\n", "print(f\" F1-Score (CV): {grid_search.best_score_:.4f}\")" ] }, { "cell_type": "code", "execution_count": null, "id": "12", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "12", "outputId": "af18f31f-f3d9-43eb-abb4-9a42c3ff171a" }, "outputs": [], "source": [ "# # # Train SVC (enormous amount of time and RAM)\n", "# print(\"Training LinearSVC Classifier...\")\n", "# start_time = time.time()\n", "# svm_classifier = SVC(\n", "# kernel='ٌRBF',\n", "# # degree=3, \n", "# C=1.0, # Regularization parameter\n", "# gamma='scale',\n", "# # coef0=1.0,\n", "# probability=True,\n", "# max_iter=2000, # Maximum iterations\n", "# random_state=42,\n", "# verbose=0,\n", "# )\n", "# svm_classifier.fit(X_train_tfidf, y_train)\n", "# training_time = time.time() - start_time\n", "# print(f\"Training completed in {training_time:.4f} seconds\")" ] }, { "cell_type": "markdown", "id": "13", "metadata": { "id": "13" }, "source": [ "## Model Evaluation" ] }, { "cell_type": "code", "execution_count": null, "id": "14", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "14", "outputId": "534158fb-c349-4b4a-e734-93e62579deed" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SVM (LinearSVC) CLASSIFIER - PERFORMANCE METRICS\n", "Accuracy: 0.8891\n", "Precision: 0.8883\n", "Recall: 0.8892\n", "F1-Score: 0.8888\n" ] } ], "source": [ "# Make predictions\n", "y_pred = svm_classifier.predict(X_test_tfidf)\n", "# Calculate metrics\n", "accuracy = accuracy_score(y_test, y_pred)\n", "precision = precision_score(y_test, y_pred)\n", "recall = recall_score(y_test, y_pred)\n", "f1 = f1_score(y_test, y_pred)\n", "# Print results\n", "print(\"SVM (LinearSVC) CLASSIFIER - PERFORMANCE METRICS\")\n", "print(f\"Accuracy: {accuracy:.4f}\")\n", "print(f\"Precision: {precision:.4f}\")\n", "print(f\"Recall: {recall:.4f}\")\n", "print(f\"F1-Score: {f1:.4f}\")\n", "print(f\"Training Time: {search_time:.4f} seconds\")" ] }, { "cell_type": "markdown", "id": "15", "metadata": { "id": "15" }, "source": [ "## Classification Report" ] }, { "cell_type": "code", "execution_count": 16, "id": "16", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "16", "outputId": "6aecf1e9-66dd-4e1f-b4b6-e02309b45466" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification Report:\n", " precision recall f1-score support\n", "\n", " Negative 0.89 0.89 0.89 9966\n", " Positive 0.89 0.89 0.89 10034\n", "\n", " accuracy 0.89 20000\n", " macro avg 0.89 0.89 0.89 20000\n", "weighted avg 0.89 0.89 0.89 20000\n", "\n" ] } ], "source": [ "print(\"Classification Report:\")\n", "print(classification_report(y_test, y_pred, target_names=['Negative', 'Positive']))" ] }, { "cell_type": "markdown", "id": "17", "metadata": { "id": "17" }, "source": [ "## Confusion Matrix Visualization" ] }, { "cell_type": "code", "execution_count": null, "id": "18", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 746 }, "id": "18", "outputId": "824234e2-bf2f-4d28-af36-0b7fe90ff83a" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Confusion Matrix:\n", "[[8862 1104]\n", " [1114 8920]]\n", "\n", "True Negatives: 8862\n", "False Positives: 1104\n", "False Negatives: 1114\n", "True Positives: 8920\n" ] } ], "source": [ "# Compute confusion matrix\n", "cm = confusion_matrix(y_test, y_pred)\n", "# Plot confusion matrix\n", "plt.figure(figsize=(8, 6))\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='PuRd',\n", " xticklabels=['Negative', 'Positive'],\n", " yticklabels=['Negative', 'Positive'],\n", " cbar_kws={'label': 'Count'})\n", "plt.title('Confusion Matrix - SVM (LinearSVC) Classifier')\n", "plt.ylabel('True Label')\n", "plt.xlabel('Predicted Label')\n", "plt.tight_layout()\n", "plt.savefig('docs/02_results/svm_confusion_matrix.png', dpi=300, bbox_inches='tight')\n", "plt.show()\n", "print(f\"Confusion Matrix:\\n{cm}\")\n", "print(f\"\\nTrue Negatives: {cm[0,0]}\")\n", "print(f\"False Positives: {cm[0,1]}\")\n", "print(f\"False Negatives: {cm[1,0]}\")\n", "print(f\"True Positives: {cm[1,1]}\")" ] }, { "cell_type": "markdown", "id": "19", "metadata": { "id": "19" }, "source": [ "## Feature Coefficients (SVM Weights)" ] }, { "cell_type": "code", "execution_count": null, "id": "20", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "20", "outputId": "c61b447d-367e-4384-d94b-cdced9e76223" }, "outputs": [ { "data": { "image/png": "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TWyMrzhPl7RG2+Djjz+2Z555JuLtan2mL9NVlV6vXj1La1IrrtMxmY5jVWwT23FTakjpL2ySg967dYbFL7/8YhdccEFqD8efVGkLIHUNGjRI5YExrjty5EjgzjvvDJx//vmBbNmyBSpXrhx49NFHA6dPn45xPz1Oj3/ttdfcfbJnzx6oV69eYPHixQkeR+7cuQN9+/aNeNvVV18dKFasWODUqVMxrr/pppsCuXLlCvz7779xLrt169aBGjVqnHH9VVdd5Z7Df//7X/f7tm3b3HUFChQI5MyZM9C4cePARx99dMbjpk2bFqhevbq7T/78+QP169cPvP7668HbZ86c6Za7fft293vZsmXd76EXjUm++uor97t+irantsXRo0fPWO8111zjtsPJkyeD182fPz/QokULtx3y5MkTuPTSSwObNm0KnM2kSZPcekPHfTZPPfWUe97aJ0qUKBG47bbbAn/99dcZ91u2bFmgY8eOgaioKLeNWrVqFViyZEnwdr3OkbaHLuHXe/uEfmo7htL+MHXq1MCFF17o9r3ChQu79a5cuTJ4Hz0mfL/SmIcOHRrcvytUqOC2R+j+pddO69d+/+yzzwYuuOACd98GDRoEVqxYEedzCf17evPNN93fhF6bvHnzurFqzGejbdamTZszrtf6tH+EGzFihFvv0qVL3e979+4NDBgwIFC0aFG3bWrVqhWYNWvWGY872/jC989Ir5H3unjbTPu/aNvp9x07dpyx3rvvvjuQNWvWwIEDB+K938Tm5ptvDpx33nlnvD/EJj7rGTNmjBv7li1b3DbPly+fu3+/fv1i/G1Geu29/S38fUC0rS677DK3PfW+kSNHDrfNve07Z86c4P6s12XNmjVnjP/HH38MdO/e3b1P6X5azrx582Lcx1u3ntcdd9zh/jb0HtG1a9fAvn37YowntvcmT926dQNXXHFFvLYtAJyLjBSTjh8/3o159erVEWOPhMYt8ueffwauu+4693muz60+ffoE1q1bF+OzWdavX++eX/ny5d120vPp37+/e3z452D4JTS29baR4i7dFinOWLBggbvtww8/DF7322+/ufUpRtHzUWz54osvBs5m165dgSxZsgQ6dOgQiC99jnbq1MltE72uF110UeC77747435n28ZePBR+8T5vI8WB4TFUaBxyySWXuGMI7TM1a9aMEXt52z7cq6++6vZpxQ6KAXr27BnYuXNnxP3r+++/d3Gk4pySJUsGHn744eB94nou8vPPPwe6devm9gvtH6VKlXLrOnjwYJzb+qWXXooY93nr02uscXfu3DlesW18j3HefvvtQLVq1dxY9dzfe++9iMcN+rtq2rRpoGDBgm4balu+8847Me6TkLhO8Zz+hiJp0qSJi88S+vpFUqVKlYjHBLFJqf0kfBuHvn9Nnz7dbRstV3+vWr/es/W+p/1JY1NsuX///kS97t4+o/eSLl26uP8r1h0+fHjwONkbT/hFf18e7dOZMmUKPP744/HevhkNSVvAhwGy3lAV0OgNbODAge5NVx+uus+wYcNiPFbXKcGgN0m9CeuNXm/eeoPeuHFjkgXIFStWdMFNuBdeeMGNYcOGDYlK2uoDTckeJWH27NnjghMFdffcc497865du3Ygc+bM7sPf89xzz7l1KrmrZN4TTzwRuOGGGwJDhgwJ3if8Q/399993QWDVqlXdB6kun332WcSA7uuvv3a/KwAJpTFqG+n18rzyyivudVIw+uSTT7rtX65cORcEhiaKImnWrJl7nY4dOxaIDy+AbN++vVvX4MGD3bZr2LBh4Pjx48H7LVy40AW7CoomT54cmDJliksY6rrly5e7+3z77beB//znP2552m7e9tBFBz26XvuTrtd9JVLwpQSa7qt9Q8HuY4895j64Nb7YkrbajhpPoUKF3BieeeYZd1Cj7ahg3eN90Cthpf1P2/aRRx5x+7peS+85a3wKRnRf77XVRfR8dH27du1cwlsXbTcd8MVFy9Zro4PUcLEFtldeeaVb108//RT4+++/XfCqpKgSdvqSoWXLlu720IOC+IwvfP/UY+rUqeO2g/dctX+HbjMvmPv111/ddtV2C6ckuILdhOw3sZkwYUKsB4vh4rseb3/X668Dl6efftq9H+q6u+66K3g/PX8dJGj7etvD22djS9oq+NaXHmPHjnXrV/CqoFSJhjJlyriDRF10wK19L/SgXEGrrtcBrvZJvT8r6aztHPo+5a1b49f7uf4mFMjqb7ZHjx7B+8X13uTR89brDQDJLSPFpIcOHTojgRUpaRvfuEWfFfps0/u8Psu1rRSfKJYNT9oqXtLnlraT4lotR9upUaNGwWS4Eru9evVyj9VnlfcZoSR6pPhKn+tKroRTclbP04ubFG/rc6d06dJu/TNmzHDJG289cfFicMW/8aHPTL2W+sx94IEH3Gerl6hW4jQh21jj1vPX/qU4yNseWod+alza3qFxYKSkrT5jFXNo+ynW0PNXLKz4Oq6k7YMPPujGowScYpJx48a5sSjuDy2g0P6l5Ju2r8au++pvSMtTMsx7Lt6XBoq7vTGreEXHBdpGWobWqf1a61K8H+lL+FD6G9U2DOdtByVII31ZESm2je8xjoprdD+9fjp2u++++9z+pveC8OMG7XcqONHfhu6r/V1jCS3QSUhcpzHq99BiDtF2Cv87ju/rF8nFF1/sjk/j8z6WUvtJXElb/X0oTtU2vvfee93+riS2/rZ0/KnjEu3zGqfeHxLzumvdSvzqvVRFKvo7UkGD1q/nInqv0vW6TsdJ3vj13hb+nq7HIjKStoAPA+S5c+e63/WmH0pJSr2Jbt26NXid943VqlWrgtcpUaM3Ub05JlWArNv0hhzu448/duvXt/hx0QeTkhJ//PGHu6hSTR8WeqwXLCv41+/ffPNN8HGHDx92gYs+LLzEiZKCkRLAoSIla/SY8Aq2SAGdgmUlccI/PJTE1f2U1PXGpg+wG2+8Mcb99AGrpE749eEU0CiQjw9V5ukDV0FDaAJJQY/GpG/WvbFXqlTJVTGGVsAoiajtGFoZERrARdp2odWykQKDL7/8Mpj0DRe67vCDCgXt2p9URRBe+akDHe+baC/wUPAZWg2qisbwipFIlUGiIEjVmaGV0fGhvzEtLzT5HLodNH5vX9Z9lbT0AlZRYlaPVxLQo4MlHcwpORgdHR3v8UU64FCyNTwQjpS0Fa0zvNJAwW3oQVdC9ptItM8XKVLELVN/57fcckvgjTfeOKMiJCHr8Q6Ywt939L4WfkAS23tXbElbXecdAMinn37qrtMBs94/PfpSKHzbK8GuipzQSi49FwXBem7h69ZBYOhzVRJf+3notontvSk8Ka7qbQBIThklJvXiSCVUQhNYkZK28Y1bdKZG+Jezitm8REzoZ7M+9yKdeRMaZ4aeMROpECA8vho9evQZZ9AoAahYNXR7qdBBSdTQql7vbDLFr5HGFvoZpvGsXbs2EB86u0Txq5dkkt9//90lwPSFZ0K3sfe8Q7909mhcoYUVkWIoxVuKN7SM8ERd6Gd1eNJWSUCN46GHHorxGCXxVHkcer13RlRoYluvQ/HixWMcW3jV0aH7hWjbRorP40PVkeExX+h20DIVf+gYJPQMnvCkbUKOcRQTKRmrx3gWLVrk1hceq4bvW4qNldzV30hi4jp98aIEr74UD6ViBb0/eTFdQl6/SJTo1+N1UVyt4gHFjqFFMym9n8SVtFVMHhpn6r1B1+u488SJE8Hr9aWQ/j69mDYhr7t3pqOSyqFUrBC6D+pYKby6NpyOb1XsgshSdsYdAPEyf/58169nyJAhMa4fPny4m2jok08+iXF906ZNY0yioD5dXbp0cQ3o1bA9KaihfaTeWV6fKN0en4mv1IhcF02Apdk2L7vsMnvppZeCz1uTT7Ro0SL4GPU00+zAmtzghx9+cNepl9Bvv/3m+golB/VSU28djSe0Ib/6lWpiKm986vmmvrSapEpN1r2LXjv1N/3qq6/iXI96fcZ3YiFNyKGJFNQ7LHQihRtvvNGioqJc/yrRxG5btmyxa6+91k0E5Y3p6NGj1q5dO9fkXQ3rk4Im39K2Uv+ycHFNDqAedJpApECBAjG2myaP0P4a3oheDep1X48eK+p9dDbaV/Tc9VolhLadhK43lJbp7csVK1a0//znP+7v8P3333e3a9/RJAWhE5ip75T+prVPeROgJHZ8CaHtp4lZNFFC6L6sv2e9TyTFfqPJaTQhzC233GJ//fWX66WmZRUtWtT1q/YmiEvMerTMUHr99Vj9/SSWeuHp9fLo71Uuuugi9/4Zfr23r2nCtS+//NL131IvRG/8Gk/Hjh3dc/vvf/8bY116/wr9e9D4tZ//+uuv8R6vtx9qXQCQktJrTOoZOnSoe49Vb9tzjVvU51Wf9YrNPIrZBg0adMYyc+bMGfz/v//+65anCbZE/UYT+3mviYnee++94HWazFaxqm4TvWaK39SvX/8PfT76HDt06FCc6/c+e+MTv2rbaP2aGCu0V2WJEiVcHKCJxLzlJTQ2TCzNIaFJ3RRPh/cmjSt21TZVfKLP/9DxKdbTxHfhMb+OX0L7Qqu3v45x4hO7qneq6G/m77//TtDzUzwSW+waunw9f/Vy1vaIJL7HOL///rtt3LjR+vTpE6MPdevWra1mzZpx7veKF7W/6XVP7D6vYyBNnqwJ8EInI1acq78nL6ZL6OsXThMxfvfdd3bFFVe4ePeRRx5xfy86LgztiZ2S+0lcdBzr7Ueh8azWFdqrWdfr+NKLXRNzbBspTk/o+L2/e0SW9rprAxmADuY1kVF4QKREp3d7qEiz5GoyBn3Q//HHH+6D4lzpQ1az1IZToOndfjaa9VYTa3mTJWncSup49Ly8D5XYnrdmWR81apRLYupDTQmziy++2AV/zZs3t6Si4Hbq1Knug1jLVqJNBy6aPM0L6pSg8RI9sQUScdHtSvzEh/eaa+K2UPpwVyDs3e6NSTObxkYB0tkCuvhQElD7qWYMTgiNccOGDS7hGUl4Q//QJJp4Y1ewdzaaIEyBnAI6BVbaVxRIderUKV5jDQ0AQ2n/9Wbe1YGjZpoOnSVZr4f27/CZisP/hs91fPEN3O68804XwCq5rOekgyOt09tHk2K/0UHYjBkz3AzeWp4ONh5++GG7//773W0DBw5M1Hriev3P9jcWm/BleoFt6dKlI17v7WuaHVjb77777nOX2PZfvZbxGX98efthSs6UDADpOSYNT2DpC2glsCJ9zsU3btG20Oddrly5YtyuWDWcvgRUonj27NlnxD36HEyM2rVru0lt9Xl/ww03uOv0/8KFCwdjVb0GSso899xz7hLX84nE+9yNT/yqdel1D49dvf1Hya1du3ZZjRo1EhwbJpb3BbaOJxJC49NncaT9O9KEUIoJwz+ztW/pOZ6NYkrFbZrY9vXXX3dJMCULlXALTcQlNHYN/7JCE8aNHTvW5s2bd8bt8T3G8f7+I+3jui48GatJ0B588EH3JX7o3/C5xDc6Zps7d65LqmoyXL3GKlbQcVxiX79IGjZs6JKySnIqcatCDW1DTYao56OCgJTcT5Ijzk3osa2Oh8L/ZjX+hMS4om1GjBs7krYA4kVB6O7du8+43rtOAf3Z5M6d231jfq4U6G3evNl98KuqQRUDShQpORRXpURC6NtZJZmVUFPSVgk6VW54lQriVQS++uqrEQ9CzjbrrAJrfcjrw1/J16TgjenRRx91M8RGEteMzClBY9Q31nfddVfE23VwFyq2WWLjE5TqSwFtYyUQVQ2ky8yZM11FwMsvvxzr4woVKuR+xhZ0aExJsS8ndnwJob9NBfzal5W01czgO3fudAnV5NhvFHTpNdRFlfQKXHXQoaRtYtZzLq9/bGJb5tnW5Y1/xIgRrsIikvADl6QYv7cf6sAbADK6pIhJIyWwFEOGJnoSG7fEh76g/fbbb23kyJHu81CffVqPvrQ9lzOiFKdqpntVrSnRruIDVc15Mam3bCUAY/sCtVatWnHGrqLqytg+xxMjObZxUtL4FN8oTov0uZ7UscvkyZOtX79+LqGqamVVuk+cONHFcKFFApHi1/gkzLwvK5S0jVRte67HOJF88803LvncqlUrd9ymv2MlMRX3vvHGG5ZYqhrXFyWKc5W01U8VTahoIbGvX1x0zKYEri7aL/v37++KIfTFT0rvJ8kV58b3dY9teQmlfZYYN3YkbQEfKlu2rKsk1bfYoZUNai/g3R7K+1Ys1M8//+w+wGL7xjqhFJjpw1Zv5qHVg8uXL3frSYpgSs9LydhwkZ63EsAKTHVR0rNbt24uSB09enTw9LhwCf0GTwH1E0884U7dUqWCkrjeqWtSoUKFYOItMQk8BRn6VlhJ59DT6CPxnru2T+gpZnruOs3LW783Jn0TmhRJxbhoXUo2qlokIdW2epwql5NyfHG9tgqutK110f6r6tZnn33WVUpGqgzwvqFWpY62bWLo9dK35OF/L5H25cSML6H7sv5OtFztP9qX9Ter9XmSa7/Rvqpv3L0D6eRaT0p9O+/97ekgIyXHr/1QwWxSvZ8DQHxlhJg0NIEVKZEZ37hF20KnD6u6NLTaVmdphCcoFi5c6JLEKjiIa9sl5vNey1VsqdZFimGvueaa4O16DfQ6quVAYj7HdJaOEjWvvfaaXX/99XHeV+vSdogtttdr51X+JUdsGIkXh2zatClB69LjlNhSFWxSJZDP9tqqvYAu9957r0vw64xCtZ9SpWpcSXW99vGhfV5fUmh/CW8VEd9jHO/vP3wfj3SdxqVjNB07hLY3UdL2XPZ7HRNefvnlLnGq6mTFuSpWCP3yJjleP2nQoIH7GRrnpvR+kpTO9dg2seNXnKszBRAZPW0BH7r00ktdMDV9+vQY16sKQG98CphCKfEXevqJTjXSN7M61TqpvgHTqR979+6N0SdL3+LrA1LJn0i9xRLzvFesWOGej0e9LnX6lhKmOu0ktN9oaNJLt+lDUr284vpQ1ylhCQl8deqOKh5V0askbihV2in5NGHChIjr1WlhcVEPIH3LrL5wOqCJdCqYF5jpg1PPc9q0aTG+fX3xxRfdaXSqaBT1kdMH7mOPPRajH298x5QQ3bt3d2OJVN0c1zfE2o56jRW0hdPrc/LkyQSPRa+t9/hQ4fuKDhC8CpJIp1Z6lJRTILZq1SpL7L68Z88eFzh69LzUx1nfsqvX17mMT883IadP6rXSe8Gbb77p/mYV3HrbLCn2Gx0o6281nP6e9Ry9UyOTa/9M6N92YimIbdOmjUuqR6rySq7x6zS/0B68AJBSMkpM6vU4HT9+fKLjFsWFigfVCsyjxPJTTz0V4zHedgiPlSJV+cYW38R1NpoSfYo/dFGcqcrG0HUrJlACTYnLhH6OKcmqnr2q/lRME07PV1WimntC69Lrrtdfc1N49NqpslJzRHinWydHbBhJvXr1XEJN2zp8m8YVu6o4RM9HMW/4/fR7eDwXH7G9tkq0hz9fvaaKEeOKDUWxgr4UiG/vXO33en101ldijnGUGFWriVdeeSVGXKe5G1SNHUrbT+8Zob2ttV+otUFSHLOpv+4LL7zgWheEnhmZFK+fvoyJtH+odZ54cW5K7ifJ4VyPbSPxvsCKbfw6nlFLC1VJIzIqbQEfUsDZtm1bu+eee9yHmb55UnCkD1V9uHrfgnn0Yak3WZ06o0BVp5xIfFoF6LR/fbiJ3pxVHeglCnUKi5dAUoCsKlOdAqIJwVT1pfXogzepWhLcfffdLqmkAwA9F1VvKmGqb98UXHrVFAoAdcqGvnFWFcGPP/7oDiaUuIxrYgQljNRzU89PFYxKwMTWs8cL7HQ/vQ4KksIDAH2oaXmqNNB9VcmgqgKdeq6JwTS+8IOcUKpAVD8kHRCpakSnqnmTd+iAR9vCS9Rouaoi1rbWqXN6bVS5oNdAp+d4Tey1jRSwaBuqR5heL/XXVIN5BRwas9eL9VxpH9VzVyJZ1SHeKX2qftFtgwcPjvg4nQqo0/WUONSpX3rOSvgpuHv33XfdPp/QU2S87ab9Rn8LCpj0euiUfFUC63XW6WTqvaWDDG1vrx9fbDRxil57Bc8J7Z2qyaeU2NPzU8JNXzrouS1dutQdKHj7aWLHp+ergzH1PNPrr0RwaOVsOO3rek1UgaBqqfB9+Vz3G51GpRYIV155pRubvmDQ36UmGVRVhdoyJMV64toeqgTT89MBhA7IIvXHTgo6+NaBpg6gdOCq6lsdgOpgUwep3vtpQscf23uTvrzR+3KkiWwAILlllJhUCSy1SYj0+PjGLZpwS/Mt6Mt4VRmq6lGP0+d8aMWZPuuUSNVkRnqe+hzUNo10do8X32j7K67Rl8p6TUK/eA2nz3hV8OrzV71tw/vrT5o0yX3m6nNSn2MqfNAYFXvqs9Qbb2yUlFWSRa+xEufaLoppFf8qca4qWq+6V6+fJjfS56bO+NHp1YqPFFfr+Sd0G58rbQt93mobKtbSPqTEtsb8/fffR0wai/ZzPRfF4hqLXmvFcnrNFMsr7lPrpITQMvVFgapntSy9pnpN9DegGFqn96taUwlcxVlewj0uOhbSNtbrqDHFtzWI1hm6TyXkGEcJPsXMuk7bU0lj3ab3gtBErsamOE3HC2o9p/hGMZXinvAergmN63QspW2o1yDSdjrX1+/22293FfSKc/V3rTMdVf3snYmp550U60nIfqJtktTO9dg2Ep25qPcYbSvtzzq+177h9ZXW66yEtjc5MiIIAEh1gwYN0ldxMa47fPhw4I477giULFkykDVr1kClSpUCjz76aOD06dMx7qfH6fGvvfaau0/27NkDdevWDXz11VfxWnffvn3dMiJdZs6cGeO+Bw4cCNxwww2BQoUKBXLlyhVo3bp1YOXKlfFaj+5bo0aNs95v27ZtgauuuiqQP3/+QI4cOQKNGjUKfPTRRzHu8+yzzwZatWrlxqHnW6FChcDIkSMDhw4dCt5HY9dz2L59e/C6PXv2BC677LJA3rx53W0ak2hb6fdI2+yee+5xt1WsWDHWMetxHTt2DOTLl8+NWePp169fYNWqVfHaNr///rt7rStXruwer21bv379wEMPPRTjOcn06dMDVatWdftEsWLFArfeemvgr7/+OmOZa9euDXTr1i24jcqWLRvo0aNHYOHChTHGref2zjvvxHist+3CX1vtK1pOqJMnT7r9UmPKli1boEiRIoFLLrkksHr16uB99Bg9Nnz/Hj16tNuuelzhwoUDzZo1Czz22GOB48ePu/votdM4tPxwun7MmDExxnH77be79WfKlCn49/Tuu+8GLr744kDRokXdesqUKRO4+eabA7t37z7LqxII7N27N5AlS5bAq6++esZ2yJ07d7we379/f/fctO6aNWue8TcVn/FF2j+PHDkSuPbaa93fiW7zXhdvm4WvR55//nl3m/b/f/75J+KY47PfRLJhwwb3N1ivXr1AwYIF3XYrUaJE4Oqrrw6sWbMmUevR66vx/vHHHzEeG+lv+6effnLvCTlz5nS3eftbpPtqXXofCOe9l4aKbR/U+1SfPn0CxYsXd3+LpUqVClx++eXu9Tzb31Gk1zO29yaZ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dbedOnXKbrjhhuBtVapUsSeeeCLG4xctWmSNGjWy3LlzW/78+a158+b266+/2o4dOyxz5sy2atWqGPefOnWqlS1b1q0XAAAA6VebNm1syJAhdtddd1nBggWtePHirnI21M6dO61Lly6WJ08ei4qKsh49etjevXvdbbNmzbJx48bZ+vXrLVOmTO6i6+Ki+xcpUsQt65ZbbrHjx48HbytXrpyLRUOpitcb04ABA+zyyy+PcfuJEyesaNGi9uKLL57z9gAAAEhOWZJ16UhxSti+9tpr9swzz1ilSpXs66+/tuuuu84Fu82aNbPzzz/f3nnnHStUqJB9++23dtNNN1mJEiVcQH3y5EnXO+zGG2+0N9980wXFK1ascAG1ErPt27e3mTNnWoMGDYLr0+/qOaaEbiTHjh1zF090dHSKbAcAAAAkvZdfftnuvPNOW758uX333XcuDtSX/B06dHBf4nsJ28WLF7vYctCgQdazZ09XGKCfmzZtsgULFtgXX3zhlpcvX75Y17Vw4ULLkSOHe6wKCPr37+9i2IceeiheYx04cKC1atXKdu/e7eJd+eijj+zvv/92YwlH3AoAAPyEpG06okBzwoQJLghu2rSpu+6CCy6wJUuW2LPPPmutW7d21QoeVdwq2H777bdd0lYJ1UOHDrmKhAoVKrj7VKtWLUbgqwqHxx9/3LJnz25r1qyxjRs32rx58+JMIoeuEwAAAGlXrVq1bMyYMe7/KhCYPn26S64qaaufig23b99upUuXdvd55ZVXrEaNGrZy5Upr2LChS+hmyZLFVemeTbZs2eyll16yXLlyuWWMHz/eRo4caQ888ECsBQOhVLCgM8teffVVVx3sFRxcffXVbhzhiFsBAICf0B4hHdm6daurHFDQrEDUuyhY3rZtm7vPU089ZfXr13eVt7rtueeec6exiU5zU7VEx44drXPnzq51gioTPKrCPe+88+z99993v+t0trZt27pT02IzevRolwj2Lrt27Ur27QAAAIDkS9qGUgXrvn373P9//PFHl6z1ErZSvXp113JLtyWU2nwpYetRUcKRI0cSFE+q6ECJWlGbhk8++cS1TYiEuBUAAPgJSdt0REGsfPzxx7Zu3brg5YcffnB9bWfPnm0jRoxwfW0/++wzd5tOMwvtDaagVtW3qkx46623rHLlyrZs2bJgtUOfPn3cffSYN954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c2a78sorXQK2devWLoj1LF682AoXLhy8TqfLnThxwpo1a+Z+V8L2lVdesWeeeca+//57u+OOO+y6665zj5P77rvPfvjhB/vkk0/sxx9/dMG2lueNQwF5gQIF3HLfeecdlwwOTRrLl19+ab///rt9/fXX9vjjj9uYMWNcolmPW758ud1yyy12880322+//ebur/FpuQqGv/nmG1u6dKkLrjt16uSSzgAAABmZvvhWrDZv3jz77LPPXJy3Zs2aiPedM2eOTZkyxZ599lnbsmWLS4rWrFkzeLvirgceeMDWr1/vblOyVF+6R1qnksOK+fRlfufOnd1jPX///bc99NBDLq5U7Hbw4EG75pprgre///77NnToUBs+fLhL+Cr2U9L1q6++ivO53nPPPTZixAjXcqBy5crWq1cv9+W/YlklpqOiolxbBV10P4+ec/PmzW3t2rV22WWX2fXXX++SuIpzta2UPNbvSmqLCiAUa3bv3t02bNhgb731lkvihse12gZKcmu5t912m9166622efNmd9uKFSvcT8XDGo8SzgAAAH6XKeBFREhyf/75pwueVfWqzawqhL1791qWLFlcxYQSrwqOZ8+e7YLp+fPnu2D62LFjropVgWXTpk2Dyxs4cKALvN944w274oorXJL2pZdeOmO9zz//vI0aNcpVUah6V7RsBfFK0qqyVkG/DiR++eUXl1yWqlWrWtGiRV0SV06dOmX58uWzF154wQX3r732mquOUJJYVQqiZK1XwXHxxRefMRY9F1080dHRrkLiz62bLSpvXvY6AEkma9ESbE0gg1A8oRhF1ZxKDvqBzmjS2U2Kl66++mp33YEDB9yZSzrjSYlMVYTqbCtd9IW5EraKBbNmzXrW5asooGHDhnb48GH3pbniOFW6Ko7s2bNnjPWpwlZnRumnErDLli2zxo0bu/voLK9q1aq5L+gbNWrkEqg1atSIUZmqx6oIQFW8orhPyV2dpaXksSpXFR/ecMMN7nYVEmgZihEVT2q9eo5KEIfS81fFrFfJu2fPHleRrJhYZ3yJxqr4V8lVxcuKf8877zy3rTxK2qogQmNU9XD4chV367Hjxo1zRQjemJXQrVOnTqzbOLa41U/7GZAc/lOwJRsWAJLRscBJe/zgsgTHFFTaJiFVSajK4IILLnAvggJI2blzp1144YUuEavqC1Wp6vQsVbV6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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Top 10 Positive Coefficients (Positive Sentiment Indicators):\n", " feature coefficient\n", " great 7.105326\n", "not disappointed 6.112206\n", " excellent 5.655528\n", " love 4.637903\n", " perfect 4.602986\n", " best 4.389998\n", " no problem 4.249763\n", " wonderful 4.201641\n", " easy 4.034639\n", " awesome 3.913594\n", "\n", "Top 10 Negative Coefficients (Negative Sentiment Indicators):\n", " feature coefficient\n", " not -7.055084\n", " worst -6.503667\n", " not worth -6.432831\n", " disappointed -6.281118\n", " boring -5.715144\n", " disappointing -5.511028\n", " not recommend -5.407764\n", " terrible -4.978311\n", " not buy -4.919727\n", "disappointment -4.829293\n" ] } ], "source": [ "# Get feature coefficients (weights)\n", "tfidf_vectorizer = joblib.load('data/vectorizers/tfidf_vectorizer.joblib')\n", "feature_names = tfidf_vectorizer.get_feature_names_out()\n", "# coefficients = svm_classifier.coef_[0] # Old code\n", "# coefficients = svm_classifier.coef_.toarray().flatten() # Old code\n", "# Handles both sparse and dense matrices\n", "coef_matrix = svm_classifier.coef_\n", "if hasattr(coef_matrix, 'toarray'): # Sparse matrix\n", " coefficients = coef_matrix.toarray().flatten()\n", "else: # Dense array\n", " coefficients = coef_matrix.flatten()\n", "# Create DataFrame for better visualization\n", "coef_df = pd.DataFrame({\n", " 'feature': feature_names,\n", " 'coefficient': coefficients\n", "})\n", "# Get top positive and negative features\n", "top_positive = coef_df.nlargest(10, 'coefficient')\n", "top_negative = coef_df.nsmallest(10, 'coefficient')\n", "# Plot top coefficients\n", "fig, axes = plt.subplots(1, 2, figsize=(14, 6))\n", "sns.barplot(data=top_positive, x='coefficient', y='feature', palette='RdPu_r', ax=axes[0])\n", "axes[0].set_title('Top 10 Positive Coefficients (Positive Sentiment)')\n", "axes[0].set_xlabel('Coefficient Value')\n", "sns.barplot(data=top_negative, x='coefficient', y='feature', palette='PuRd', ax=axes[1])\n", "axes[1].set_title('Top 10 Negative Coefficients (Negative Sentiment)')\n", "axes[1].set_xlabel('Coefficient Value')\n", "plt.tight_layout()\n", "plt.savefig('docs/02_results/svm_feature_coefficients.png', dpi=300, bbox_inches='tight')\n", "plt.show()\n", "print(\"\\nTop 10 Positive Coefficients (Positive Sentiment Indicators):\")\n", "print(top_positive.to_string(index=False))\n", "print(\"\\nTop 10 Negative Coefficients (Negative Sentiment Indicators):\")\n", "print(top_negative.to_string(index=False))" ] }, { "cell_type": "markdown", "id": "21", "metadata": { "id": "21" }, "source": [ "## Decision Boundary Analysis" ] }, { "cell_type": "code", "execution_count": null, "id": "22", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 611 }, "id": "22", "outputId": "3d1766e1-c7ca-4a54-96eb-de217cb40104" }, "outputs": [ { "data": { "image/png": "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pTNdak7QDQAAYoLKWH/66Se3Xr16dbJrQIQcP37cX30CZHfejaOjR48SdAMAgJzt4MGDVqtWLbe+b98+K1iwYKSbBORop9MHFoil7zEdLAAAAAAACBOCbgAAAAAIo/nz57uM6a5du066XZUqVWzs2LHZ/rP4/fff3fl+9913kW5KVKBPNwAAAICwS5yWmKVXOalDUoa279q1q7322mv+aQcrVapknTt3tkGDBlmuXKcXNl188cVuRPeiRYu6x1OmTLH77rvvhCB86dKlYe8a07RpU1uwYIFbz5s3rzvPbt262UMPPRSyLgEatV7nW7JkyZDsL7sj6AYAAAAAM2vZsqVNnjzZDh8+bJ988on16tXLBeADBw48reujQeU01/OplCpVKks+hx49etjw4cPdec6dO9fuuOMONx91z549Q7J/jfKdnvPNKSgvBwAAAID/l/lVsFi5cmUXgDZv3tw++ugjd2127tzpMt9nnHGGG9H62muvtbVr1/qv2x9//GGJiYnudWWra9as6QL3lOXlWldmeffu3e45LUOHDj2hvPzWW2+19u3bB30uGkFb2ePXX3/dP2vDiBEjrGrVqm56q7p169o777xzys9S7ffOU22pU6eOzZ492/+6gvEHHnjAzjzzTHcujRo1cu2WPXv2uGN9+umnQft8//33rXDhwm66uNTKy1euXOmuWaFChaxMmTLWqVMn+/vvv91rM2fOdEG/N/K93qf3K/vuuf322+3f//73Ka91NCLoBgAAAIBUKLg8cuSIv/x82bJlLghfvHix+Xw+u+6661wgLMqKK1j98ssv7ccff7Snn37aBZiplZorsC5SpIgrwdaiADeljh07WlJSkpuNwfPZZ5+5oLZNmzbusQJuBeATJ060VatWWd++fV1g6pWPn4rO4auvvrKff/45aIq33r17u3OcPn26/fDDD9auXTtXBaCbDGr39ddfb1OnTg3a15tvvmmtW7dOdW72Xbt2WbNmzezCCy9013DWrFm2detWu/nmm93rl112me3du9dWrFjhHqv9urngBfrecyqNz8i1jhaUlwMAgJigElDvD1etA0BmKRidM2eOC3L79Onjgk0F2wsXLnRBsxdkqu/yBx984ILSDRs2WNu2ba127dru9bPOOivVfSu4Vd9uZXJPVoLdokULl8VVBllZYVGg+69//ctllBV0Pvnkk/bFF19YkyZN/Mf83//+Zy+99JJdccUVae57/Pjx9sorr7gbCrppkC9fPrvnnnvcazoPldjrZ/ny5d1z+rdVgbKe1zF1Q0Bt0g0ABdnKfn/88ceural58cUXXcCt93peffVVd/1++eUXO++88+yCCy5wQXb9+vXdT91AGDZsmLvpoKqAX3/91X9O6b3W0YKgGwAAxAT9ITtq1KhINwNANqYyZ2VMFYiqdFsl3ir9VgCuwdRUZu0pUaKEnX/++fbTTz+5xwpaVZL++eefu7J0BYUq284sHU+ZYAX3CnD3799vH374ocs+i4JQBb1XX3110PsUSCvAPRkFzQ8//LArmR8yZIi7keDdTFDmWGXeCoQDKcjXOYsy/Lq5qRsRt9xyi7377rsuA67zTs33339v8+bNSzUbvW7dOncsBdQKtu+//36XfVcW/+2333Y3EXbs2OFuAJx77rlhudbhRtANAEA2G8k3oyPyAgDS58orr7QJEya4m3gK8jIyarn6HCs7rYyvgkEFjc8++6zLlGeWgmMFo9u2bXN9rlXurjJv8crOdTz1vU7ZN/1klGk/55xz3LoCW603btzYBbDarwZCW758ufsZyAuadX1uuukml3lX0K2f6n+e1vXat2+f64OtMvCUypUr536qdFzZbwXoCuirVavmnlMgrpsDgZn7cFzrmO3TrYECvMEDAhfV6MuhQ4fcuu6o6APWHQzV/gdSaUGrVq1cWUPp0qWtf//+duzYsQidEQAAiBRlpTR4jxatA0BGqZxbAaim0QoMIKtXr+5ijG+++cb/3D///GNr1qyxGjVq+J9TufRdd91l7733nsvYvvzyy6keR0GrN2jYySj7rH2+9dZbLuOtMnav+4yOq+Ba8ZDaHLjoPemlOOvee+91JeQqq1eWXG1ToJ9yv4Hl8LohoJJz9SXXCOh6nJaLLrrIbaf4L+U+vSnSvH7dY8aM8QfYXtCtxevPndFrbTk96NY8dN7gAVq8EfP0ZRLV8WvwgBkzZriO85s2bbIbb7zR/359GRRwq4Ri0aJFbl49zXn36KOPRuycAABAZBw8eNCN4KtF6wAQKiprvuGGG9xUWyp3VjZWA5Ypw6znRfNuqw/4+vXr7dtvv3Xl1ArWU6PgU9lfla1rBG+ViadFJe4aKE2xUmBgq37dCpQVMykOUpm2jvvCCy/45xtPrzvvvNP1rVaZuEq9dRyN1K6AVuezZMkSl01WZtlz+eWXuyBc2+rf3cDS+5R69erlSsQ7dOjgYkC1VddKI6d7Nx80ErlKxHVzwQuwdQydk9oWmOnOyLW2nB50ax46fVDeoj4UZ599trug6iw/adIkGz16tBvprl69eq7jvoLrr7/+2r1fpQSrV6+2N954w3W81xD0jz32mI0bN84/yiAAAAAAnC7FIopJNHK3Bi5TVljTVHmZZwWPCi4V/KkEXMGrBixLK4OtLK1KshUTjRw5Ms3jKqhVzKMA/5JLLgl6TbHPI4884gJi77gKjBUEZ0Tx4sVdkK3+66oU0rnqsTLI6reuUckVLKsCwKMKZQXRugFxsiy3qFRfg9DpGl1zzTVuADQFzpomLD7+/4ekigO1jRd0q13K6CtWVDs8GbnW0SDOp29LFFCQrA+jX79+NmjQIFeicNVVV7n6fX0YHs0lpw9Id3SU0Vbn/cD533S3Q6PX6Y7HqQYQ8Gi0PfVrUKCvAQAAAMgK9OkOLQ0y5PU3VAbJK1kEkLXURVR/kyvw06jYQKx+n9MbR0bNQGoaal/zt2n+O9myZYvr6xAYcIsmUtdr3jZ6nPJ177W0aOQ9LYEXCwAAAACAmCovD6RScpWHe3PBhZPKL3RHwlsyMtAAAAAAAADZKuj+448/3KTuGvrdo7p9lZwr+x1Io5d7o+bpZ8rRzL3HJ5tofuDAga4EwFs2btwY4jMCAAAAACBKysvVUV/TfWkkco8GKdCgBBrRT1OFiYbk15D4GrhA9POJJ55ww9nr/aJR/VRPHzh0f0oaWv9Uc9cBABDuvtkAACD2RTzo9kbH69KlS9BceCr77t69uxtYTaPWKZDWZOcKtDVxu2jkOwXXnTp1ciP+qR/34MGD3Uh2BNUAAOQs+jvi7rvv9q8DABANIv5/JJWVK3t92223nfCaJkbXEPLKdGvgsxYtWgQNBZ+QkOCmGevZs6cLxjVKqYL34cOHZ/FZAACASNMNd00bCgBANIl40K1sdVqzlmlIdv3P82T/A9UUYpofDwAAAACAaBPxoBsAACAUdBP/77//duslS5a0uLg4LiwAIOIIugEAQEw4cOCAf2DVffv2uW5nAABEWlRMGQYAAAAAOLUqVarY2LFjs/2l+v33311F0nfffWexjkw3AAA5aIqypA5JIW0LAKRbYhZPr5iUsX/vunbtaq+99pqNGDHCHnroIf/zH3zwgbVp0ybNcajCZcqUKXbffffZrl27gp5funRp2Ct5mjZtagsWLPAPUlmpUiXr1q2buy6h6rpTsWJF27x5s+sOFOvIdAMAAADA/xvI+emnn7adO3dG7fUoVaqUFShQIOzH6dGjhwuK16xZYwMHDrRHH33UJk6cGLL9JyQkWNmyZXPEFI8E3QAA5LAseWYWAMgJmjdv7gJBZbtP5n//+59ddtlllj9/fpexveeee2z//v3+1xWstmrVyr1etWpVmzp16gll4aNHj7batWu7rLX2cffdd7vxKGT+/Pkus7x7926XWdYydOhQ91rgfm699VZr3759UNuOHj3qssevv/66e5ycnOzOR+1Qe+rWrWvvvPPOKa+FAntdC80WpbbUqVPHZs+e7X9dUzo/8MADduaZZ7pzaNSokWu37Nmzxx3r008/Ddrn+++/b4ULF3ZjcKRWXr5y5Uq79tprrVChQlamTBnr1KmTf4BMTRVdrFgxO378uHus9+n9gVUJt99+u/373/9263/88YclJibaGWec4dpXs2bNiM16RdANAAAAAP8v+/rkk0/aCy+8YH/++Weq12TdunXWsmVLa9u2rf3www/21ltvuSC8d+/e/m06d+5smzZtckHou+++a//5z39s27ZtwYFYfLw9//zztmrVKlfWPnfuXHvwwQfdaxdffLELrIsUKeICeC0KcFPq2LGjJSUl+YN1+eyzz1xQq5J4UcCtAFxZah2rb9++LjD1ysdPRWX1X331lf3888+WJ08e//M638WLF9v06dPddWjXrp27LmvXrnXtvv76693NhkBvvvmmtW7dOtVMvcromzVrZhdeeKEtW7bMZs2aZVu3brWbb77Zva6bHHv37rUVK1a4x2q/bi54gb73nErjpVevXu7GwJdffmk//vijq2BQMB8JsZ/LBwAAAIB0UrB6wQUX2JAhQ2zSpEknvK4gVsGu+lvLueee64LnK664wiZMmOAyuF988YXre12/fn23zSuvvOK2C+S938teP/7443bXXXfZ+PHjXXBbtGhRl8lVtjktLVq0cFlcZZCVFRYFuv/6179cRllBp24iqD1NmjRxr5911lnuJsFLL73k2pwWtUPtPnLkiMueq/ReGX3ZsGGDTZ482f0sX768e043BRQo63kdU9dIbTpw4IALspX9/vjjj11bU/Piiy+6gFvv9bz66quuCuCXX36x8847z30uCrJ1XfVTNxCGDRvmbjqoKuDXX3/1n5PaphsjqibwzjtSCLoBAEBMUL/ALl26+NcBILOUFVXWNbXs8vfff+8yu8raBmaDVca9fv16FyDq36CLLrrI//o555zjypwDKRBWAK8MsgLSY8eO2aFDh/xBanroOMoEqy0KcFXi/uGHH7rssygI1f6uvvrqoPcpkFaAezIKmh9++GHXv103IJR91yLKHKvMW4FwIAX5JUqUcOvXXXed5c6d2z766CO75ZZbXMZfGXCV8KdG13XevHmpZqNVXaBjKaBWsH3//fe77Luu39tvv+1uIuzYscPdAPBubugGQc+ePe3zzz93x1QArhL5SOD/SAAAICZohF2N9gsAp+vyyy93WWQNIKZRzQMpq3rnnXf6s76BNMq3gu5TUTZc5dcKCp944gkrXry4Cxy7d+/uAuKMDJSm4FjBqMrX1edafalV5u21VZRhVt/rlP9mnowy7bpZIApstd64cWMXwGq/KsVfvny5+xnIC5qVrb/ppptc5l1Bt36q/3laN0W1T/XB1g2PlMqVK+d+qnRc2W8F6Aroq1Wr5p5TIK6bA4GZe/Xv1meoc1fgrQD92WeftT59+lhWI+gGAAAAgBSeeuopV858/vnnBz2vDPbq1av9AWlK2l5Za/U9rlevnj/jHDgiuoJVZcYVBKpvtxfYBlLQ6g0adjLKPqsEW33LNXCZ+lYrIJUaNWq44Fql1icrJT8VBdL33nuvy/zrvJQlV9sU6Kuv9cluCFx99dWuL7n6rKuEPi26rsqGq9Q+rcDc69c9ZswY//ko6NZnpeurDHggXReV7GvRDZSXX345IkE3A6kBAICYoPJOlVZqyer5dAHEHvUFVtCo/tqBBgwYYIsWLXIDiWkEbQ0cppJubyA1ZV+VDb7jjjtsyZIlLkjVujLQ3hzXCtjVT1oDtv3222/23//+94TpuBR8Kvs7Z84cN4K3ysTTolHM9X5lutVmj/p1K1BW32cN1qYy7W+//dYdV48zQtl9ZfEVGKvUW8fRgHHvvfeeK6vXuSqbrMxyYMVA2bJl3bYaPV0jnKdFA5+pRLxDhw6uP7zaqkHhNHK6d/NBJfoqEVc5vTdgmo6hc1LbAm8sqM+83q+26XWVrlevXt0igaAbAADEBP1BqmyMlpP9cQoA6TV8+HCXkQ6koE+jZCvIU+ZVWV/NYe0NKCYaLVxTXikg1MBsmvNaAbAGIxNN26Upw1RKXatWLRdEppymTBlsZWhVkq25uUeOHJlmOxXUKvuuEvJLLrkk6LXHHnvMHnnkEbd/BZ0qPVdgrCA4I1QCryBbU5fpmmjAND1WdlnZfY1KrmBZJfYe3WTo0KGDKwcPvBmQGl2/hQsXugD7mmuucTc9FDhrmjCvGkAUWGsbL+hWu5TRV3AfWJWgbRTIe+esGwUaHC4S4nzcCnYDF6jPgka8U+d+AAAyIifMY53UIcminTLcXl9CZYc0oi+ArKfBwJRdVFDnBZk5naYfU6mzBk+76qqrIt0chOj7nN44kj7dAAAAABBC6r+sm3/K1mqObc2/rXJxZb6R8xB0AwAAAEAIqb/2oEGDXH9tlZWrVFwl5N4AZ8hZCLoBAAAAIIQ0VZUWQBhIDQAAAACAMCHoBgAAAAAgTCgvBwAAMSEhIcFuuukm/zoAANGAoBsAAMQETeUyY8aMSDcDAIAglJcDAAAAABAmBN0AAAAAAIQJQTcAAIgJ+/fvt7i4OLdoHQCiVZUqVWzs2LEh3zaWNW3a1O677z7LjujTDQCAmSVOS+Q6AEAO1rVrV3vttdfceq5cuax48eJWp04d69Chg3stPj50+cqlS5dawYIFQ75tZs2fP9+uvPLKoDEyzjrrLLv33nvtjjvuCOuxcwIy3QAAAABgZi1btrTNmzfb77//bp9++qkLRBV4Xn/99Xbs2LGQXaNSpUpZgQIFQr7t6VqzZo07/9WrV9udd95pPXv2tDlz5lgs8Pl8If0MM4KgGwAAAADMLG/evFa2bFk788wz7aKLLrJBgwbZhx9+6ALwKVOm+K/Rrl277Pbbb3cBcZEiRaxZs2b2/fffB13DpKQka9CggcsalyxZ0tq0aZNqybiCwaFDh1qlSpXc8cuXL2/33HNPqtvKhg0b7IYbbrBChQq5Y9988822detW/+va1wUXXGD//e9/3XuLFi1qt9xyi+3du/eUn3Hp0qXd+VetWtW1QT+//fZb/+uHDx92z2s7ndell17qMvEeXaNixYoF7fODDz5w3X4y0j51EercubM7x3Llytmzzz57Qlv1/vr161vhwoVdm2+99Vbbtm1bUPZex9VnV69ePXdt33jjDVexsGzZsqB96fpWrlzZkpOTLRwIugEAAACEnQKptJZDhw6le9uDBw+ma9tQUUBdt25de++99/zPtWvXzgV4CuiWL1/uAvSrrrrKduzY4V7/+OOPXZB93XXX2YoVK1y2uGHDhqnu/91337UxY8bYSy+9ZGvXrnVBau3atVPdVkGhAm4dZ8GCBTZ79mz77bffrH379kHbrVu3zu1n5syZbtG2Tz31VLrPWTcCZs2a5QL8Ro0a+Z9/8MEHXXtVhq9g/JxzzrEWLVr4zzu91p2iff3793fP6YbH559/7gLowOBfjh49ao899pi72aF9qTpB3QBSeuihh9y+f/rpJ/vXv/5lzZs3t8mTJwdto8eh7kIQiD7dAAAAAMJOWcu0KDhVoOpRJvXAgQOpbnvFFVe4IMyjbOnff/+dauAYKtWqVbMffvjBrf/vf/+zJUuWuKBb2VN55plnXOD3zjvvuD7QTzzxhMveDhs2zL8PBe6pUWCrTK2Cwdy5c7uMd1oBuoL3H3/80davX28VK1Z0z73++utWs2ZNl3FWZt0LzpV1VhZYOnXq5N6rdp1MhQoV/Blt7WP48OF2+eWXu+d0I2PChAluv9dee6177uWXX3aB/6RJk1ygnF7JJ2nfvn373P6UldaNDFGQ77XNc9ttt/nX1f/8+eefd+ev9wd+13QOV199tf+xKhTuuusuGz16tPv8FMzrmirADxcy3QAAAABwEgrgvRJpZVYV2JUoUcIFd96iQFgZXPnuu+/8AeOpKGuu7L0Cxx49etj777+fZt9jZWsVbHsBt9SoUcOVdOu1wBsRXkArKtEOLL1Oy1dffeXaruWVV16xJ5980gXaonNTdvmSSy7xb6+bBLpBEHjs9KhykvbpOEeOHAnKsGtQu/PPPz9oH6owSExMdDcptC/djPFuYgRSCXqg1q1bW0JCgrvOouBffffVpnAh0w0AAGKC/ohStsxbBxBdFKimJeXv7MkCxJQlwCorDjcFlerf7J2HgsTAbLvH68+cP3/+dO9bAbQGMPviiy9c1vjuu++2UaNGufJqBbWZkfJ9umGQnv7KOkfvHJQ9/+abb1z2WQOqpYc+m5QVBkePHg1Z+zzKuqusXcubb77p+tYr2NZjBeyBUo78nidPHtdfXCXlN954o02dOtWee+45CyeCbgBATGHqr5xLg/oElqcCiC4ZmfYqXNtmxty5c135cd++fd1j9d/esmWLm1YsreyophpTuXS3bt3SdQwF6craaunVq5crZ9cxdaxA1atXt40bN7rFy3ZrpHEN7KaMd6jpZojXh/7ss892AevChQvdoGNeQK2ydm/+bAW/GhBNQbH3uXz33XcZOqaOo6BcAb+y2LJz50775Zdf/Nnsn3/+2f755x/XV9u7DikHRzsZlZjXqlXLxo8f76oKFHyHE0E3AAAAAPy/vswKqI8fP+5GBNdgYiNGjHBThik7Kup73aRJE1emPHLkSDvvvPNs06ZN/sHTVM48ZMgQV16uAFJ9uxXYffLJJzZgwIATrrPKm3U8lVNrajD1ZVYQ7gW2gXRsDbLWsWNHN+K29qvMuILRlGXUmaEKAw1qp+ugfusaIfymm25yrymIVsZbfbdV7q2AWOevvvfdu3d323jnoFHfNcq5AucpAaO+p4dK9bU/HUcl/Orf//DDDwdVOOjYugHwwgsvuP7ZK1eudIOqpZduXjRu3Nh9HuobnpHKhMygTzcAAAAAmLkgW6XjymBrzu558+a5Abo0yJZXAq9SaAXQGmBMmWwF3Qqs//jjDytTpozbpmnTpjZjxgz76KOP3PRYGgFdQWxqVM6tAcnUV1oZcpWZa7oxBZwp6dhqyxlnnOGOryBcfcHfeuutkHx+6jet89eo5ApINVe3AluPMstt27Z1A58pC//rr7/aZ5995tojCsZ100DXRzcHpk2b5qYIyyiV11922WUu869z1NRkmvbLo4y6gnldY2X41S4NZpcRCuxVih44IFu4xPlCOaxfNrVnzx43P9zu3bvdXHcAgOyL8vLwSOqQZNFO5YzKiHjZmnCXnAJInTKlGlRM/YPV7QOIRsqMK2j3RqXPzPc5vXEk5eUAgKhE8IzMSGuKIURIYmL6t02K/hs7ALK/ffv2ucH3XnzxRXv88cez5JiUlwMAAAAAcoTevXu7UnV1AciK0nIh0w0AAAAAyBGmTJmS4cHdTheZbgAAAAAAwoSgGwAAAACAMCHoBgAAABByTJKEWJCcnHza+6BPNwAAiAnx8fF2xRVX+NcRBSOSI0fKnTu3m096+/btbj5lrQPZ8aaR5vHW91j/T8mTJ0+m90XQDQAAYkL+/Plt/vz5kW4GkOMlJCRYhQoV7M8//3RTMwHZWYECBaxSpUqndTM34kH3X3/9ZQMGDLBPP/3Uza15zjnn2OTJk61+/fr+OwxDhgyxl19+2Xbt2mWXXHKJTZgwwc4991z/Pnbs2GF9+vSxpKQkdzHatm1rzz33nBUqVCiCZwYAAADkTPo7XH+vHz16NNJNAU7rBlKuXLlOu1ojokH3zp07XRB95ZVXuqBb5Sdr1661M844w7/NyJEj7fnnn7fXXnvNqlatao888oi1aNHCVq9ebfny5XPbdOzY0TZv3myzZ892v9jdunWzO+64w6ZOnRrBswMAAABydsCiBcjpIhp0P/3001axYkWX2fYosPYoyz127FgbPHiw3XDDDe65119/3cqUKWMffPCB3XLLLfbTTz/ZrFmzbOnSpf7s+AsvvGDXXXedPfPMM1a+fPkInBkAAMhq+/fvtypVqrh1lbQWLFiQDwEAEHERHWXko48+coFyu3btrHTp0nbhhRe6MnLP+vXrbcuWLda8eXP/c0WLFrVGjRrZ4sWL3WP9LFasmD/gFm2vMvNvvvkmi88IAABE0t9//+0WAACiRUQz3b/99pvrn92vXz8bNGiQy1bfc889bmS4Ll26uIBblNkOpMfea/qpgD2Q6u6LFy/u3yalw4cPu8WzZ8+eMJwdAAAAwjYqelISFxdAtpAr0nOeKUP95JNPusfKdK9cudImTpzogu5wGTFihA0bNixs+wcAAAAAIOLl5eXKlbMaNWoEPVe9enXbsGGDWy9btqz7uXXr1qBt9Nh7TT+3bdsW9PqxY8fciObeNikNHDjQdu/e7V82btwY0vMCAAAAACDiQbdGLl+zZk3Qc7/88otVrlzZP6iaAuc5c+YElYKrr3aTJk3cY/3UVGLLly/3bzN37lyXRVff79TkzZvXihQpErQAAAAAABBT5eV9+/a1iy++2JWX33zzzbZkyRL7z3/+4xbRfGj33XefPf74426eP2/KMI1I3rp1a39mvGXLltajRw9Xlq4pw3r37u1GNmfkcgAAAABAjg26GzRoYO+//74r9x4+fLgLqjVFmObd9jz44INuChDNu62M9qWXXuqmCPPm6JY333zTBdpXXXWVG7W8bdu2bm5vAACQc+hvAG82E60DABAN4nyaDDuHU8m6piJT/25KzQEgOiROy+BIxgirpA6MFB2zI4FndBTwjI4yHi6MXg4gm8SREc10AwAAIMKiJYgGgBhF7RUAAAAAAGFC0A0AAGLCgQMHrEqVKm7ROgAA0YDycgAAEBM0TM0ff/zhXwcAIBqQ6QYAAAAAIEwIugEAAAAACBOCbgAAAAAAwoSgGwAAAACAMCHoBgAAAAAgTBi9HAAAxIS4uDirUaOGfx0AgGhA0A0AAGJCgQIFbNWqVZFuBgAAQSgvBwAAAAAgTAi6AQAAAAAIE8rLAQBhkzgtkauLLHPgwAFr0KCBW1+6dKkrNwcAINIIugEAQEzw+Xy2evVq/zoAANGA8nIAAAAAAMKEoBsAAAAAgDAh6AYAAAAAIEwIugEAAAAACBOCbgAAAAAAwoTRywEAQEyIi4uzypUr+9cBAIgGBN0AACAmaF7u33//PdLNAAAgCOXlAAAAAACECUE3AAAAAABhQtANAABiwsGDB61BgwZu0ToAANGAPt0AACAmJCcn27Jly/zrAABEAzLdAAAAAACECUE3AAAAAABhQnk5AAA4pcRpiZm+SkkdkrjCAIAci0w3AAAAAABhQtANAAAAAECYUF4OAABiRsmSJSPdBGSVxAx0eUiiiwOAyCHoBgAAMaFgwYK2ffv2SDcDAIAglJcDAAAAABAmZLoBAAAQ2zJSii6UowMIITLdAAAgJhw8eNCaNm3qFq0DABANyHQDAICYkJycbAsWLPCvAwAQDch0AwAAAAAQJgTdAAAAAACECUE3AAAAAABhQtANAAAAAECYEHQDAAAAABAmjF4OAABiRoECBSLdBAAAoifTPXToUIuLiwtaqlWr5n/90KFD1qtXLytRooQVKlTI2rZta1u3bg3ax4YNG6xVq1buf7KlS5e2/v3727FjxyJwNgAAIJIKFixo+/fvd4vWAQCIBhHPdNesWdO++OIL/+Ncuf5/k/r27Wsff/yxzZgxw4oWLWq9e/e2G2+80RYuXOheP378uAu4y5Yta4sWLbLNmzdb586dLXfu3Pbkk09G5HwAAAAAAIiaoFtBtoLmlHbv3m2TJk2yqVOnWrNmzdxzkydPturVq9vXX39tjRs3ts8//9xWr17tgvYyZcrYBRdcYI899pgNGDDAZdHz5MkTgTMCAAAAACBKBlJbu3atlS9f3s466yzr2LGjKxeX5cuX29GjR6158+b+bVV6XqlSJVu8eLF7rJ+1a9d2AbenRYsWtmfPHlu1alUEzgYAAESKuqWpAk6L1gEAsJye6W7UqJFNmTLFzj//fFcaPmzYMLvsssts5cqVtmXLFpepLlasWNB7FGDrNdHPwIDbe917LS2HDx92i0dBOgAAyN7U7eyTTz7xrwMAYDk96L722mv963Xq1HFBeOXKle3tt9+2/Pnzh+24I0aMcAE+AAAAAAAxXV4eSFnt8847z3799VfXz/vIkSO2a9euoG00ernXB1w/U45m7j1OrZ+4Z+DAga7PuLds3LgxLOcDAAAAAMjZoiro3rdvn61bt87KlStn9erVc6OQz5kzx//6mjVrXJ/vJk2auMf6+eOPP9q2bdv828yePduKFCliNWrUSPM4efPmddsELgAAAAAAxFR5+QMPPGCJiYmupHzTpk02ZMgQS0hIsA4dOrgpwrp37279+vWz4sWLu8C4T58+LtDWyOVyzTXXuOC6U6dONnLkSNePe/DgwW5ubwXWAAAAAADk2KD7zz//dAH2P//8Y6VKlbJLL73UTQemdRkzZozFx8db27Zt3cBnGpl8/Pjx/vcrQJ85c6b17NnTBeMFCxa0Ll262PDhwyN4VgAAAAAAREHQPX369JO+ni9fPhs3bpxb0qIsuTdSKQAAAAAA0SSiQTcAAECoqOLN5/NxQQEAUSWqBlIDAAAAACCWEHQDAAAAABAmBN0AACAmHDp0yNq1a+cWrQMAEA0IugEAQEw4fvy4vfPOO27ROgAA0YCgGwAAAACAMGH0cgAAgOwgMTHSLQAAZAJBNwDglBKn8cc+sv77k9QhKbYvO0E0AOQIlJcDAAAAABAmBN0AAAAAAIQJ5eUAAAChQsk4ACAFgm4AABATChQoYPv27fOvAwAQDQi6AQBATIiLi7OCBQtGuhkAAAShTzcAAAAAAGFC0A0AAGLC4cOHrWvXrm7ROgAA0YCgGwAAxIRjx47Za6+95hatAwAQDQi6AQAAAAAIE4JuAAAAAADChKAbAAAAAIAwIegGAAAAACBMCLoBAAAAAAgTgm4AAAAAAMIkV7h2DAAAkJUKFChg27Zt868DABANCLoBAEBMiIuLs1KlSkW6GQAABCHoBgAAAAIlJqb/eiQlce0AnBR9ugEAQEw4fPiw9erVyy1aBwAgGhB0AwCAmHDs2DEbP368W7QOAEA0IOgGAAAAACBMCLoBAAAAAIimoPu3334LfUsAAAAAAIgxmQq6zznnHLvyyivtjTfesEOHDoW+VQAAAAAA5NSg+9tvv7U6depYv379rGzZsnbnnXfakiVLQt86AAAAAAByWtB9wQUX2HPPPWebNm2yV1991TZv3myXXnqp1apVy0aPHm3bt28PfUsBAAAAAMhJA6nlypXLbrzxRpsxY4Y9/fTT9uuvv9oDDzxgFStWtM6dO7tgHAAAICvkz5/f1q9f7xatAwCQ7YPuZcuW2d13323lypVzGW4F3OvWrbPZs2e7LPgNN9wQupYCAACcRHx8vFWpUsUtWgcAIBrkysybFGBPnjzZ1qxZY9ddd529/vrr7qf3P7iqVavalClT3P/0AAAAAADIqTIVdE+YMMFuu+0269q1q8typ6Z06dI2adKk020fAABAuhw5csQefvhht/7EE09Ynjx5uHIAgOwZdK9du/aU2+h/dF26dMnM7gEAADLs6NGj9swzz7j1oUOHEnQDALJv0K3S8kKFClm7du2CnteAagcOHCDYBgAApy1xWmKGtj926BhXHQAQG0H3iBEj7KWXXkq1pPyOO+4g6AYAAEDOkJiBm0NJSeFsCYAolamhPTds2OAGS0upcuXK7jUAAAAAAJDJoFsZ7R9++OGE57///nsrUaIE1xUAAAAAgMwG3R06dLB77rnH5s2bZ8ePH3fL3Llz7d5777VbbrmFCwsAAAAAQGb7dD/22GP2+++/21VXXWW5cv3fXSQnJ1vnzp3tySef5MICAAAAAJDZTLemA3vrrbfs559/tjfffNPee+89W7dunb366quZnp7jqaeesri4OLvvvvv8zx06dMh69erlStY1Wnrbtm1t69atQe9TH/JWrVpZgQIFXNl7//797dgxRi8FACCnSciTYFeMvMJWrlxp+fPnj3RzAADIfKbbc95557nldC1dutSNhl6nTp2g5/v27Wsff/yxm4qsaNGi1rt3b7vxxhtt4cKF7nWVtSvgLlu2rC1atMg2b97ssu25c+cm4w4AQA4TFx9nhSsUtpo1a0a6KQAAnF7QrWB3ypQpNmfOHNu2bZsrLQ+k/t3ptW/fPuvYsaO9/PLL9vjjj/uf3717t02aNMmmTp1qzZo1888PXr16dfv666+tcePG9vnnn9vq1avtiy++sDJlytgFF1zgSt8HDBhgQ4cOzXTWHQAAAACAiJWXa8A0LQq+a9WqZXXr1g1aMkLl48pWN2/ePOj55cuX29GjR4Oer1atmlWqVMkWL17sHutn7dq1XcDtadGihe3Zs8dWrVqV5jEPHz7stglcAABA9pZ8LNnWvLPG3Xg/cuRIpJsDAEDmM93Tp0+3t99+26677rrMvD1oP99++60rL09py5YtLlNdrFixoOcVYOs1b5vAgNt73XstLSNGjLBhw4adVtsBAED0Bd1r31trw94b5sZ4oeINAJCtB1I755xzTuvAGzdudNlyDcSWL18+y0oDBw505eveorYAAAAAABAVQff9999vzz33nPl8vkwfWOXj6g9+0UUXuWnHtCxYsMCef/55t66MtUrDdu3aFfQ+jV6ugdNEP1OOZu499rZJTd68ea1IkSJBCwAAAAAAUVFe/r///c/mzZtnn376qRshVKOFB9IUYqeiOb5//PHHoOe6devm+m1rILSKFSu6/WqwNk0VJmvWrHFThDVp0sQ91s8nnnjCBe+aLkxmz57tgugaNWpk5tQAAAAAAIhs0K1+1m3atDmtAxcuXNgNwhaoYMGCbk5u7/nu3btbv379rHjx4i6Q7tOnjwu0NXK5XHPNNS647tSpk40cOdL14x48eLAbnE3ZbAAAAAAAsl3Qram7ssKYMWMsPj7eZbo14rhGJh8/frz/9YSEBJs5c6b17NnTBeMK2rt06WLDhw/PkvYBAAAAABDyoFuOHTtm8+fPt3Xr1tmtt97qMtebNm1yGelChQplap/aXyANsDZu3Di3pKVy5cr2ySefZOp4AAAAAABEXdD9xx9/WMuWLV3/amWgr776ahd0P/300+7xxIkTQ99SAACAk0jIk2CXPnapjW4xOstnRgEAIKSjl2uqr/r169vOnTstf/78/ufVz1sDnwEAAGS1uPg4K3Z2MWvQoIHrggYAQLbNdH/11Ve2aNEiN193oCpVqthff/0VqrYBAAAAAJDzMt3Jycl2/PjxE57/888/XZk5AABAVks+lmzrktbZqFGj7MiRI3wAAIDsG3Rrqq6xY8f6H8fFxdm+fftsyJAhdt1114WyfQAAAOkOun+a9pM9+OCDdvToUa4aACD7lpc/++yzbvouzZF96NAhN3r52rVrrWTJkjZt2rTQtxIAAAAAgJwSdFeoUMG+//57mz59uv3www8uy929e3fr2LFj0MBqAAAAAADkZJmepztXrlz273//O7StAQAAAAAgpwfdr7/++klf79y5c2bbAwAAEF0SEyPdAgBATgu6NU93IA1WcuDAATeFWIECBQi6AQAAAADIbNC9c+fOE57TQGo9e/a0/v37c2EBIAolTiNbBwAAkC2mDEvNueeea0899dQJWXAAAICskJAnwRoPbmzz5s2zfPnycdEBANl7ILVUd5Yrl23atCmUuwQAAEiXuPg4K1mjpDVt2pQrBgDI3kH3Rx99FPTY5/PZ5s2b7cUXX7RLLrkkVG0DAAAAACDnBd2tW7cOehwXF2elSpWyZs2a2bPPPhuqtgEAAKRb8rFk2zB3g43bMc7uuOMOy507N1cPAJA9g+7k5OTQtwQAAOA0g+6VU1Za7ym9rWvXrgTdAIDYGkgNAAAAAACEINPdr1+/dG87evTozBwCAAAAAICcGXSvWLHCLUePHrXzzz/fPffLL79YQkKCXXTRRUF9vQEAAAAAyKkyFXQnJiZa4cKF7bXXXrMzzjjDPbdz507r1q2bXXbZZXb//feHup0AAAAAAOSMPt0aoXzEiBH+gFu0/vjjjzN6OQAAAAAApxN079mzx7Zv337C83pu7969mdklAAAAAAAxJ1NBd5s2bVwp+XvvvWd//vmnW959913r3r273XjjjaFvJQAAwCnE5463Bv0b2MyZMy1v3rxcLwBA9u3TPXHiRHvggQfs1ltvdYOpuR3lyuWC7lGjRoW6jQAAAKcUnxBvZS4sY61ateJqAQCyd9BdoEABGz9+vAuw161b5547++yzrWDBgqFuHwAAAAAAOau83LN582a3nHvuuS7g9vl8oWsZAABABiQfS7aNCzbalClT/JV4AABky0z3P//8YzfffLPNmzfPzcW9du1aO+uss1x5uUYx1+jmAAAAWR10f//S99btpW7Wrl07y507d+obJibywQAAojvT3bdvX/c/sg0bNrhSc0/79u1t1qxZoWwfAAAAAAA5K9P9+eef22effWYVKlQIel5l5n/88Ueo2gYAAAAAQM7LdO/fvz8ow+3ZsWMHU3QAAAAAAHA6Qfdll11mr7/+uv+x+nUnJyfbyJEj7corr8zMLgEAAAAAiDmZKi9XcH3VVVfZsmXL7MiRI/bggw/aqlWrXKZ74cKFoW8lAAAAAAA5JdNdq1Yt++WXX+zSSy+1G264wZWb33jjjbZixQo3XzcAAAAAAMhEplvzXrZs2dImTpxoDz/8MNcQAABEhfjc8XbRPRfZQ5c+xBgzAIDsG3RrqrAffvghPK0BAADIpPiEeCvfuLyboxsAgGzdp/vf//63TZo0yZ566qnQtwgAcFKJ0xK5QgCQHSVm8N/vpKRwtQRAtAfdx44ds1dffdW++OILq1evnhUsWDDo9dGjR4eqfQAAAOmSfDzZtizdYjNyzbA2bdpYrlyZ+jMHAICQytD/jX777TerUqWKrVy50i666CL3nAZUC6TpwwAAALJa8tFk+/b5b+3m52+2ffv2EXQDALJf0H3uuefa5s2bbd68ee5x+/bt7fnnn7cyZcqEq30AAAAAAOSMoNvn8wU9/vTTT910YQAAANHkprdvslz5Uv8z55G/lqT5voZnNgxjqwAAOVGm5ulOKwgHAAAAAACZDLrVXztln236cAMAAAAAEKLy8q5du1revHnd40OHDtldd911wujl7733XkZ2CwAAAABATMpQprtLly5WunRpK1q0qFs0X3f58uX9j70lvSZMmGB16tSxIkWKuKVJkyaun7hHQX2vXr2sRIkSVqhQIWvbtq1t3bo1aB8bNmywVq1aWYECBVzb+vfv76Y0AwAAAAAgW2W6J0+eHNKDV6hQwZ566ik3Krqy6K+99prdcMMNtmLFCqtZs6b17dvXPv74Y5sxY4YL5nv37m033nijLVy40L3/+PHjLuAuW7asLVq0yI2s3rlzZ8udO7c9+eSTIW0rAACIbvG54q3unXX96wAARIM4X5SNhla8eHEbNWqU3XTTTVaqVCmbOnWqW5eff/7ZqlevbosXL7bGjRu7rPj1119vmzZt8k9bNnHiRBswYIBt377d8uTJk65j7tmzxwX1u3fvdhl3AIhmidMSI90EIFt7ZBSjlyObSEqKdAsAhCCOjJrbwMpaT58+3U1BpjLz5cuX29GjR6158+b+bapVq2aVKlVyQbfoZ+3atYPmCW/RooU7+VWrVqV5rMOHD7ttAhcAAAAAAEIt4kH3jz/+6Ppra3A2Dcr2/vvvW40aNWzLli0uU12sWLGg7RVg6zXRz8CA23vdey0tI0aMCOqDXrFixbCcGwAAyDrJx5Nt64qtbtE6AADRIOJB9/nnn2/fffedffPNN9azZ083WNvq1avDesyBAwe6EgBv2bhxY1iPBwAAwi/5aLItHbXULVoHACDbDaQWDspmn3POOW69Xr16tnTpUnvuueesffv2duTIEdu1a1dQtlujl2vgNNHPJUuC+2V5o5t726RGWXVv2jMAAAAAAGI2051ScnKy63OtAFyjkM+ZM8f/2po1a9wUYerzLfqp8vRt27b5t5k9e7brxK4SdQAAAAAAcmymW2Xe1157rRscbe/evW6k8vnz59tnn33m+lp3797d+vXr50Y0VyDdp08fF2hr5HK55pprXHDdqVMnGzlypOvHPXjwYDe3N5lsAAAAAECODrqVoda82ppfW0F2nTp1XMB99dVXu9fHjBlj8fHx1rZtW5f91sjk48eP978/ISHBZs6c6fqCKxgvWLCg6xM+fPjwCJ4VAAAAAABREHRPmjTppK/ny5fPxo0b55a0VK5c2T755JMwtA4AAAAAgBjr0w0AAAAAQKyI+OjlAAAAoRCfK95qda3lXwcAIBoQdAMAgJigQLvKNVUi3QwAAIJwGxgAAAAAgDAh0w0AAGKCL9ln//z8j1svUa2ExcXHRbpJwOlJTEz/tklJXG0gSpHpBgAAMeH4keP29eNfu0XrAABEA4JuAAAAAADChKAbAAAAAIAwoU83AADI9h4ZtcQOHvfZrP/3+KGxyy1/An26AQCRR6YbAAAAAIAwIegGAAAAACBMCLoBAAAAAAgT+nQDQIQkTsvA/KsATilXnFnv8gX96wAARAOCbgAAEBNyx8dZpzL/N+gGACBaUF4OAAAAAECYkOkGAAAx4bjPZ2sOHHPr5xfIZQlx1JgDACKPoBsAAMSEI8lm3X7Z6dbn1yll+RMi3SIAACgvBwAAAAAgbOjTDQAAAABAmBB0AwAAAAAQJgTdAAAAAACECUE3AAAAAABhQtANAAAAAECYMGUYAACICbnizG4vW8C/DgBANCDoBgAAMSF3fJz1KFco0s0AACAI5eUAAAAAAIQJmW4AABCVHhm1JEPbJ/t89vuh4269Sr4Ei4/LeI35kr8ydkxPwzMbZup9AIDYR9ANAABiwuFksw4/73Dr8+uUsvwJkW4RAAAE3QAAAED2l5iY/m2TksLZEgAp0KcbAAAAAIAwIegGAAAAACBMCLoBAAAAAAgTgm4AAAAAAMKEoBsAAAAAgDBhyjAAABATcsWZdSxdwL8OAEA0IOgGAAAxIXd8nN1zZqFINwMAgCCUlwMAAAAAECZkugEAQExI9vlsy5Fkt142T7zFx1FjDgCIPIJuAAAQEw4nm7VZ/Y9bn1+nlOVPiHSLAACgvBwAAAAAgLChTzcAAAAAAGFC0A0AAAAAQJgQdAMAAAAAEItB94gRI6xBgwZWuHBhK126tLVu3drWrFkTtM2hQ4esV69eVqJECStUqJC1bdvWtm7dGrTNhg0brFWrVlagQAG3n/79+9uxY8ey+GwAAAAAAIii0csXLFjgAmoF3gqSBw0aZNdcc42tXr3aChYs6Lbp27evffzxxzZjxgwrWrSo9e7d22688UZbuHChe/348eMu4C5btqwtWrTINm/ebJ07d7bcuXPbk08+GcnTAwAAAKJPYmLGtk9KCldLgBwhokH3rFmzgh5PmTLFZaqXL19ul19+ue3evdsmTZpkU6dOtWbNmrltJk+ebNWrV7evv/7aGjdubJ9//rkL0r/44gsrU6aMXXDBBfbYY4/ZgAEDbOjQoZYnT54InR0AAMhKCXFmbUvm968DABANoqpPt4JsKV68uPup4Pvo0aPWvHlz/zbVqlWzSpUq2eLFi91j/axdu7YLuD0tWrSwPXv22KpVq1I9zuHDh93rgQsAAMje8sTH2YMVC7tF6wAARIOoCbqTk5Ptvvvus0suucRq1arlntuyZYvLVBcrVixoWwXYes3bJjDg9l73XkurL7lK1b2lYsWKYTorAAAAAEBOFjVBt/p2r1y50qZPnx72Yw0cONBl1b1l48aNYT8mAAAIL5/PZzuPJrtF6wAAWE7v0+3R4GgzZ860L7/80ipUqOB/XoOjHTlyxHbt2hWU7dbo5XrN22bJkiVB+/NGN/e2SSlv3rxuAQAAseNQslnLlX+79fl1Sln+hEi3CACACAfdugvdp08fe//9923+/PlWtWrVoNfr1avnRiGfM2eOmypMNKWYpghr0qSJe6yfTzzxhG3bts0NwiazZ8+2IkWKWI0aNSJwVgByksRpGRwBFgAAADlKrkiXlGtk8g8//NDN1e31wVY/6/z587uf3bt3t379+rnB1RRIK0hXoK2Ry0VTjCm47tSpk40cOdLtY/DgwW7fZLMBAAAAADk26J4wYYL72bRp06DnNS1Y165d3fqYMWMsPj7eZbo16rhGJh8/frx/24SEBFea3rNnTxeMa37vLl262PDhw7P4bAAAAAAAiLLy8lPJly+fjRs3zi1pqVy5sn3yySchbh0AAAAAADEyejkAAAAAALGGoBsAAAAAgFieMgwAAOB0JcSZtSqez78OAEA0IOgGAAAxIU98nD1auUhEjr3kryWZel/DMxuGvC0AgOhC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7x0zZoxb96xatcoF5rrmhQsXtssuu8zWrVuXoXa99dZbdsUVV7jvxJtvvule03F1zfRctWrVbPz48af8nAAAsYugGwCQ4yigVuCmQM7Trl07V3qsYHz58uUuQFe2dMeOHe71jz/+2AWQ1113na1YscKVSDds2DDV/b/77rsuwHvppZds7dq1rsS6du3aqW6r4E4Bt46zYMECmz17tv3222+uFDqQgkHtZ+bMmW7Rtk899ZSF04EDB+yZZ55xwf6XX37pbg6oPNwzYcIE69WrlyuV//HHH10m+ZxzzvGX0IuqDBSoe49Teu655+zZZ591x/nhhx+sRYsWrixc1y3Qww8/7I6tmwPnnXeedejQwY4dO5bqPnVzQa+9//777gZIav766y+7/PLLXUA9d+5c95nfdttt/n2mt10PPfSQq5z46aef3DYKvB999FF74okn3HNPPvmkPfLII/baa69l6NoDAGKIDwCAGNWlSxffDTfckOpr7du391WvXt2tf/XVV74iRYr4Dh06FLTN2Wef7XvppZfcepMmTXwdO3ZM81iVK1f2jRkzxq0/++yzvvPOO8935MiRU277+eef+xISEnwbNmzwv75q1SpFir4lS5a4x0OGDPEVKFDAt2fPHv82/fv39zVq1CjN9sybN8/to2DBgkHL33//7X9t586d/u1XrFjhnlu/fr17PHnyZPf4119/9W8zbtw4X5kyZfyPy5cv73v44YfTbIPe//777wc9p3OpW7du0D6eeOKJoG0aNGjgu/vuu9262qP9vPLKKydcn59++inNYw8aNMiXK1cuX/HixX0tW7b0jRw50rdlyxb/6wMHDvRVrVo1zc8ove0aO3bsCd+ZqVOnBj332GOPue8PACBnItMNAMiRFBOqPFhURr5v3z4rUaKEv8+xlvXr1/vLjZVhVeY7PZQ1P3jwoJ111lnWo0cPl3FNKyurbGjFihXd4qlRo4Yr7dZrHpVnqwTao1Lu9AwK9tVXX7m2e8sZZ5xh6aVS7rPPPjvVY+rnpk2b0n1NUrNnzx63j0suuSToeT0OPHepU6dOUDu8NqRFmeYtW7bYxIkTXfm7fqrUWxl50bVQOXlqfbAz0q769ev719VfXN+X7t27B32PHn/8cf/3CACQ8zCQGgAgR1Lw5PXvVcCtQE59nVNS8Cv58+dP974VQGsAsy+++MKVi9999902atQoVxKe2YG2Ur5PNwzSMwK7ztE7B098/P+95x5Yeq1BwNJzTO89GbkeoRDYFu9myanOXzdRdANEi8q81b9b5eIq9Q5V+wsWLOhf1/dIXn75ZWvUqFHQdgkJCSE5HgAg+yHTDQDIcdSHVxnPtm3busfqv62sqEYyV5/kwEUDpnmZ1oxMdaWgLjEx0Z5//nkXzGvgLy/LGkgDbm3cuNEtntWrV7tBzpTxDgdv9PTAQdGU+c0IZd2VfT/ZNVGgrFHj06IBzDTInAY+C6THoT73PHnyuKy9N3q5Pk9VAaR2syGz7dKUdHqf+uSn/B4FDuAGAMhZyHQDAGLa4cOHXUAdOGXYiBEj3KjVnTt3dts0b97cmjRpYq1bt7aRI0e6gbpUXuwNnqYS4iFDhrhSagVuGjlc5eKffPKJDRgw4IRjauRvHU/ZTpVov/HGGy4Ir1y58gnb6tgaZK1jx45uRHPtV5lxjYgdWLocSgoClY3XSOIqw/7ll1/coGEZpfffddddboT0a6+91o2mrsC0T58+7nUvKFdZtgYsS620vX///u7a6rpqhHANvKYbAN5I4JmhgeamT5/uPid9lsrOa+R5fV7av2iU9RdeeMFtM3DgQDci/Ndff+0Gxzv//PMz3a5hw4a5keq1P432ru/fsmXLbOfOndavX79MnxMAIPsi6AYAxDQF2SodVxZbQZ9GLVf2uUuXLv4ya5UrKyDTCNndunVz8zxrBGyNbq3spTRt2tRmzJhhjz32mBs1XNlQvZ4alXNrGwVZCr4VVCvoU7lzSjq2pjBToKr9qU0K1hQQhosy0NOmTbOePXu6jK+mQVO/Y5VhZ4Su4aFDh9xI7RpZXFUBN910k/91BfK6Biq31pRt3nRkgRSganqv+++/3/XRViZZo6Cfe+65mT4/7UM3O7RPVRAo4Nf+NJVXp06d3Db6LFTxoOBaNzhU/q3g2uvHndl2ado5HVvdCbRvlZ/r87/vvvsyfT4AgOwtTqOpRboRAAAAAADEIvp0AwAAAAAQJgTdAAAAAACECUE3AAAAAABhQtANAAAAAECYEHQDAAAAABAmBN0AAAAAAIQJQTcAAAAAAGFC0A0AAAAAQJgQdAMAAAAAECYE3QAAAAAAhAlBNwAAAAAAYULQDQAAAACAhcf/AdbfiIglgwKlAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Decision Function Statistics:\n", "Mean score for positive reviews: -1.2665\n", "Mean score for negative reviews: 1.2209\n", "Min decision score: -6.0056\n", "Max decision score: 4.8417\n" ] } ], "source": [ "# Get decision function scores\n", "decision_scores = svm_classifier.decision_function(X_test_tfidf)\n", "# Plot distribution of decision scores\n", "plt.figure(figsize=(10, 5))\n", "plt.hist(decision_scores[y_test == 1], bins=50, alpha=0.7, label='Positive Reviews', color='green')\n", "plt.hist(decision_scores[y_test == 2], bins=50, alpha=0.7, label='Negative Reviews', color='red')\n", "plt.axvline(0, color='black', linestyle='--', label='Decision Boundary')\n", "plt.xlabel('Decision Function Score')\n", "plt.ylabel('Frequency')\n", "plt.title('SVM Decision Function Scores Distribution')\n", "plt.legend()\n", "plt.tight_layout()\n", "plt.savefig('docs/02_results/svm_decision_scores.png', dpi=300, bbox_inches='tight')\n", "plt.show()\n", "print(f\"\\nDecision Function Statistics:\")\n", "print(f\"Mean score for positive reviews: {decision_scores[y_test == 1].mean():.4f}\")\n", "print(f\"Mean score for negative reviews: {decision_scores[y_test == 2].mean():.4f}\")\n", "print(f\"Min decision score: {decision_scores.min():.4f}\")\n", "print(f\"Max decision score: {decision_scores.max():.4f}\")" ] }, { "cell_type": "markdown", "id": "23", "metadata": { "id": "23" }, "source": [ "## Model Summary" ] }, { "cell_type": "code", "execution_count": null, "id": "24", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "24", "outputId": "cc0d6ddd-214d-43db-f3ad-78231f960b77" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SVM (LinearSVC) MODEL SUMMARY\n", "\n", "Model Parameters:\n", " - Kernel: Linear (implicit in LinearSVC)\n", " - C (Regularization): 1.0\n", " - Loss Function: hinge\n", " - Penalty: L2\n", " - Max Iterations: 2000\n", "\n", "Feature Engineering:\n", " - Vectorizer: TF-IDF\n", " - Max Features: 5000\n", " - N-gram Range: (1, 2)\n", " - Min Document Frequency: 5\n", " - Max Document Frequency: 0.8\n", "\n", "Performance:\n", " - Accuracy: 0.8891\n", " - Precision: 0.8883\n", " - Recall: 0.8892\n", " - F1-Score: 0.8888\n", "\n", "Model Characteristics:\n", " - Type: LinearSVC (Support Vector Classification)\n", " - Complexity: O(n × d) where n=samples, d=features\n", " - Number of Coefficients: 100000\n", " - Best for: High-dimensional sparse data (like TF-IDF)\n", " - Margin-based Classifier: Maximizes decision boundary margin\n" ] } ], "source": [ "print(\"SVM (LinearSVC) MODEL SUMMARY\")\n", "print(f\"\\nModel Parameters:\")\n", "print(f\" - Kernel: Linear (implicit in LinearSVC)\")\n", "print(f\" - C (Regularization): {svm_classifier.C}\")\n", "print(f\" - Loss Function: hinge\")\n", "print(f\" - Penalty: L2\")\n", "print(f\" - Max Iterations: {svm_classifier.max_iter}\")\n", "print(f\"\\nFeature Engineering:\")\n", "print(f\" - Vectorizer: TF-IDF\")\n", "print(f\" - Max Features: 5000\")\n", "print(f\" - N-gram Range: (1, 2)\")\n", "print(f\" - Min Document Frequency: 5\")\n", "print(f\" - Max Document Frequency: 0.8\")\n", "print(f\"\\nPerformance:\")\n", "print(f\" - Accuracy: {accuracy:.4f}\")\n", "print(f\" - Precision: {precision:.4f}\")\n", "print(f\" - Recall: {recall:.4f}\")\n", "print(f\" - F1-Score: {f1:.4f}\")\n", "print(f\" - Training Time: {search_time:.4f} seconds\")\n", "print(f\"\\nModel Characteristics:\")\n", "print(f\" - Type: LinearSVC (Support Vector Classification)\")\n", "print(f\" - Complexity: O(n × d) where n=samples, d=features\")\n", "print(f\" - Number of Coefficients: {len(coefficients)}\")\n", "print(f\" - Best for: High-dimensional sparse data (like TF-IDF)\")\n", "print(f\" - Margin-based Classifier: Maximizes decision boundary margin\")" ] }, { "cell_type": "markdown", "id": "ab966e02", "metadata": {}, "source": [ "## Saving the Model and Pipeline" ] }, { "cell_type": "code", "execution_count": 22, "id": "85da0ca9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saved model 07_support_vector_machine_classifier.joblib to data\\models\\07_support_vector_machine_classifier.joblib\n" ] }, { "data": { "text/plain": [ "{'model': WindowsPath('data/models/07_support_vector_machine_classifier.joblib')}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "save(model_base='data/models', model=svm_classifier, model_name='07_support_vector_machine_classifier.joblib')" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "mlqueens", "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.12" } }, "nbformat": 4, "nbformat_minor": 5 }