From 5cf0f6e478fb43cad88394e557d59fef4dfbd25b Mon Sep 17 00:00:00 2001
From: alolika bhowmik <152315710+alo7lika@users.noreply.github.com>
Date: Fri, 25 Oct 2024 17:07:04 +0530
Subject: [PATCH] Add files via upload
---
...Prediction Model using Deep Learning.ipynb | 568 ++++++++++++++++++
1 file changed, 568 insertions(+)
create mode 100644 Traffic Accident Prediction Model using Deep Learning /Model/Traffic Accident Prediction Model using Deep Learning.ipynb
diff --git a/Traffic Accident Prediction Model using Deep Learning /Model/Traffic Accident Prediction Model using Deep Learning.ipynb b/Traffic Accident Prediction Model using Deep Learning /Model/Traffic Accident Prediction Model using Deep Learning.ipynb
new file mode 100644
index 000000000..bfe7600f2
--- /dev/null
+++ b/Traffic Accident Prediction Model using Deep Learning /Model/Traffic Accident Prediction Model using Deep Learning.ipynb
@@ -0,0 +1,568 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "792c2779-a4f3-4f53-8d94-6ee1dcdf26d4",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Requirement already satisfied: pandas in c:\\users\\asus\\anaconda3\\lib\\site-packages (2.1.4)\n",
+ "Requirement already satisfied: numpy in c:\\users\\asus\\anaconda3\\lib\\site-packages (1.26.4)\n",
+ "Requirement already satisfied: tensorflow in c:\\users\\asus\\anaconda3\\lib\\site-packages (2.16.2)\n",
+ "Requirement already satisfied: scikit-learn in c:\\users\\asus\\anaconda3\\lib\\site-packages (1.2.2)\n",
+ "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from pandas) (2.8.2)\n",
+ "Requirement already satisfied: pytz>=2020.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from pandas) (2023.3.post1)\n",
+ "Requirement already satisfied: tzdata>=2022.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from pandas) (2023.3)\n",
+ "Requirement already satisfied: tensorflow-intel==2.16.2 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow) (2.16.2)\n",
+ "Requirement already satisfied: absl-py>=1.0.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (2.1.0)\n",
+ "Requirement already satisfied: astunparse>=1.6.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (1.6.3)\n",
+ "Requirement already satisfied: flatbuffers>=23.5.26 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (24.3.25)\n",
+ "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (0.6.0)\n",
+ "Requirement already satisfied: google-pasta>=0.1.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (0.2.0)\n",
+ "Requirement already satisfied: h5py>=3.10.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (3.11.0)\n",
+ "Requirement already satisfied: libclang>=13.0.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (18.1.1)\n",
+ "Requirement already satisfied: ml-dtypes~=0.3.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (0.3.2)\n",
+ "Requirement already satisfied: opt-einsum>=2.3.2 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (3.3.0)\n",
+ "Requirement already satisfied: packaging in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (23.1)\n",
+ "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (4.25.5)\n",
+ "Requirement already satisfied: requests<3,>=2.21.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (2.31.0)\n",
+ "Requirement already satisfied: setuptools in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (68.2.2)\n",
+ "Requirement already satisfied: six>=1.12.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (1.16.0)\n",
+ "Requirement already satisfied: termcolor>=1.1.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (2.4.0)\n",
+ "Requirement already satisfied: typing-extensions>=3.6.6 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (4.9.0)\n",
+ "Requirement already satisfied: wrapt>=1.11.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (1.14.1)\n",
+ "Requirement already satisfied: grpcio<2.0,>=1.24.3 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (1.66.2)\n",
+ "Requirement already satisfied: tensorboard<2.17,>=2.16 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (2.16.2)\n",
+ "Requirement already satisfied: keras>=3.0.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (3.4.1)\n",
+ "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.16.2->tensorflow) (0.31.0)\n",
+ "Requirement already satisfied: scipy>=1.3.2 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from scikit-learn) (1.11.4)\n",
+ "Requirement already satisfied: joblib>=1.1.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from scikit-learn) (1.2.0)\n",
+ "Requirement already satisfied: threadpoolctl>=2.0.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from scikit-learn) (2.2.0)\n",
+ "Requirement already satisfied: wheel<1.0,>=0.23.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.16.2->tensorflow) (0.41.2)\n",
+ "Requirement already satisfied: rich in c:\\users\\asus\\anaconda3\\lib\\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.2->tensorflow) (13.3.5)\n",
+ "Requirement already satisfied: namex in c:\\users\\asus\\anaconda3\\lib\\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.2->tensorflow) (0.0.8)\n",
+ "Requirement already satisfied: optree in c:\\users\\asus\\anaconda3\\lib\\site-packages (from keras>=3.0.0->tensorflow-intel==2.16.2->tensorflow) (0.11.0)\n",
+ "Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.2->tensorflow) (2.0.4)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.2->tensorflow) (3.4)\n",
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.2->tensorflow) (2.0.7)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.16.2->tensorflow) (2024.2.2)\n",
+ "Requirement already satisfied: markdown>=2.6.8 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.2->tensorflow) (3.4.1)\n",
+ "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.2->tensorflow) (0.7.2)\n",
+ "Requirement already satisfied: werkzeug>=1.0.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from tensorboard<2.17,>=2.16->tensorflow-intel==2.16.2->tensorflow) (2.2.3)\n",
+ "Requirement already satisfied: MarkupSafe>=2.1.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from werkzeug>=1.0.1->tensorboard<2.17,>=2.16->tensorflow-intel==2.16.2->tensorflow) (2.1.3)\n",
+ "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from rich->keras>=3.0.0->tensorflow-intel==2.16.2->tensorflow) (2.2.0)\n",
+ "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from rich->keras>=3.0.0->tensorflow-intel==2.16.2->tensorflow) (2.15.1)\n",
+ "Requirement already satisfied: mdurl~=0.1 in c:\\users\\asus\\anaconda3\\lib\\site-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->keras>=3.0.0->tensorflow-intel==2.16.2->tensorflow) (0.1.0)\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
+ "source": [
+ "pip install pandas numpy tensorflow scikit-learn"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "dc60e63c-dc53-4c40-a84f-01872990aa2a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " date traffic_volume weather_condition road_type accident_occurred\n",
+ "0 2023-01-01 1226 fog urban road 0\n",
+ "1 2023-01-02 1559 snow rural road 0\n",
+ "2 2023-01-03 960 snow highway 0\n",
+ "3 2023-01-04 1394 fog rural road 0\n",
+ "4 2023-01-05 1230 snow urban road 0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import random\n",
+ "from datetime import timedelta, datetime\n",
+ "\n",
+ "# Set random seed for reproducibility\n",
+ "np.random.seed(42)\n",
+ "\n",
+ "# Generate a sequence of dates (e.g., over one year)\n",
+ "def generate_dates(start_date, days):\n",
+ " return [start_date + timedelta(days=x) for x in range(days)]\n",
+ "\n",
+ "# Parameters\n",
+ "num_days = 365\n",
+ "traffic_volume_range = (100, 2000) # Simulate number of cars per day\n",
+ "weather_conditions = ['clear', 'rain', 'fog', 'snow']\n",
+ "road_types = ['highway', 'urban road', 'rural road']\n",
+ "\n",
+ "# Create base date\n",
+ "start_date = datetime(2023, 1, 1)\n",
+ "dates = generate_dates(start_date, num_days)\n",
+ "\n",
+ "# Generate data\n",
+ "data = {\n",
+ " 'date': dates,\n",
+ " 'traffic_volume': np.random.randint(traffic_volume_range[0], traffic_volume_range[1], num_days),\n",
+ " 'weather_condition': np.random.choice(weather_conditions, num_days),\n",
+ " 'road_type': np.random.choice(road_types, num_days)\n",
+ "}\n",
+ "\n",
+ "# Simulate accident occurrence based on certain conditions\n",
+ "# We'll make accidents more likely in bad weather and high traffic\n",
+ "def simulate_accident(row):\n",
+ " if row['weather_condition'] in ['rain', 'fog', 'snow'] and row['traffic_volume'] > 1500:\n",
+ " return 1 if random.random() < 0.3 else 0 # 30% chance of accident\n",
+ " elif row['traffic_volume'] > 1800:\n",
+ " return 1 if random.random() < 0.2 else 0 # 20% chance of accident\n",
+ " else:\n",
+ " return 1 if random.random() < 0.05 else 0 # 5% chance otherwise\n",
+ "\n",
+ "# Create DataFrame\n",
+ "df = pd.DataFrame(data)\n",
+ "\n",
+ "# Apply function to create accident occurrence\n",
+ "df['accident_occurred'] = df.apply(simulate_accident, axis=1)\n",
+ "\n",
+ "# Show a preview of the dataset\n",
+ "print(df.head())\n",
+ "\n",
+ "# Save dataset to CSV\n",
+ "df.to_csv('synthetic_traffic_accident_data.csv', index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "a17718b8-07fb-4ba9-892c-8fdd5aa7eb98",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " date traffic_volume weather_condition road_type accident_occurred\n",
+ "0 2023-01-01 1226 fog urban road 0\n",
+ "1 2023-01-02 1559 snow rural road 0\n",
+ "2 2023-01-03 960 snow highway 0\n",
+ "3 2023-01-04 1394 fog rural road 0\n",
+ "4 2023-01-05 1230 snow urban road 0\n",
+ "date 0\n",
+ "traffic_volume 0\n",
+ "weather_condition 0\n",
+ "road_type 0\n",
+ "accident_occurred 0\n",
+ "dtype: int64\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "from sklearn.preprocessing import LabelEncoder, MinMaxScaler\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Load dataset\n",
+ "df = pd.read_csv('synthetic_traffic_accident_data.csv')\n",
+ "\n",
+ "# Preview the data\n",
+ "print(df.head())\n",
+ "\n",
+ "# Check for missing values\n",
+ "print(df.isnull().sum())\n",
+ "\n",
+ "# Convert 'date' to datetime\n",
+ "df['date'] = pd.to_datetime(df['date'])\n",
+ "\n",
+ "# Convert categorical features into numerical form (Label Encoding)\n",
+ "label_encoder = LabelEncoder()\n",
+ "df['weather_condition'] = label_encoder.fit_transform(df['weather_condition'])\n",
+ "df['road_type'] = label_encoder.fit_transform(df['road_type'])\n",
+ "\n",
+ "# Normalize features (LSTM requires normalized data)\n",
+ "scaler = MinMaxScaler()\n",
+ "df[['traffic_volume', 'weather_condition', 'road_type']] = scaler.fit_transform(df[['traffic_volume', 'weather_condition', 'road_type']])\n",
+ "\n",
+ "# Target column ('accident_occurred') should remain binary"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "528ff056-8dfe-4495-bafb-0dde31228858",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Training data shape: (286, 7, 3)\n",
+ "Testing data shape: (72, 7, 3)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Create sequences and labels\n",
+ "def create_sequences(data, target, time_steps=7):\n",
+ " X, y = [], []\n",
+ " for i in range(len(data) - time_steps):\n",
+ " X.append(data[i:i + time_steps])\n",
+ " y.append(target[i + time_steps])\n",
+ " return np.array(X), np.array(y)\n",
+ "\n",
+ "# Define features and target\n",
+ "features = df[['traffic_volume', 'weather_condition', 'road_type']].values\n",
+ "target = df['accident_occurred'].values\n",
+ "\n",
+ "# Create sequences with a 7-day time window (adjust if needed)\n",
+ "time_steps = 7\n",
+ "X, y = create_sequences(features, target, time_steps)\n",
+ "\n",
+ "# Split into training and testing sets (80% train, 20% test)\n",
+ "train_size = int(0.8 * len(X))\n",
+ "X_train, X_test = X[:train_size], X[train_size:]\n",
+ "y_train, y_test = y[:train_size], y[train_size:]\n",
+ "\n",
+ "print(\"Training data shape: \", X_train.shape)\n",
+ "print(\"Testing data shape: \", X_test.shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "7ace3dcb-760d-4842-8b3e-e19e3b3e9a61",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\ASUS\\anaconda3\\Lib\\site-packages\\keras\\src\\layers\\rnn\\rnn.py:204: 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__(**kwargs)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Model: \"sequential\"\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[1mModel: \"sequential\"\u001b[0m\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
+ "┃ Layer (type) ┃ Output Shape ┃ Param # ┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
+ "│ lstm (LSTM) │ (None, 7, 50) │ 10,800 │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ dropout (Dropout) │ (None, 7, 50) │ 0 │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ lstm_1 (LSTM) │ (None, 50) │ 20,200 │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ dropout_1 (Dropout) │ (None, 50) │ 0 │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ dense (Dense) │ (None, 1) │ 51 │\n",
+ "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
+ "
\n"
+ ],
+ "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",
+ "│ lstm (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m50\u001b[0m) │ \u001b[38;5;34m10,800\u001b[0m │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ dropout (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m7\u001b[0m, \u001b[38;5;34m50\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ lstm_1 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m50\u001b[0m) │ \u001b[38;5;34m20,200\u001b[0m │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m50\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
+ "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
+ "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m51\u001b[0m │\n",
+ "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Total params: 31,051 (121.29 KB)\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m31,051\u001b[0m (121.29 KB)\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Trainable params: 31,051 (121.29 KB)\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m31,051\u001b[0m (121.29 KB)\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " Non-trainable params: 0 (0.00 B)\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import tensorflow as tf\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import LSTM, Dense, Dropout\n",
+ "\n",
+ "# Build the LSTM model\n",
+ "model = Sequential()\n",
+ "\n",
+ "# First LSTM layer with Dropout\n",
+ "model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2])))\n",
+ "model.add(Dropout(0.2))\n",
+ "\n",
+ "# Second LSTM layer with Dropout\n",
+ "model.add(LSTM(units=50, return_sequences=False))\n",
+ "model.add(Dropout(0.2))\n",
+ "\n",
+ "# Output layer (binary classification)\n",
+ "model.add(Dense(units=1, activation='sigmoid'))\n",
+ "\n",
+ "# Compile the model\n",
+ "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n",
+ "\n",
+ "# Model summary\n",
+ "model.summary()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "4cd279e5-b211-4122-ae08-ce4e5ca03a1e",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 120ms/step - accuracy: 0.7830 - loss: 0.6564 - val_accuracy: 0.9028 - val_loss: 0.5349\n",
+ "Epoch 2/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 19ms/step - accuracy: 0.8766 - loss: 0.5079 - val_accuracy: 0.9028 - val_loss: 0.3351\n",
+ "Epoch 3/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - accuracy: 0.8913 - loss: 0.3606 - val_accuracy: 0.9028 - val_loss: 0.3093\n",
+ "Epoch 4/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - accuracy: 0.8713 - loss: 0.4032 - val_accuracy: 0.9028 - val_loss: 0.3042\n",
+ "Epoch 5/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step - accuracy: 0.8804 - loss: 0.3650 - val_accuracy: 0.9028 - val_loss: 0.3110\n",
+ "Epoch 6/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 19ms/step - accuracy: 0.8901 - loss: 0.3489 - val_accuracy: 0.9028 - val_loss: 0.3063\n",
+ "Epoch 7/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - accuracy: 0.8715 - loss: 0.3820 - val_accuracy: 0.9028 - val_loss: 0.3045\n",
+ "Epoch 8/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 21ms/step - accuracy: 0.8997 - loss: 0.3275 - val_accuracy: 0.9028 - val_loss: 0.3032\n",
+ "Epoch 9/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - accuracy: 0.8932 - loss: 0.3445 - val_accuracy: 0.9028 - val_loss: 0.3116\n",
+ "Epoch 10/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 19ms/step - accuracy: 0.8953 - loss: 0.3413 - val_accuracy: 0.9028 - val_loss: 0.3069\n",
+ "Epoch 11/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 19ms/step - accuracy: 0.8875 - loss: 0.3472 - val_accuracy: 0.9028 - val_loss: 0.3051\n",
+ "Epoch 12/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - accuracy: 0.8968 - loss: 0.3320 - val_accuracy: 0.9028 - val_loss: 0.3051\n",
+ "Epoch 13/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - accuracy: 0.8698 - loss: 0.3828 - val_accuracy: 0.9028 - val_loss: 0.3073\n",
+ "Epoch 14/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 23ms/step - accuracy: 0.9009 - loss: 0.3268 - val_accuracy: 0.9028 - val_loss: 0.3061\n",
+ "Epoch 15/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 21ms/step - accuracy: 0.9051 - loss: 0.3089 - val_accuracy: 0.9028 - val_loss: 0.3062\n",
+ "Epoch 16/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 23ms/step - accuracy: 0.9134 - loss: 0.2947 - val_accuracy: 0.9028 - val_loss: 0.3058\n",
+ "Epoch 17/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 19ms/step - accuracy: 0.8769 - loss: 0.3587 - val_accuracy: 0.9028 - val_loss: 0.3111\n",
+ "Epoch 18/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 20ms/step - accuracy: 0.8957 - loss: 0.3315 - val_accuracy: 0.9028 - val_loss: 0.3050\n",
+ "Epoch 19/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step - accuracy: 0.8807 - loss: 0.3706 - val_accuracy: 0.9028 - val_loss: 0.3065\n",
+ "Epoch 20/20\n",
+ "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 17ms/step - accuracy: 0.8656 - loss: 0.3980 - val_accuracy: 0.9028 - val_loss: 0.3063\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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hCh3rMy8efPg6+uL7t27w8jICMOGDUNgYCAAQC6X1+qaABAWFgZLS0vp5ejoWMvWEBERUUOgtQDUrFkzyOXycj0zmZmZ5XpwypiYmCAyMhIPHjzA1atXkZaWBmdnZ5ibm6NZs2YAADs7O7WuCQChoaHIzs6WXteuXXvC1hEREZEu01oAUigUcHd3R2xsrMrx2NhYeHp6VnmukZERWrZsCblcjs2bN2Pw4MEwMHjUlB49epS75r59+6q8plKphIWFhcqLiIiIGi9DbX74zJkz4e/vDw8PD/To0QPr169HWloapkyZAuBRz8yNGzekvX4uXryIX375Bd26dcPdu3excuVKnDt3Dl9++aV0zRkzZuDFF1/E+++/j2HDhuF///sf9u/fL60SIyIiItJqAPLz80NWVhYWL16M9PR0uLq6Ys+ePXBycgIApKenq+wJVFJSghUrVuDChQswMjJC3759ERcXB2dnZ6mMp6cnNm/ejLlz52LevHl4+umnERMTg27dutV384iIiEhHaXUfIF3FfYCIiIgangaxDxARERGRtjAAERERkd5hACIiIiK9wwBEREREeocBiIiIiPQOAxARERHpHQYgIiIi0jsMQERERKR3GICIiIhI7zAAERERkd5hACIiIiK9wwBEREREeocBiIiIiPQOAxARERHpHQYgIiIi0jsMQERERKR3GICIiIhI7zAAERERkd5hACIiIiK9wwBEREREeocBiIiIiPQOAxARERHpHQYgIiIi0jsMQERERKR3GICIiIhI7zAAERERkd5hACIiIiK9wwBEREREeocBiIiIiPQOAxARERHpHQYgIiIi0jsMQERERKR3GICIiIhI7zAAERERkd5hACIiIiK9wwBEREREeocBiIiIiPQOAxARERHpHQYgIiIi0jsMQERERKR3GICIiIhI7zAAERERkd7RegBat24dXFxcYGxsDHd3dxw9erTK8tHR0XBzc4OpqSns7e0xfvx4ZGVlSe8XFRVh8eLFePrpp2FsbAw3Nzfs3bu3rptBREREDYhWA1BMTAxCQkIwZ84cJCYmwsvLC76+vkhLS6uw/LFjxzBu3DgEBQXh/Pnz2Lp1K+Lj4zFx4kSpzNy5c/F///d/WLNmDZKTkzFlyhS88sorSExMrK9mERERkY6TCSGEtj68W7dueOGFFxAeHi4d69ChA4YPH46w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wtzc/In3GXhcTk4OHB0dce3aNVhYWGj02rqGbW289Km9bGvjpU/t1Ze2CiGQm5sLBweHapfKsweoAgYGBmjZsmWdfoaFhUWj/kv4T2xr46VP7WVbGy99aq8+tLW6np8ynARNREREeocBiIiIiPQOA1A9UyqVWLBgAZRKpbarUufY1sZLn9rLtjZe+tRefWprTXESNBEREekd9gARERGR3mEAIiIiIr3DAERERER6hwGIiIiI9A4DUB1Yt24dXFxcYGxsDHd3dxw9erTK8keOHIG7uzuMjY3RunVrfPbZZ/VU09oLCwtDly5dYG5ujubNm2P48OG4cOFCleccPnwYMpms3Ou3336rp1rXzsKFC8vV2c7OrspzGuI9LePs7FzhfZo6dWqF5RvSff3pp58wZMgQODg4QCaTYdeuXSrvCyGwcOFCODg4wMTEBH369MH58+erve727dvRsWNHKJVKdOzYETt37qyjFqinqvYWFRXh3XffRadOnWBmZgYHBweMGzcON2/erPKaGzZsqPB+5+fn13FrqlbdvQ0MDCxX5+7du1d7XV28t9W1taL7I5PJ8OGHH1Z6TV29r3WJAUjDYmJiEBISgjlz5iAxMRFeXl7w9fVFWlpaheVTU1MxcOBAeHl5ITExEf/5z38QHByM7du313PN1XPkyBFMnToVJ06cQGxsLIqLi+Ht7Y379+9Xe+6FCxeQnp4uvdq2bVsPNX4yzz77rEqdz549W2nZhnpPy8THx6u0NTY2FgDwr3/9q8rzGsJ9vX//Ptzc3LB27doK3//ggw+wcuVKrF27FvHx8bCzs8PLL78sPR+wIj///DP8/Pzg7++PM2fOwN/fHyNHjsTJkyfrqhk1VlV7Hzx4gNOnT2PevHk4ffo0duzYgYsXL2Lo0KHVXtfCwkLlXqenp8PY2LgumlBj1d1bABgwYIBKnffs2VPlNXX13lbX1sfvTWRkJGQyGV577bUqr6uL97VOCdKorl27iilTpqgca9++vXjvvfcqLD979mzRvn17lWNvvPGG6N69e53VsS5kZmYKAOLIkSOVljl06JAAIO7evVt/FdOABQsWCDc3txqXbyz3tMyMGTPE008/LUpLSyt8v6HeVwBi586d0s+lpaXCzs5OLF++XDqWn58vLC0txWeffVbpdUaOHCkGDBigcszHx0eMGjVK43V+Eo+3tyK/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",
+ "text/plain": [
+ "