{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6B0fZK-1M6Qw", "outputId": "dfba0d7d-9228-4b7a-e7fb-b89406d8004f" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "[nltk_data] Downloading package stopwords to /root/nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n", "[nltk_data] Downloading package wordnet to /root/nltk_data...\n", "[nltk_data] Package wordnet is already up-to-date!\n", "[nltk_data] Downloading package punkt to /root/nltk_data...\n", "[nltk_data] Package punkt is already up-to-date!\n", "[nltk_data] Downloading package stopwords to /root/nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n", "[nltk_data] Downloading package wordnet to /root/nltk_data...\n", "[nltk_data] Package wordnet is already up-to-date!\n", "[nltk_data] Downloading package punkt to /root/nltk_data...\n", "[nltk_data] Package punkt is already up-to-date!\n", "[nltk_data] Downloading package punkt_tab to /root/nltk_data...\n", "[nltk_data] Package punkt_tab is already up-to-date!\n" ] } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.metrics import classification_report, confusion_matrix, accuracy_score\n", "import nltk\n", "from nltk.corpus import stopwords\n", "from nltk.stem import WordNetLemmatizer\n", "import re\n", "import tensorflow as tf\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense, Dropout\n", "from tensorflow.keras.optimizers import Adam\n", "from tensorflow.keras.callbacks import EarlyStopping\n", "from tensorflow.keras.utils import to_categorical\n", "import io\n", "from google.colab import files\n", "\n", "# Download NLTK resources\n", "nltk.download('stopwords')\n", "nltk.download('wordnet')\n", "nltk.download('punkt')\n", "\n", "# Set random seeds for reproducibility\n", "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.metrics import classification_report, confusion_matrix, accuracy_score\n", "import nltk\n", "from nltk.corpus import stopwords\n", "from nltk.stem import WordNetLemmatizer\n", "import re\n", "import tensorflow as tf\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense, Dropout\n", "from tensorflow.keras.optimizers import Adam\n", "from tensorflow.keras.callbacks import EarlyStopping\n", "from tensorflow.keras.utils import to_categorical\n", "import io\n", "from google.colab import files\n", "\n", "# Download NLTK resources\n", "nltk.download('stopwords')\n", "nltk.download('wordnet')\n", "nltk.download('punkt')\n", "nltk.download('punkt_tab')\n", "\n", "# Set random seeds for reproducibility\n", "np.random.seed(42)\n", "tf.random.set_seed(42)" ] }, { "cell_type": "code", "source": [ "# 1. Load the data\n", "# Option 1: Upload the file through Colab interface\n", "print(\"Please upload your descriptions_labeled.csv file:\")\n", "uploaded = files.upload()\n", "\n", "# Option 2: Or uncomment and use this if your file is in Google Drive\n", "# from google.colab import drive\n", "# drive.mount('/content/drive')\n", "# df = pd.read_csv('/content/drive/My Drive/path_to_your_file/descriptions_labeled.csv')\n", "\n", "# Load the uploaded file\n", "for filename in uploaded.keys():\n", " df = pd.read_csv(io.BytesIO(uploaded[filename]))\n", "\n", "# Display basic information about the dataset\n", "print(f\"Dataset shape: {df.shape}\")\n", "print(\"\\nFirst few rows:\")\n", "print(df.head())\n", "\n", "print(\"\\nClass distribution:\")\n", "print(df['completion'].value_counts())" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 420 }, "id": "-fgf7ndaOigf", "outputId": "1f494f13-5b7f-46e7-fedb-22b78ffdebfb" }, "execution_count": 27, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Please upload your descriptions_labeled.csv file:\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Saving descriptions_labeled.csv to descriptions_labeled (1).csv\n", "Dataset shape: (2000, 2)\n", "\n", "First few rows:\n", " completion prompt\n", "0 tracks Southbound [A][C] trains are disrupted in Manh...\n", "1 tracks Southbound [A][C][E] trains are disrupted in M...\n", "2 tracks Southbound [A][C][E] trains are disrupted in M...\n", "3 subway_cars Northbound [F] trains are running with delays ...\n", "4 police_medical_activity [2] trains are running with delays in both dir...\n", "\n", "Class distribution:\n", "completion\n", "subway_cars 790\n", "police_medical_activity 493\n", "tracks 276\n", "other 260\n", "signal 170\n", "stations_structures 11\n", "Name: count, dtype: int64\n" ] } ] }, { "cell_type": "code", "source": [ "# 2. Text Preprocessing\n", "def preprocess_text(text):\n", " # Convert to lowercase\n", " text = text.lower()\n", "\n", " # Remove special characters and numbers\n", " text = re.sub(r'[^a-zA-Z\\s]', '', text)\n", "\n", " # Tokenize\n", " tokens = nltk.word_tokenize(text)\n", "\n", " # Remove stopwords and lemmatize\n", " stop_words = set(stopwords.words('english'))\n", " lemmatizer = WordNetLemmatizer()\n", "\n", " cleaned_tokens = [lemmatizer.lemmatize(token) for token in tokens if token not in stop_words]\n", "\n", " return ' '.join(cleaned_tokens)\n", "\n", "# Apply preprocessing to prompts\n", "print(\"\\nPreprocessing text data...\")\n", "df['processed_prompt'] = df['prompt'].apply(preprocess_text)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "X4FKpzbEO0mG", "outputId": "1d11f3e5-4cd1-435c-8b2f-81d89bf24feb" }, "execution_count": 28, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "Preprocessing text data...\n" ] } ] }, { "cell_type": "code", "source": [ "# 3. Split data into train and test sets\n", "X = df['processed_prompt']\n", "y = df['completion']\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)\n", "\n", "print(f\"\\nTraining set size: {len(X_train)}\")\n", "print(f\"Testing set size: {len(X_test)}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qKoLrq-DPHpb", "outputId": "da26f209-32a7-44eb-8db9-ff4f3f6d8ca0" }, "execution_count": 29, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "Training set size: 1600\n", "Testing set size: 400\n" ] } ] }, { "cell_type": "code", "source": [ "# 4. Vectorize text data using TF-IDF\n", "vectorizer = TfidfVectorizer(max_features=2000)\n", "X_train_tfidf = vectorizer.fit_transform(X_train)\n", "X_test_tfidf = vectorizer.transform(X_test)\n", "\n", "# Show the top features (words) from TF-IDF\n", "feature_names = vectorizer.get_feature_names_out()\n", "print(\"\\nTop features from TF-IDF:\")\n", "print(feature_names[:20])" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qC_-sDDVPIir", "outputId": "2c780dd9-a77c-4d1c-9bd9-254ab14e7cf2" }, "execution_count": 30, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "Top features from TF-IDF:\n", "['abcd' 'able' 'ac' 'acd' 'ace' 'acef' 'acf' 'activate' 'activated' 'ad'\n", " 'address' 'addressed' 'addressing' 'ae' 'airport' 'alabama' 'allerton'\n", " 'along' 'aquarium' 'area']\n" ] } ] }, { "cell_type": "code", "source": [ "# 5. Encode the target labels\n", "label_encoder = LabelEncoder()\n", "y_train_encoded = label_encoder.fit_transform(y_train)\n", "y_test_encoded = label_encoder.transform(y_test)\n", "\n", "# Get the number of unique classes\n", "num_classes = len(label_encoder.classes_)\n", "print(f\"\\nNumber of classes: {num_classes}\")\n", "print(f\"Classes: {label_encoder.classes_}\")\n", "\n", "# Convert to one-hot encoding for neural network\n", "y_train_categorical = to_categorical(y_train_encoded, num_classes=num_classes)\n", "y_test_categorical = to_categorical(y_test_encoded, num_classes=num_classes)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "03KqjCNvPNP6", "outputId": "65b1fa85-3a2c-484e-f24a-c251db805d37" }, "execution_count": 31, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "Number of classes: 6\n", "Classes: ['other' 'police_medical_activity' 'signal' 'stations_structures'\n", " 'subway_cars' 'tracks']\n" ] } ] }, { "cell_type": "code", "source": [ "# 6. Build a Neural Network model\n", "model = Sequential([\n", " Dense(128, activation='relu', input_shape=(X_train_tfidf.shape[1],)),\n", " Dropout(0.5),\n", " Dense(64, activation='relu'),\n", " Dropout(0.3),\n", " Dense(num_classes, activation='softmax')\n", "])\n", "\n", "# Compile the model\n", "model.compile(\n", " optimizer=Adam(learning_rate=0.001),\n", " loss='categorical_crossentropy',\n", " metrics=['accuracy']\n", ")\n", "\n", "# Print model summary\n", "model.summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 361 }, "id": "myavaN8HPTER", "outputId": "115a644f-b48d-4dd7-920a-6a7f4fec2667" }, "execution_count": 32, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.11/dist-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1mModel: \"sequential_1\"\u001b[0m\n" ], "text/html": [ "
Model: \"sequential_1\"\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", "│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m66,688\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_2 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m8,256\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dropout_3 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", "│ dense_5 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m6\u001b[0m) │ \u001b[38;5;34m390\u001b[0m │\n", "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" ], "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                     Output Shape                  Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
              "│ dense_3 (Dense)                 │ (None, 128)            │        66,688 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_2 (Dropout)             │ (None, 128)            │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_4 (Dense)                 │ (None, 64)             │         8,256 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dropout_3 (Dropout)             │ (None, 64)             │             0 │\n",
              "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
              "│ dense_5 (Dense)                 │ (None, 6)              │           390 │\n",
              "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m75,334\u001b[0m (294.27 KB)\n" ], "text/html": [ "
 Total params: 75,334 (294.27 KB)\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m75,334\u001b[0m (294.27 KB)\n" ], "text/html": [ "
 Trainable params: 75,334 (294.27 KB)\n",
              "
\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ], "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ] }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# 7. Train the model with early stopping\n", "early_stopping = EarlyStopping(\n", " monitor='val_loss',\n", " patience=5,\n", " restore_best_weights=True\n", ")\n", "\n", "# Convert sparse matrix to dense for TensorFlow\n", "X_train_dense = X_train_tfidf.toarray()\n", "X_test_dense = X_test_tfidf.toarray()\n", "\n", "history = model.fit(\n", " X_train_dense,\n", " y_train_categorical,\n", " epochs=50,\n", " batch_size=32,\n", " validation_split=0.2,\n", " callbacks=[early_stopping],\n", " verbose=1\n", ")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0dx1NpjOPUC5", "outputId": "be860248-03bc-4f6a-d020-1287affa18c0" }, "execution_count": 33, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.3757 - loss: 1.7200 - val_accuracy: 0.5094 - val_loss: 1.3883\n", "Epoch 2/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.5823 - loss: 1.2583 - val_accuracy: 0.6906 - val_loss: 0.8791\n", "Epoch 3/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.7289 - loss: 0.7625 - val_accuracy: 0.8531 - val_loss: 0.5073\n", "Epoch 4/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.8875 - loss: 0.4532 - val_accuracy: 0.9781 - val_loss: 0.2786\n", "Epoch 5/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9502 - loss: 0.2608 - val_accuracy: 0.9844 - val_loss: 0.1558\n", "Epoch 6/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9741 - loss: 0.1605 - val_accuracy: 0.9875 - val_loss: 0.1011\n", "Epoch 7/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9848 - loss: 0.1165 - val_accuracy: 0.9906 - val_loss: 0.0736\n", "Epoch 8/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9874 - loss: 0.0863 - val_accuracy: 0.9906 - val_loss: 0.0577\n", "Epoch 9/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9902 - loss: 0.0640 - val_accuracy: 0.9906 - val_loss: 0.0491\n", "Epoch 10/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9842 - loss: 0.0608 - val_accuracy: 0.9906 - val_loss: 0.0427\n", "Epoch 11/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9896 - loss: 0.0519 - val_accuracy: 0.9937 - val_loss: 0.0403\n", "Epoch 12/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9909 - loss: 0.0418 - val_accuracy: 0.9906 - val_loss: 0.0373\n", "Epoch 13/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9928 - loss: 0.0316 - val_accuracy: 0.9906 - val_loss: 0.0344\n", "Epoch 14/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9932 - loss: 0.0336 - val_accuracy: 0.9906 - val_loss: 0.0329\n", "Epoch 15/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9930 - loss: 0.0279 - val_accuracy: 0.9906 - val_loss: 0.0327\n", "Epoch 16/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9952 - loss: 0.0264 - val_accuracy: 0.9937 - val_loss: 0.0320\n", "Epoch 17/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9956 - loss: 0.0221 - val_accuracy: 0.9937 - val_loss: 0.0316\n", "Epoch 18/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9962 - loss: 0.0180 - val_accuracy: 0.9906 - val_loss: 0.0314\n", "Epoch 19/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9965 - loss: 0.0228 - val_accuracy: 0.9906 - val_loss: 0.0317\n", "Epoch 20/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9969 - loss: 0.0165 - val_accuracy: 0.9937 - val_loss: 0.0308\n", "Epoch 21/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9934 - loss: 0.0202 - val_accuracy: 0.9906 - val_loss: 0.0310\n", "Epoch 22/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9960 - loss: 0.0152 - val_accuracy: 0.9906 - val_loss: 0.0293\n", "Epoch 23/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9976 - loss: 0.0166 - val_accuracy: 0.9937 - val_loss: 0.0293\n", "Epoch 24/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9959 - loss: 0.0227 - val_accuracy: 0.9937 - val_loss: 0.0294\n", "Epoch 25/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9949 - loss: 0.0171 - val_accuracy: 0.9906 - val_loss: 0.0319\n", "Epoch 26/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9989 - loss: 0.0127 - val_accuracy: 0.9906 - val_loss: 0.0321\n", "Epoch 27/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 10ms/step - accuracy: 0.9972 - loss: 0.0131 - val_accuracy: 0.9937 - val_loss: 0.0291\n", "Epoch 28/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9962 - loss: 0.0126 - val_accuracy: 0.9937 - val_loss: 0.0288\n", "Epoch 29/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9962 - loss: 0.0108 - val_accuracy: 0.9937 - val_loss: 0.0284\n", "Epoch 30/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - accuracy: 0.9981 - loss: 0.0090 - val_accuracy: 0.9937 - val_loss: 0.0283\n", "Epoch 31/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9979 - loss: 0.0105 - val_accuracy: 0.9937 - val_loss: 0.0297\n", "Epoch 32/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9959 - loss: 0.0163 - val_accuracy: 0.9937 - val_loss: 0.0300\n", "Epoch 33/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step - accuracy: 0.9990 - loss: 0.0081 - val_accuracy: 0.9937 - val_loss: 0.0288\n", "Epoch 34/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step - accuracy: 0.9980 - loss: 0.0096 - val_accuracy: 0.9937 - val_loss: 0.0289\n", "Epoch 35/50\n", "\u001b[1m40/40\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step - accuracy: 0.9988 - loss: 0.0085 - val_accuracy: 0.9937 - val_loss: 0.0298\n" ] } ] }, { "cell_type": "code", "source": [ "# 8. Evaluate the model\n", "y_pred_probs = model.predict(X_test_dense)\n", "y_pred = np.argmax(y_pred_probs, axis=1)\n", "y_true = y_test_encoded\n", "\n", "# Print evaluation metrics\n", "print(\"\\nModel Evaluation:\")\n", "print(f\"Accuracy: {accuracy_score(y_true, y_pred):.4f}\")\n", "print(\"\\nClassification Report:\")\n", "print(classification_report(y_true, y_pred, target_names=label_encoder.classes_))\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OIhS54cePaCy", "outputId": "c219836a-24a9-41f5-da55-5dd6db8eceb7" }, "execution_count": 34, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[1m13/13\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 6ms/step\n", "\n", "Model Evaluation:\n", "Accuracy: 0.9950\n", "\n", "Classification Report:\n", " precision recall f1-score support\n", "\n", " other 0.98 1.00 0.99 52\n", "police_medical_activity 1.00 1.00 1.00 99\n", " signal 1.00 1.00 1.00 34\n", " stations_structures 0.00 0.00 0.00 2\n", " subway_cars 1.00 1.00 1.00 158\n", " tracks 0.98 1.00 0.99 55\n", "\n", " accuracy 0.99 400\n", " macro avg 0.83 0.83 0.83 400\n", " weighted avg 0.99 0.99 0.99 400\n", "\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", "/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n", "/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", " _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n" ] } ] }, { "cell_type": "code", "source": [ "# 9. Visualize training history\n", "plt.figure(figsize=(12, 4))\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.plot(history.history['accuracy'])\n", "plt.plot(history.history['val_accuracy'])\n", "plt.title('Model Accuracy')\n", "plt.ylabel('Accuracy')\n", "plt.xlabel('Epoch')\n", "plt.legend(['Train', 'Validation'], loc='upper left')\n", "\n", "plt.subplot(1, 2, 2)\n", "plt.plot(history.history['loss'])\n", "plt.plot(history.history['val_loss'])\n", "plt.title('Model Loss')\n", "plt.ylabel('Loss')\n", "plt.xlabel('Epoch')\n", "plt.legend(['Train', 'Validation'], loc='upper left')\n", "\n", "plt.tight_layout()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 280 }, "id": "3W_ycBNiPf5J", "outputId": "17137046-4083-4758-f411-ff34cc01dd21" }, "execution_count": 35, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnFpJREFUeJzs3Xl8VNX5x/HPnZnMZE/InkBYZVUJCIJordJiKVrcFbUVi1tVcKOLUhXUWrFutVatlYpo64J7259WRZSqFUVBXFlkkTV7yJ7MJDP398edGQiZhASSmSzf9+t1X/fOvefOPDOJcvLMOc8xTNM0ERERERERERERCSNbpAMQEREREREREZHeR0kpEREREREREREJOyWlREREREREREQk7JSUEhERERERERGRsFNSSkREREREREREwk5JKRERERERERERCTslpUREREREREREJOyUlBIRERERERERkbBTUkpERERERERERMJOSSkRiTjDMLj11lvbfd93332HYRgsWbKkw2MSERER6W3UJxORcFNSSkQAWLJkCYZhYBgGH3zwQbPrpmmSm5uLYRj85Cc/iUCEHeP111/HMAxycnLw+XyRDkdERESkiZ7cJ1uxYgWGYfDiiy9GOhQR6SKUlBKRJqKjo3nmmWeanf/vf//Lzp07cblcEYiq4zz99NMMHDiQ/Px83nnnnUiHIyIiIhJST++TiYiAklIisp+TTz6ZF154gcbGxibnn3nmGcaNG0dWVlaEIjt0NTU1/POf/2Tu3LmMHTuWp59+OtIhtaimpibSIYiIiEgE9eQ+mYhIgJJSItLE+eefT2lpKcuWLQue83g8vPjii1xwwQUh76mpqeGXv/wlubm5uFwuhg8fzr333otpmk3aud1urr/+etLT00lISODUU09l586dIZ9z165dXHzxxWRmZuJyuTj88MNZvHjxIb23V155hbq6Os455xzOO+88Xn75Zerr65u1q6+v59Zbb2XYsGFER0eTnZ3NmWeeyebNm4NtfD4ff/rTnzjyyCOJjo4mPT2dH//4x3z66adA67UV9q/XcOutt2IYBt988w0XXHABffr04Xvf+x4AX3zxBT//+c8ZPHgw0dHRZGVlcfHFF1NaWhryM7vkkkvIycnB5XIxaNAgrrzySjweD1u2bMEwDP74xz82u+/DDz/EMAyeffbZ9n6kIiIi0kl6cp/sQLZs2cI555xDSkoKsbGxHHPMMbz22mvN2v35z3/m8MMPJzY2lj59+jB+/Pgmo8uqqqq47rrrGDhwIC6Xi4yMDE466STWrFnTqfGLSNs5Ih2AiHQtAwcOZNKkSTz77LNMmzYNgP/85z9UVFRw3nnn8eCDDzZpb5omp556Ku+++y6XXHIJY8aM4c033+TXv/41u3btapIEufTSS/nHP/7BBRdcwLHHHss777zDKaec0iyGwsJCjjnmGAzDYM6cOaSnp/Of//yHSy65hMrKSq677rqDem9PP/00kydPJisri/POO48bb7yRf//735xzzjnBNl6vl5/85CcsX76c8847j2uvvZaqqiqWLVvGV199xZAhQwC45JJLWLJkCdOmTePSSy+lsbGR999/n48++ojx48cfVHznnHMOQ4cO5c477wx2HpctW8aWLVuYNWsWWVlZfP311zz22GN8/fXXfPTRRxiGAcDu3buZMGEC5eXlXH755YwYMYJdu3bx4osvUltby+DBgznuuON4+umnuf7665t9LgkJCZx22mkHFbeIiIh0vJ7cJ2tNYWEhxx57LLW1tVxzzTWkpqby5JNPcuqpp/Liiy9yxhlnALBo0SKuueYazj77bK699lrq6+v54osv+Pjjj4NJuyuuuIIXX3yROXPmMGrUKEpLS/nggw9Yt24dRx11VIfHLiIHwRQRMU3ziSeeMAHzk08+MR966CEzISHBrK2tNU3TNM855xxz8uTJpmma5oABA8xTTjkleN+rr75qAuYdd9zR5PnOPvts0zAMc9OmTaZpmubatWtNwLzqqquatLvgggtMwFywYEHw3CWXXGJmZ2ebJSUlTdqed955ZlJSUjCurVu3moD5xBNPHPD9FRYWmg6Hw1y0aFHw3LHHHmuedtppTdotXrzYBMz777+/2XP4fD7TNE3znXfeMQHzmmuuabFNa7Ht/34XLFhgAub555/frG3gve7r2WefNQHzvffeC56bOXOmabPZzE8++aTFmP7617+agLlu3brgNY/HY6alpZkXXXRRs/tEREQk/Hpyn+zdd981AfOFF15osc11111nAub7778fPFdVVWUOGjTIHDhwoOn1ek3TNM3TTjvNPPzww1t9vaSkJHP27NmtthGRyNL0PRFp5txzz6Wuro7/+7//o6qqiv/7v/9rcZj466+/jt1u55prrmly/pe//CWmafKf//wn2A5o1m7/b9hM0+Sll15i+vTpmKZJSUlJcJs6dSoVFRUHNeT6ueeew2azcdZZZwXPnX/++fznP/9hz549wXMvvfQSaWlpXH311c2eIzAq6aWXXsIwDBYsWNBim4NxxRVXNDsXExMTPK6vr6ekpIRjjjkGIPg5+Hw+Xn31VaZPnx5ylFYgpnPPPZfo6OgmtbTefPNNSkpK+NnPfnbQcYuIiEjn6Il9sgN5/fXXmTBhQrCUAUB8fDyXX3453333Hd988w0AycnJ7Ny5k08++aTF50pOTubjjz9m9+7dHR6niHQMJaVEpJn09HSmTJnCM888w8svv4zX6+Xss88O2Xbbtm3k5OSQkJDQ5PzIkSOD1wN7m80WnP4WMHz48CaPi4uLKS8v57HHHiM9Pb3JNmvWLACKiora/Z7+8Y9/MGHCBEpLS9m0aRObNm1i7NixeDweXnjhhWC7zZs3M3z4cByOlmc3b968mZycHFJSUtodR2sGDRrU7FxZWRnXXnstmZmZxMTEkJ6eHmxXUVEBWJ9ZZWUlRxxxRKvPn5yczPTp05vUWnj66afp27cvP/jBDzrwnYiIiEhH6Il9sgPZtm1bs1hCvY8bbriB+Ph4JkyYwNChQ5k9ezb/+9//mtxz991389VXX5Gbm8uECRO49dZb2bJlS4fHLCIHTzWlRCSkCy64gMsuu4yCggKmTZtGcnJyWF7X5/MB8LOf/YyLLrooZJvRo0e36zm//fbb4LdoQ4cObXb96aef5vLLL29npK1racSU1+tt8Z59R0UFnHvuuXz44Yf8+te/ZsyYMcTHx+Pz+fjxj38c/KzaY+bMmbzwwgt8+OGHHHnkkfzrX//iqquuwmbTdxQiIiJdUU/qk3WkkSNHsmHDBv7v//6PN954g5deeolHHnmE+fPnc9tttwFWP+r444/nlVde4a233uKee+7hD3/4Ay+//HKwTpeIRJaSUiIS0hlnnMEvfvELPvroI5YuXdpiuwEDBvD2229TVVXV5Ju59evXB68H9j6fLzgSKWDDhg1Nni+wCozX62XKlCkd8l6efvppoqKi+Pvf/47dbm9y7YMPPuDBBx9k+/bt9O/fnyFDhvDxxx/T0NBAVFRUyOcbMmQIb775JmVlZS2OlurTpw8A5eXlTc4Hvt1riz179rB8+XJuu+025s+fHzz/7bffNmmXnp5OYmIiX3311QGf88c//jHp6ek8/fTTTJw4kdraWi688MI2xyQiIiLh1ZP6ZG0xYMCAZrFA8/cBEBcXx4wZM5gxYwYej4czzzyT3//+98ybN4/o6GgAsrOzueqqq7jqqqsoKiriqKOO4ve//72SUiJdhL4aF5GQ4uPj+ctf/sKtt97K9OnTW2x38skn4/V6eeihh5qc/+Mf/4hhGMF/8AP7/VeKeeCBB5o8ttvtnHXWWbz00kshkyzFxcXtfi9PP/00xx9/PDNmzODss89usv36178G4NlnnwXgrLPOoqSkpNn7AYIr4p111lmYphn8Fi5Um8TERNLS0njvvfeaXH/kkUfaHHcggWbut4zz/p+ZzWbj9NNP59///jeffvppizEBOBwOzj//fJ5//nmWLFnCkUceGdFvOUVERKR1PalP1hYnn3wyq1atYuXKlcFzNTU1PPbYYwwcOJBRo0YBUFpa2uQ+p9PJqFGjME2ThoYGvF5vsNRBQEZGBjk5Objd7k6JXUTaTyOlRKRFLQ3V3tf06dOZPHkyN910E9999x15eXm89dZb/POf/+S6664L1isYM2YM559/Po888ggVFRUce+yxLF++nE2bNjV7zrvuuot3332XiRMnctlllzFq1CjKyspYs2YNb7/9NmVlZW1+Dx9//DGbNm1izpw5Ia/37duXo446iqeffpobbriBmTNn8tRTTzF37lxWrVrF8ccfT01NDW+//TZXXXUVp512GpMnT+bCCy/kwQcf5Ntvvw1OpXv//feZPHly8LUuvfRS7rrrLi699FLGjx/Pe++9x8aNG9sce2JiIt///ve5++67aWhooG/fvrz11lts3bq1Wds777yTt956ixNOOIHLL7+ckSNHkp+fzwsvvMAHH3zQZKj/zJkzefDBB3n33Xf5wx/+0OZ4REREJDJ6Qp9sXy+99FJw5NP+7/PGG2/k2WefZdq0aVxzzTWkpKTw5JNPsnXrVl566aVgyYEf/ehHZGVlcdxxx5GZmcm6det46KGHOOWUU0hISKC8vJx+/fpx9tlnk5eXR3x8PG+//TaffPIJ991330HFLSKdIDKL/olIV7Pv8sOt2X/5YdO0lum9/vrrzZycHDMqKsocOnSoec8995g+n69Ju7q6OvOaa64xU1NTzbi4OHP69Onmjh07mi0/bJqmWVhYaM6ePdvMzc01o6KizKysLPOHP/yh+dhjjwXbtGX54auvvtoEzM2bN7fY5tZbbzUB8/PPPzdN0zRra2vNm266yRw0aFDwtc8+++wmz9HY2Gjec8895ogRI0yn02mmp6eb06ZNM1evXh1sU1tba15yySVmUlKSmZCQYJ577rlmUVFRs/e7YMECEzCLi4ubxbZz507zjDPOMJOTk82kpCTznHPOMXfv3h3yM9u2bZs5c+ZMMz093XS5XObgwYPN2bNnm263u9nzHn744abNZjN37tzZ4uciIiIi4ddT+2SmaZrvvvuuCbS4vf/++6ZpmubmzZvNs88+20xOTjajo6PNCRMmmP/3f//X5Ln++te/mt///vfN1NRU0+VymUOGDDF//etfmxUVFaZpmqbb7TZ//etfm3l5eWZCQoIZFxdn5uXlmY888kirMYpIeBmmud+8EBER6fHGjh1LSkoKy5cvj3QoIiIiIiLSS6mmlIhIL/Ppp5+ydu1aZs6cGelQRERERESkF9NIKRGRXuKrr75i9erV3HfffZSUlLBly5bgyjQiIiIiIiLhppFSIiK9xIsvvsisWbNoaGjg2WefVUJKREREREQiSiOlREREREREREQk7DRSSkREREREREREwk5JKRERERERERERCTtHpAMIN5/Px+7du0lISMAwjEiHIyIiIl2YaZpUVVWRk5ODzda7v8tTH0pERETaoj39p16XlNq9eze5ubmRDkNERES6kR07dtCvX79IhxFR6kOJiIhIe7Sl/9TrklIJCQmA9eEkJiZGOBoRERHpyiorK8nNzQ32H3oz9aFERESkLdrTf+p1SanAcPPExER1qERERKRNNF1NfSgRERFpn7b0n3p3cQQREREREREREYkIJaVERERERERERCTslJQSEREREREREZGw63U1pdrK6/XS0NAQ6TCkA0RFRWG32yMdhoiISK+gPlTPoT6UiIh0NiWl9mOaJgUFBZSXl0c6FOlAycnJZGVlqVCtiIhIJ1EfqmdSH0pERDqTklL7CXSmMjIyiI2N1T/A3ZxpmtTW1lJUVARAdnZ2hCMSERHpmdSH6lnUhxIRkXCIaFLqvffe45577mH16tXk5+fzyiuvcPrpp7d6z4oVK5g7dy5ff/01ubm53Hzzzfz85z/vkHi8Xm+wM5WamtohzymRFxMTA0BRUREZGRkahi4i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qERERKSDKSnVE3hqoOAr67iVkVKFlfUUVrqxGXBE38QwBSciIiLSTsFi581HSqUnuEiNc2Ka8G2R6kqJiIh0Z0pK9QS7PwPTCwk5kNSvxWaf7ygHYGhGArFOR5iCExEREWmntJZHSoGKnYuIiPQUSkr1BMF6UgeaumfVkxqtelIiIiLSlQVGSoWoKQX7FjtXUkpERKQ7U1KqJwisvNfvQEXOywEYnZvcufGIiIiIHIr04da+Yge4mxc0H+EfKbWxUEkpERGR7kxJqe7ONPcmpVqpJ2WaJl/u0sp7IiIi0g3EpkBcunUcYrSUpu+JiIj0DEpKdXd7voOaYrA7ITuvxWbby2opr23AabcFl1IWERGR7um9995j+vTp5OTkYBgGr776aqvtX375ZU466STS09NJTExk0qRJvPnmm+EJ9mCl+UdLhUhKBabvFVe5KavxhDMqERER6UBKSnV3gVFSWaPB4Wqx2ef+elIjsxNwOvRjFxER6c5qamrIy8vj4YcfblP79957j5NOOonXX3+d1atXM3nyZKZPn85nn33WyZEegsAUvhDFzuNcDvqnxAKwvqAynFGJiIhIB9ISbN1dsMh56/WkvvCvvDe6X3LnxiMiIiKdbtq0aUybNq3N7R944IEmj++8807++c9/8u9//5uxY8d2cHQdJJiUarnY+fayWjYWVHHskLQwBiYiIiIdRUNmurtdq619P628JyIiIm3j8/moqqoiJSWlxTZut5vKysomW1i1MlIK9hY736Bi5yIiIt2WklLdmc8HReus46zRLTbz+ky+2u0vcq6V90RERHq9e++9l+rqas4999wW2yxcuJCkpKTglpubG8YI2VtTas9WaHQ3u6xi5yIiIt2fklLdWfl30FgHdhekDGqx2aaiamo9XmKddoakx4cvPhEREelynnnmGW677Taef/55MjIyWmw3b948KioqgtuOHTvCGCWQkAWuJDB9ULqp2eXASKmNBVX4fGZ4YxMREZEOoaRUdxYYJZU+HGz2Fpt9vrMcgCP6JmG3GWEITERERLqi5557jksvvZTnn3+eKVOmtNrW5XKRmJjYZAsrw4D0YdZx8YZmlwemxRFlN6jxeNlVXhfe2ERERKRDKCnVnRV9Y+0zRrXa7At/UipP9aRERER6rWeffZZZs2bx7LPPcsopp0Q6nLYJTOELkZSKstuCI8A3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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# 10. Plot confusion matrix\n", "plt.figure(figsize=(10, 8))\n", "cm = confusion_matrix(y_true, y_pred)\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',\n", " xticklabels=label_encoder.classes_,\n", " yticklabels=label_encoder.classes_)\n", "plt.title('Confusion Matrix')\n", "plt.ylabel('True Label')\n", "plt.xlabel('Predicted Label')\n", "plt.tight_layout()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 692 }, "id": "29mAHtRBPh6R", "outputId": "ef5578b6-988a-4931-ca5c-2ea2d7a98faf" }, "execution_count": 36, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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R44cio2NtVpUrF27dlq5cqUDI4P0f48/Y+62MXl5eally5a6deuWpe3gwYOqU6eOWrdu7cDIgNtYOAnI4tzc3HTp0qU07X/++afy5s3rgIjwb/ebcZGUlCRXV1c7R4N/a9mypdasWaOqVavqtdde00svvaTPPvtMsbGxlpVK4Tg//vijVq1apQIFCli1h4eH6+TJkw6KCndMmzZNR44cUXBwMI8/M6BFixapfv36ioiI0IIFC7R//37Vq1dPERERmjhxoqPDA0hSgayuefPmGjt2rL755htJkslkUmxsrIYOHcqvpQ40depUSbf749NPP5WXl5dlX0pKijZu3MjCIg727rvvWv7drl07hYSEaMuWLQoPD1ezZs0cGBkk6erVq/d8LNOFCxeodBsAjz8zNg8PDy1btkx16tRR27ZttXHjRnXq1Envv/++o0MDJLFwEpDlJSYmqk2bNtqxY4cuX76s4OBgxcfHq1q1alq+fHmaX7dhH4UKFZIknTx5UgUKFLAa2uvq6qqwsDCNHTtWVatWdVSIgKE1btxYTzzxhN588015e3tr7969Cg0NVfv27ZWamqrvvvvO0SEChnKvUVVxcXF69tln1bRpU6sf5niWLRyNJBXIJjZt2qS9e/fqypUrqlSpkurXr+/okCDpmWee0aJFi5QrVy5Hh4J7OHz4sNatW6czZ84oNTXVat+oUaMcFBUk6ffff1e9evVUqVIlrV27Vs2bN9f+/ft14cIFbd68WUWKFHF0iIChODk53XPl6zupgMlksqyOzaJXcDSSVAAA7mHmzJl65ZVXlCdPHgUGBlr9cWcymZhTZwCJiYmaNm2a9uzZY/kBrnfv3goKCnJ0aNleSkqKJk2apG+++UaxsbFpnvPMgkr2t2HDBpuPrV27diZGAjwcSSqQDaxZs0Zr1qy5ZzXo888/d1BU2deAAQP05ptvytPTUwMGDHjgsSxg4TihoaF69dVXNXToUEeHgrskJyfrueee04wZMxQeHu7ocHAPo0aN0qeffqqBAwdq5MiRGjFihE6cOKElS5Zo1KhRev311x0dIgADY+EkIIsbM2aMxo4dq8qVKysoKIiH3BvArl27lJycbPn3/dBXjnXx4kW98MILjg4D95AjRw7t3bvX0WHgAebNm6eZM2eqSZMmio6OVocOHVSkSBGVK1dOW7duJUl1sFmzZsnLyyvNf+O+/fZbXbt2TZGRkQ6KDLiNSiqQxQUFBWncuHHq2LGjo0MBHivdunVTlSpV1KtXL0eHgnvo37+/3NzcrBZ7gXF4enrq4MGDCgkJUVBQkJYtW6ZKlSrp2LFjqlixohITEx0dYrZWrFgxffzxx3rmmWes2jds2KAePXro0KFDDooMuI1KKpDF3bx5U9WrV3d0GLiPL7/8Uq1atbrnozTgWEWLFlVUVJS2bt2qsmXLKkeOHFb7qQQ51q1bt/T555/rp59+0hNPPJFmpXKGyjtWgQIFFBcXp5CQEBUpUkQ//vijKlWqpO3bt/OIIAOIjY21rDL/b6GhoYqNjXVARIA1KqlAFjd06FB5eXkpKirK0aHgHvLmzavr16+refPmeumll9SwYUOrx9HAce71B9wdJpNJx44ds2M0uNvdFaB/M5lMWrt2rR2jwd2GDRsmHx8fvfHGG/r666/10ksvKSwsTLGxserfvz8VcAcLCQnRtGnT1Lx5c6v277//Xr1799bff//toMiA20hSgSzo34vxpKamas6cOSpXrpzKlSuXphpEtcGxbt26pZUrV+qrr77S999/r5w5c+qFF15QREQEFXAAWcbWrVv1yy+/KDw8XM2aNXN0ONne0KFD9fXXX2vWrFmqVauWpNtDfbt27ao2bdpo/PjxDo4Q2R1JKpAFPajCcLd169ZlYiRIj2vXrmnx4sWaP3++fvrpJxUoUEBHjx51dFgAgCzm5s2b6tixo7799lu5uNye/ZeamqpOnTppxowZcnV1dXCEyO5IUgHAQM6dO6cFCxZoxowZOnjwIA9Ud6D7PR7IZDLJ3d1dRYsW1fPPP6/cuXPbOTJIt3+Me9AK2Az3dayYmBgFBASoa9euVu2ff/65zp49y6OdDOLPP//Unj175OHhobJlyyo0NNTRIQGSSFKBLK9r166aMmWKvL29rdqvXr2q1157jeekGsCdCuq8efO0Zs0aFSxYUB06dFBERIRKlCjh6PCyrWeeeUY7d+5USkqKihcvLun2H3TOzs4qUaKEDh06JJPJpE2bNqlUqVIOjjb76d+/v9Xr5ORk7d69W7///rsiIyM1ZcoUB0UGSQoLC9P8+fPTTFvYtm2b2rdvr+PHjzsoMgCPA5JUIItzdnZWXFyc8uXLZ9V+7tw5BQYG6tatWw6KDJLUvn17LV26VDlz5lTbtm0VERGhatWqOTosSJo8ebJ+/vlnzZo1Sz4+PpKkxMREde/eXTVr1tTLL7+sF198UdevX9eqVascHC3uiI6O1pUrV5hT52Du7u46ePBgmgXIjh07plKlSunGjRsOigx3/P333/rhhx8UGxurmzdvWu1jvQo4Go+gAbKoS5cuyWw2y2w26/Lly3J3d7fsS0lJ0fLly9MkrrA/Z2dnffPNN6zqa0Dvv/++Vq9ebUlQJcnX11fR0dFq0KCB+vbtq1GjRqlBgwYOjBJ3e+mll/Tkk0+SpDpYwYIFtXnz5jRJ6ubNmxUcHOygqHDHmjVr1Lx5cxUuXFh//PGHypQpoxMnTshsNqtSpUqODg8gSQWyKj8/P5lMJplMJhUrVizNfpPJpDFjxjggMvzbvHnzHB0C7iMxMVFnzpxJM5T37NmzunTpkqTb37O7KxBwrC1btlj9KAfHePnll9WvXz8lJyerbt26km4nRkOGDNHAgQMdHB2GDx+uQYMGacyYMfL29tbChQuVL18+RURE6LnnnnN0eABJKpBVrVu3TmazWXXr1tXChQutFndxdXVVaGgov2Y7yNSpU9WjRw+5u7tr6tSpDzz29ddft1NUuNvzzz+vrl27asKECapSpYokafv27Ro0aJBatGghSfr111/v+SMQMl+rVq2sXpvNZsXFxWnHjh08F9oABg8erPPnz+vVV1/9f+3deXjNd97/8deJLLITkthCkDRCSYO7tQxiuclYQqI3V5dJ1DaoPelo7ymDVpmZWqpF556OkFbbuzeamlKiKdLGMjSL9q7aIoKRWtrQiBLJ+f3h59xOo5jSfM7h+bgu15Xv5/N1zutwac/7+9lsD3Jq1qypadOm6bnnnjOcDvv27dM777wjSXJ1ddXFixfl4+Oj2bNna+DAgRo7dqzhhLjfsSYVuMcdPXpUfn5+Wr58ufbt2ydJatWqlYYPHy5/f3/D6e5PTZs21Z49e1SnTp0qU+GuZ7FYVFBQUI3JcL3S0lJNmTJFaWlptrXbrq6uSkpK0sKFC+Xt7a28vDxJ0kMPPWQu6H1q2LBhdrv7uri4KDAwUD169GAKtgMpLS3Vvn375OnpqfDwcHl4eNj1Hz9+XA0aNJCLi4uhhPenevXqacuWLYqMjFTLli01b948xcXFKT8/X507d1ZpaanpiLjPUaQC97g9e/YoNjZWNWvW1MMPPyzp6mjQxYsXlZGRwdoT4BZKS0ttDwuaNWsmHx8fw4mAe4efn5/y8vLUrFkz01HuK4MGDVK/fv00atQopaSk6IMPPtCwYcO0du1a1a5dWx9//LHpiLjPUaQC97guXbooLCxMf/3rX20Hdl+5ckUjR45UQUGBsrKyDCe8v82ePVspKSny8vKya7948aL+/Oc/a8aMGYaSAY6tWbNm2r17t+rUqWPXXlJSorZt2zILwUn4+voqPz+fIrWaFRQUqLS0VG3atNGFCxeUnJys7du3Kzw8XAsWLOC8VBhHkQrc4zw9PZWbm1vlvM2vvvpK7du3V1lZmaFkkH76iKCzZ88qKChIFRUVhpLdnxISErRixQr5+flVWfP4Y2vXrq2mVLgRFxcXFRcXV/m3880336hx48a6dOmSoWT4V1CkVr+KigplZ2erTZs2qlWrluk4wA2xcRJwj/Pz81NRUVGVIvXYsWPy9fU1lArXWK1Wu3V11+Tn59ttdoXq4e/vb/v7YM22Y1q3bp3t502bNtn9PVVUVCgzM1OhoaEGkgHOoUaNGurdu7f27dtHkQqHRZEK3OOGDh2qESNG6OWXX1anTp0kXT2n7plnntFjjz1mON39q3bt2nZHBF1fqFZUVKi0tFRjxowxmPD+lJqaavt56dKlqqyslLe3tySpsLBQ6enpioyMVJ8+fUxFvO9d21nZYrEoKSnJrs/NzU2hoaGaP3++gWSA83jwwQdVUFBw0837AJMoUoF73MsvvyyLxaLExETbDqVubm4aO3as5s2bZzjd/WvRokWyWq0aPny4Zs2aZTca5O7urtDQUHXs2NFgQgwcOFAJCQkaM2aMSkpK1KFDB7m5uenMmTNasGABRzQYUllZKenqLtm7d+9W3bp1DSfCnbjRTBL88l588UWlpKTohRdeULt27WwP467x8/MzlAy4ijWpwH2irKxMhw8fliQ1b968ykY9MGPbtm3q3LmzbVMrOI66detq27ZtatWqld544w29+uqrys3N1Zo1azRjxgzbkU4Afj7WpJpx/ZE/1z8ouLYEhf0QYBrfioD7hJeXl1q3bm06Bn7kwoULyszMrDJ9dNOmTaqsrNSvf/1rQ8lQVlZmW7edkZGhhIQEubi4qEOHDjp69KjhdJg4caLCwsI0ceJEu/bXXntNhw4d0qJFi8wEg6SrU+eHDh16yweiX331lRo0aFBNqXBNamqqQkJCVKNGDbv2yspKFRUVGUoF/B9GUgHAoDZt2mjevHnq27evXfvGjRs1bdo05efnG0qGNm3aaOTIkYqPj9eDDz6ojRs3qmPHjvr888/Vr18/FRcXm454X2vYsKHWrVundu3a2bXn5OQoLi5Ox48fN5QMkhQcHKyLFy/qP/7jPzRixAjbnghwDOwsD0fncutbAAC/lIMHD6ply5ZV2lu0aKFDhw4ZSIRrZsyYoZSUFIWGhuqRRx6xrRHOyMhQdHS04XQ4e/bsDXdg9vPz05kzZwwkwvVOnDihlStX6syZM4qJiVGLFi30xz/+kYc7DuKndpYvLS1VzZo1DSQC7DHdFwAM8vf3V0FBQZUjMw4dOlRlIwtUr0cffVS/+tWvdPLkSUVFRdnae/bsqfj4eIPJIElhYWHauHGjxo8fb9f+0Ucfsb7RAbi6uio+Pl7x8fH65ptv9NZbb2nlypWaPn26YmNjNWLECA0YMMBubSR+eVOnTpV0dR3q9OnT7aZjV1RUaNeuXXrooYcMpQP+D0UqABg0cOBATZ48We+//76aN28u6WqBmpycrLi4OMPpUK9ePdWrV8+u7eGHHzaUBtebOnWqxo8fr9OnT6tHjx6SpMzMTM2fP5/1qA4mODhYv/rVr3TgwAEdOHBAX3zxhZKSklS7dm2lpqYqJibGdMT7Rm5urqSrI6lffPGF3N3dbX3u7u6KiopSSkqKqXiADWtSAcCgc+fOKTY2Vnv27FGjRo0kScePH1eXLl20du1aDloHbmLZsmWaM2eO/vnPf0qSQkNDNXPmTCUmJhpOBkn65ptv9Oabbyo1NVUFBQUaNGiQRowYoV69eunChQuaPXu23n33XTYiM+Cpp57SK6+8wlEzcFgUqQBgmNVq1ebNm5Wfny9PT0+1adNGXbt2NR0LcBqnT5+Wp6enfHx8TEfB/zdgwABt2rRJDzzwgEaOHKnExEQFBATY3XPq1CnVq1fPdvYtAFxDkQoAAIC7asSIERo5cqRtw7EbsVqtKioqUpMmTaoxGQBnQJEKAIZduHBB27ZtU1FRkS5fvmzX9+MzIAFc1bRp0xvuTnpNQUFBNaYBANxNbJwEAAbl5uaqb9++Kisr04ULFxQQEKAzZ87Iy8tLQUFBFKnAT5g8ebLddXl5uXJzc7Vx40Y988wzZkLBDg/gAPxcjKQCgEExMTF64IEH9Prrr8vf31/5+flyc3PTk08+qUmTJikhIcF0RMCpLFmyRHv27FFqaqrpKPe1Wz2AY6QbwM1QpAKAQbVq1dKuXbsUERGhWrVqaceOHYqMjNSuXbuUlJSkr7/+2nREwKkUFBTooYce0vnz501Hua/xAA7AneAEZQAwyM3NzXaYfVBQkIqKiiRJ/v7+OnbsmMlogFNavXp1lV1kUf3y8vKUnJwsFxcX1ahRQ5cuXVJISIj+9Kc/6T//8z9NxwPg4FiTCgAGRUdHa/fu3QoPD1e3bt00Y8YMnTlzRm+++aYefPBB0/EAhxUdHW23cZLValVxcbFOnz6tpUuXGkwG6cYP4CIjI3kAB+C2UKQCgEEvvfSSvv/+e0nSnDlzlJiYqLFjxyo8PFzLly83nA5wXIMGDbK7dnFxUWBgoGJiYtSiRQszoWDDAzgAd4I1qQDgBLKzs9W+fXt5eHiYjgIYd+XKFb399tvq06ePgoODTcfBDezZs0fff/+9unfvrlOnTikxMVHbt2+3PYCLiooyHRGAA6NIBQAn4Ofnp7y8PDVr1sx0FMAheHl5ad++fWrSpInpKACAu4yNkwDACfA8EbD38MMPKzc313QM/ITly5fryJEjpmMAcFKsSQUAAE5n3LhxSk5O1vHjx9WuXTt5e3vb9bdp08ZQMkjS3LlzNWrUKDVs2FDdunVTt27dFBMTo7CwMNPRADgBpvsCgBPw9fVVfn4+032B/+/azrHXs1gsslqtslgsqqioMJAK1ztx4oS2bt2qrKwsbdu2TQcPHlT9+vUVExOjt956y3Q8AA6MIhUAnABFKmDv6NGjN+1nrarjKCsr06effqp33nlHq1atktVq1ZUrV0zHAuDAmO4LAE7g+vMgAVwtUjt16iRXV/uvMleuXNH27dspUg3LyMjQ1q1btXXrVuXm5ioyMlLdunXT6tWr1bVrV9PxADg4RlIBwAkwkgrYq1Gjhk6ePKmgoCC79rNnzyooKIjpvoZdO7c2OTlZo0ePVq1atUxHAuBEKFIBAIDTcXFx0TfffKPAwEC79gMHDqh9+/Y6f/68oWSQpEWLFikrK0tZWVny8PCwbZwUExOjBx54wHQ8AA6OIhUAqll0dPRtT9/Nycn5hdMAziUhIUGS9MEHHyg2NlYeHh62voqKCu3du1cRERHauHGjqYj4kS+++ELbtm3TJ598og8//FBBQUE6fvy46VgAHBhrUgGgmg0aNMh0BMBp+fv7S7p6drCvr688PT1tfe7u7urQoYNGjRplKh6uY7ValZubq61bt2rLli367LPPVFlZWWX0GwB+jJFUAADgdGbNmqWUlJQq56PCMQwYMEDZ2dk6f/68oqKiFBMTo27duqlr166sTwVwSxSpAADA6Vy8eFFWq1VeXl6Sru72+/7776tly5bq3bu34XR45pln1K1bN3Xp0sU2+g0At4siFQAMqqio0MKFC/Xee++pqKhIly9ftuv/9ttvDSUDHFvv3r2VkJCgMWPGqKSkRBEREXJ3d9eZM2e0YMECjR071nREAMDP5GI6AADcz2bNmqUFCxZo6NChOnfunKZOnaqEhAS5uLho5syZpuMBDisnJ0ddunSRJK1evVr16tXT0aNHlZaWpsWLFxtOB0nKzMxU//791bx5czVv3lz9+/fXxx9/bDoWACdAkQoABq1atUp//etflZycLFdXVz322GN64403NGPGDO3cudN0PMBhlZWVydfXV5KUkZFhe7jToUMHHT161HA6LF26VLGxsfL19dWkSZM0adIk+fn5qW/fvlqyZInpeAAcHNN9AcAgb29v7du3T40bN1b9+vW1fv16tW3bVgUFBYqOjta5c+dMRwQcUps2bTRy5EjFx8frwQcf1MaNG9WxY0d9/vnn6tevn4qLi01HvK81atRIzz77rMaPH2/XvmTJEr300ks6ceKEoWQAnAEjqQBgUKNGjXTy5ElJUvPmzZWRkSFJ2r17t935jwDszZgxQykpKQoNDdUjjzyijh07Sro6qhodHW04HUpKShQbG1ulvXfv3jx8A3BLFKkAYFB8fLwyMzMlSRMmTND06dMVHh6uxMREDR8+3HA6wHE9+uijKioq0p49e7Rx40Zbe8+ePbVw4ULb9fHjx1VZWWki4n0tLi5O77//fpX2Dz74QP379zeQCIAzYbovADiQnTt3avv27QoPD9eAAQNMxwGcnp+fn/Ly8tSsWTPTUe55129Ydf78eb388svq3LmzbZR7586dys7OVnJysp5//nlTMQE4AYpUAABwz/L19VV+fj5FajVo2rTpbd1nsVhUUFDwC6cB4MxcTQcAgPvZ3LlzFRwcXGVq7/Lly3X69GlNmzbNUDIA+NccOXLEdAQA9wjWpAKAQX/5y1/UokWL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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# 11. Function to make predictions on new data\n", "def predict_category(text, model, vectorizer, label_encoder):\n", " # Preprocess the text\n", " processed_text = preprocess_text(text)\n", "\n", " # Vectorize\n", " text_tfidf = vectorizer.transform([processed_text]).toarray()\n", "\n", " # Predict\n", " prediction = model.predict(text_tfidf)\n", " predicted_class_index = np.argmax(prediction, axis=1)[0]\n", " predicted_class = label_encoder.classes_[predicted_class_index]\n", " confidence = prediction[0][predicted_class_index]\n", "\n", " return predicted_class, confidence" ], "metadata": { "id": "35xWxMzaPqGA" }, "execution_count": 37, "outputs": [] }, { "cell_type": "code", "source": [ "# 12. Test on a few examples\n", "test_examples = [\n", " \"Northbound [F] trains are running with delays after a train with mechanical problems at 34 St.\",\n", " \"Southbound [A] trains are running with delays after NYPD responded to an unauthorized person on the tracks near Hoyt-Schermerhorn Sts.\",\n", " \"[2][3] trains are running with delays after NYPD responded to an incident at Chambers St.\",\n", " \"Southbound [A][C] trains are running with delays in Manhattan while we addressed a switch problem at Chambers St.\"\n", "]\n", "\n", "print(\"\\nPredictions on test examples:\")\n", "for example in test_examples:\n", " category, confidence = predict_category(example, model, vectorizer, label_encoder)\n", " print(f\"Text: {example}\")\n", " print(f\"Predicted category: {category}\")\n", " print(f\"Confidence: {confidence:.4f}\\n\")\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "mekyjuGVPsCI", "outputId": "fcba0174-ad34-41df-d3f5-770dd5a6dde1" }, "execution_count": 38, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "Predictions on test examples:\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 39ms/step\n", "Text: Northbound [F] trains are running with delays after a train with mechanical problems at 34 St.\n", "Predicted category: subway_cars\n", "Confidence: 1.0000\n", "\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 38ms/step\n", "Text: Southbound [A] trains are running with delays after NYPD responded to an unauthorized person on the tracks near Hoyt-Schermerhorn Sts.\n", "Predicted category: police_medical_activity\n", "Confidence: 1.0000\n", "\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 38ms/step\n", "Text: [2][3] trains are running with delays after NYPD responded to an incident at Chambers St.\n", "Predicted category: police_medical_activity\n", "Confidence: 0.9959\n", "\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 37ms/step\n", "Text: Southbound [A][C] trains are running with delays in Manhattan while we addressed a switch problem at Chambers St.\n", "Predicted category: tracks\n", "Confidence: 0.9987\n", "\n" ] } ] }, { "cell_type": "code", "source": [ "# 13. Save the model and required components for later use\n", "model.save(\"subway_alert_classifier_model.keras\")\n", "\n", "# Save vectorizer and label encoder for later use\n", "import pickle\n", "with open('tfidf_vectorizer.pkl', 'wb') as f:\n", " pickle.dump(vectorizer, f)\n", "\n", "with open('label_encoder.pkl', 'wb') as f:\n", " pickle.dump(label_encoder, f)\n", "\n", "print(\"Model and components saved successfully!\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "75vzB87aPwdw", "outputId": "2561ec27-f7a6-4ef5-ba6a-99118f4febf1" }, "execution_count": 39, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model and components saved successfully!\n" ] } ] } ] }