{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "authorship_tag": "ABX9TyOtPkqto1j0fYdUgt4DrT3X", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "source": [ "# LSTM WITH TENSORFLOW FOR AUSGAS" ], "metadata": { "id": "UHdN78XRcpJ8" } }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "eV_qqGQ6b_7m", "outputId": "c931f8db-04d2-45fa-88e6-b2271f8e1249" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Mounted at /content/drive\n" ] } ], "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')\n" ] }, { "cell_type": "code", "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "from sklearn.metrics import mean_squared_error\n", "import tensorflow as tf\n" ], "metadata": { "id": "wTntdzjAcG0N" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "aus_path = '/content/drive/MyDrive/Datasets/AusGas.csv'\n", "datasets_ts = pd.read_csv(aus_path)\n", "datasets_ts.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "MGrwFf_2cSPs", "outputId": "ac27e3b0-f97d-4ffa-c970-0ebf38a07d13" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Month GasProd\n", "0 Jan-1956 1709\n", "1 Feb-1956 1646\n", "2 Mar-1956 1794\n", "3 Apr-1956 1878\n", "4 May-1956 2173" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MonthGasProd
0Jan-19561709
1Feb-19561646
2Mar-19561794
3Apr-19561878
4May-19562173
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 3 } ] }, { "cell_type": "code", "source": [ "datasets_ts.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "592ZCzXmceYb", "outputId": "e67e6c9d-a675-46b9-ae25-b8aa979afccb" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(476, 2)" ] }, "metadata": {}, "execution_count": 4 } ] }, { "cell_type": "code", "source": [ "datasets_ts.plot()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "KBsaZjZFchxm", "outputId": "86167687-c460-4370-8a52-5a5479290d51" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "### PART 1: PREPROCESSING" ], "metadata": { "id": "S3XGxx2y6KEt" } }, { "cell_type": "code", "source": [ "dataset_train = datasets_ts.iloc[:450, :]\n", "dataset_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OzWRMi5WczSM", "outputId": "66f1217b-1c99-473f-db4c-5f5cfc27d447" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(450, 2)" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "code", "source": [ "#converting pandas type data to numpy type as numpy type required for tensorflow\n", "training_set = dataset_train.iloc[:,1].values\n", "training_set[:5]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "sFuKirradTH6", "outputId": "7ae916da-18ff-4552-9981-7951f31bffab" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([1709, 1646, 1794, 1878, 2173])" ] }, "metadata": {}, "execution_count": 10 } ] }, { "cell_type": "code", "source": [ "training_set.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "BEGTDsCydiNp", "outputId": "7792e375-7b5b-49f7-f946-ca4cc1cc22df" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(450,)" ] }, "metadata": {}, "execution_count": 12 } ] }, { "cell_type": "code", "source": [ "training_set[-1]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "azeeE4B0vppb", "outputId": "803b0e0e-d42e-441f-9acc-232e4bb101d7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([56977])" ] }, "metadata": {}, "execution_count": 56 } ] }, { "cell_type": "code", "source": [ "training_set = training_set.reshape(-1,1)\n", "from sklearn.preprocessing import MinMaxScaler\n", "mm = MinMaxScaler()\n", "trn_set_scl = mm.fit_transform(training_set)\n", "print(trn_set_scl[:5])\n", "print(type(trn_set_scl))\n", "print(trn_set_scl.ndim)\n", "print(trn_set_scl.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qGu9hgfReLE4", "outputId": "0b2e940d-1cfd-4fb8-ff76-5b84b3bdaa07" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[[0.00103697]\n", " [0. ]\n", " [0.00243605]\n", " [0.00381868]\n", " [0.00867433]]\n", "\n", "2\n", "(450, 1)\n" ] } ] }, { "cell_type": "code", "source": [ "timesteps = 10\n", "trn_size = dataset_train.shape[0]\n", "trn_size" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "VToLPCNnero3", "outputId": "57182750-541c-42d1-973b-7d93310a40f5" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "450" ] }, "metadata": {}, "execution_count": 19 } ] }, { "cell_type": "code", "source": [], "metadata": { "id": "Vdmuq1DxvoYk" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train = []\n", "y_train = []\n", "for i in range(timesteps, trn_size):\n", " X_train.append(trn_set_scl[i-timesteps:i, 0])\n", " y_train.append(trn_set_scl[i,0])\n", "X_train, y_train = np.array(X_train), np.array(y_train)" ], "metadata": { "id": "122g5-oEe_DG" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train[:10]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XET7n5-6fgfV", "outputId": "64b8e79a-fb20-49dd-d596-8eb7975595f3" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[0.00103697, 0. , 0.00243605, 0.00381868, 0.00867433,\n", " 0.01111038, 0.01352997, 0.01267406, 0.00885538, 0.00781842],\n", " [0. , 0.00243605, 0.00381868, 0.00867433, 0.01111038,\n", " 0.01352997, 0.01267406, 0.00885538, 0.00781842, 0.0052013 ],\n", " [0.00243605, 0.00381868, 0.00867433, 0.01111038, 0.01352997,\n", " 0.01267406, 0.00885538, 0.00781842, 0.0052013 , 0.00294631],\n", " [0.00381868, 0.00867433, 0.01111038, 0.01352997, 0.01267406,\n", " 0.00885538, 0.00781842, 0.0052013 , 0.00294631, 0.00172828],\n", " [0.00867433, 0.01111038, 0.01352997, 0.01267406, 0.00885538,\n", " 0.00781842, 0.0052013 , 0.00294631, 0.00172828, 0.00069131],\n", " [0.01111038, 0.01352997, 0.01267406, 0.00885538, 0.00781842,\n", " 0.0052013 , 0.00294631, 0.00172828, 0.00069131, 0.00450999],\n", " [0.01352997, 0.01267406, 0.00885538, 0.00781842, 0.0052013 ,\n", " 0.00294631, 0.00172828, 0.00069131, 0.00450999, 0.00485565],\n", " [0.01267406, 0.00885538, 0.00781842, 0.0052013 , 0.00294631,\n", " 0.00172828, 0.00069131, 0.00450999, 0.00485565, 0.01094578],\n", " [0.00885538, 0.00781842, 0.0052013 , 0.00294631, 0.00172828,\n", " 0.00069131, 0.00450999, 0.00485565, 0.01094578, 0.01041907],\n", " [0.00781842, 0.0052013 , 0.00294631, 0.00172828, 0.00069131,\n", " 0.00450999, 0.00485565, 0.01094578, 0.01041907, 0.01632814]])" ] }, "metadata": {}, "execution_count": 30 } ] }, { "cell_type": "code", "source": [ "print(X_train.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0MQ9zcXZfiIU", "outputId": "add55415-e9cf-4983-f6a1-322d00d8e21c" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(440, 10)\n" ] } ] }, { "cell_type": "code", "source": [ "X_train.shape[0]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "eTQEqNNYio-H", "outputId": "fcdeb5ea-fad9-418a-efa9-38560659266e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "440" ] }, "metadata": {}, "execution_count": 36 } ] }, { "cell_type": "code", "source": [ "X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))\n", "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6lI8oVt5e9L2", "outputId": "1d83438f-28fa-42bd-e5b2-6d7dd30d2732" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(440, 10, 1)" ] }, "metadata": {}, "execution_count": 40 } ] }, { "cell_type": "markdown", "source": [ "### PART 2: BUILD RNN - LSTM \n", "[Wiki Page for LSTM](https://en.wikipedia.org/wiki/Long_short-term_memory)" ], "metadata": { "id": "5-mWXBPWkZyi" } }, { "cell_type": "code", "source": [ "import tensorflow as tf\n", "from tensorflow import keras" ], "metadata": { "id": "ZFjIILc2ehCX" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "### INITIALIZE RNN\n", "tf.random.set_seed(seed = 2022)\n", "model = keras.Sequential([\n", " keras.layers.LSTM(units = 100, return_sequences=True, \n", " input_shape=(X_train.shape[1], X_train.shape[2])),\n", " keras.layers.LSTM(units = 70, return_sequences=True),\n", " keras.layers.LSTM(units = 50), \n", " keras.layers.Dense(1) \n", "])\n", "model.compile(optimizer= 'adam', loss = 'mean_squared_error')" ], "metadata": { "id": "AfM8jZRVkZcL" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.fit(X_train, y_train, epochs = 50, batch_size= 25)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Tr7Wek6aefMX", "outputId": "13e915cd-5175-4297-836d-5cda3fd9e3b6" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/50\n", "18/18 [==============================] - 6s 22ms/step - loss: 0.0495\n", "Epoch 2/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0110\n", "Epoch 3/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0089\n", "Epoch 4/50\n", "18/18 [==============================] - 0s 22ms/step - loss: 0.0074\n", "Epoch 5/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0073\n", "Epoch 6/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0072\n", "Epoch 7/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0073\n", "Epoch 8/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0075\n", "Epoch 9/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0072\n", "Epoch 10/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0077\n", "Epoch 11/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0087\n", "Epoch 12/50\n", "18/18 [==============================] - 0s 22ms/step - loss: 0.0080\n", "Epoch 13/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0074\n", "Epoch 14/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0072\n", "Epoch 15/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0071\n", "Epoch 16/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0076\n", "Epoch 17/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0074\n", "Epoch 18/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0085\n", "Epoch 19/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0073\n", "Epoch 20/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0072\n", "Epoch 21/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0071\n", "Epoch 22/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0076\n", "Epoch 23/50\n", "18/18 [==============================] - 0s 22ms/step - loss: 0.0073\n", "Epoch 24/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0068\n", "Epoch 25/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0070\n", "Epoch 26/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0066\n", "Epoch 27/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0067\n", "Epoch 28/50\n", "18/18 [==============================] - 0s 22ms/step - loss: 0.0069\n", "Epoch 29/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0069\n", "Epoch 30/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0065\n", "Epoch 31/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0067\n", "Epoch 32/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0064\n", "Epoch 33/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0058\n", "Epoch 34/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0064\n", "Epoch 35/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0056\n", "Epoch 36/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0051\n", "Epoch 37/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0040\n", "Epoch 38/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0033\n", "Epoch 39/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0031\n", "Epoch 40/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0023\n", "Epoch 41/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0018\n", "Epoch 42/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0019\n", "Epoch 43/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0022\n", "Epoch 44/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0017\n", "Epoch 45/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0019\n", "Epoch 46/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0015\n", "Epoch 47/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0013\n", "Epoch 48/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0013\n", "Epoch 49/50\n", "18/18 [==============================] - 0s 20ms/step - loss: 0.0014\n", "Epoch 50/50\n", "18/18 [==============================] - 0s 21ms/step - loss: 0.0013\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 47 } ] }, { "cell_type": "markdown", "source": [ "### Part 3: RESULTS" ], "metadata": { "id": "ArhXCMzIrrf-" } }, { "cell_type": "code", "source": [ "dataset_test = datasets_ts.iloc[450:,:]\n", "dataset_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "F1irLa9Fl-c2", "outputId": "a7114472-8603-4135-8a5f-20c916ec2350" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(26, 2)" ] }, "metadata": {}, "execution_count": 50 } ] }, { "cell_type": "code", "source": [ "test_set = dataset_test.iloc[:, 1].values\n", "test_set" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8HObKDjcsd_o", "outputId": "16a70f79-b470-4091-a3db-d74153724816" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([56807, 54634, 51367, 48073, 46251, 43736, 39975, 40478, 46895,\n", " 46147, 55011, 57799, 62450, 63896, 57784, 53231, 50354, 38410,\n", " 41600, 41471, 46287, 49013, 56624, 61739, 66600, 60054])" ] }, "metadata": {}, "execution_count": 51 } ] }, { "cell_type": "code", "source": [ "dataset_total = pd.concat((dataset_train['GasProd'], dataset_test['GasProd']), axis = 0)\n", "dataset_total" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SiIHBXVMsqgI", "outputId": "5a58f7ba-be6a-4695-982d-965a347609a0" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 1709\n", "1 1646\n", "2 1794\n", "3 1878\n", "4 2173\n", " ... \n", "471 49013\n", "472 56624\n", "473 61739\n", "474 66600\n", "475 60054\n", "Name: GasProd, Length: 476, dtype: int64" ] }, "metadata": {}, "execution_count": 52 } ] }, { "cell_type": "code", "source": [ "dataset_total.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "klHrbJAnxDB3", "outputId": "9de068b2-76bb-44b9-e584-329ed1e9913c" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(476,)" ] }, "metadata": {}, "execution_count": 61 } ] }, { "cell_type": "code", "source": [ "# we take 10 extra from train set to get them as part of test set\n", "inputs = dataset_total[len(dataset_total) - len(dataset_test) - timesteps:].values\n", "inputs = inputs.reshape(-1, 1)\n", "len(inputs)\n", "print(inputs.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XFX7k4BNsbbo", "outputId": "181a6099-72b9-4b6a-ce9f-22f87b78179c" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(36, 1)\n" ] } ] }, { "cell_type": "code", "source": [ "inputs_scl = mm.transform(inputs)\n", "X_test = []\n", "for i in range(timesteps, len(inputs_scl)):\n", " X_test.append(inputs_scl[i-timesteps:i,0])\n", "X_test = np.array(X_test)\n", "X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1],1))\n", "X_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0iZlqmkTv5DK", "outputId": "38865547-f2fc-42b1-b1b5-1953cdecd7e1" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(26, 10, 1)" ] }, "metadata": {}, "execution_count": 63 } ] }, { "cell_type": "code", "source": [ "len(X_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xnqIwDmAwifu", "outputId": "083cdd8a-4153-4476-9a41-1be0c79da9a1" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "26" ] }, "metadata": {}, "execution_count": 64 } ] }, { "cell_type": "code", "source": [ "predicted_values = model.predict(X_test)\n", "predicted_values" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vYz8-mHdw3Ju", "outputId": "d39cb30b-8201-45ae-b28a-432454067f04" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "1/1 [==============================] - 1s 1s/step\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "array([[0.9448642 ],\n", " [0.9393854 ],\n", " [0.84788895],\n", " [0.7300566 ],\n", " [0.6365161 ],\n", " [0.59788865],\n", " [0.5923539 ],\n", " [0.62368196],\n", " [0.65269816],\n", " [0.7293409 ],\n", " [0.78864384],\n", " [0.87034726],\n", " [0.91909623],\n", " [0.9322104 ],\n", " [0.9092065 ],\n", " [0.82623047],\n", " [0.734792 ],\n", " [0.6868149 ],\n", " [0.61729074],\n", " [0.59133595],\n", " [0.6262625 ],\n", " [0.7192022 ],\n", " [0.8436632 ],\n", " [0.96191865],\n", " [1.0090406 ],\n", " [1.0018649 ]], dtype=float32)" ] }, "metadata": {}, "execution_count": 65 } ] }, { "cell_type": "code", "source": [ "predicted_values.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9ibx4KIeyUw7", "outputId": "5fcb0df6-8655-4b1c-d7cf-01a825451859" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(26, 1)" ] }, "metadata": {}, "execution_count": 66 } ] }, { "cell_type": "code", "source": [ "predicted_values = mm.inverse_transform( predicted_values)\n" ], "metadata": { "id": "wbWedo7ByXrb" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "plt.plot(test_set, color = 'red', label = 'Real Gas Prod')\n", "plt.plot(predicted_values, color = 'blue', label = 'Predicted Gas Prod')\n", "plt.title('Gas Prod Prediction')\n", "plt.xlabel('Time')\n", "plt.ylabel('Gas Production')\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "id": "iYJhmi9JypGa", "outputId": "91376ac0-1795-4ca2-bfde-fcaf5ae1660b" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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2zNr1izKly/P9OnTAasLlh7Tpk2jVq1ap96XKlWKpUuX8ueff9K4cWOWLFlCiRIliImJYcqUKTRq1IghQ4awZMkSihUrRosWLbjssssC+4eEk1274JZbYNMmi85J4+/qiFI+/th8IhmZsiCsJVCcEskh+ErBg61E+vTpww8//EDDhg1PlXn/+uuvWbly5Sl/x969e1m7di3z5s3jlltuIW/evJQvX56WLVueNv+CBQto2rTpqbl8JdpT8s033yTzoezbt48DBw5kqWT7M888w+TJk9mxYwd//vknqspjjz3GvHnzyJMnD1u3bmX79u3UqlWLhx56iMGDB3PDDTdw9dVXpzrfwIEDefrppylTpkwyJda1a1cAFi9eTPPmzfGFcffo0YN58+YBJBvv2rUrv/32W4byh5UVK6BjR/B1nly82J42HbmHceOgZk17Cg2EmBiYOhXWrYOLLgqtbH44JZKCMFWCP+UTSYl/OXVV5fXXXz/V68PHjBkzgiZHUlISCxYs4Kyzzsr0uTVq1GDFihUkJSWRJ08eHn/8cR5//HEKFy4MwIQJE9i5cydLliwhf/78VKpUiSNHjlCtWjWWLl3KjBkzeOKJJ2jVqhVPPvnkafOPGDGCG2+88bTxqCs5P3ky9O5t0TgzZ0LbtjB9ulMiuYnffoMFC2DEiMBXFf4lULJRibj1cQTRunVr3nrrLY57mam//fYbBw8epGnTpnz88cecPHmSbdu28d133512buPGjZk3b96par8+Z3eRIkVOVewFiImJ4fXXXz/13qfYAinZXrVqVRo0aMATTzxxysl95MiRU/6TvXv3UrZsWfLnz893333HH3/8AcCff/7J2Wefza233srAgQNZunRplv4+DRs2ZO7cuezatYuTJ08yceJEmjVrRqNGjZg7dy6JiYkcP378VGn9HMfJk/D441bqu04dSEiANm3giitMiThyDx9+aObL7t0DP6dKFahcOdv9Im4lEkH07duXjRs3Uq9ePVSVMmXKMGXKFDp16sScOXOoUaMGF1xwAVdcccVp55YpU4Z33nmHzp07k5SURNmyZZk9ezbt2rXjxhtvZOrUqbz++uu89tpr3HvvvdSuXZsTJ07QtGlTRo0aFXDJ9vfee4+BAwdStWpVSpUqRaFChXjxxRcBMy+1a9eOWrVq0aBBAy6++GIAVq1axcCBA8mT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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "np.sqrt(mean_squared_error(predicted_values, test_set))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "v4bP5gls07oY", "outputId": "9aed470f-e4e1-482a-d29b-bda78314b5ed" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "3873.1714158644168" ] }, "metadata": {}, "execution_count": 71 } ] }, { "cell_type": "markdown", "source": [ "# LSTM with FRED-NROUST.csv" ], "metadata": { "id": "DzfPs7d602ea" } }, { "cell_type": "code", "source": [ "aus_path = '/content/drive/MyDrive/Datasets/FRED-NROUST.csv'\n", "datasets_ts = pd.read_csv(aus_path)\n", "datasets_ts.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "ECrhkMlfz71m", "outputId": "05c8b303-2bc8-4ea7-f34f-fcfe83f8cf1b" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Date Value\n", "0 01-01-1949 5.255053\n", "1 01-04-1949 5.261516\n", "2 01-07-1949 5.268013\n", "3 01-10-1949 5.274564\n", "4 01-01-1950 5.281182" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateValue
001-01-19495.255053
101-04-19495.261516
201-07-19495.268013
301-10-19495.274564
401-01-19505.281182
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 95 } ] }, { "cell_type": "code", "source": [ "datasets_ts.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "E8gP3sVH4R5K", "outputId": "3f7c7394-861f-4d39-e250-006a57074688" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 296 entries, 0 to 295\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Date 296 non-null object \n", " 1 Value 296 non-null float64\n", "dtypes: float64(1), object(1)\n", "memory usage: 4.8+ KB\n" ] } ] }, { "cell_type": "code", "source": [ "### PREPROCESSING\n", "datasets_ts.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "CQF8m-fB1P-k", "outputId": "abbc7d9e-8e99-45dd-c772-25469d6d0030" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(296, 2)" ] }, "metadata": {}, "execution_count": 96 } ] }, { "cell_type": "code", "source": [ "dataset_train = datasets_ts.iloc[:288, :]\n", "dataset_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "855c72e0-99f7-4ac0-8cfe-92e275a903f2", "id": "nHlaCXwd1g16" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(288, 2)" ] }, "metadata": {}, "execution_count": 97 } ] }, { "cell_type": "code", "source": [ "#converting pandas type data to numpy type as numpy type required for tensorflow\n", "training_set = dataset_train.iloc[:,1].values\n", "training_set[:5]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "f93a95b0-8bb7-454a-c440-99fa9d3c4e31", "id": "A9pgAnDQ1g17" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([5.25505257, 5.26151562, 5.268013 , 5.274564 , 5.281182 ])" ] }, "metadata": {}, "execution_count": 98 } ] }, { "cell_type": "code", "source": [ "training_set.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "496e3605-4bce-4674-efe1-fa27ffc04e93", "id": "1WESepdA1g17" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(288,)" ] }, "metadata": {}, "execution_count": 99 } ] }, { "cell_type": "code", "source": [ "training_set[-1]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "a76f292c-4796-4729-c42b-203ebe596459", "id": "CB-gokgJ1g18" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "4.480756" ] }, "metadata": {}, "execution_count": 100 } ] }, { "cell_type": "code", "source": [ "training_set = training_set.reshape(-1,1)\n", "from sklearn.preprocessing import MinMaxScaler\n", "mm = MinMaxScaler()\n", "trn_set_scl = mm.fit_transform(training_set)\n", "print(trn_set_scl[:5])\n", "print(type(trn_set_scl))\n", "print(trn_set_scl.ndim)\n", "print(trn_set_scl.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "6cd77a3f-cfc2-4863-8a7e-e1ae0d090ca3", "id": "k-y9K2pF1g18" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[[0.44014855]\n", " [0.44382247]\n", " [0.4475159 ]\n", " [0.45123982]\n", " [0.45500182]]\n", "\n", "2\n", "(288, 1)\n" ] } ] }, { "cell_type": "code", "source": [ "X_train = []\n", "y_train = []\n", "timesteps = 5\n", "trn_size = dataset_train.shape[0]\n", "for i in range(timesteps, trn_size):\n", " X_train.append(trn_set_scl[i-timesteps:i, 0])\n", " y_train.append(trn_set_scl[i,0])\n", "X_train, y_train = np.array(X_train), np.array(y_train)" ], "metadata": { "id": "_isUMoW11g19" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))\n", "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "8dccd2a1-3f0b-46b3-9864-21a85355aea5", "id": "HxWXK43o1g19" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(283, 5, 1)" ] }, "metadata": {}, "execution_count": 103 } ] }, { "cell_type": "code", "source": [ "import tensorflow as tf\n", "from tensorflow import keras" ], "metadata": { "id": "MFPujQxV3sO1" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "### INITIALIZE RNN\n", "tf.random.set_seed(seed = 2022)\n", "model = keras.Sequential([\n", " keras.layers.LSTM(units = 100, return_sequences=True, \n", " input_shape=(X_train.shape[1], X_train.shape[2])),\n", " keras.layers.LSTM(units = 70, return_sequences=True),\n", " keras.layers.LSTM(units = 50), \n", " keras.layers.Dense(1) \n", "])\n", "model.compile(optimizer= 'adam', loss = 'mean_squared_error')" ], "metadata": { "id": "mZW9INDA3sO1" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.fit(X_train, y_train, epochs = 50, batch_size= 25)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "4ce90893-ae3a-4cab-8708-bccec71407bf", "id": "7haIg-dP3sO1" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/50\n", "12/12 [==============================] - 6s 14ms/step - loss: 0.2336\n", "Epoch 2/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0328\n", "Epoch 3/50\n", "12/12 [==============================] - 0s 15ms/step - loss: 0.0233\n", "Epoch 4/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0128\n", "Epoch 5/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0089\n", "Epoch 6/50\n", "12/12 [==============================] - 0s 15ms/step - loss: 0.0057\n", "Epoch 7/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0042\n", "Epoch 8/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0036\n", "Epoch 9/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0039\n", "Epoch 10/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0036\n", "Epoch 11/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0035\n", "Epoch 12/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0035\n", "Epoch 13/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0035\n", "Epoch 14/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 15/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 16/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0034\n", "Epoch 17/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 18/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0034\n", "Epoch 19/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0033\n", "Epoch 20/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 21/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 22/50\n", "12/12 [==============================] - 0s 15ms/step - loss: 0.0034\n", "Epoch 23/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0033\n", "Epoch 24/50\n", "12/12 [==============================] - 0s 15ms/step - loss: 0.0033\n", "Epoch 25/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0035\n", "Epoch 26/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 27/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0034\n", "Epoch 28/50\n", "12/12 [==============================] - 0s 16ms/step - loss: 0.0035\n", "Epoch 29/50\n", "12/12 [==============================] - 0s 15ms/step - loss: 0.0032\n", "Epoch 30/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0033\n", "Epoch 31/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0034\n", "Epoch 32/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0035\n", "Epoch 33/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0032\n", "Epoch 34/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0032\n", "Epoch 35/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0032\n", "Epoch 36/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0031\n", "Epoch 37/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0032\n", "Epoch 38/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0035\n", "Epoch 39/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0032\n", "Epoch 40/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0032\n", "Epoch 41/50\n", "12/12 [==============================] - 0s 14ms/step - loss: 0.0032\n", "Epoch 42/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0031\n", "Epoch 43/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0034\n", "Epoch 44/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0031\n", "Epoch 45/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0032\n", "Epoch 46/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0031\n", "Epoch 47/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0031\n", "Epoch 48/50\n", "12/12 [==============================] - 0s 15ms/step - loss: 0.0030\n", "Epoch 49/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0031\n", "Epoch 50/50\n", "12/12 [==============================] - 0s 13ms/step - loss: 0.0030\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 106 } ] }, { "cell_type": "code", "source": [ "dataset_test = datasets_ts.iloc[288:,:]\n", "dataset_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "f7e28cce-cc1f-4349-f27c-a6c1bd2ab973", "id": "E5WhUc1D4LZy" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(8, 2)" ] }, "metadata": {}, "execution_count": 107 } ] }, { "cell_type": "code", "source": [ "test_set = dataset_test.iloc[:, 1].values\n", "test_set.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ead0f322-085d-4c3e-f944-44e764d9c571", "id": "i1W4JCXh4LZy" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(8,)" ] }, "metadata": {}, "execution_count": 120 } ] }, { "cell_type": "code", "source": [ "dataset_total = pd.concat((dataset_train['Value'], dataset_test['Value']), axis = 0)\n", "dataset_total" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "42144104-8f55-4e68-fc1c-c3891b24aaa2", "id": "S27Rx8nr4LZz" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 5.255053\n", "1 5.261516\n", "2 5.268013\n", "3 5.274564\n", "4 5.281182\n", " ... \n", "291 4.450651\n", "292 4.445137\n", "293 4.440214\n", "294 4.435784\n", "295 4.431760\n", "Name: Value, Length: 296, dtype: float64" ] }, "metadata": {}, "execution_count": 110 } ] }, { "cell_type": "code", "source": [ "dataset_total.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "1c1d1a3f-7cbd-4c98-8ed1-21d0c4e78406", "id": "uc1FWAms4LZz" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(296,)" ] }, "metadata": {}, "execution_count": 111 } ] }, { "cell_type": "code", "source": [ "# we take 10 extra from train set to get them as part of test set\n", "inputs = dataset_total[len(dataset_total) - len(dataset_test) - timesteps:].values\n", "inputs = inputs.reshape(-1, 1)\n", "len(inputs)\n", "print(inputs.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "2c7d30f3-e4c3-410a-b614-a3b271aa49e4", "id": "4k83Pb8q4LZz" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(13, 1)\n" ] } ] }, { "cell_type": "code", "source": [ "inputs_scl = mm.transform(inputs)\n", "X_test = []\n", "for i in range(timesteps, len(inputs_scl)):\n", " X_test.append(inputs_scl[i-timesteps:i,0])\n", "X_test = np.array(X_test)\n", "X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1],1))\n", "X_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "6bcb247e-6dab-4ce3-9b68-3a929bf25725", "id": "Vx6oJL-H4LZz" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(8, 5, 1)" ] }, "metadata": {}, "execution_count": 113 } ] }, { "cell_type": "code", "source": [ "len(X_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "7c70d5f1-a2be-4da8-b2f3-134b20271bae", "id": "gifsaNah4LZ0" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "8" ] }, "metadata": {}, "execution_count": 114 } ] }, { "cell_type": "code", "source": [ "predicted_values = model.predict(X_test)\n", "predicted_values" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "8b2ede2e-14a0-441a-f092-da8b4209fba5", "id": "HMBr08LY4LZ0" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "1/1 [==============================] - 1s 1s/step\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "array([[ 0.00885722],\n", " [ 0.00287885],\n", " [-0.00272651],\n", " [-0.00786749],\n", " [-0.01250179],\n", " [-0.01663146],\n", " [-0.02029072],\n", " [-0.0235314 ]], dtype=float32)" ] }, "metadata": {}, "execution_count": 115 } ] }, { "cell_type": "code", "source": [ "predicted_values.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "e99bc688-3f2c-48b1-b841-88f1e9b3f79e", "id": "L5nKBaE84LZ0" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(8, 1)" ] }, "metadata": {}, "execution_count": 116 } ] }, { "cell_type": "code", "source": [ "predicted_values = mm.inverse_transform( predicted_values)\n", "predicted_values" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "lAuRq1W-4LZ0", "outputId": "36c783ec-9a40-42df-89f3-e9c32f4413c0" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[12.390582],\n", " [12.372082],\n", " [12.354734],\n", " [12.338824],\n", " [12.324484],\n", " [12.311703],\n", " [12.300379],\n", " [12.29035 ]], dtype=float32)" ] }, "metadata": {}, "execution_count": 121 } ] }, { "cell_type": "code", "source": [ "plt.plot(test_set, color = 'red', label = 'Real Value')\n", "plt.plot(predicted_values, color = 'blue', label = 'Predicted Value')\n", "plt.title('FRED')\n", "plt.xlabel('Time')\n", "plt.ylabel('Value')\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "outputId": "8d7deb11-5c34-4131-c713-d60f4550c247", "id": "4q9aeYLL4LZ1" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZzN9f7A8dfbjLInkWJoVJYYjDG2LNmXG1okpkVS0ZVSaXPvrbTdW12pX9oolTZUpCJuZUm3okYooYQpoizdlKTC+/fH+2DSmTFmzpnvOTPv5+Mxj8z5fs+Zt/HovM9ne79FVXHOOecOViLoAJxzzsUmTxDOOefC8gThnHMuLE8QzjnnwvIE4ZxzLixPEM4558LyBOGccy4sTxDO5ZGIZInILyKyI9vXqSKi2b7PEpGb8vC8h0LXBorInmyPrxORp0SkTjB/S+cO8ATh3OHpparl9n0BG0OPVwx9fw5ws4h0ye15qjos27UPQs89CugM/AIsFpGUaP9lnMuNJwjnIkhVM4HPgNR8PHePqq5R1aHAO8CoCIfn3GHxBOFcBIlISyAF+LKALzUNaFvwiJzLP08Qzh2e6SLyQ+hrerbHt4rIL8AHwCPA9Fye94OIXHaIn7MRqBTBuJ07bIlBB+BcnDlTVd/e942IJIf+WBlQYDhwHlAS+C2n5+VBdeD7AkXqXAH5CMK5CAmtIYwBdgFDC/hyZwHvFjwq5/LPE4RzkXc3cIOIlDqcJ4lIgojUEpGxQHvgtmgE51xeeYJwLvJmAv8Dsq8zvH7QOYhXsl1rJSI7gB+B+UAFoJmqflpoETsXhnjDIOecc+H4CMI551xYniCcc86F5QnCOedcWJ4gnHPOhVVkDspVrlxZk5OTgw7DOefiyuLFi7eqapVw14pMgkhOTiYzMzPoMJxzLq6IyFc5XfMpJuecc2F5gnDOOReWJwjnnHNhFZk1COdc9Pz+++9s2LCBXbt2BR2Ky6dSpUqRlJREyZIl8/wcTxDOuUPasGED5cuXJzk5GREJOhx3mFSVbdu2sWHDBmrVqpXn5/kUk3PukHbt2sUxxxzjySFOiQjHHHPMYY8APUE45/LEk0N8y8+/X7FPELt2wfDhsHlz0JE451xsKfYJ4sMPYdw4SE2FefOCjsY5l5OEhARSU1NJSUmhV69e/PDDD/l6naeffpphw4b94bGsrCySkpLYu3fvHx5PTU1l0aJFYV8nKyuLlJSUfMUQL4p9gmjXzpJEhQrQqROMGgV79gQdlXPuYKVLl2bp0qUsX76cSpUq8fDDD0fstZOTk6lZsybvvnugy+uqVav46aefaNGiRcR+Trwp9gkCoFEjyMyEAQPgttssUXzzTdBROedy0qpVK74J/U+6Zs0aunfvTtOmTWnbti2rVq0C4PXXX6dFixY0adKEzp0789133+X6mhkZGUyePHn/95MnT6Z///5kZWXRtm1b0tLSSEtL4/333//Tcw8elfTs2ZP58+cD8Oabb9KqVSvS0tLo27cvO3bsKOhfv9D4NteQcuXg6aehY0cYOtSmnJ55Bnr0CDoy52LM1VfD0qWRfc3UVHjggTzdumfPHubMmcMll1wCwODBg3nssceoXbs2ixYtYujQocydO5c2bdqwcOFCRIQnnniCe++9l/vuuy/H1z333HNJTU1l7NixJCYmMmXKFF566SWOPfZY3nrrLUqVKsXq1avJyMjIc923rVu3cuedd/L2229TtmxZ7rnnHsaMGcMtt9ySp+cHzRPEQQYMgObNoV8/+Mtf4Prr4a674DDOljjnouCXX34hNTWVb775hlNOOYUuXbqwY8cO3n//ffr27bv/vl9//RWwsxv9+vVj06ZN/Pbbb4fc/1+1alVSUlKYM2cOVatWJTExkZSUFLZv386wYcNYunQpCQkJfPHFF3mOeeHChaxYsYLWrVsD8Ntvv9GqVat8/O2D4QkijHr1YOFCGDEC/v1vWLAAJk8GrybuHHn+pB9p+9Ygdu7cSbdu3Xj44YcZOHAgFStWZGmYEc2VV17JtddeS+/evZk/fz6jRo065M/YN81UtWpVMjIyALj//vupWrUqy5YtY+/evZQqVepPz0tMTPzDAve+8waqSpcuXZg0aVI+/9bB8jWIHJQuDY88Ai++CCtX2gh42rSgo3LOlSlThgcffJD77ruPMmXKUKtWLV566SXA3pCXLVsGwPbt26levToAEydOzNNrn3322bzxxhtMmTKF/v3773+d448/nhIlSvDss8+yJ8wuluTkZJYuXcrevXtZv349H374IQAtW7bkvffe48svvwTg559/PqwRSNA8QRxC376wZAnUqQN9+sCwYXZ2wjkXnCZNmtCoUSMmTZrE888/z4QJE2jcuDENGjTg1VdfBWDUqFH07duXpk2bUrly5Ty9bsWKFWnVqhVVq1blxBNPBGDo0KFMnDiRxo0bs2rVKsqWLfun57Vu3ZpatWpRv359rrrqKtLS0gCoUqUKTz/9NBkZGTRq1IhWrVrtX0SPB6KqQccQEenp6RrNhkG//QZ/+xvcd5+NJqZMsaThXHGwcuVKTjnllKDDcAUU7t9RRBaranq4+30EkUdHHAGjR8OMGbB+PaSlwXPPBR2Vc85FjyeIw3T66bbDLy0NLrwQBg2Cn38OOirnnIs8TxD5kJQEc+fCP/5hZyeaNYNPPw06KueciyxPEPmUmAh33AFvvQXff29nJx5/HIrIko5zznmCKKhOnWDZMmjbFgYPhowM+PHHoKNyzrmC8wQRAVWrwuzZ8K9/wcsvQ5MmVtvJOefimSeICClRAm66Cd55B37/HU491Q6c+pSTc5GRvdx337592blzZ75fa+DAgbz88ssAXHrppaxYsSLHe+fPnx+2QN+hJCcns3Xr1j88dvHFFzNu3Lg/PDZ9+nR65FL0LXushS3qCUJEEkRkiYjMyOWePiKiIpIe+v4IEXlKRD4VkWUi0j7acUZK69a2y6lHD7jmGjjzTFujcM4VTPZy30cccQSPPfbYH67v3r07X6/7xBNPUL9+/Ryv5zdBhHNwxViwqrH7ynrEmsIYQQwHVuZ0UUTKh+7J3pXjMgBVbQh0Ae4TkbgZ7VSqBNOn2whi1iw7WPfee0FH5VzR0bZtW7788kvmz59P27Zt6d27N/Xr12fPnj1cf/31NGvWjEaNGu3/tK6qDBs2jLp169K5c2c2Z2sh2b59+/3VWWfPnk1aWhqNGzemU6dOZGVl8dhjj3H//feTmprKu+++y5YtW+jTpw/NmjWjWbNmvBf6n3vbtm107dqVBg0acOmllxLuEHKnTp1YtWoVmzZtAqz0xttvv82ZZ57J7bffTrNmzUhJSWHw4MFhn599VJKZmUn79u33v86gQYNo3rw5TZo02X+avKCiWqxPRJKA04G7gGtzuO0O4B7g+myP1QfmAqjqZhH5AUgHPoxetJElYq1MW7eG/v3htNNs19ONN9p0lHPxKuBq3+zevZtZs2bRvXt3AD7++GOWL19OrVq1GD9+PEcddRQfffQRv/76K61bt6Zr164sWbKEzz//nBUrVvDdd99Rv359Bg0a9IfX3bJlC5dddhkLFiygVq1afP/991SqVInLL7+ccuXKcd111wFw3nnncc0119CmTRu+/vprunXrxsqVK7ntttto06YNt9xyCzNnzmTChAl/ij0hIYE+ffrw4osvMnz4cF5//XXat29PhQoVGDZs2P4y4BdeeCEzZsygV69eefqd3HXXXXTs2JEnn3ySH374gebNm9O5c+ewZUEOR7Tfqh4AbgD2hrsoImlADVWdedClZUBvEUkUkVpAU6BGVCONkvR0+PhjOOccK9XRvTscom+Jcy6MfeW+09PTqVmz5v5+EM2bN99fyvvNN9/kmWeeITU1lRYtWrBt2zZWr17NggULyMjIICEhgWrVqtGxY8c/vf7ChQtp167d/teqVKlS2Djefvtthg0bRmpqKr179+bHH39kx44dLFiwgAsuuACA008/naOPPjrs87NPM2WfXpo3bx4tWrSgYcOGzJ07l88++yzPv5s333yTu+++m9TUVNq3b8+uXbv4+uuv8/z8nERtBCEiPYHNqro43BpCaMpoDDAwzNOfBE4BMoGvgPeBP5VQFJHBwGCAmjVrRir0iKtQASZNsi2xV10FjRtbmY7OnYOOzLnDF1C17/1rEAfL/ilZVRk7dizdunX7wz1vvPFGxOLYu3cvCxcuDFv2Oy9OPfVUNm3axLJly3j//feZPHkyu3btYujQoWRmZlKjRg1GjRq1v2R4dtnLime/rqpMnTqVunXr5u8vlYNojiBaY6OALGAy0FFEslcvKg+kAPND97QEXhORdFXdrarXqGqqqp4BVAT+VCNXVcerarqqplepUiWKf5WCE4HLLrP+15UqQdeucPPNkM91NedcGN26dePRRx/l999/B+CLL77g559/pl27dkyZMoU9e/awadMm5s2b96fntmzZkgULFrBu3ToAvg/tLilfvjw//fTT/vu6du3K2LFj93+/L2m1a9eOF154AYBZs2bxv//9L2yMIkK/fv246KKL6NGjB6VKldr/Zl+5cmV27NiR466l5ORkFi9eDMDUqVP/8PceO3bs/nWLJUuWHOpXlSdRSxCqOlJVk1Q1GegPzFXVC7Jd366qlVU1OXTPQqC3qmaKSBkRKQsgIl2A3aqa8z60ONKwIXz0EVx8Mdx5p7U43bAh6KicKxouvfRS6tevT1paGikpKQwZMoTdu3dz1llnUbt2berXr8+A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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "np.sqrt(mean_squared_error(predicted_values, test_set))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "292cde70-9205-4b13-ea0f-10dad3cb6f39", "id": "mXvKTLd54LZ1" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0.01645952443885413" ] }, "metadata": {}, "execution_count": 119 } ] }, { "cell_type": "markdown", "source": [ "# LSTM WITH BUNDESBANK-BBK01_WT5511.csv" ], "metadata": { "id": "56hCMHL85nmt" } }, { "cell_type": "code", "source": [ "BP = '/content/drive/MyDrive/Datasets/BUNDESBANK-BBK01_WT5511.csv'\n", "datasets_ts = pd.read_csv(BP)\n", "datasets_ts.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "q1eYewWh5p51", "outputId": "ef70231f-d77d-41bf-87cd-2476b7e5fce7" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(577, 2)" ] }, "metadata": {}, "execution_count": 182 } ] }, { "cell_type": "code", "source": [ "datasets_ts.info()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "b289a150-babe-457f-fbb9-c93a65b16577", "id": "pQMybDdJ6vjY" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "RangeIndex: 577 entries, 0 to 576\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Date 577 non-null object \n", " 1 Value 577 non-null float64\n", "dtypes: float64(1), object(1)\n", "memory usage: 9.1+ KB\n" ] } ] }, { "cell_type": "code", "source": [ "datasets_ts[550:].plot()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "gUPhKL3d-yRk", "outputId": "3bd7fee5-aa5f-4877-890e-fea34fc8ddd6" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "### PREPROCESSING\n", "datasets_ts.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "b80edc97-c863-4bd3-d38f-07240e0a8560", "id": "Lm5ot6JP6vjZ" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(577, 2)" ] }, "metadata": {}, "execution_count": 184 } ] }, { "cell_type": "code", "source": [ "dataset_train = datasets_ts.iloc[:567, :]\n", "dataset_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "eb03d90b-26d7-4b1f-93c3-3020dca9ecff", "id": "C8MsUo0a6vjZ" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(567, 2)" ] }, "metadata": {}, "execution_count": 185 } ] }, { "cell_type": "code", "source": [ "#converting pandas type data to numpy type as numpy type required for tensorflow\n", "training_set = dataset_train.iloc[:,1].values\n", "training_set[:5]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "7548210c-c4af-416c-a50b-a810dbd92707", "id": "HPp_Cl7x6vja" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([39.1 , 42. , 40.95, 38.9 , 39.85])" ] }, "metadata": {}, "execution_count": 186 } ] }, { "cell_type": "code", "source": [ "training_set.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "aa3fca5b-7c09-4be4-f883-28053a3d1dd7", "id": "zrzexvH66vja" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(567,)" ] }, "metadata": {}, "execution_count": 189 } ] }, { "cell_type": "code", "source": [ "training_set[-1]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "e91ebcb3-72bc-44eb-d9ec-855e8ddcaeae", "id": "tej-jOKc6vja" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1175.0" ] }, "metadata": {}, "execution_count": 190 } ] }, { "cell_type": "code", "source": [ "training_set = training_set.reshape(-1,1)\n", "from sklearn.preprocessing import MinMaxScaler\n", "mm = MinMaxScaler()\n", "trn_set_scl = mm.fit_transform(training_set)\n", "print(trn_set_scl[:5])\n", "print(type(trn_set_scl))\n", "print(trn_set_scl.ndim)\n", "print(trn_set_scl.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "dcd28253-08c2-4c76-d152-f74112992746", "id": "8PVEjUz66vjb" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[[0.00230037]\n", " [0.00391955]\n", " [0.0033333 ]\n", " [0.0021887 ]\n", " [0.00271912]]\n", "\n", "2\n", "(567, 1)\n" ] } ] }, { "cell_type": "code", "source": [ "X_train = []\n", "y_train = []\n", "timesteps = 3\n", "trn_size = dataset_train.shape[0]\n", "for i in range(timesteps, trn_size):\n", " X_train.append(trn_set_scl[i-timesteps:i, 0])\n", " y_train.append(trn_set_scl[i,0])\n", "X_train, y_train = np.array(X_train), np.array(y_train)" ], "metadata": { "id": "rEJ7OqF-6vjb" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))\n", "X_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ebc07830-d12c-41f2-c93a-6a47ad73ffb7", "id": "e3_erfwE6vjb" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(564, 3, 1)" ] }, "metadata": {}, "execution_count": 227 } ] }, { "cell_type": "code", "source": [ "import tensorflow as tf\n", "from tensorflow import keras" ], "metadata": { "id": "bg-L9TLF6vjc" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "### INITIALIZE RNN\n", "tf.random.set_seed(seed = 2022)\n", "model = keras.Sequential([\n", " keras.layers.LSTM(units = 100, return_sequences=True, \n", " input_shape=(X_train.shape[1], X_train.shape[2])),\n", " keras.layers.LSTM(units = 70, return_sequences=True),\n", " keras.layers.LSTM(units = 50), \n", " keras.layers.Dense(1) \n", "])\n", "model.compile(optimizer= 'adam', loss = 'mean_squared_error')" ], "metadata": { "id": "qROhVhUb6vjc" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "model.fit(X_train, y_train, epochs = 50, batch_size= 25)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "4b5fb3e8-ede1-4bdf-c85a-a300486c5c73", "id": "w4JRRCqB6vjc" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/50\n", "23/23 [==============================] - 6s 10ms/step - loss: 0.0541\n", "Epoch 2/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 0.0103\n", "Epoch 3/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 0.0020\n", "Epoch 4/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 0.0012\n", "Epoch 5/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 0.0010\n", "Epoch 6/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 0.0010\n", "Epoch 7/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.7942e-04\n", "Epoch 8/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.8551e-04\n", "Epoch 9/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.1862e-04\n", "Epoch 10/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.7045e-04\n", "Epoch 11/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.5975e-04\n", "Epoch 12/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.5902e-04\n", "Epoch 13/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.9314e-04\n", "Epoch 14/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 8.3249e-04\n", "Epoch 15/50\n", "23/23 [==============================] - 0s 12ms/step - loss: 8.4278e-04\n", "Epoch 16/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.4229e-04\n", "Epoch 17/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.8622e-04\n", "Epoch 18/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 8.1194e-04\n", "Epoch 19/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.3879e-04\n", "Epoch 20/50\n", "23/23 [==============================] - 0s 9ms/step - loss: 8.0373e-04\n", "Epoch 21/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.5231e-04\n", "Epoch 22/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 9.1205e-04\n", "Epoch 23/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.8026e-04\n", "Epoch 24/50\n", "23/23 [==============================] - 0s 9ms/step - loss: 9.3064e-04\n", "Epoch 25/50\n", "23/23 [==============================] - 0s 13ms/step - loss: 7.3644e-04\n", "Epoch 26/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 9.2470e-04\n", "Epoch 27/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.2811e-04\n", "Epoch 28/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.8623e-04\n", "Epoch 29/50\n", "23/23 [==============================] - 0s 9ms/step - loss: 7.5455e-04\n", "Epoch 30/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.1341e-04\n", "Epoch 31/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.3496e-04\n", "Epoch 32/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 9.0110e-04\n", "Epoch 33/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 0.0010\n", "Epoch 34/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.8195e-04\n", "Epoch 35/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.2222e-04\n", "Epoch 36/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.3901e-04\n", "Epoch 37/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 8.0781e-04\n", "Epoch 38/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.3369e-04\n", "Epoch 39/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.9736e-04\n", "Epoch 40/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.2592e-04\n", "Epoch 41/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 6.9940e-04\n", "Epoch 42/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.8201e-04\n", "Epoch 43/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 6.8979e-04\n", "Epoch 44/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.8807e-04\n", "Epoch 45/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 6.9239e-04\n", "Epoch 46/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.7157e-04\n", "Epoch 47/50\n", "23/23 [==============================] - 0s 10ms/step - loss: 7.6565e-04\n", "Epoch 48/50\n", "23/23 [==============================] - 0s 11ms/step - loss: 7.8424e-04\n", "Epoch 49/50\n", "23/23 [==============================] - 0s 15ms/step - loss: 7.5482e-04\n", "Epoch 50/50\n", "23/23 [==============================] - 0s 16ms/step - loss: 6.9723e-04\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 230 } ] }, { "cell_type": "code", "source": [ "dataset_test = datasets_ts.iloc[567:,:]\n", "dataset_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "f3990f27-feeb-4714-8d9f-85e9a43f092f", "id": "JBhPB9SY6vjd" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10, 2)" ] }, "metadata": {}, "execution_count": 231 } ] }, { "cell_type": "code", "source": [ "test_set = dataset_test.iloc[:, 1].values\n", "test_set.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "3f2ce1d8-27df-4431-d8c1-530a0b061301", "id": "TEkLoPOB6vjd" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10,)" ] }, "metadata": {}, "execution_count": 232 } ] }, { "cell_type": "code", "source": [ "dataset_total = pd.concat((dataset_train['Value'], dataset_test['Value']), axis = 0)\n", "dataset_total" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "a547e7e2-e3c2-4b97-bef1-aae1424c75ae", "id": "ICL9kkGA6vje" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "0 39.10\n", "1 42.00\n", "2 40.95\n", "3 38.90\n", "4 39.85\n", " ... \n", "572 1062.25\n", "573 1112.90\n", "574 1234.15\n", "575 1233.60\n", "576 1237.70\n", "Name: Value, Length: 577, dtype: float64" ] }, "metadata": {}, "execution_count": 233 } ] }, { "cell_type": "code", "source": [ "dataset_total.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "82d30808-98b9-49d8-9774-b79a32bc81d0", "id": "vJHQnkxe6vje" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(577,)" ] }, "metadata": {}, "execution_count": 234 } ] }, { "cell_type": "code", "source": [ "# we take 10 extra from train set to get them as part of test set\n", "inputs = dataset_total[len(dataset_total) - len(dataset_test) - timesteps:].values\n", "inputs = inputs.reshape(-1, 1)\n", "len(inputs)\n", "print(inputs.shape)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "f1043e55-8996-48a2-cb29-9f40261687bc", "id": "oGjmOWP76vje" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(13, 1)\n" ] } ] }, { "cell_type": "code", "source": [ "inputs_scl = mm.transform(inputs)\n", "X_test = []\n", "for i in range(timesteps, len(inputs_scl)):\n", " X_test.append(inputs_scl[i-timesteps:i,0])\n", "X_test = np.array(X_test)\n", "X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1],1))\n", "X_test.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "d820f290-69e5-4b48-e69c-e62d5955049d", "id": "FErRB0cs6vjf" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10, 3, 1)" ] }, "metadata": {}, "execution_count": 236 } ] }, { "cell_type": "code", "source": [ "len(X_test)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "4c58f865-c32a-4649-cbe5-505e41cb9e75", "id": "OfwoGSDl6vjf" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "10" ] }, "metadata": {}, "execution_count": 237 } ] }, { "cell_type": "code", "source": [ "predicted_values = model.predict(X_test)\n", "predicted_values" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "01bfb20e-67c7-456f-e33e-c8261f738c79", "id": "OmfB4QSp6vjf" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "1/1 [==============================] - 1s 1s/step\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "array([[0.63930076],\n", " [0.6260639 ],\n", " [0.6085445 ],\n", " [0.5887968 ],\n", " [0.60318446],\n", " [0.6001811 ],\n", " [0.59202194],\n", " [0.5700504 ],\n", " [0.5893592 ],\n", " [0.62479705]], dtype=float32)" ] }, "metadata": {}, "execution_count": 238 } ] }, { "cell_type": "code", "source": [ "predicted_values.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "5d21df18-1d8e-494e-a06c-1adebff9c2e8", "id": "brHADtBT6vjg" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10, 1)" ] }, "metadata": {}, "execution_count": 239 } ] }, { "cell_type": "code", "source": [ "predicted_values = mm.inverse_transform( predicted_values)\n", "predicted_values" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "d3dbd962-7218-4731-db6e-aaf582023696", "id": "VGkIkwHF6vjg" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[1179.9805],\n", " [1156.273 ],\n", " [1124.8954],\n", " [1089.5269],\n", " [1115.2954],\n", " [1109.9164],\n", " [1095.3031],\n", " [1055.9517],\n", " [1090.5342],\n", " [1154.004 ]], dtype=float32)" ] }, "metadata": {}, "execution_count": 240 } ] }, { "cell_type": "code", "source": [ "plt.plot(test_set, color = 'red', label = 'Real Value')\n", "plt.plot(predicted_values, color = 'blue', label = 'Predicted Value')\n", "plt.title('BANK')\n", "plt.xlabel('Time')\n", "plt.ylabel('Value')\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 295 }, "outputId": "f8944fe6-c9ef-46a6-9d85-c5a4a2ed9123", "id": "gk2TG56J6vjg" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3yT9fbA8c9pyxTEAeJABBcKyCwoiogL8LoHFFw4UXGjV+WnAip63QtFRWW4QBS94h60CBdEKQpaWaIgspcgm47z++OkEEpLS0nyJO15v155pX2SPDlN25x81/mKquKcc87tTFLQATjnnIt/niycc84Vy5OFc865YnmycM45VyxPFs4554rlycI551yxPFk455wrlicL50pBROaJyEYRWScif4vIpyJycIH79BMRFZFjCxy/InT8rgLHF4hI+7DHvhV220EiMlNEnhcRieKP5lyhPFk4V3pnq2o14ABgKTAg/4bQG/rlwKrQdUGrgLtEpHpxTyIihwDjgNGqeov6SloXAE8Wzu0mVd0EvA80DDt8IpZEbgG6ikjFAg+bAXwH9NrZuUXkMCxRvK2qd+3svs5FkycL53aTiFQF0oBJYYe7Ax8DI0Pfn13IQ+8HbhORfYo49aFYonhFVftEKFznSsWThXOl918RWQ2sAU4HnoCtyaMz8I6qZmOtjh26olR1KvA1cHcR528M7AG8G/nQnds1niycK73zVHUvoDJwE/CtiOwPnA/kAJ+F7vc2cIaI1CrkHH2AG0SkdiG3jQYGA+mhcQvnAuPJwrndpKq5qvoBkAu0xbqgqgHzRWQJ8B5QAbi4kMfOBD4A7i3i3L2AT7CEcVB0fgLniufJwrndJOZcYG9gMXAqcBbQLHRpCjxG4bOiAB4ArgT2KuL2m4AMYEwRLRDnos6ThXOl97GIrAP+AR7GWhQnAlNV9StVXZJ/AZ4HmohI44InUdW5wJvY+MQOQlNlewA/AN+ISM3o/DjOFU18yrZzzrnieMvCOedcsTxZOOecK5YnC+ecc8XyZOGcc65YKUEHEC01a9bUevXqBR2Gc84llClTpqxQ1R0WkJbZZFGvXj0yMzODDsM55xKKiPxZ2HHvhnLOOVcsTxbOOeeK5cnCOedcscrsmEVhsrOzWbBgAZs2bQo6FFcKlStXpk6dOlSoUCHoUJwrd8pVsliwYAHVq1enXr16+DbGiUVVWblyJQsWLKB+/fpBh+NcuVOuuqE2bdrEvvvu64kiAYkI++67r7cKnQtIuUoWgCeKBOa/O+eCU666oZxzrszZvBn+/BP++MMuCxbAww9DhD9cebKIseTkZI455hhycnKoX78+b775JnvtVdSeN0UbOnQomZmZvPDCC1uPzZs3j7Zt2zJ//nySkrY1Gps1a8Yrr7zCscceu8N55s2bx1lnnUVWVlbpfiDnXHSpwpIlMHfutoQQ/vXChXaffJUqwd13Q40aEQ3Dk0WMValShalTpwLQvXt3XnzxRe69t9AdNXdZvXr1qFu3LuPHj+ekk04CYObMmaxdu7bQROGcixPr1lkCKCwhzJ0LGzduf/+DDoL69eGUU+DQQ+3rQw+1y/77Q1LkRxg8WQSoTZs2/PzzzwD8/vvv3HjjjSxfvpyqVavy6quvctRRR/Hxxx/Tv39/tmzZwr777svbb79N7dpF76zZrVs3RowYsTVZjBgxgq5duzJv3jwuu+wy1q9fD8ALL7zA8ccfv91jC7ZWzjrrLO68807at2/PV199Rd++fdm8eTOHHXYYQ4YMoVq1atF4WZwre3JzrXuoYKsg//tly7a/f/Xq9sbfoAF06rQtEdSvD/XqQeXKMf8Rym+yuO02CH3Cj5hmzeDZZ0t019zcXMaMGcPVV18NQI8ePXj55Zc54ogj+P777+nZsyfp6em0bduWSZMmISK89tprPP744zz11FNFnrdLly40a9aMAQMGkJKSwrvvvst7773Hfvvtx9dff03lypX57bff6NatW4lrZ61YsYL+/fvzzTffsMcee/DYY4/x9NNP06dPnxI93rmoycmBO++EFSugQgVISSnddSQem5cH8+cXnhD+/NNizZecDHXrWgI499ztWwb168O++0Z8zGF3ld9kEZCNGzfSrFkzFi5cyNFHH83pp5/OunXrmDhxIp07d956v82bNwO2NiQtLY3FixezZcuWYtcY1K5dm8aNGzNmzBhq165NSkoKjRs3Zs2aNdx0001MnTqV5ORkZs+eXeKYJ02axPTp0znhhBMA2LJlC23atCnFT+9chE2aBM89BwceaG/AOTmQnb3jdV5e7GOrWdPe/FNToUuX7buLDj7YEkwCSaxoI6mELYBIyx+z2LBhAx07duTFF1/kiiuuYK+99to6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ubIvI8Oufbwi5rzcRxzq2LEjL730EtnZ2QDMnj2b9evX065dO959911yc3NZvHgxGfn/OGGOO+44xo0bx9y5cwFYtcqWulSvXp21a9duvV+HDh0YMGDA1u/zE1i7du145513APj888/5+++/C41RREhLS6N79+6cccYZVK5ceesbf82aNVm3bl2Rs5/q1avHlClTABg1atR2P/eAAQO2jnP89NNPxb1UrrzJyIAaNawsuYspTxZx6JprrqFhw4a0aNGCxo0bc91115GTk8P555/PEUccQcOGDbn88ssL3a2uVq1aDBo0iAsuuICmTZuSlpYGwNlnn82HH364dYD7+eefJzMzkyZNmtCwYcOts7L69u3LuHHjaNSoER988AF169YtMs5u3boxbdq0rbOg9tprL6699loaN25Mx44daVXEAGTfvn259dZbSU1NJTk5eevx+++/n+zsbJo0aUKjRo24//77S/0aujIqPR1OOsl2xXMx5SXKXULx32E59uefUK+e9SHfemvQ0ZRZXqLcOZfYfLwiUJ4snHOJISMDatWCRo2CjqRcKnfJoqx2u5UH/rsrx1RtvKJ9e9tP28VcuXrVK1euzMqVK/1NJwGpKitXriz1VF+X4ObMgQULvAsqQOVqnUWdOnVYsGABXpE2MVWuXJk6deoEHYYLQnq6XXuyCEy5ShYVKlTYurLZOZdAMjLgoIPgiCOCjqTcKlfdUM65BJQ/XnHyyVD0djYuyjxZOOfi26+/wvLl3gUVME8Wzrn45uMVccGThXMuvmVkwKGHwiGHBB1JuebJwjkXv3JzYexYG69wgfJk4ZyLX1OnwurV3gUVBzxZOOfiV/54hbcsAufJwjkXvzIy4Oij4YADgo6k3ItqshCRwSKyTESywo49ISIzReRnEflQRPYKu623iMwRkVki0jHseKfQsTkick80Y3bOxYnsbBg3zlsVcSLaLYuhQKcCx74GGqtqE2A20BtARBoCXYFGoccMFJFkEUkGXgTOABoC3UL3dc6VZZMnw/r1Pl4RJ6KaLFR1HLCqwLGvVDUn9O0kIL/Yz7nACFXdrKpzgTlA69Bljqr+oapbgBGh+zrnyrL88Yr27QMNw5mgxyyuAj4PfX0Q8FfYbQtCx4o6vgMR6SEimSKS6cUCnUtwGRnQrBnsu2/QkTgCTBYici+QA7wdqXOq6iBVTVXV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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "np.sqrt(mean_squared_error(predicted_values, test_set))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "780c2b29-4015-4169-a37e-2eca06587632", "id": "mBLLBAdY6vjh" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "89.2723631026785" ] }, "metadata": {}, "execution_count": 242 } ] }, { "cell_type": "markdown", "source": [ "### Results with bank\n", "1. for timestep 10, rmse = 108.7273697100209\n", "2. for timestep 5, rmse = 108.7273697100209\n", "3. for timestep 3, rmse = 89.2723631026785\n" ], "metadata": { "id": "NkqYp8h88vDZ" } } ] }