{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "e4fc6dc9-8a30-4e4d-b419-2f2c10f5e5c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "from torch.autograd import Variable\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import train_test_split\n",
    "from math import sqrt\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "404d50a7-515b-4f2a-9ffc-fdeae6213bc9",
   "metadata": {},
   "source": [
    "# Load Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "aefba061-51e3-4c20-b7fe-da084147fc39",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Prepare the dataset for training\n",
    "def sliding_windows(data, seq_length):\n",
    "    x = []\n",
    "    y = []\n",
    "\n",
    "    for i in range(len(data) - seq_length - 1):\n",
    "        _x = data[i:(i+seq_length)]\n",
    "        _y = data[i+seq_length]\n",
    "        x.append(_x)\n",
    "        y.append(_y)\n",
    "\n",
    "    return np.array(x), np.array(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2cf0f59a-dda4-4ab1-a37f-5b431790e5c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the dataset\n",
    "data = pd.read_csv('data/task4/Alcohol_Sales.csv')\n",
    "\n",
    "# Preprocess the dataset\n",
    "data = data.set_index('DATE')\n",
    "price_data = data['S4248SM144NCEN'].values.astype(float)\n",
    "\n",
    "scaler = MinMaxScaler(feature_range=(-1, 1))\n",
    "price_data_normalized = scaler.fit_transform(price_data.reshape(-1, 1))\n",
    "\n",
    "seq_length = 4\n",
    "x, y = sliding_windows(price_data_normalized, seq_length)\n",
    "\n",
    "train_size = int(len(y) * 0.67)\n",
    "test_size = len(y) - train_size\n",
    "\n",
    "dataX = Variable(torch.Tensor(np.array(x)))\n",
    "dataY = Variable(torch.Tensor(np.array(y)))\n",
    "\n",
    "trainX = Variable(torch.Tensor(np.array(x[0:train_size])))\n",
    "trainY = Variable(torch.Tensor(np.array(y[0:train_size])))\n",
    "\n",
    "testX = Variable(torch.Tensor(np.array(x[train_size:len(x)])))\n",
    "testY = Variable(torch.Tensor(np.array(y[train_size:len(y)])))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93517e20-34c1-4afc-8aa0-e2ffbd62814e",
   "metadata": {},
   "source": [
    "# Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "caac9364-e781-471c-9200-e9e3b6d2cf9b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the LSTM model\n",
    "class LSTM(nn.Module):\n",
    "    def __init__(self, num_classes, input_size, hidden_size, num_layers):\n",
    "        super(LSTM, self).__init__()\n",
    "        self.num_classes = num_classes\n",
    "        self.num_layers = num_layers\n",
    "        self.input_size = input_size\n",
    "        self.hidden_size = hidden_size\n",
    "        self.seq_length = seq_length\n",
    "        \n",
    "        self.lstm = nn.LSTM(input_size=input_size, hidden_size=hidden_size,\n",
    "                            num_layers=num_layers, batch_first=True)\n",
    "        \n",
    "        self.fc = nn.Linear(hidden_size, num_classes)\n",
    "\n",
    "    def forward(self, x):\n",
    "        h_0 = Variable(torch.zeros(\n",
    "            self.num_layers, x.size(0), self.hidden_size))\n",
    "        \n",
    "        c_0 = Variable(torch.zeros(\n",
    "            self.num_layers, x.size(0), self.hidden_size))\n",
    "        \n",
    "        # Propagate input through LSTM\n",
    "        ula, (h_out, _) = self.lstm(x, (h_0, c_0))\n",
    "        \n",
    "        h_out = h_out.view(-1, self.hidden_size)\n",
    "        \n",
    "        out = self.fc(h_out)\n",
    "        \n",
    "        return out"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03d74d7a-85f6-4874-b678-0e7c55dcce67",
   "metadata": {},
   "source": [
    "# Train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c4c79551-776a-46d4-b39d-b4040f9b3d71",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch [0/2000], Loss: 1.5125, Train RMSE: 7669.8892, Test RMSE: 3028.4215\n",
      "Epoch [100/2000], Loss: 0.0476, Train RMSE: 1360.8501, Test RMSE: 3009.7068\n",
      "Epoch [200/2000], Loss: 0.0194, Train RMSE: 869.2399, Test RMSE: 1751.8025\n",
      "Epoch [300/2000], Loss: 0.0187, Train RMSE: 852.8468, Test RMSE: 1788.3575\n",
      "Epoch [400/2000], Loss: 0.0185, Train RMSE: 847.1131, Test RMSE: 1860.6466\n",
      "Epoch [500/2000], Loss: 0.0183, Train RMSE: 844.4152, Test RMSE: 1914.1556\n",
      "Epoch [600/2000], Loss: 0.0183, Train RMSE: 843.0519, Test RMSE: 1952.9542\n",
      "Epoch [700/2000], Loss: 0.0182, Train RMSE: 842.2725, Test RMSE: 1981.4301\n",
      "Epoch [800/2000], Loss: 0.0182, Train RMSE: 841.7506, Test RMSE: 2002.9019\n",
      "Epoch [900/2000], Loss: 0.0182, Train RMSE: 841.3397, Test RMSE: 2019.7250\n",
      "Epoch [1000/2000], Loss: 0.0182, Train RMSE: 840.9711, Test RMSE: 2033.5698\n",
      "Epoch [1100/2000], Loss: 0.0182, Train RMSE: 840.6102, Test RMSE: 2045.6391\n",
      "Epoch [1200/2000], Loss: 0.0182, Train RMSE: 840.2384, Test RMSE: 2056.8115\n",
      "Epoch [1300/2000], Loss: 0.0181, Train RMSE: 839.8448, Test RMSE: 2067.7367\n",
      "Epoch [1400/2000], Loss: 0.0181, Train RMSE: 839.4222, Test RMSE: 2078.9020\n",
      "Epoch [1500/2000], Loss: 0.0181, Train RMSE: 838.9659, Test RMSE: 2090.6853\n",
      "Epoch [1600/2000], Loss: 0.0181, Train RMSE: 838.4735, Test RMSE: 2103.3946\n",
      "Epoch [1700/2000], Loss: 0.0181, Train RMSE: 837.9444, Test RMSE: 2117.2950\n",
      "Epoch [1800/2000], Loss: 0.0180, Train RMSE: 837.3796, Test RMSE: 2132.6132\n",
      "Epoch [1900/2000], Loss: 0.0180, Train RMSE: 836.7808, Test RMSE: 2149.5211\n"
     ]
    }
   ],
   "source": [
    "# Train the model\n",
    "num_epochs = 2000\n",
    "learning_rate = 0.01\n",
    "\n",
    "input_size = 1\n",
    "hidden_size = 2\n",
    "num_layers = 1\n",
    "\n",
    "num_classes = 1\n",
    "\n",
    "lstm = LSTM(num_classes, input_size, hidden_size, num_layers)\n",
    "\n",
    "criterion = torch.nn.MSELoss()    # mean-squared error for regression\n",
    "optimizer = torch.optim.Adam(lstm.parameters(), lr=learning_rate)\n",
    "\n",
    "train_losses = []\n",
    "test_RMSEs = []\n",
    "\n",
    "# Train the model\n",
    "for epoch in range(num_epochs):\n",
    "    lstm.train()  # Set the model to training mode\n",
    "    outputs = lstm(trainX)\n",
    "    optimizer.zero_grad()\n",
    "    \n",
    "    # Obtain the loss function\n",
    "    loss = criterion(outputs, trainY)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    \n",
    "    # Append training loss\n",
    "    train_losses.append(loss.item())\n",
    "    \n",
    "    # Compute train RMSE\n",
    "    train_predict = outputs.data.numpy()\n",
    "    trainY_actual = trainY.data.numpy()\n",
    "    train_predict = scaler.inverse_transform(train_predict)\n",
    "    trainY_actual = scaler.inverse_transform(trainY_actual)\n",
    "    train_rmse = sqrt(mean_squared_error(trainY_actual, train_predict))\n",
    "    \n",
    "    # Evaluate on test data to compute test RMSE\n",
    "    lstm.eval()  # Set the model to evaluation mode\n",
    "    test_predict = lstm(testX)\n",
    "    test_predict = test_predict.data.numpy()\n",
    "    testY_actual = testY.data.numpy()\n",
    "    test_predict = scaler.inverse_transform(test_predict)\n",
    "    testY_actual = scaler.inverse_transform(testY_actual)\n",
    "    test_rmse = sqrt(mean_squared_error(testY_actual, test_predict))\n",
    "    \n",
    "    # Append test RMSE\n",
    "    test_RMSEs.append(test_rmse)\n",
    "    \n",
    "    if epoch % 100 == 0:\n",
    "        print(f'Epoch [{epoch}/{num_epochs}], Loss: {loss.item():.4f}, Train RMSE: {train_rmse:.4f}, Test RMSE: {test_rmse:.4f}')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "14ce6279-3c1f-411b-8992-94ff9df04e00",
   "metadata": {},
   "source": [
    "# Result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "65a205f0-2812-42e0-9087-02cd55a24536",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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efPEli1bxLp160RGRoZYsWJFLC4pyF133SUmTpwYNPaamhr59WuuuUYMGzZMrF+/Xnz77bfiZz/7mZgzZ478+kC+NiGEqK6uDrq2Dz/8UAAQGzZsEELE32e3bt06cdttt4k33nhDABBvvvlm0OurV68WycnJ4q233hLbtm0Tv/zlL8WIESNEe3u7fMz8+fPF1KlTxebNm8Vnn30mRo8eLX7961/Lrzc1NYns7GyxePFisWPHDvHSSy+JhIQE8eSTT8b8GhsbG8W8efPEK6+8Inbv3i02bdokZs6cKY4++uigcxQVFYl77rkn6HMN/G82ltfY22d46aWXivnz5weNvb6+PuiYgfwZ9nZ9gddVUVEh1qxZIyRJEvv375ePGcifXyi/E5T4e/Onn34SRqNRLFu2TJSUlIjHHntMqNVq8f7770f9Ggc7BjsFzJw5UyxZskR+7HK5RF5enli1alUMRxWZ6upqAUB88skn8nMnnHCCuP7667t9z7p164RKpRKVlZXyc0888YRISkoSNpstmsPt1V133SWmTp3a5WuNjY1Cq9WK1157TX5u165dAoDYtGmTEGJgX1tXrr/+ejFq1CjhdruFEPH92XX8pel2u0VOTo544IEH5OcaGxuFXq8XL730khBCiJKSEgFAfPPNN/Ix7733npAkSZSVlQkhhHj88cdFampq0PUtX75cjBs3LspX1FlXwaCjr7/+WgAQpaWl8nNFRUXi4Ycf7vY9A+Uauwt2Z511VrfviafPMJTP76yzzhInn3xy0HPx8vkJ0fl3glJ/b95yyy1i4sSJQT/r/PPPF6eddlq0L2nQ41RsH9ntdnz33XeYN2+e/JxKpcK8efOwadOmGI4sMk1NTQCAtLS0oOdffPFFZGRkYNKkSVixYgXa2trk1zZt2oTJkycjOztbfu60005Dc3Mzdu7c2T8D78HevXuRl5eHkSNHYvHixTh06BAA4LvvvoPD4Qj67MaPH4/CwkL5sxvo1xbIbrfjhRdewBVXXAFJkuTn4/mzC3TgwAFUVlYGfV7JycmYNWtW0OeVkpKCGTNmyMfMmzcPKpUKX331lXzM3LlzodPp5GNOO+007NmzBw0NDf10NaFramqCJElISUkJen716tVIT0/HtGnT8MADDwRNcw30a9y4cSOysrIwbtw4XHvttairq5NfG0yfYVVVFdauXYvf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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting\n",
    "fig, ax1 = plt.subplots()\n",
    "\n",
    "color = 'tab:red'\n",
    "ax1.set_xlabel('Epoch')\n",
    "ax1.set_ylabel('Training Loss', color=color)\n",
    "ax1.plot(range(1, num_epochs+1), train_losses, color=color)\n",
    "ax1.tick_params(axis='y', labelcolor=color)\n",
    "\n",
    "ax2 = ax1.twinx()\n",
    "color = 'tab:blue'\n",
    "ax2.set_ylabel('Test RMSE', color=color)\n",
    "ax2.plot(range(1, num_epochs+1), test_RMSEs, color=color)\n",
    "ax2.tick_params(axis='y', labelcolor=color)\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3f36382c-e7ce-4c57-b974-bc6323628edc",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "prac",
   "language": "python",
   "name": "prac"
  },
  "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.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
