Format: application/octet-stream
⬇ Download File (24.8 KB)
   1  {
   2   "cells": [
   3    {
   4     "cell_type": "code",
   5     "execution_count": 1,
   6     "id": "79d3a3a1",
   7     "metadata": {},
   8     "outputs": [],
   9     "source": [
  10      "import datetime\n",
  11      "import pandas as pd\n",
  12      "import time\n",
  13      "import numpy as np\n",
  14      "import math"
  15     ]
  16    },
  17    {
  18     "cell_type": "code",
  19     "execution_count": 2,
  20     "id": "bcefd68f",
  21     "metadata": {},
  22     "outputs": [],
  23     "source": [
  24      "name='SBIN.NS'\n",
  25      "days= 6000\n",
  26      "future_period=5\n",
  27      "input_period=60\n",
  28      "minimum_change=1.004\n",
  29      "validation_size=0.2"
  30     ]
  31    },
  32    {
  33     "cell_type": "code",
  34     "execution_count": 3,
  35     "id": "df521e4e",
  36     "metadata": {
  37      "scrolled": true
  38     },
  39     "outputs": [],
  40     "source": [
  41      "t2=int(time.mktime((datetime.date.today() - datetime.timedelta(1)).timetuple())+19800)\n",
  42      "t1=int(time.mktime((datetime.date.today() - datetime.timedelta(days)).timetuple())+19800)\n",
  43      "url='https://query1.finance.yahoo.com/v7/finance/download/' \\\n",
  44      "                +name+'?period1='+str(t1)+'&period2='+str(t2)+'&interval=1d&events=history&includeAdjustedClose=true'\n",
  45      "\n",
  46      "dfc=  pd.read_csv(url).dropna(axis=0)\n",
  47      "dfc.Date=pd.to_datetime(dfc.Date)\n",
  48      "dfc.set_index('Date',inplace=True)\n",
  49      "dfc.drop(columns=['Volume', 'Adj Close'], inplace=True)"
  50     ]
  51    },
  52    {
  53     "cell_type": "code",
  54     "execution_count": 4,
  55     "id": "956e0c76",
  56     "metadata": {},
  57     "outputs": [],
  58     "source": [
  59      "df= dfc.copy()"
  60     ]
  61    },
  62    {
  63     "cell_type": "code",
  64     "execution_count": 5,
  65     "id": "1ea33163",
  66     "metadata": {},
  67     "outputs": [],
  68     "source": [
  69      "df=df.reset_index()"
  70     ]
  71    },
  72    {
  73     "cell_type": "code",
  74     "execution_count": null,
  75     "id": "4b612e71",
  76     "metadata": {},
  77     "outputs": [],
  78     "source": []
  79    },
  80    {
  81     "cell_type": "code",
  82     "execution_count": 6,
  83     "id": "5314ee58",
  84     "metadata": {},
  85     "outputs": [],
  86     "source": [
  87      "def stoch(df):\n",
  88      "    x=[]\n",
  89      "    for i, p  in  enumerate(df.Close):\n",
  90      "        try:\n",
  91      "            highest= max([df.High[i], df.High[i-1], df.High[i-2], df.High[i-3], df.High[i-4] ])\n",
  92      "            lowest= min([ df.Low[i], df.Low[i-1] , df.Low[i-2] , df.Low[i-3] , df.Low[i-4] ])\n",
  93      "            x.append((df.Close[i]-lowest)/(highest-lowest))\n",
  94      "        except:\n",
  95      "            x.append(np.nan)\n",
  96      "            \n",
  97      "    return pd.Series(x)"
  98     ]
  99    },
 100    {
 101     "cell_type": "code",
 102     "execution_count": null,
 103     "id": "679e89c8",
 104     "metadata": {},
 105     "outputs": [],
 106     "source": []
 107    },
 108    {
 109     "cell_type": "code",
 110     "execution_count": 7,
 111     "id": "2bbbe2a1",
 112     "metadata": {},
 113     "outputs": [],
 114     "source": [
 115      "df['3-5d_mav'] =df.Close.rolling(3).mean()-df.Close.rolling(5).mean()\n",
 116      "df['5-10d_mav'] =df.Close.rolling(5).mean()-df.Close.rolling(10).mean()\n",
 117      "df['stoch']= stoch(df)\n",
 118      "df['h-l/c']=(df.High-df.Low).div(df.Close)\n",
 119      "df.dropna(axis=0, inplace= True)"
 120     ]
 121    },
 122    {
 123     "cell_type": "code",
 124     "execution_count": 8,
 125     "id": "b48fbf3e",
 126     "metadata": {},
 127     "outputs": [],
 128     "source": [
 129      "df['Future']= df.Close.shift(-future_period)\n",
 130      "df.dropna(axis=0, inplace= True)"
 131     ]
 132    },
 133    {
 134     "cell_type": "code",
 135     "execution_count": null,
 136     "id": "c5d07952",
 137     "metadata": {},
 138     "outputs": [],
 139     "source": []
 140    },
 141    {
 142     "cell_type": "code",
 143     "execution_count": 9,
 144     "id": "40bbe36f",
 145     "metadata": {},
 146     "outputs": [
 147      {
 148       "data": {
 149        "text/html": [
 150         "<div>\n",
 151         "<style scoped>\n",
 152         "    .dataframe tbody tr th:only-of-type {\n",
 153         "        vertical-align: middle;\n",
 154         "    }\n",
 155         "\n",
 156         "    .dataframe tbody tr th {\n",
 157         "        vertical-align: top;\n",
 158         "    }\n",
 159         "\n",
 160         "    .dataframe thead th {\n",
 161         "        text-align: right;\n",
 162         "    }\n",
 163         "</style>\n",
 164         "<table border=\"1\" class=\"dataframe\">\n",
 165         "  <thead>\n",
 166         "    <tr style=\"text-align: right;\">\n",
 167         "      <th></th>\n",
 168         "      <th>Date</th>\n",
 169         "      <th>Open</th>\n",
 170         "      <th>High</th>\n",
 171         "      <th>Low</th>\n",
 172         "      <th>Close</th>\n",
 173         "      <th>3-5d_mav</th>\n",
 174         "      <th>5-10d_mav</th>\n",
 175         "      <th>stoch</th>\n",
 176         "      <th>h-l/c</th>\n",
 177         "      <th>Future</th>\n",
 178         "    </tr>\n",
 179         "  </thead>\n",
 180         "  <tbody>\n",
 181         "    <tr>\n",
 182         "      <th>9</th>\n",
 183         "      <td>2005-02-18</td>\n",
 184         "      <td>62.998886</td>\n",
 185         "      <td>63.187592</td>\n",
 186         "      <td>61.720413</td>\n",
 187         "      <td>62.107258</td>\n",
 188         "      <td>-0.112593</td>\n",
 189         "      <td>0.707640</td>\n",
 190         "      <td>0.255237</td>\n",
 191         "      <td>0.023623</td>\n",
 192         "      <td>64.640610</td>\n",
 193         "    </tr>\n",
 194         "    <tr>\n",
 195         "      <th>10</th>\n",
 196         "      <td>2005-02-21</td>\n",
 197         "      <td>62.432774</td>\n",
 198         "      <td>62.781876</td>\n",
 199         "      <td>61.432644</td>\n",
 200         "      <td>62.343140</td>\n",
 201         "      <td>-0.097497</td>\n",
 202         "      <td>0.448172</td>\n",
 203         "      <td>0.361423</td>\n",
 204         "      <td>0.021642</td>\n",
 205         "      <td>67.428719</td>\n",
 206         "    </tr>\n",
 207         "    <tr>\n",
 208         "      <th>11</th>\n",
 209         "      <td>2005-02-22</td>\n",
 210         "      <td>62.343140</td>\n",
 211         "      <td>64.725533</td>\n",
 212         "      <td>62.272373</td>\n",
 213         "      <td>64.192436</td>\n",
 214         "      <td>0.189647</td>\n",
 215         "      <td>0.384485</td>\n",
 216         "      <td>0.838107</td>\n",
 217         "      <td>0.038216</td>\n",
 218         "      <td>65.631310</td>\n",
 219         "    </tr>\n",
 220         "    <tr>\n",
 221         "      <th>12</th>\n",
 222         "      <td>2005-02-23</td>\n",
 223         "      <td>64.442474</td>\n",
 224         "      <td>65.008583</td>\n",
 225         "      <td>63.612175</td>\n",
 226         "      <td>63.876362</td>\n",
 227         "      <td>0.517993</td>\n",
 228         "      <td>0.411847</td>\n",
 229         "      <td>0.683378</td>\n",
 230         "      <td>0.021861</td>\n",
 231         "      <td>66.650314</td>\n",
 232         "    </tr>\n",
 233         "    <tr>\n",
 234         "      <th>13</th>\n",
 235         "      <td>2005-02-24</td>\n",
 236         "      <td>64.159416</td>\n",
 237         "      <td>65.456757</td>\n",
 238         "      <td>63.970715</td>\n",
 239         "      <td>65.192574</td>\n",
 240         "      <td>0.878103</td>\n",
 241         "      <td>0.601023</td>\n",
 242         "      <td>0.934350</td>\n",
 243         "      <td>0.022795</td>\n",
 244         "      <td>67.659882</td>\n",
 245         "    </tr>\n",
 246         "    <tr>\n",
 247         "      <th>...</th>\n",
 248         "      <td>...</td>\n",
 249         "      <td>...</td>\n",
 250         "      <td>...</td>\n",
 251         "      <td>...</td>\n",
 252         "      <td>...</td>\n",
 253         "      <td>...</td>\n",
 254         "      <td>...</td>\n",
 255         "      <td>...</td>\n",
 256         "      <td>...</td>\n",
 257         "      <td>...</td>\n",
 258         "    </tr>\n",
 259         "    <tr>\n",
 260         "      <th>4036</th>\n",
 261         "      <td>2021-06-28</td>\n",
 262         "      <td>430.700012</td>\n",
 263         "      <td>433.149994</td>\n",
 264         "      <td>424.549988</td>\n",
 265         "      <td>426.750000</td>\n",
 266         "      <td>2.200000</td>\n",
 267         "      <td>0.189999</td>\n",
 268         "      <td>0.647383</td>\n",
 269         "      <td>0.020152</td>\n",
 270         "      <td>432.649994</td>\n",
 271         "    </tr>\n",
 272         "    <tr>\n",
 273         "      <th>4037</th>\n",
 274         "      <td>2021-06-29</td>\n",
 275         "      <td>427.500000</td>\n",
 276         "      <td>428.950012</td>\n",
 277         "      <td>420.549988</td>\n",
 278         "      <td>421.500000</td>\n",
 279         "      <td>3.063328</td>\n",
 280         "      <td>1.560001</td>\n",
 281         "      <td>0.358127</td>\n",
 282         "      <td>0.019929</td>\n",
 283         "      <td>429.750000</td>\n",
 284         "    </tr>\n",
 285         "    <tr>\n",
 286         "      <th>4038</th>\n",
 287         "      <td>2021-06-30</td>\n",
 288         "      <td>423.000000</td>\n",
 289         "      <td>424.899994</td>\n",
 290         "      <td>418.299988</td>\n",
 291         "      <td>419.200012</td>\n",
 292         "      <td>-0.206665</td>\n",
 293         "      <td>2.305002</td>\n",
 294         "      <td>0.172108</td>\n",
 295         "      <td>0.015744</td>\n",
 296         "      <td>432.850006</td>\n",
 297         "    </tr>\n",
 298         "    <tr>\n",
 299         "      <th>4039</th>\n",
 300         "      <td>2021-07-01</td>\n",
 301         "      <td>420.299988</td>\n",
 302         "      <td>423.700012</td>\n",
 303         "      <td>417.149994</td>\n",
 304         "      <td>420.399994</td>\n",
 305         "      <td>-2.963330</td>\n",
 306         "      <td>2.929999</td>\n",
 307         "      <td>0.203125</td>\n",
 308         "      <td>0.015580</td>\n",
 309         "      <td>424.450012</td>\n",
 310         "    </tr>\n",
 311         "    <tr>\n",
 312         "      <th>4040</th>\n",
 313         "      <td>2021-07-02</td>\n",
 314         "      <td>420.299988</td>\n",
 315         "      <td>425.399994</td>\n",
 316         "      <td>419.000000</td>\n",
 317         "      <td>424.399994</td>\n",
 318         "      <td>-1.116667</td>\n",
 319         "      <td>0.900000</td>\n",
 320         "      <td>0.453125</td>\n",
 321         "      <td>0.015080</td>\n",
 322         "      <td>423.750000</td>\n",
 323         "    </tr>\n",
 324         "  </tbody>\n",
 325         "</table>\n",
 326         "<p>4032 rows × 10 columns</p>\n",
 327         "</div>"
 328        ],
 329        "text/plain": [
 330         "           Date        Open        High         Low       Close  3-5d_mav  \\\n",
 331         "9    2005-02-18   62.998886   63.187592   61.720413   62.107258 -0.112593   \n",
 332         "10   2005-02-21   62.432774   62.781876   61.432644   62.343140 -0.097497   \n",
 333         "11   2005-02-22   62.343140   64.725533   62.272373   64.192436  0.189647   \n",
 334         "12   2005-02-23   64.442474   65.008583   63.612175   63.876362  0.517993   \n",
 335         "13   2005-02-24   64.159416   65.456757   63.970715   65.192574  0.878103   \n",
 336         "...         ...         ...         ...         ...         ...       ...   \n",
 337         "4036 2021-06-28  430.700012  433.149994  424.549988  426.750000  2.200000   \n",
 338         "4037 2021-06-29  427.500000  428.950012  420.549988  421.500000  3.063328   \n",
 339         "4038 2021-06-30  423.000000  424.899994  418.299988  419.200012 -0.206665   \n",
 340         "4039 2021-07-01  420.299988  423.700012  417.149994  420.399994 -2.963330   \n",
 341         "4040 2021-07-02  420.299988  425.399994  419.000000  424.399994 -1.116667   \n",
 342         "\n",
 343         "      5-10d_mav     stoch     h-l/c      Future  \n",
 344         "9      0.707640  0.255237  0.023623   64.640610  \n",
 345         "10     0.448172  0.361423  0.021642   67.428719  \n",
 346         "11     0.384485  0.838107  0.038216   65.631310  \n",
 347         "12     0.411847  0.683378  0.021861   66.650314  \n",
 348         "13     0.601023  0.934350  0.022795   67.659882  \n",
 349         "...         ...       ...       ...         ...  \n",
 350         "4036   0.189999  0.647383  0.020152  432.649994  \n",
 351         "4037   1.560001  0.358127  0.019929  429.750000  \n",
 352         "4038   2.305002  0.172108  0.015744  432.850006  \n",
 353         "4039   2.929999  0.203125  0.015580  424.450012  \n",
 354         "4040   0.900000  0.453125  0.015080  423.750000  \n",
 355         "\n",
 356         "[4032 rows x 10 columns]"
 357        ]
 358       },
 359       "execution_count": 9,
 360       "metadata": {},
 361       "output_type": "execute_result"
 362      }
 363     ],
 364     "source": [
 365      "df"
 366     ]
 367    },
 368    {
 369     "cell_type": "code",
 370     "execution_count": 10,
 371     "id": "97ccb978",
 372     "metadata": {
 373      "scrolled": true
 374     },
 375     "outputs": [
 376      {
 377       "data": {
 378        "text/plain": [
 379         "3616"
 380        ]
 381       },
 382       "execution_count": 10,
 383       "metadata": {},
 384       "output_type": "execute_result"
 385      }
 386     ],
 387     "source": [
 388      "len(df.Future.unique())"
 389     ]
 390    },
 391    {
 392     "cell_type": "code",
 393     "execution_count": 11,
 394     "id": "0fe0994c",
 395     "metadata": {},
 396     "outputs": [],
 397     "source": [
 398      "df.iloc[:,4]=df.iloc[:,4].pct_change()\n",
 399      "df.dropna(axis=0, inplace= True)"
 400     ]
 401    },
 402    {
 403     "cell_type": "code",
 404     "execution_count": null,
 405     "id": "c431dd91",
 406     "metadata": {},
 407     "outputs": [],
 408     "source": []
 409    },
 410    {
 411     "cell_type": "code",
 412     "execution_count": null,
 413     "id": "0d535fba",
 414     "metadata": {},
 415     "outputs": [],
 416     "source": []
 417    },
 418    {
 419     "cell_type": "code",
 420     "execution_count": 12,
 421     "id": "736c92b8",
 422     "metadata": {},
 423     "outputs": [],
 424     "source": [
 425      "x=df.iloc[:,4:-1].values\n",
 426      "x=[ x[i:i+input_period] for i, j in enumerate(x) if len(x[i:i+input_period])== input_period]"
 427     ]
 428    },
 429    {
 430     "cell_type": "code",
 431     "execution_count": 13,
 432     "id": "f405b090",
 433     "metadata": {},
 434     "outputs": [],
 435     "source": [
 436      "y=df.iloc[input_period-1:,-1].values"
 437     ]
 438    },
 439    {
 440     "cell_type": "code",
 441     "execution_count": 14,
 442     "id": "ed061100",
 443     "metadata": {},
 444     "outputs": [
 445      {
 446       "name": "stdout",
 447       "output_type": "stream",
 448       "text": [
 449        "3972\n"
 450       ]
 451      }
 452     ],
 453     "source": [
 454      "if(len(x)==len(y)):\n",
 455      "    print(len(x))"
 456     ]
 457    },
 458    {
 459     "cell_type": "code",
 460     "execution_count": 15,
 461     "id": "e79090b7",
 462     "metadata": {},
 463     "outputs": [],
 464     "source": [
 465      "train_x= x[:int(0.8*len(x))]\n",
 466      "train_y=y[:int(0.8*len(y))]\n",
 467      "\n",
 468      "test_x= x[int(0.8*len(x)):]\n",
 469      "test_y=y[int(0.8*len(y)):]"
 470     ]
 471    },
 472    {
 473     "cell_type": "code",
 474     "execution_count": 17,
 475     "id": "004f4b65",
 476     "metadata": {},
 477     "outputs": [],
 478     "source": [
 479      "from sklearn.preprocessing import MinMaxScaler\n",
 480      "scale=MinMaxScaler()\n",
 481      "X=np.array(1)\n",
 482      "for i,j in enumerate(train_x):\n",
 483      "        X= np.append(X,scale.fit_transform(j))\n",
 484      "train_x=X[1:]\n",
 485      "del X\n",
 486      "train_x=train_x.reshape(-1,input_period,5)\n",
 487      "\n",
 488      "X=np.array(1)\n",
 489      "for i,j in enumerate(test_x):\n",
 490      "        X= np.append(X, scale.transform(j))\n",
 491      "test_x=X[1:]\n",
 492      "del X\n",
 493      "test_x=test_x.reshape(-1,input_period,5)"
 494     ]
 495    },
 496    {
 497     "cell_type": "code",
 498     "execution_count": null,
 499     "id": "6ae1d2c8",
 500     "metadata": {},
 501     "outputs": [],
 502     "source": []
 503    },
 504    {
 505     "cell_type": "code",
 506     "execution_count": null,
 507     "id": "6c0bda17",
 508     "metadata": {},
 509     "outputs": [],
 510     "source": []
 511    },
 512    {
 513     "cell_type": "code",
 514     "execution_count": 18,
 515     "id": "2905462b",
 516     "metadata": {},
 517     "outputs": [
 518      {
 519       "name": "stdout",
 520       "output_type": "stream",
 521       "text": [
 522        "(3177, 60, 5)\n",
 523        "(795, 60, 5)\n"
 524       ]
 525      }
 526     ],
 527     "source": [
 528      "print(train_x.shape)\n",
 529      "print(test_x.shape)"
 530     ]
 531    },
 532    {
 533     "cell_type": "code",
 534     "execution_count": null,
 535     "id": "8d6b24c0",
 536     "metadata": {},
 537     "outputs": [],
 538     "source": []
 539    },
 540    {
 541     "cell_type": "code",
 542     "execution_count": 19,
 543     "id": "680e55c1",
 544     "metadata": {},
 545     "outputs": [
 546      {
 547       "data": {
 548        "text/plain": [
 549         "array([[[0.58337702, 0.66311907, 0.76798794, 0.34716433, 0.18507626],\n",
 550         "        [0.85733606, 0.76227185, 0.75363995, 0.88060945, 0.4716342 ],\n",
 551         "        [0.49099717, 0.8756517 , 0.75980432, 0.70745646, 0.18886412],\n",
 552         "        ...,\n",
 553         "        [0.55170725, 0.6749565 , 0.80146653, 0.60369653, 0.05794683],\n",
 554         "        [0.78342573, 0.79637264, 0.75757239, 0.64709817, 0.54654064],\n",
 555         "        [0.44281691, 0.82308869, 0.74067377, 0.47668056, 0.27524032]],\n",
 556         "\n",
 557         "       [[0.85733606, 0.76227185, 0.75363995, 0.88060945, 0.4716342 ],\n",
 558         "        [0.49099717, 0.8756517 , 0.75980432, 0.70745646, 0.18886412],\n",
 559         "        [0.76140017, 1.        , 0.80242317, 0.98831308, 0.20500504],\n",
 560         "        ...,\n",
 561         "        [0.78342573, 0.79637264, 0.75757239, 0.64709817, 0.54654064],\n",
 562         "        [0.44281691, 0.82308869, 0.74067377, 0.47668056, 0.27524032],\n",
 563         "        [0.77696557, 0.89118183, 0.77925372, 0.8498942 , 0.48091454]],\n",
 564         "\n",
 565         "       [[0.49099717, 0.8756517 , 0.75980432, 0.70745646, 0.18886412],\n",
 566         "        [0.76140017, 1.        , 0.80242317, 0.98831308, 0.20500504],\n",
 567         "        [0.45347235, 0.87662928, 0.85056851, 0.79965423, 0.17682433],\n",
 568         "        ...,\n",
 569         "        [0.44281691, 0.82308869, 0.74067377, 0.47668056, 0.27524032],\n",
 570         "        [0.77696557, 0.89118183, 0.77925372, 0.8498942 , 0.48091454],\n",
 571         "        [0.49937826, 0.81896173, 0.81560192, 0.68402161, 0.25491169]],\n",
 572         "\n",
 573         "       ...,\n",
 574         "\n",
 575         "       [[0.48684205, 0.71266881, 0.44053499, 0.45147028, 0.08428036],\n",
 576         "        [0.45593056, 0.57935367, 0.52747879, 0.22412855, 0.18388914],\n",
 577         "        [0.4001595 , 0.46342758, 0.58708915, 0.07720968, 0.16724024],\n",
 578         "        ...,\n",
 579         "        [0.37770919, 0.44852306, 0.7830764 , 0.20246796, 0.35907261],\n",
 580         "        [0.9870219 , 0.72950596, 0.7813316 , 0.88839422, 0.63304102],\n",
 581         "        [0.52002308, 0.8211428 , 0.82727534, 0.91382546, 0.27258725]],\n",
 582         "\n",
 583         "       [[0.45593056, 0.57935367, 0.52747879, 0.22412855, 0.18388914],\n",
 584         "        [0.4001595 , 0.46342758, 0.58708915, 0.07720968, 0.16724024],\n",
 585         "        [0.5410025 , 0.46839631, 0.54986906, 0.18149443, 0.        ],\n",
 586         "        ...,\n",
 587         "        [0.9870219 , 0.72950596, 0.7813316 , 0.88839422, 0.63304102],\n",
 588         "        [0.52002308, 0.8211428 , 0.82727534, 0.91382546, 0.27258725],\n",
 589         "        [0.54104928, 0.9494893 , 0.88485028, 0.92211623, 0.17303976]],\n",
 590         "\n",
 591         "       [[0.4001595 , 0.46342758, 0.58708915, 0.07720968, 0.16724024],\n",
 592         "        [0.5410025 , 0.46839631, 0.54986906, 0.18149443, 0.        ],\n",
 593         "        [0.50633264, 0.47971333, 0.54667035, 0.22889506, 0.06402915],\n",
 594         "        ...,\n",
 595         "        [0.52002308, 0.8211428 , 0.82727534, 0.91382546, 0.27258725],\n",
 596         "        [0.54104928, 0.9494893 , 0.88485028, 0.92211623, 0.17303976],\n",
 597         "        [0.60574812, 0.84791616, 0.86798486, 0.95946672, 0.25978598]]])"
 598        ]
 599       },
 600       "execution_count": 19,
 601       "metadata": {},
 602       "output_type": "execute_result"
 603      }
 604     ],
 605     "source": [
 606      "train_x"
 607     ]
 608    },
 609    {
 610     "cell_type": "code",
 611     "execution_count": null,
 612     "id": "51f0a75f",
 613     "metadata": {},
 614     "outputs": [],
 615     "source": []
 616    },
 617    {
 618     "cell_type": "code",
 619     "execution_count": 20,
 620     "id": "cf36b54f",
 621     "metadata": {},
 622     "outputs": [],
 623     "source": [
 624      "import tensorflow as tf\n",
 625      "from tensorflow.keras.layers import Dense, LSTM, Bidirectional, Dropout"
 626     ]
 627    },
 628    {
 629     "cell_type": "code",
 630     "execution_count": null,
 631     "id": "a6d63391",
 632     "metadata": {},
 633     "outputs": [
 634      {
 635       "name": "stdout",
 636       "output_type": "stream",
 637       "text": [
 638        "Epoch 1/50\n",
 639        "100/100 [==============================] - 45s 454ms/step - loss: 82.4009 - mse: 11201.2314 - val_loss: 103.4043 - val_mse: 16025.3145\n",
 640        "Epoch 2/50\n",
 641        "100/100 [==============================] - 44s 443ms/step - loss: 58.0548 - mse: 4995.1719 - val_loss: 93.0808 - val_mse: 13781.6299\n",
 642        "Epoch 3/50\n",
 643        "100/100 [==============================] - 45s 452ms/step - loss: 59.1031 - mse: 5204.5957 - val_loss: 105.0111 - val_mse: 16371.7021\n",
 644        "Epoch 4/50\n",
 645        "100/100 [==============================] - 44s 440ms/step - loss: 58.6835 - mse: 5048.1079 - val_loss: 102.7263 - val_mse: 15798.5674\n",
 646        "Epoch 5/50\n",
 647        "100/100 [==============================] - 46s 460ms/step - loss: 58.3713 - mse: 5035.5342 - val_loss: 105.6011 - val_mse: 16472.2266\n",
 648        "Epoch 6/50\n",
 649        "100/100 [==============================] - 42s 423ms/step - loss: 58.6529 - mse: 5107.4673 - val_loss: 112.0493 - val_mse: 18055.1582\n",
 650        "Epoch 7/50\n",
 651        "100/100 [==============================] - 41s 408ms/step - loss: 58.3843 - mse: 5048.3638 - val_loss: 100.1315 - val_mse: 15143.0557\n",
 652        "Epoch 8/50\n",
 653        "100/100 [==============================] - 42s 417ms/step - loss: 58.4795 - mse: 5039.8374 - val_loss: 101.5561 - val_mse: 15451.0732\n",
 654        "Epoch 9/50\n",
 655        "100/100 [==============================] - 44s 437ms/step - loss: 58.3262 - mse: 5060.1875 - val_loss: 104.8992 - val_mse: 16230.2764\n",
 656        "Epoch 10/50\n",
 657        "100/100 [==============================] - 43s 426ms/step - loss: 58.3304 - mse: 5037.4492 - val_loss: 97.6701 - val_mse: 14535.8135\n",
 658        "Epoch 11/50\n",
 659        "100/100 [==============================] - 43s 426ms/step - loss: 58.7438 - mse: 5116.7603 - val_loss: 107.2704 - val_mse: 16780.5605\n",
 660        "Epoch 12/50\n",
 661        "100/100 [==============================] - 42s 424ms/step - loss: 58.6098 - mse: 5080.4219 - val_loss: 101.1346 - val_mse: 15285.6338\n",
 662        "Epoch 13/50\n",
 663        "100/100 [==============================] - 44s 439ms/step - loss: 58.7318 - mse: 5082.4673 - val_loss: 96.1030 - val_mse: 14140.4932\n",
 664        "Epoch 14/50\n",
 665        "100/100 [==============================] - 45s 450ms/step - loss: 58.1692 - mse: 5033.1963 - val_loss: 110.5809 - val_mse: 17546.3926\n",
 666        "Epoch 15/50\n",
 667        "100/100 [==============================] - 44s 443ms/step - loss: 58.7065 - mse: 5075.7246 - val_loss: 113.1136 - val_mse: 18152.1133\n",
 668        "Epoch 16/50\n",
 669        "100/100 [==============================] - 44s 444ms/step - loss: 57.8748 - mse: 4953.6499 - val_loss: 100.8395 - val_mse: 15129.6016\n",
 670        "Epoch 17/50\n",
 671        "100/100 [==============================] - 42s 423ms/step - loss: 58.5337 - mse: 5072.0332 - val_loss: 114.9377 - val_mse: 18554.9961\n",
 672        "Epoch 18/50\n",
 673        "100/100 [==============================] - 45s 446ms/step - loss: 58.5209 - mse: 5072.9600 - val_loss: 101.0245 - val_mse: 15136.6582\n",
 674        "Epoch 19/50\n",
 675        "100/100 [==============================] - 44s 439ms/step - loss: 58.7206 - mse: 5102.3130 - val_loss: 109.6847 - val_mse: 17246.8242\n",
 676        "Epoch 20/50\n",
 677        "100/100 [==============================] - 43s 431ms/step - loss: 58.6245 - mse: 5076.3140 - val_loss: 100.8404 - val_mse: 15065.7080\n",
 678        "Epoch 21/50\n",
 679        "100/100 [==============================] - 42s 421ms/step - loss: 58.5764 - mse: 5079.0659 - val_loss: 110.0528 - val_mse: 17311.9277\n",
 680        "Epoch 22/50\n",
 681        "100/100 [==============================] - 42s 419ms/step - loss: 58.5663 - mse: 5054.1333 - val_loss: 102.5388 - val_mse: 15440.4580\n",
 682        "Epoch 23/50\n",
 683        "100/100 [==============================] - 45s 449ms/step - loss: 58.5145 - mse: 5006.6001 - val_loss: 105.7779 - val_mse: 16237.1846\n",
 684        "Epoch 24/50\n",
 685        "100/100 [==============================] - 43s 428ms/step - loss: 58.7360 - mse: 5057.6636 - val_loss: 100.6661 - val_mse: 14971.8955\n",
 686        "Epoch 25/50\n",
 687        "100/100 [==============================] - 41s 411ms/step - loss: 58.2375 - mse: 4976.0371 - val_loss: 100.9515 - val_mse: 15019.6279\n",
 688        "Epoch 26/50\n",
 689        "100/100 [==============================] - 42s 422ms/step - loss: 58.2460 - mse: 5011.2905 - val_loss: 106.8703 - val_mse: 16450.4043\n",
 690        "Epoch 27/50\n",
 691        "100/100 [==============================] - 51s 510ms/step - loss: 58.7732 - mse: 5127.8701 - val_loss: 105.1768 - val_mse: 16014.2188\n",
 692        "Epoch 28/50\n",
 693        "100/100 [==============================] - 52s 520ms/step - loss: 58.1607 - mse: 5009.5444 - val_loss: 99.0150 - val_mse: 14522.0176\n",
 694        "Epoch 29/50\n",
 695        " 65/100 [==================>...........] - ETA: 12s - loss: 57.9238 - mse: 4953.1406"
 696       ]
 697      }
 698     ],
 699     "source": [
 700      "model= tf.keras.models.Sequential([\n",
 701      "        LSTM(250, input_shape=(train_x.shape[1], train_x.shape[2]), return_sequences=True),\n",
 702      "        Dropout(0.2),\n",
 703      "        LSTM(150,return_sequences=True),\n",
 704      "        Dropout(0.2),\n",
 705      "        \n",
 706      "        LSTM(50),\n",
 707      "        Dropout(0.2),\n",
 708      "    \n",
 709      "        Dense(3200),\n",
 710      "        Dense(1)\n",
 711      "])\n",
 712      "\n",
 713      "\n",
 714      "model.compile(loss='mae',\n",
 715      "              optimizer='adam', metrics=['mse'])\n",
 716      "history = model.fit(train_x, train_y, epochs=50, validation_data=(test_x,test_y))"
 717     ]
 718    },
 719    {
 720     "cell_type": "code",
 721     "execution_count": null,
 722     "id": "c52338dd",
 723     "metadata": {},
 724     "outputs": [],
 725     "source": [
 726      "from matplotlib import pyplot as plt"
 727     ]
 728    },
 729    {
 730     "cell_type": "code",
 731     "execution_count": null,
 732     "id": "4d03a1aa",
 733     "metadata": {},
 734     "outputs": [],
 735     "source": []
 736    },
 737    {
 738     "cell_type": "code",
 739     "execution_count": null,
 740     "id": "c8d380a1",
 741     "metadata": {
 742      "scrolled": true
 743     },
 744     "outputs": [],
 745     "source": [
 746      "plt.subplot(1,2,1)\n",
 747      "plt.plot( history.history['loss'][3:])\n",
 748      "plt.subplot(1,2,2)\n",
 749      "plt.plot(history.history['val_loss'][3:])"
 750     ]
 751    },
 752    {
 753     "cell_type": "code",
 754     "execution_count": null,
 755     "id": "8ef87515",
 756     "metadata": {},
 757     "outputs": [],
 758     "source": []
 759    }
 760   ],
 761   "metadata": {
 762    "kernelspec": {
 763     "display_name": "Python 3",
 764     "language": "python",
 765     "name": "python3"
 766    },
 767    "language_info": {
 768     "codemirror_mode": {
 769      "name": "ipython",
 770      "version": 3
 771     },
 772     "file_extension": ".py",
 773     "mimetype": "text/x-python",
 774     "name": "python",
 775     "nbconvert_exporter": "python",
 776     "pygments_lexer": "ipython3",
 777     "version": "3.8.8"
 778    }
 779   },
 780   "nbformat": 4,
 781   "nbformat_minor": 5
 782  }
 783