├── README.md ├── test.csv └── timeseries Forecasting.ipynb /README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test.csv: -------------------------------------------------------------------------------- 1 | Date,High,Low,Close,Adj Close 2 | 2021-09-30,107.089996,102.949997,103.029999,102.939865 3 | 2021-10-01,106.389999,103.66999799999999,105.82,105.727425 4 | 2021-10-04,107.08000200000001,104.599998,104.900002,104.808235 5 | 2021-10-05,106.0,103.75,104.900002,104.808235 6 | 2021-10-06,104.41999799999999,102.059998,104.33000200000001,104.238731 7 | 2021-10-07,106.529999,104.33000200000001,105.510002,105.417702 8 | 2021-10-08,106.220001,104.660004,104.720001,104.628387 9 | 2021-10-11,105.760002,103.970001,104.08000200000001,103.98895300000001 10 | 2021-10-12,104.040001,101.559998,102.720001,102.630142 11 | 2021-10-13,103.199997,101.18,102.360001,102.270454 12 | 2021-10-14,103.650002,102.370003,102.739998,102.650116 13 | 2021-10-15,105.900002,103.190002,104.410004,104.318665 14 | 2021-10-18,104.57,103.040001,104.120003,104.028915 15 | 2021-10-19,104.970001,103.58000200000001,104.730003,104.638382 16 | 2021-10-20,106.019997,103.870003,106.0,105.90727199999999 17 | 2021-10-21,106.389999,103.010002,103.150002,103.059761 18 | 2021-10-22,104.510002,102.550003,104.050003,103.958977 19 | 2021-10-25,105.989998,103.33000200000001,105.300003,105.20788600000002 20 | 2021-10-26,110.970001,105.220001,107.440002,107.34600800000001 21 | 2021-10-27,108.279999,103.690002,103.849998,103.759148 22 | 2021-10-28,105.379997,103.099998,105.260002,105.167915 23 | 2021-10-29,105.239998,104.120003,104.870003,104.77825899999999 24 | 2021-11-01,106.769997,105.279999,106.230003,106.13707 25 | 2021-11-02,107.139999,105.300003,106.690002,106.59666399999999 26 | 2021-11-03,106.339996,104.82,105.970001,105.877296 27 | 2021-11-04,106.400002,104.290001,105.209999,105.117958 28 | 2021-11-05,109.650002,106.849998,108.739998,108.64486699999999 29 | 2021-11-08,110.309998,108.32,108.41999799999999,108.32515 30 | 2021-11-09,116.16999799999999,110.480003,111.290001,111.19264199999999 31 | 2021-11-10,112.68,108.110001,108.959999,108.864677 -------------------------------------------------------------------------------- /timeseries Forecasting.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "27e86681", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import numpy as np\n", 11 | "from tensorflow.keras.models import Sequential\n", 12 | "from tensorflow.keras.layers import LSTM\n", 13 | "from tensorflow.keras.layers import Dense, Dropout\n", 14 | "import pandas as pd\n", 15 | "from matplotlib import pyplot as plt\n", 16 | "from sklearn.preprocessing import MinMaxScaler\n", 17 | "import seaborn as sns" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 2, 23 | "id": "59a416cd", 24 | "metadata": {}, 25 | "outputs": [], 26 | "source": [ 27 | "df=pd.read_csv(\"train.csv\",parse_dates=[\"Date\"],index_col=[0])" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 3, 33 | "id": "ab54faea", 34 | "metadata": {}, 35 | "outputs": [ 36 | { 37 | "name": "stdout", 38 | "output_type": "stream", 39 | "text": [ 40 | "None\n" 41 | ] 42 | } 43 | ], 44 | "source": [ 45 | "print(df.index.freq)" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 4, 51 | "id": "9d69a828", 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "data": { 56 | "text/plain": [ 57 | "(5203, 5)" 58 | ] 59 | }, 60 | "execution_count": 4, 61 | "metadata": {}, 62 | "output_type": "execute_result" 63 | } 64 | ], 65 | "source": [ 66 | "df.shape" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 5, 72 | "id": "1fe6f18e", 73 | "metadata": {}, 74 | "outputs": [ 75 | { 76 | "data": { 77 | "text/html": [ 78 | "
\n", 79 | "\n", 92 | "\n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | "
OpenHighLowCloseAdj Close
Date
2001-01-25356.730774362.980774352.403839353.365387197.122452
2001-01-26357.211548360.096161342.788452343.269226191.490234
2001-01-29345.153839355.769226338.461548341.384613190.439011
2001-01-30344.307678355.923065341.692322355.769226198.463318
2001-01-31359.615387361.153839350.461548353.692322197.304749
\n", 154 | "
" 155 | ], 156 | "text/plain": [ 157 | " Open High Low Close Adj Close\n", 158 | "Date \n", 159 | "2001-01-25 356.730774 362.980774 352.403839 353.365387 197.122452\n", 160 | "2001-01-26 357.211548 360.096161 342.788452 343.269226 191.490234\n", 161 | "2001-01-29 345.153839 355.769226 338.461548 341.384613 190.439011\n", 162 | "2001-01-30 344.307678 355.923065 341.692322 355.769226 198.463318\n", 163 | "2001-01-31 359.615387 361.153839 350.461548 353.692322 197.304749" 164 | ] 165 | }, 166 | "execution_count": 5, 167 | "metadata": {}, 168 | "output_type": "execute_result" 169 | } 170 | ], 171 | "source": [ 172 | "df.head()" 173 | ] 174 | }, 175 | { 176 | "cell_type": "code", 177 | "execution_count": 6, 178 | "id": "750dae9a", 179 | "metadata": {}, 180 | "outputs": [ 181 | { 182 | "data": { 183 | "text/html": [ 184 | "
\n", 185 | "\n", 198 | "\n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | "
OpenHighLowCloseAdj Close
Date
2021-09-2399.529999104.08000299.519997102.959999102.789993
2021-09-24102.660004104.199997102.599998103.800003103.709198
2021-09-27104.550003106.330002104.389999105.349998105.257835
2021-09-28105.290001106.750000104.730003105.730003105.637512
2021-09-29106.000000107.000000105.309998106.279999106.187027
\n", 260 | "
" 261 | ], 262 | "text/plain": [ 263 | " Open High Low Close Adj Close\n", 264 | "Date \n", 265 | "2021-09-23 99.529999 104.080002 99.519997 102.959999 102.789993\n", 266 | "2021-09-24 102.660004 104.199997 102.599998 103.800003 103.709198\n", 267 | "2021-09-27 104.550003 106.330002 104.389999 105.349998 105.257835\n", 268 | "2021-09-28 105.290001 106.750000 104.730003 105.730003 105.637512\n", 269 | "2021-09-29 106.000000 107.000000 105.309998 106.279999 106.187027" 270 | ] 271 | }, 272 | "execution_count": 6, 273 | "metadata": {}, 274 | "output_type": "execute_result" 275 | } 276 | ], 277 | "source": [ 278 | "df.tail()" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 7, 284 | "id": "9f685196", 285 | "metadata": {}, 286 | "outputs": [], 287 | "source": [ 288 | "test_split=round(len(df)*0.20)" 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "execution_count": 8, 294 | "id": "c435d2e4", 295 | "metadata": {}, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "text/plain": [ 300 | "1041" 301 | ] 302 | }, 303 | "execution_count": 8, 304 | "metadata": {}, 305 | "output_type": "execute_result" 306 | } 307 | ], 308 | "source": [ 309 | "test_split" 310 | ] 311 | }, 312 | { 313 | "cell_type": "code", 314 | "execution_count": 9, 315 | "id": "6815e6cf", 316 | "metadata": {}, 317 | "outputs": [], 318 | "source": [ 319 | "df_for_training=df[:-1041]\n", 320 | "df_for_testing=df[-1041:]" 321 | ] 322 | }, 323 | { 324 | "cell_type": "code", 325 | "execution_count": 10, 326 | "id": "164f3e06", 327 | "metadata": {}, 328 | "outputs": [ 329 | { 330 | "name": "stdout", 331 | "output_type": "stream", 332 | "text": [ 333 | "(4162, 5)\n", 334 | "(1041, 5)\n" 335 | ] 336 | } 337 | ], 338 | "source": [ 339 | "print(df_for_training.shape)\n", 340 | "print(df_for_testing.shape)" 341 | ] 342 | }, 343 | { 344 | "cell_type": "code", 345 | "execution_count": 11, 346 | "id": "4a86012c", 347 | "metadata": {}, 348 | "outputs": [], 349 | "source": [ 350 | "scaler = MinMaxScaler(feature_range=(0,1))\n", 351 | "df_for_training_scaled = scaler.fit_transform(df_for_training)" 352 | ] 353 | }, 354 | { 355 | "cell_type": "code", 356 | "execution_count": 12, 357 | "id": "5697bff5", 358 | "metadata": {}, 359 | "outputs": [], 360 | "source": [ 361 | "df_for_testing_scaled=scaler.transform(df_for_testing)" 362 | ] 363 | }, 364 | { 365 | "cell_type": "code", 366 | "execution_count": 13, 367 | "id": "d33a6b6e", 368 | "metadata": {}, 369 | "outputs": [ 370 | { 371 | "data": { 372 | "text/plain": [ 373 | "array([[0.85398707, 0.86281807, 0.85292546, 0.8403402 , 0.82180889],\n", 374 | " [0.85533406, 0.85473269, 0.82623316, 0.8122593 , 0.79289309],\n", 375 | " [0.82155169, 0.84260459, 0.81422168, 0.80701755, 0.78749611],\n", 376 | " ...,\n", 377 | " [0.40689652, 0.40362224, 0.41960282, 0.40436458, 0.7632948 ],\n", 378 | " [0.40517242, 0.39995691, 0.41832161, 0.4075738 , 0.76889077],\n", 379 | " [0.40862067, 0.39974127, 0.41426436, 0.39880189, 0.75359571]])" 380 | ] 381 | }, 382 | "execution_count": 13, 383 | "metadata": {}, 384 | "output_type": "execute_result" 385 | } 386 | ], 387 | "source": [ 388 | "df_for_training_scaled" 389 | ] 390 | }, 391 | { 392 | "cell_type": "code", 393 | "execution_count": 14, 394 | "id": "03b668b1", 395 | "metadata": {}, 396 | "outputs": [ 397 | { 398 | "data": { 399 | "text/plain": [ 400 | "(4162, 5)" 401 | ] 402 | }, 403 | "execution_count": 14, 404 | "metadata": {}, 405 | "output_type": "execute_result" 406 | } 407 | ], 408 | "source": [ 409 | "df_for_training_scaled.shape" 410 | ] 411 | }, 412 | { 413 | "cell_type": "code", 414 | "execution_count": 15, 415 | "id": "88390259", 416 | "metadata": {}, 417 | "outputs": [ 418 | { 419 | "data": { 420 | "text/plain": [ 421 | "(1041, 5)" 422 | ] 423 | }, 424 | "execution_count": 15, 425 | "metadata": {}, 426 | "output_type": "execute_result" 427 | } 428 | ], 429 | "source": [ 430 | "df_for_testing_scaled.shape" 431 | ] 432 | }, 433 | { 434 | "cell_type": "code", 435 | "execution_count": 16, 436 | "id": "b6a58026", 437 | "metadata": {}, 438 | "outputs": [], 439 | "source": [ 440 | "def createXY(dataset,n_past):\n", 441 | " dataX = []\n", 442 | " dataY = []\n", 443 | " for i in range(n_past, len(dataset)):\n", 444 | " dataX.append(dataset[i - n_past:i, 0:dataset.shape[1]])\n", 445 | " dataY.append(dataset[i,0])\n", 446 | " return np.array(dataX),np.array(dataY) " 447 | ] 448 | }, 449 | { 450 | "cell_type": "code", 451 | "execution_count": 17, 452 | "id": "18b62d65", 453 | "metadata": {}, 454 | "outputs": [], 455 | "source": [ 456 | "trainX,trainY=createXY(df_for_training_scaled,30)" 457 | ] 458 | }, 459 | { 460 | "cell_type": "code", 461 | "execution_count": 18, 462 | "id": "8d694c12", 463 | "metadata": {}, 464 | "outputs": [ 465 | { 466 | "data": { 467 | "text/plain": [ 468 | "(4132, 30, 5)" 469 | ] 470 | }, 471 | "execution_count": 18, 472 | "metadata": {}, 473 | "output_type": "execute_result" 474 | } 475 | ], 476 | "source": [ 477 | "trainX.shape" 478 | ] 479 | }, 480 | { 481 | "cell_type": "code", 482 | "execution_count": null, 483 | "id": "2795bf2a", 484 | "metadata": {}, 485 | "outputs": [], 486 | "source": [] 487 | }, 488 | { 489 | "cell_type": "code", 490 | "execution_count": 19, 491 | "id": "184bfdb6", 492 | "metadata": {}, 493 | "outputs": [], 494 | "source": [ 495 | "testX,testY=createXY(df_for_testing_scaled,30)" 496 | ] 497 | }, 498 | { 499 | "cell_type": "code", 500 | "execution_count": 20, 501 | "id": "5e77d396", 502 | "metadata": {}, 503 | "outputs": [ 504 | { 505 | "data": { 506 | "text/plain": [ 507 | "array([[0.85398707, 0.86281807, 0.85292546, 0.8403402 , 0.82180889],\n", 508 | " [0.85533406, 0.85473269, 0.82623316, 0.8122593 , 0.79289309],\n", 509 | " [0.82155169, 0.84260459, 0.81422168, 0.80701755, 0.78749611],\n", 510 | " [0.81918098, 0.84303579, 0.82319031, 0.8470261 , 0.8286929 ],\n", 511 | " [0.86206895, 0.85769729, 0.84753366, 0.84124952, 0.8227448 ],\n", 512 | " [0.85668106, 0.85295391, 0.85479397, 0.84659822, 0.82825271],\n", 513 | " [0.85129307, 0.85661925, 0.85372629, 0.84766796, 0.82935384],\n", 514 | " [0.8540948 , 0.88249248, 0.85799703, 0.88125807, 0.86394198],\n", 515 | " [0.88577588, 0.88227684, 0.88255396, 0.87590928, 0.85843431],\n", 516 | " [0.88189657, 0.87602422, 0.87016871, 0.86200256, 0.84411479],\n", 517 | " [0.88362063, 0.88357053, 0.87892376, 0.86606763, 0.84829995],\n", 518 | " [0.87047413, 0.86200956, 0.84390347, 0.8344031 , 0.81569511],\n", 519 | " [0.83857758, 0.87645542, 0.84966903, 0.87398378, 0.85645156],\n", 520 | " [0.88168102, 0.88012075, 0.88105913, 0.86649551, 0.84874037],\n", 521 | " [0.87090514, 0.86287196, 0.85949177, 0.84724008, 0.82891342],\n", 522 | " [0.85237065, 0.88249248, 0.8601324 , 0.88403941, 0.86680588],\n", 523 | " [0.85668106, 0.86589053, 0.86248134, 0.8630723 , 0.84521599],\n", 524 | " [0.87176726, 0.8870203 , 0.88191333, 0.87783486, 0.86041721],\n", 525 | " [0.88254305, 0.89003888, 0.88298101, 0.86949083, 0.85182511],\n", 526 | " [0.875 , 0.86955587, 0.85821051, 0.86521178, 0.84741896],\n", 527 | " [0.85775864, 0.85877534, 0.83600253, 0.84552848, 0.82715127],\n", 528 | " [0.86745685, 0.88055195, 0.86120008, 0.88403941, 0.86680588],\n", 529 | " [0.87780172, 0.88033639, 0.87828313, 0.88446729, 0.86724607],\n", 530 | " [0.88900862, 0.88551106, 0.84838778, 0.85237489, 0.83420073],\n", 531 | " [0.83512929, 0.83872361, 0.83365367, 0.83975181, 0.82120263],\n", 532 | " [0.83189656, 0.82988361, 0.82532568, 0.81108261, 0.79168158],\n", 533 | " [0.81896551, 0.82341526, 0.82703399, 0.82199401, 0.80649534],\n", 534 | " [0.85129307, 0.85015098, 0.84240872, 0.8292683 , 0.81401255],\n", 535 | " [0.83448273, 0.84282023, 0.84561178, 0.84124952, 0.82639405],\n", 536 | " [0.84913791, 0.84497632, 0.83557547, 0.83889605, 0.82396218]])" 537 | ] 538 | }, 539 | "execution_count": 20, 540 | "metadata": {}, 541 | "output_type": "execute_result" 542 | } 543 | ], 544 | "source": [ 545 | "trainX[0]" 546 | ] 547 | }, 548 | { 549 | "cell_type": "code", 550 | "execution_count": 21, 551 | "id": "bdaf6a49", 552 | "metadata": {}, 553 | "outputs": [ 554 | { 555 | "name": "stdout", 556 | "output_type": "stream", 557 | "text": [ 558 | "trainX Shape-- (4132, 30, 5)\n", 559 | "trainY Shape-- (4132,)\n" 560 | ] 561 | } 562 | ], 563 | "source": [ 564 | "print(\"trainX Shape-- \",trainX.shape)\n", 565 | "print(\"trainY Shape-- \",trainY.shape)" 566 | ] 567 | }, 568 | { 569 | "cell_type": "code", 570 | "execution_count": 22, 571 | "id": "0c78e7db", 572 | "metadata": {}, 573 | "outputs": [ 574 | { 575 | "name": "stdout", 576 | "output_type": "stream", 577 | "text": [ 578 | "testX Shape-- (1011, 30, 5)\n", 579 | "testY Shape-- (1011,)\n" 580 | ] 581 | } 582 | ], 583 | "source": [ 584 | "print(\"testX Shape-- \",testX.shape)\n", 585 | "print(\"testY Shape-- \",testY.shape)" 586 | ] 587 | }, 588 | { 589 | "cell_type": "code", 590 | "execution_count": 23, 591 | "id": "cbf9d2df", 592 | "metadata": {}, 593 | "outputs": [ 594 | { 595 | "name": "stdout", 596 | "output_type": "stream", 597 | "text": [ 598 | "trainX[0]-- \n", 599 | " [[0.85398707 0.86281807 0.85292546 0.8403402 0.82180889]\n", 600 | " [0.85533406 0.85473269 0.82623316 0.8122593 0.79289309]\n", 601 | " [0.82155169 0.84260459 0.81422168 0.80701755 0.78749611]\n", 602 | " [0.81918098 0.84303579 0.82319031 0.8470261 0.8286929 ]\n", 603 | " [0.86206895 0.85769729 0.84753366 0.84124952 0.8227448 ]\n", 604 | " [0.85668106 0.85295391 0.85479397 0.84659822 0.82825271]\n", 605 | " [0.85129307 0.85661925 0.85372629 0.84766796 0.82935384]\n", 606 | " [0.8540948 0.88249248 0.85799703 0.88125807 0.86394198]\n", 607 | " [0.88577588 0.88227684 0.88255396 0.87590928 0.85843431]\n", 608 | " [0.88189657 0.87602422 0.87016871 0.86200256 0.84411479]\n", 609 | " [0.88362063 0.88357053 0.87892376 0.86606763 0.84829995]\n", 610 | " [0.87047413 0.86200956 0.84390347 0.8344031 0.81569511]\n", 611 | " [0.83857758 0.87645542 0.84966903 0.87398378 0.85645156]\n", 612 | " [0.88168102 0.88012075 0.88105913 0.86649551 0.84874037]\n", 613 | " [0.87090514 0.86287196 0.85949177 0.84724008 0.82891342]\n", 614 | " [0.85237065 0.88249248 0.8601324 0.88403941 0.86680588]\n", 615 | " [0.85668106 0.86589053 0.86248134 0.8630723 0.84521599]\n", 616 | " [0.87176726 0.8870203 0.88191333 0.87783486 0.86041721]\n", 617 | " [0.88254305 0.89003888 0.88298101 0.86949083 0.85182511]\n", 618 | " [0.875 0.86955587 0.85821051 0.86521178 0.84741896]\n", 619 | " [0.85775864 0.85877534 0.83600253 0.84552848 0.82715127]\n", 620 | " [0.86745685 0.88055195 0.86120008 0.88403941 0.86680588]\n", 621 | " [0.87780172 0.88033639 0.87828313 0.88446729 0.86724607]\n", 622 | " [0.88900862 0.88551106 0.84838778 0.85237489 0.83420073]\n", 623 | " [0.83512929 0.83872361 0.83365367 0.83975181 0.82120263]\n", 624 | " [0.83189656 0.82988361 0.82532568 0.81108261 0.79168158]\n", 625 | " [0.81896551 0.82341526 0.82703399 0.82199401 0.80649534]\n", 626 | " [0.85129307 0.85015098 0.84240872 0.8292683 0.81401255]\n", 627 | " [0.83448273 0.84282023 0.84561178 0.84124952 0.82639405]\n", 628 | " [0.84913791 0.84497632 0.83557547 0.83889605 0.82396218]]\n", 629 | "\n", 630 | "trainY[0]-- 0.8297413960482309\n" 631 | ] 632 | } 633 | ], 634 | "source": [ 635 | "print(\"trainX[0]-- \\n\",trainX[0])\n", 636 | "print(\"\\ntrainY[0]-- \",trainY[0])" 637 | ] 638 | }, 639 | { 640 | "cell_type": "code", 641 | "execution_count": 24, 642 | "id": "a5892e85", 643 | "metadata": {}, 644 | "outputs": [ 645 | { 646 | "data": { 647 | "text/plain": [ 648 | "0.8297413960482309" 649 | ] 650 | }, 651 | "execution_count": 24, 652 | "metadata": {}, 653 | "output_type": "execute_result" 654 | } 655 | ], 656 | "source": [ 657 | "trainY[0]" 658 | ] 659 | }, 660 | { 661 | "cell_type": "code", 662 | "execution_count": 25, 663 | "id": "713712db", 664 | "metadata": {}, 665 | "outputs": [ 666 | { 667 | "data": { 668 | "text/plain": [ 669 | "(4132,)" 670 | ] 671 | }, 672 | "execution_count": 25, 673 | "metadata": {}, 674 | "output_type": "execute_result" 675 | } 676 | ], 677 | "source": [ 678 | "trainY.shape" 679 | ] 680 | }, 681 | { 682 | "cell_type": "code", 683 | "execution_count": 26, 684 | "id": "d165e52b", 685 | "metadata": {}, 686 | "outputs": [], 687 | "source": [ 688 | "from keras.wrappers.scikit_learn import KerasRegressor\n", 689 | "from sklearn.model_selection import GridSearchCV" 690 | ] 691 | }, 692 | { 693 | "cell_type": "code", 694 | "execution_count": 27, 695 | "id": "42ffe2bf", 696 | "metadata": {}, 697 | "outputs": [ 698 | { 699 | "name": "stderr", 700 | "output_type": "stream", 701 | "text": [ 702 | "C:\\Users\\SUJAN~1.ISL\\AppData\\Local\\Temp/ipykernel_11732/1694479593.py:11: DeprecationWarning: KerasRegressor is deprecated, use Sci-Keras (https://github.com/adriangb/scikeras) instead.\n", 703 | " grid_model = KerasRegressor(build_fn=build_model,verbose=1,validation_data=(testX,testY))\n" 704 | ] 705 | } 706 | ], 707 | "source": [ 708 | "def build_model(optimizer):\n", 709 | " grid_model = Sequential()\n", 710 | " grid_model.add(LSTM(50,return_sequences=True,input_shape=(30,5)))\n", 711 | " grid_model.add(LSTM(50))\n", 712 | " grid_model.add(Dropout(0.2))\n", 713 | " grid_model.add(Dense(1))\n", 714 | "\n", 715 | " grid_model.compile(loss = 'mse',optimizer = optimizer)\n", 716 | " return grid_model\n", 717 | "\n", 718 | "grid_model = KerasRegressor(build_fn=build_model,verbose=1,validation_data=(testX,testY))\n", 719 | "parameters = {'batch_size' : [16,20],\n", 720 | " 'epochs' : [8,10],\n", 721 | " 'optimizer' : ['adam','Adadelta'] }\n", 722 | "\n", 723 | "grid_search = GridSearchCV(estimator = grid_model,\n", 724 | " param_grid = parameters,\n", 725 | " cv = 2)" 726 | ] 727 | }, 728 | { 729 | "cell_type": "code", 730 | "execution_count": 28, 731 | "id": "1fc54625", 732 | "metadata": {}, 733 | "outputs": [ 734 | { 735 | "name": "stdout", 736 | "output_type": "stream", 737 | "text": [ 738 | "Epoch 1/8\n", 739 | "130/130 [==============================] - 6s 23ms/step - loss: 0.0045 - val_loss: 0.0024\n", 740 | "Epoch 2/8\n", 741 | "130/130 [==============================] - 2s 17ms/step - loss: 0.0012 - val_loss: 0.0017\n", 742 | "Epoch 3/8\n", 743 | "130/130 [==============================] - 2s 18ms/step - loss: 9.0876e-04 - val_loss: 0.0014\n", 744 | "Epoch 4/8\n", 745 | "130/130 [==============================] - 2s 17ms/step - loss: 8.8440e-04 - val_loss: 0.0016\n", 746 | "Epoch 5/8\n", 747 | "130/130 [==============================] - 2s 18ms/step - loss: 8.2294e-04 - val_loss: 0.0018\n", 748 | "Epoch 6/8\n", 749 | "130/130 [==============================] - 2s 18ms/step - loss: 7.0709e-04 - val_loss: 0.0013\n", 750 | "Epoch 7/8\n", 751 | "130/130 [==============================] - 2s 18ms/step - loss: 8.3741e-04 - val_loss: 0.0011\n", 752 | "Epoch 8/8\n", 753 | "130/130 [==============================] - 2s 18ms/step - loss: 7.1207e-04 - val_loss: 0.0017\n", 754 | "130/130 [==============================] - 1s 6ms/step - loss: 0.0061\n", 755 | "Epoch 1/8\n", 756 | "130/130 [==============================] - 6s 25ms/step - loss: 0.0111 - val_loss: 0.0011\n", 757 | "Epoch 2/8\n", 758 | "130/130 [==============================] - 3s 19ms/step - loss: 0.0029 - val_loss: 5.4374e-04\n", 759 | "Epoch 3/8\n", 760 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0026 - val_loss: 6.5927e-04\n", 761 | "Epoch 4/8\n", 762 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0024 - val_loss: 1.5511e-04\n", 763 | "Epoch 5/8\n", 764 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0024 - val_loss: 1.4759e-04\n", 765 | "Epoch 6/8\n", 766 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0021 - val_loss: 2.3574e-04\n", 767 | "Epoch 7/8\n", 768 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0021 - val_loss: 2.6727e-04\n", 769 | "Epoch 8/8\n", 770 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0019 - val_loss: 1.3201e-04\n", 771 | "130/130 [==============================] - 1s 6ms/step - loss: 1.3788e-04\n", 772 | "Epoch 1/8\n", 773 | "130/130 [==============================] - 6s 23ms/step - loss: 0.0619 - val_loss: 0.0053\n", 774 | "Epoch 2/8\n", 775 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0558 - val_loss: 0.0043\n", 776 | "Epoch 3/8\n", 777 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0489 - val_loss: 0.0033\n", 778 | "Epoch 4/8\n", 779 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0416 - val_loss: 0.0025\n", 780 | "Epoch 5/8\n", 781 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0354 - val_loss: 0.0018\n", 782 | "Epoch 6/8\n", 783 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0285 - val_loss: 0.0013\n", 784 | "Epoch 7/8\n", 785 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0225 - val_loss: 9.9643e-04\n", 786 | "Epoch 8/8\n", 787 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0178 - val_loss: 9.0072e-04\n", 788 | "130/130 [==============================] - 1s 5ms/step - loss: 0.0809\n", 789 | "Epoch 1/8\n", 790 | "130/130 [==============================] - 6s 24ms/step - loss: 0.3296 - val_loss: 0.0131\n", 791 | "Epoch 2/8\n", 792 | "130/130 [==============================] - 2s 19ms/step - loss: 0.3091 - val_loss: 0.0113\n", 793 | "Epoch 3/8\n", 794 | "130/130 [==============================] - 2s 19ms/step - loss: 0.2856 - val_loss: 0.0095\n", 795 | "Epoch 4/8\n", 796 | "130/130 [==============================] - 2s 19ms/step - loss: 0.2617 - val_loss: 0.0078\n", 797 | "Epoch 5/8\n", 798 | "130/130 [==============================] - 2s 19ms/step - loss: 0.2376 - val_loss: 0.0062\n", 799 | "Epoch 6/8\n", 800 | "130/130 [==============================] - 2s 19ms/step - loss: 0.2149 - val_loss: 0.0048\n", 801 | "Epoch 7/8\n", 802 | "130/130 [==============================] - 2s 19ms/step - loss: 0.1906 - val_loss: 0.0035\n", 803 | "Epoch 8/8\n", 804 | "130/130 [==============================] - 2s 18ms/step - loss: 0.1665 - val_loss: 0.0025\n", 805 | "130/130 [==============================] - 1s 6ms/step - loss: 0.0406\n", 806 | "Epoch 1/10\n", 807 | "130/130 [==============================] - 6s 25ms/step - loss: 0.0050 - val_loss: 0.0024\n", 808 | "Epoch 2/10\n", 809 | "130/130 [==============================] - 3s 20ms/step - loss: 0.0012 - val_loss: 0.0033\n", 810 | "Epoch 3/10\n", 811 | "130/130 [==============================] - 3s 20ms/step - loss: 0.0010 - val_loss: 0.0024\n", 812 | "Epoch 4/10\n", 813 | "130/130 [==============================] - 3s 19ms/step - loss: 8.7333e-04 - val_loss: 0.0017\n", 814 | "Epoch 5/10\n", 815 | "130/130 [==============================] - 3s 20ms/step - loss: 9.6562e-04 - val_loss: 0.0026\n", 816 | "Epoch 6/10\n", 817 | "130/130 [==============================] - 3s 20ms/step - loss: 7.7910e-04 - val_loss: 0.0011\n", 818 | "Epoch 7/10\n", 819 | "130/130 [==============================] - 3s 19ms/step - loss: 8.4658e-04 - val_loss: 0.0012\n", 820 | "Epoch 8/10\n", 821 | "130/130 [==============================] - 3s 19ms/step - loss: 7.0317e-04 - val_loss: 0.0016\n", 822 | "Epoch 9/10\n", 823 | "130/130 [==============================] - 3s 20ms/step - loss: 6.8117e-04 - val_loss: 0.0014\n", 824 | "Epoch 10/10\n", 825 | "130/130 [==============================] - 3s 20ms/step - loss: 6.4499e-04 - val_loss: 9.2790e-04\n", 826 | "130/130 [==============================] - 1s 7ms/step - loss: 0.0093\n", 827 | "Epoch 1/10\n", 828 | "130/130 [==============================] - 6s 23ms/step - loss: 0.0140 - val_loss: 6.1009e-04\n", 829 | "Epoch 2/10\n", 830 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0029 - val_loss: 3.5661e-04\n", 831 | "Epoch 3/10\n", 832 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0028 - val_loss: 4.1601e-04\n", 833 | "Epoch 4/10\n", 834 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0026 - val_loss: 1.4354e-04\n", 835 | "Epoch 5/10\n", 836 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0023 - val_loss: 2.6037e-04\n", 837 | "Epoch 6/10\n", 838 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0022 - val_loss: 5.0231e-04\n", 839 | "Epoch 7/10\n", 840 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0023 - val_loss: 1.4798e-04\n", 841 | "Epoch 8/10\n", 842 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0020 - val_loss: 1.6298e-04\n", 843 | "Epoch 9/10\n", 844 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0018 - val_loss: 1.5584e-04\n", 845 | "Epoch 10/10\n", 846 | "130/130 [==============================] - 2s 18ms/step - loss: 0.0018 - val_loss: 1.3824e-04\n", 847 | "130/130 [==============================] - 1s 6ms/step - loss: 1.3508e-04\n", 848 | "Epoch 1/10\n", 849 | "130/130 [==============================] - 6s 24ms/step - loss: 0.1327 - val_loss: 0.0152\n", 850 | "Epoch 2/10\n", 851 | "130/130 [==============================] - 2s 19ms/step - loss: 0.1190 - val_loss: 0.0130\n", 852 | "Epoch 3/10\n", 853 | "130/130 [==============================] - 2s 19ms/step - loss: 0.1055 - val_loss: 0.0108\n", 854 | "Epoch 4/10\n", 855 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0930 - val_loss: 0.0088\n", 856 | "Epoch 5/10\n", 857 | "130/130 [==============================] - 3s 19ms/step - loss: 0.0805 - val_loss: 0.0070\n", 858 | "Epoch 6/10\n", 859 | "130/130 [==============================] - 3s 19ms/step - loss: 0.0690 - val_loss: 0.0054\n", 860 | "Epoch 7/10\n", 861 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0570 - val_loss: 0.0040\n", 862 | "Epoch 8/10\n", 863 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0476 - val_loss: 0.0029\n", 864 | "Epoch 9/10\n", 865 | "130/130 [==============================] - 3s 19ms/step - loss: 0.0380 - val_loss: 0.0020\n", 866 | "Epoch 10/10\n", 867 | "130/130 [==============================] - 3s 20ms/step - loss: 0.0298 - val_loss: 0.0014\n", 868 | "130/130 [==============================] - 1s 7ms/step - loss: 0.0926\n", 869 | "Epoch 1/10\n", 870 | "130/130 [==============================] - 6s 26ms/step - loss: 0.1676 - val_loss: 0.0062\n", 871 | "Epoch 2/10\n", 872 | "130/130 [==============================] - 3s 19ms/step - loss: 0.1418 - val_loss: 0.0047\n", 873 | "Epoch 3/10\n", 874 | "130/130 [==============================] - 3s 20ms/step - loss: 0.1201 - val_loss: 0.0034\n", 875 | "Epoch 4/10\n", 876 | "130/130 [==============================] - 3s 19ms/step - loss: 0.1034 - val_loss: 0.0023\n", 877 | "Epoch 5/10\n", 878 | "130/130 [==============================] - 3s 20ms/step - loss: 0.0823 - val_loss: 0.0014\n", 879 | "Epoch 6/10\n", 880 | "130/130 [==============================] - 3s 20ms/step - loss: 0.0659 - val_loss: 8.7395e-04\n", 881 | "Epoch 7/10\n", 882 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0519 - val_loss: 6.4540e-04\n", 883 | "Epoch 8/10\n", 884 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0410 - val_loss: 7.2971e-04\n", 885 | "Epoch 9/10\n", 886 | "130/130 [==============================] - 2s 19ms/step - loss: 0.0296 - val_loss: 0.0011\n", 887 | "Epoch 10/10\n", 888 | "130/130 [==============================] - 3s 20ms/step - loss: 0.0234 - val_loss: 0.0017\n", 889 | "130/130 [==============================] - 1s 7ms/step - loss: 8.2772e-04\n", 890 | "Epoch 1/8\n", 891 | "104/104 [==============================] - 5s 25ms/step - loss: 0.0041 - val_loss: 0.0011\n", 892 | "Epoch 2/8\n", 893 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0012 - val_loss: 9.3332e-04\n", 894 | "Epoch 3/8\n", 895 | "104/104 [==============================] - 2s 19ms/step - loss: 9.8285e-04 - val_loss: 8.4572e-04\n", 896 | "Epoch 4/8\n", 897 | "104/104 [==============================] - 2s 20ms/step - loss: 9.3753e-04 - val_loss: 9.7374e-04\n", 898 | "Epoch 5/8\n", 899 | "104/104 [==============================] - 2s 19ms/step - loss: 8.6342e-04 - val_loss: 8.9776e-04\n", 900 | "Epoch 6/8\n", 901 | "104/104 [==============================] - 2s 19ms/step - loss: 8.4445e-04 - val_loss: 0.0011\n", 902 | "Epoch 7/8\n", 903 | "104/104 [==============================] - 2s 19ms/step - loss: 7.8490e-04 - val_loss: 5.4684e-04\n", 904 | "Epoch 8/8\n", 905 | "104/104 [==============================] - 2s 19ms/step - loss: 6.7601e-04 - val_loss: 5.3758e-04\n", 906 | "104/104 [==============================] - 1s 6ms/step - loss: 0.0045\n", 907 | "Epoch 1/8\n", 908 | "104/104 [==============================] - 6s 25ms/step - loss: 0.0162 - val_loss: 0.0028\n", 909 | "Epoch 2/8\n", 910 | "104/104 [==============================] - 2s 20ms/step - loss: 0.0035 - val_loss: 6.2902e-04\n", 911 | "Epoch 3/8\n", 912 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0028 - val_loss: 3.7858e-04\n", 913 | "Epoch 4/8\n", 914 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0028 - val_loss: 3.3770e-04\n", 915 | "Epoch 5/8\n", 916 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0028 - val_loss: 4.2632e-04\n", 917 | "Epoch 6/8\n", 918 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0024 - val_loss: 2.2002e-04\n", 919 | "Epoch 7/8\n", 920 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0026 - val_loss: 4.0730e-04\n", 921 | "Epoch 8/8\n", 922 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0021 - val_loss: 1.6472e-04\n", 923 | "104/104 [==============================] - 1s 6ms/step - loss: 1.4469e-04\n", 924 | "Epoch 1/8\n", 925 | "104/104 [==============================] - 5s 27ms/step - loss: 0.0387 - val_loss: 0.0030\n", 926 | "Epoch 2/8\n", 927 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0350 - val_loss: 0.0022\n", 928 | "Epoch 3/8\n", 929 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0287 - val_loss: 0.0016\n", 930 | "Epoch 4/8\n", 931 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0245 - val_loss: 0.0012\n", 932 | "Epoch 5/8\n", 933 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0203 - val_loss: 8.2166e-04\n", 934 | "Epoch 6/8\n", 935 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0170 - val_loss: 6.1919e-04\n", 936 | "Epoch 7/8\n", 937 | "104/104 [==============================] - 2s 20ms/step - loss: 0.0137 - val_loss: 5.3654e-04\n", 938 | "Epoch 8/8\n", 939 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0118 - val_loss: 5.5950e-04\n", 940 | "104/104 [==============================] - 1s 6ms/step - loss: 0.0437\n", 941 | "Epoch 1/8\n", 942 | "104/104 [==============================] - 5s 25ms/step - loss: 0.4360 - val_loss: 0.0241\n", 943 | "Epoch 2/8\n", 944 | "104/104 [==============================] - 2s 19ms/step - loss: 0.4077 - val_loss: 0.0217\n", 945 | "Epoch 3/8\n", 946 | "104/104 [==============================] - 2s 19ms/step - loss: 0.3787 - val_loss: 0.0192\n", 947 | "Epoch 4/8\n", 948 | "104/104 [==============================] - 2s 19ms/step - loss: 0.3537 - val_loss: 0.0168\n", 949 | "Epoch 5/8\n", 950 | "104/104 [==============================] - 2s 19ms/step - loss: 0.3256 - val_loss: 0.0145\n", 951 | "Epoch 6/8\n", 952 | "104/104 [==============================] - 2s 19ms/step - loss: 0.2958 - val_loss: 0.0123\n", 953 | "Epoch 7/8\n", 954 | "104/104 [==============================] - 2s 19ms/step - loss: 0.2700 - val_loss: 0.0101\n", 955 | "Epoch 8/8\n", 956 | "104/104 [==============================] - 2s 19ms/step - loss: 0.2415 - val_loss: 0.0082\n", 957 | "104/104 [==============================] - 1s 7ms/step - loss: 0.0798\n", 958 | "Epoch 1/10\n", 959 | "104/104 [==============================] - 6s 25ms/step - loss: 0.0048 - val_loss: 0.0033\n", 960 | "Epoch 2/10\n", 961 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0012 - val_loss: 0.0020\n", 962 | "Epoch 3/10\n", 963 | "104/104 [==============================] - 2s 19ms/step - loss: 0.0012 - val_loss: 0.0022\n", 964 | "Epoch 4/10\n", 965 | "104/104 [==============================] - 2s 19ms/step - loss: 9.3055e-04 - val_loss: 0.0019\n", 966 | "Epoch 5/10\n", 967 | "104/104 [==============================] - 2s 19ms/step - loss: 8.9744e-04 - val_loss: 0.0021\n", 968 | "Epoch 6/10\n", 969 | "104/104 [==============================] - 2s 19ms/step - loss: 8.1779e-04 - val_loss: 0.0014\n", 970 | "Epoch 7/10\n", 971 | "104/104 [==============================] - 2s 23ms/step - loss: 8.1245e-04 - val_loss: 0.0020\n", 972 | "Epoch 8/10\n", 973 | "104/104 [==============================] - 2s 24ms/step - loss: 8.0051e-04 - val_loss: 0.0022\n", 974 | "Epoch 9/10\n", 975 | "104/104 [==============================] - 2s 21ms/step - loss: 6.9432e-04 - val_loss: 0.0015\n", 976 | "Epoch 10/10\n", 977 | "104/104 [==============================] - 2s 22ms/step - loss: 6.2016e-04 - val_loss: 0.0013\n", 978 | "104/104 [==============================] - 1s 7ms/step - loss: 0.0104\n", 979 | "Epoch 1/10\n", 980 | "104/104 [==============================] - 6s 28ms/step - loss: 0.0130 - val_loss: 4.6528e-04\n", 981 | "Epoch 2/10\n", 982 | "104/104 [==============================] - 2s 20ms/step - loss: 0.0031 - val_loss: 4.5892e-04\n", 983 | "Epoch 3/10\n", 984 | "104/104 [==============================] - 2s 20ms/step - loss: 0.0028 - val_loss: 3.2218e-04\n", 985 | "Epoch 4/10\n", 986 | "104/104 [==============================] - 2s 20ms/step - loss: 0.0027 - val_loss: 1.8599e-04\n", 987 | "Epoch 5/10\n", 988 | "104/104 [==============================] - 2s 22ms/step - loss: 0.0025 - val_loss: 1.9228e-04\n", 989 | "Epoch 6/10\n", 990 | "104/104 [==============================] - 2s 22ms/step - loss: 0.0027 - val_loss: 1.8521e-04\n", 991 | "Epoch 7/10\n", 992 | "104/104 [==============================] - 2s 22ms/step - loss: 0.0024 - val_loss: 1.5056e-04\n", 993 | "Epoch 8/10\n", 994 | "104/104 [==============================] - 2s 23ms/step - loss: 0.0020 - val_loss: 3.5268e-04\n", 995 | "Epoch 9/10\n", 996 | "104/104 [==============================] - 2s 21ms/step - loss: 0.0021 - val_loss: 2.0168e-04\n", 997 | "Epoch 10/10\n", 998 | "104/104 [==============================] - 2s 23ms/step - loss: 0.0020 - val_loss: 1.3420e-04\n", 999 | "104/104 [==============================] - 1s 6ms/step - loss: 1.5619e-04\n", 1000 | "Epoch 1/10\n", 1001 | "104/104 [==============================] - 5s 25ms/step - loss: 0.1901 - val_loss: 0.0253\n", 1002 | "Epoch 2/10\n", 1003 | "104/104 [==============================] - 2s 19ms/step - loss: 0.1784 - val_loss: 0.0230\n", 1004 | "Epoch 3/10\n", 1005 | "104/104 [==============================] - 2s 21ms/step - loss: 0.1643 - val_loss: 0.0209\n", 1006 | "Epoch 4/10\n", 1007 | "104/104 [==============================] - 2s 20ms/step - loss: 0.1531 - val_loss: 0.0187\n", 1008 | "Epoch 5/10\n", 1009 | "104/104 [==============================] - 2s 22ms/step - loss: 0.1419 - val_loss: 0.0166\n", 1010 | "Epoch 6/10\n", 1011 | "104/104 [==============================] - 2s 20ms/step - loss: 0.1297 - val_loss: 0.0145\n", 1012 | "Epoch 7/10\n", 1013 | "104/104 [==============================] - 2s 21ms/step - loss: 0.1159 - val_loss: 0.0126\n", 1014 | "Epoch 8/10\n", 1015 | "104/104 [==============================] - 2s 21ms/step - loss: 0.1060 - val_loss: 0.0108\n", 1016 | "Epoch 9/10\n", 1017 | "104/104 [==============================] - 3s 28ms/step - loss: 0.0945 - val_loss: 0.0091\n", 1018 | "Epoch 10/10\n", 1019 | "104/104 [==============================] - 3s 25ms/step - loss: 0.0833 - val_loss: 0.0075\n", 1020 | "104/104 [==============================] - 1s 5ms/step - loss: 0.2128\n", 1021 | "Epoch 1/10\n", 1022 | "104/104 [==============================] - 6s 25ms/step - loss: 0.3825 - val_loss: 0.0222\n", 1023 | "Epoch 2/10\n", 1024 | "104/104 [==============================] - 2s 19ms/step - loss: 0.3530 - val_loss: 0.0197\n", 1025 | "Epoch 3/10\n", 1026 | "104/104 [==============================] - 2s 21ms/step - loss: 0.3224 - val_loss: 0.0173\n", 1027 | "Epoch 4/10\n", 1028 | "104/104 [==============================] - 2s 22ms/step - loss: 0.2969 - val_loss: 0.0149\n", 1029 | "Epoch 5/10\n", 1030 | "104/104 [==============================] - 2s 22ms/step - loss: 0.2642 - val_loss: 0.0126\n", 1031 | "Epoch 6/10\n", 1032 | "104/104 [==============================] - 2s 23ms/step - loss: 0.2371 - val_loss: 0.0104\n", 1033 | "Epoch 7/10\n", 1034 | "104/104 [==============================] - 3s 24ms/step - loss: 0.2087 - val_loss: 0.0084\n", 1035 | "Epoch 8/10\n", 1036 | "104/104 [==============================] - 2s 23ms/step - loss: 0.1806 - val_loss: 0.0065\n", 1037 | "Epoch 9/10\n", 1038 | "104/104 [==============================] - 2s 22ms/step - loss: 0.1530 - val_loss: 0.0049\n", 1039 | "Epoch 10/10\n", 1040 | "104/104 [==============================] - 2s 22ms/step - loss: 0.1281 - val_loss: 0.0035\n", 1041 | "104/104 [==============================] - 1s 6ms/step - loss: 0.0401\n", 1042 | "Epoch 1/8\n", 1043 | "207/207 [==============================] - 7s 21ms/step - loss: 0.0069 - val_loss: 2.0161e-04\n", 1044 | "Epoch 2/8\n", 1045 | "207/207 [==============================] - 4s 19ms/step - loss: 0.0019 - val_loss: 3.6436e-04\n", 1046 | "Epoch 3/8\n", 1047 | "207/207 [==============================] - 4s 20ms/step - loss: 0.0017 - val_loss: 1.9528e-04\n", 1048 | "Epoch 4/8\n", 1049 | "207/207 [==============================] - 4s 20ms/step - loss: 0.0016 - val_loss: 2.2016e-04\n", 1050 | "Epoch 5/8\n" 1051 | ] 1052 | }, 1053 | { 1054 | "name": "stdout", 1055 | "output_type": "stream", 1056 | "text": [ 1057 | "207/207 [==============================] - 4s 20ms/step - loss: 0.0014 - val_loss: 2.0823e-04\n", 1058 | "Epoch 6/8\n", 1059 | "207/207 [==============================] - 4s 20ms/step - loss: 0.0014 - val_loss: 1.4749e-04\n", 1060 | "Epoch 7/8\n", 1061 | "207/207 [==============================] - 4s 20ms/step - loss: 0.0013 - val_loss: 1.3235e-04\n", 1062 | "Epoch 8/8\n", 1063 | "207/207 [==============================] - 4s 20ms/step - loss: 0.0012 - val_loss: 1.1994e-04\n" 1064 | ] 1065 | } 1066 | ], 1067 | "source": [ 1068 | "grid_search = grid_search.fit(trainX,trainY)" 1069 | ] 1070 | }, 1071 | { 1072 | "cell_type": "code", 1073 | "execution_count": 29, 1074 | "id": "a9e26e10", 1075 | "metadata": {}, 1076 | "outputs": [ 1077 | { 1078 | "data": { 1079 | "text/plain": [ 1080 | "{'batch_size': 20, 'epochs': 8, 'optimizer': 'adam'}" 1081 | ] 1082 | }, 1083 | "execution_count": 29, 1084 | "metadata": {}, 1085 | "output_type": "execute_result" 1086 | } 1087 | ], 1088 | "source": [ 1089 | "grid_search.best_params_" 1090 | ] 1091 | }, 1092 | { 1093 | "cell_type": "code", 1094 | "execution_count": 30, 1095 | "id": "d6851ffc", 1096 | "metadata": {}, 1097 | "outputs": [], 1098 | "source": [ 1099 | "my_model=grid_search.best_estimator_.model" 1100 | ] 1101 | }, 1102 | { 1103 | "cell_type": "code", 1104 | "execution_count": 31, 1105 | "id": "9f0b2e50", 1106 | "metadata": {}, 1107 | "outputs": [ 1108 | { 1109 | "data": { 1110 | "text/plain": [ 1111 | "" 1112 | ] 1113 | }, 1114 | "execution_count": 31, 1115 | "metadata": {}, 1116 | "output_type": "execute_result" 1117 | } 1118 | ], 1119 | "source": [ 1120 | "my_model" 1121 | ] 1122 | }, 1123 | { 1124 | "cell_type": "code", 1125 | "execution_count": 32, 1126 | "id": "eeb97d64", 1127 | "metadata": {}, 1128 | "outputs": [], 1129 | "source": [ 1130 | "prediction=my_model.predict(testX)" 1131 | ] 1132 | }, 1133 | { 1134 | "cell_type": "code", 1135 | "execution_count": 33, 1136 | "id": "8699c0d3", 1137 | "metadata": {}, 1138 | "outputs": [ 1139 | { 1140 | "name": "stdout", 1141 | "output_type": "stream", 1142 | "text": [ 1143 | "prediction\n", 1144 | " [[0.36429983]\n", 1145 | " [0.36749688]\n", 1146 | " [0.37060487]\n", 1147 | " ...\n", 1148 | " [0.1306538 ]\n", 1149 | " [0.13263184]\n", 1150 | " [0.13514471]]\n", 1151 | "\n", 1152 | "Prediction Shape- (1011, 1)\n" 1153 | ] 1154 | } 1155 | ], 1156 | "source": [ 1157 | "print(\"prediction\\n\", prediction)\n", 1158 | "print(\"\\nPrediction Shape-\",prediction.shape)" 1159 | ] 1160 | }, 1161 | { 1162 | "cell_type": "code", 1163 | "execution_count": 34, 1164 | "id": "2be6090a", 1165 | "metadata": {}, 1166 | "outputs": [ 1167 | { 1168 | "data": { 1169 | "text/plain": [ 1170 | "(1011, 1)" 1171 | ] 1172 | }, 1173 | "execution_count": 34, 1174 | "metadata": {}, 1175 | "output_type": "execute_result" 1176 | } 1177 | ], 1178 | "source": [ 1179 | "prediction.shape" 1180 | ] 1181 | }, 1182 | { 1183 | "cell_type": "code", 1184 | "execution_count": 35, 1185 | "id": "c8c654a6", 1186 | "metadata": {}, 1187 | "outputs": [ 1188 | { 1189 | "ename": "ValueError", 1190 | "evalue": "non-broadcastable output operand with shape (1011,1) doesn't match the broadcast shape (1011,5)", 1191 | "output_type": "error", 1192 | "traceback": [ 1193 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 1194 | "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", 1195 | "\u001b[1;32mC:\\Users\\SUJAN~1.ISL\\AppData\\Local\\Temp/ipykernel_11732/1176355301.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mscaler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minverse_transform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprediction\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 1196 | "\u001b[1;32m~\\.conda\\envs\\env1\\lib\\site-packages\\sklearn\\preprocessing\\_data.py\u001b[0m in \u001b[0;36minverse_transform\u001b[1;34m(self, X)\u001b[0m\n\u001b[0;32m 527\u001b[0m )\n\u001b[0;32m 528\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 529\u001b[1;33m \u001b[0mX\u001b[0m \u001b[1;33m-=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmin_\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 530\u001b[0m \u001b[0mX\u001b[0m \u001b[1;33m/=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mscale_\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 531\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 1197 | "\u001b[1;31mValueError\u001b[0m: non-broadcastable output operand with shape (1011,1) doesn't match the broadcast shape (1011,5)" 1198 | ] 1199 | } 1200 | ], 1201 | "source": [ 1202 | "scaler.inverse_transform(prediction)" 1203 | ] 1204 | }, 1205 | { 1206 | "cell_type": "code", 1207 | "execution_count": 36, 1208 | "id": "44862c61", 1209 | "metadata": {}, 1210 | "outputs": [], 1211 | "source": [ 1212 | "prediction_copies_array = np.repeat(prediction,5, axis=-1)" 1213 | ] 1214 | }, 1215 | { 1216 | "cell_type": "code", 1217 | "execution_count": 37, 1218 | "id": "1dbd500f", 1219 | "metadata": {}, 1220 | "outputs": [ 1221 | { 1222 | "data": { 1223 | "text/plain": [ 1224 | "(1011, 5)" 1225 | ] 1226 | }, 1227 | "execution_count": 37, 1228 | "metadata": {}, 1229 | "output_type": "execute_result" 1230 | } 1231 | ], 1232 | "source": [ 1233 | "prediction_copies_array.shape" 1234 | ] 1235 | }, 1236 | { 1237 | "cell_type": "code", 1238 | "execution_count": 38, 1239 | "id": "3b00bd6e", 1240 | "metadata": {}, 1241 | "outputs": [ 1242 | { 1243 | "data": { 1244 | "text/plain": [ 1245 | "array([[0.36429983, 0.36429983, 0.36429983, 0.36429983, 0.36429983],\n", 1246 | " [0.36749688, 0.36749688, 0.36749688, 0.36749688, 0.36749688],\n", 1247 | " [0.37060487, 0.37060487, 0.37060487, 0.37060487, 0.37060487],\n", 1248 | " ...,\n", 1249 | " [0.1306538 , 0.1306538 , 0.1306538 , 0.1306538 , 0.1306538 ],\n", 1250 | " [0.13263184, 0.13263184, 0.13263184, 0.13263184, 0.13263184],\n", 1251 | " [0.13514471, 0.13514471, 0.13514471, 0.13514471, 0.13514471]],\n", 1252 | " dtype=float32)" 1253 | ] 1254 | }, 1255 | "execution_count": 38, 1256 | "metadata": {}, 1257 | "output_type": "execute_result" 1258 | } 1259 | ], 1260 | "source": [ 1261 | "prediction_copies_array" 1262 | ] 1263 | }, 1264 | { 1265 | "cell_type": "code", 1266 | "execution_count": 39, 1267 | "id": "84f2780a", 1268 | "metadata": {}, 1269 | "outputs": [], 1270 | "source": [ 1271 | "pred=scaler.inverse_transform(np.reshape(prediction_copies_array,(len(prediction),5)))[:,0]" 1272 | ] 1273 | }, 1274 | { 1275 | "cell_type": "code", 1276 | "execution_count": 40, 1277 | "id": "2c86afce", 1278 | "metadata": {}, 1279 | "outputs": [ 1280 | { 1281 | "data": { 1282 | "text/plain": [ 1283 | "array([181.9501 , 183.09119 , 184.20052 , ..., 98.556435, 99.26244 ,\n", 1284 | " 100.15935 ], dtype=float32)" 1285 | ] 1286 | }, 1287 | "execution_count": 40, 1288 | "metadata": {}, 1289 | "output_type": "execute_result" 1290 | } 1291 | ], 1292 | "source": [ 1293 | "pred" 1294 | ] 1295 | }, 1296 | { 1297 | "cell_type": "code", 1298 | "execution_count": 41, 1299 | "id": "4ec05dff", 1300 | "metadata": {}, 1301 | "outputs": [], 1302 | "source": [ 1303 | "original_copies_array = np.repeat(testY,5, axis=-1)\n", 1304 | "\n", 1305 | "original_copies_array.shape\n", 1306 | "\n", 1307 | "original=scaler.inverse_transform(np.reshape(original_copies_array,(len(testY),5)))[:,0]" 1308 | ] 1309 | }, 1310 | { 1311 | "cell_type": "code", 1312 | "execution_count": 42, 1313 | "id": "442e0222", 1314 | "metadata": {}, 1315 | "outputs": [ 1316 | { 1317 | "data": { 1318 | "text/plain": [ 1319 | "array([181.9501 , 183.09119 , 184.20052 , ..., 98.556435, 99.26244 ,\n", 1320 | " 100.15935 ], dtype=float32)" 1321 | ] 1322 | }, 1323 | "execution_count": 42, 1324 | "metadata": {}, 1325 | "output_type": "execute_result" 1326 | } 1327 | ], 1328 | "source": [ 1329 | "pred" 1330 | ] 1331 | }, 1332 | { 1333 | "cell_type": "code", 1334 | "execution_count": 43, 1335 | "id": "cecfd7bf", 1336 | "metadata": {}, 1337 | "outputs": [ 1338 | { 1339 | "name": "stdout", 1340 | "output_type": "stream", 1341 | "text": [ 1342 | "Pred Values-- [181.9501 183.09119 184.20052 ... 98.556435 99.26244 100.15935 ]\n", 1343 | "\n", 1344 | "Original Values-- [191.692307 193.461533 192.307693 ... 104.550003 105.290001 106. ]\n" 1345 | ] 1346 | } 1347 | ], 1348 | "source": [ 1349 | "print(\"Pred Values-- \" ,pred)\n", 1350 | "print(\"\\nOriginal Values-- \",original)" 1351 | ] 1352 | }, 1353 | { 1354 | "cell_type": "code", 1355 | "execution_count": null, 1356 | "id": "b1986d23", 1357 | "metadata": {}, 1358 | "outputs": [], 1359 | "source": [] 1360 | }, 1361 | { 1362 | "cell_type": "code", 1363 | "execution_count": 44, 1364 | "id": "07e37414", 1365 | "metadata": {}, 1366 | "outputs": [], 1367 | "source": [ 1368 | "import matplotlib.pyplot as plt" 1369 | ] 1370 | }, 1371 | { 1372 | "cell_type": "code", 1373 | "execution_count": 45, 1374 | "id": "bfa9b94b", 1375 | "metadata": {}, 1376 | "outputs": [ 1377 | { 1378 | "data": { 1379 | "image/png": "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60u+U6dOF1zD8ePHuffee1m8eDEhISGOc73xxhv06tWLL774gtjYWDp27EifPn0ICAjI13vgTuUzKdSvD/feC59/br329HRvPIZxkTt37hxt2rTh0KFDtGjRgr59+3L27FmWLVvGTTfd5NguKSkJsPpW3HLLLRw5coTz588XqJ18mzZt2L17N/PmzWPBggV06NCB5cuX4+eXaSpuli5dyuDBg/H09CQ4OJgePXqwevVq/v77b+666y78/f0BqF69umOf++67j5tvvjnXhHD77bfj5+dHo0aN+OijjwCrTuWGG264YNsVK1bQvXt3x/Wln2vevHnMnDmTd955B7CaFe/fv58WLVrk+31wl/KZFAAqVsx47uPjvjgMoyDy+R99cUuvU0hISKB///58/PHH3HnnnVStWtXxn7uzhx9+mCeeeIKBAweyaNEiXn755QKdr2LFilx//fVcf/31eHh4MHv27Gy/lAvqsssu46+//uLJJ5/E19c3222mTp1KREREpmW+vr54FuCfR1VlxowZNG/evEjxukP5rFMAqFQp43lamvviMIxSxN/fn3HjxvHuu+/i7+9PSEgI06dPB6wvwvXr1wMQFxfnqBeYMmVKgc7xzz//cOrUKQDOnz/Pli1baNiwIZUqVeLMmTOO7bp168b3339Pamoqx48fZ/HixXTs2JG+ffvy5ZdfkpCQAJCp+Gj48OFcddVV3HzzzaSkpBT+jbB17tyZxYsXs8eup0w/V//+/fnoo4+wBmqAtWvXFvlcJaX8JgXnO4WXXnJfHIZRyrRt25awsDCmTZvG1KlTmTRpEuHh4bRs2dJRofryyy9z00030b59ewIDAwt0/F27dtGjRw9at25N27ZtiYiI4IYbbqBGjRp07dqVVq1aMXLkSAYNGkRYWBjh4eH06tWLsWPHUqtWLQYMGMDAgQOJiIigTZs2jiKcdE888QRt27ZlyJAhpBXxH8KgoCAmTJjA9ddfT3h4OLfccgsAL774IsnJyYSFhdGyZUtefPHFIp2nJEl6JiuNIiIitNCT7HzzDQwZkvG6FL8PRtm2devWUlEWbVycsvv9EZE1qhqR3fbl907BblXgYFeQGYZhlGflNymEhcGHH8KIEdbrEyfcG49hGMZFoNwmhfkLhIivHmFzixutBWZqT8MwjPLbJPWdd2DNGvi/lI78RHVqmKRgGIZR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\n", 1380 | "text/plain": [ 1381 | "
" 1382 | ] 1383 | }, 1384 | "metadata": { 1385 | "needs_background": "light" 1386 | }, 1387 | "output_type": "display_data" 1388 | } 1389 | ], 1390 | "source": [ 1391 | "plt.plot(original, color = 'red', label = 'Real Stock Price')\n", 1392 | "plt.plot(pred, color = 'blue', label = 'Predicted Stock Price')\n", 1393 | "plt.title(' Stock Price Prediction')\n", 1394 | "plt.xlabel('Time')\n", 1395 | "plt.ylabel(' Stock Price')\n", 1396 | "plt.legend()\n", 1397 | "plt.show()" 1398 | ] 1399 | }, 1400 | { 1401 | "cell_type": "code", 1402 | "execution_count": null, 1403 | "id": "441ddb80", 1404 | "metadata": {}, 1405 | "outputs": [], 1406 | "source": [] 1407 | }, 1408 | { 1409 | "cell_type": "code", 1410 | "execution_count": 99, 1411 | "id": "3a095e22", 1412 | "metadata": {}, 1413 | "outputs": [], 1414 | "source": [ 1415 | "df_30_days_past=df.iloc[-30:,:]" 1416 | ] 1417 | }, 1418 | { 1419 | "cell_type": "code", 1420 | "execution_count": 100, 1421 | "id": "451dafea", 1422 | "metadata": {}, 1423 | "outputs": [ 1424 | { 1425 | "data": { 1426 | "text/html": [ 1427 | "
\n", 1428 | "\n", 1441 | "\n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | " \n", 1535 | " \n", 1536 | " \n", 1537 | " \n", 1538 | " \n", 1539 | " \n", 1540 | " \n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | " \n", 1593 | " \n", 1594 | " \n", 1595 | " \n", 1596 | " \n", 1597 | " \n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | " \n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | " \n", 1609 | " \n", 1610 | " \n", 1611 | " \n", 1612 | " \n", 1613 | " \n", 1614 | " \n", 1615 | " \n", 1616 | " \n", 1617 | " \n", 1618 | " \n", 1619 | " \n", 1620 | " \n", 1621 | " \n", 1622 | " \n", 1623 | " \n", 1624 | " \n", 1625 | " \n", 1626 | " \n", 1627 | " \n", 1628 | " \n", 1629 | " \n", 1630 | " \n", 1631 | " \n", 1632 | " \n", 1633 | " \n", 1634 | " \n", 1635 | " \n", 1636 | " \n", 1637 | " \n", 1638 | " \n", 1639 | " \n", 1640 | " \n", 1641 | " \n", 1642 | " \n", 1643 | " \n", 1644 | " \n", 1645 | " \n", 1646 | " \n", 1647 | " \n", 1648 | " \n", 1649 | " \n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | "
OpenHighLowCloseAdj Close
Date
2021-08-18101.080002103.470001100.760002101.410004101.242561
2021-08-19100.000000100.82000098.59999899.41999899.255844
2021-08-2099.589996100.66999899.099998100.05000399.884804
2021-08-23100.599998101.480003100.269997100.970001100.803284
2021-08-24101.290001103.510002101.059998103.269997103.099487
2021-08-25103.360001105.129997102.550003104.699997104.527122
2021-08-26104.459999104.620003102.839996103.379997103.209305
2021-08-27103.900002106.150002103.900002106.089996105.914825
2021-08-30106.330002106.459999104.800003105.190002105.016312
2021-08-31104.940002106.360001104.459999105.410004105.235954
2021-09-01105.360001105.470001103.260002103.660004103.488846
2021-09-02104.000000106.339996103.980003106.260002106.084557
2021-09-03106.000000107.360001104.080002104.750000104.577042
2021-09-07104.500000104.940002102.309998103.290001103.119453
2021-09-08102.949997104.730003100.419998102.580002102.410629
2021-09-09102.360001104.919998102.110001103.290001103.119453
2021-09-10103.290001103.949997101.779999102.000000101.831581
2021-09-13102.650002104.860001102.019997104.459999104.287521
2021-09-14104.540001104.550003100.070000100.379997100.214256
2021-09-15100.790001102.470001100.690002102.160004101.991325
2021-09-16102.389999102.699997100.820000101.339996101.172668
2021-09-17101.150002101.860001100.129997100.470001100.304115
2021-09-2098.50000099.87000397.26999799.80999899.645195
2021-09-2199.90000299.98999896.20999996.82000096.660133
2021-09-2297.66999899.02999997.66000498.54000198.377296
2021-09-2399.529999104.08000299.519997102.959999102.789993
2021-09-24102.660004104.199997102.599998103.800003103.709198
2021-09-27104.550003106.330002104.389999105.349998105.257835
2021-09-28105.290001106.750000104.730003105.730003105.637512
2021-09-29106.000000107.000000105.309998106.279999106.187027
\n", 1703 | "
" 1704 | ], 1705 | "text/plain": [ 1706 | " Open High Low Close Adj Close\n", 1707 | "Date \n", 1708 | "2021-08-18 101.080002 103.470001 100.760002 101.410004 101.242561\n", 1709 | "2021-08-19 100.000000 100.820000 98.599998 99.419998 99.255844\n", 1710 | "2021-08-20 99.589996 100.669998 99.099998 100.050003 99.884804\n", 1711 | "2021-08-23 100.599998 101.480003 100.269997 100.970001 100.803284\n", 1712 | "2021-08-24 101.290001 103.510002 101.059998 103.269997 103.099487\n", 1713 | "2021-08-25 103.360001 105.129997 102.550003 104.699997 104.527122\n", 1714 | "2021-08-26 104.459999 104.620003 102.839996 103.379997 103.209305\n", 1715 | "2021-08-27 103.900002 106.150002 103.900002 106.089996 105.914825\n", 1716 | "2021-08-30 106.330002 106.459999 104.800003 105.190002 105.016312\n", 1717 | "2021-08-31 104.940002 106.360001 104.459999 105.410004 105.235954\n", 1718 | "2021-09-01 105.360001 105.470001 103.260002 103.660004 103.488846\n", 1719 | "2021-09-02 104.000000 106.339996 103.980003 106.260002 106.084557\n", 1720 | "2021-09-03 106.000000 107.360001 104.080002 104.750000 104.577042\n", 1721 | "2021-09-07 104.500000 104.940002 102.309998 103.290001 103.119453\n", 1722 | "2021-09-08 102.949997 104.730003 100.419998 102.580002 102.410629\n", 1723 | "2021-09-09 102.360001 104.919998 102.110001 103.290001 103.119453\n", 1724 | "2021-09-10 103.290001 103.949997 101.779999 102.000000 101.831581\n", 1725 | "2021-09-13 102.650002 104.860001 102.019997 104.459999 104.287521\n", 1726 | "2021-09-14 104.540001 104.550003 100.070000 100.379997 100.214256\n", 1727 | "2021-09-15 100.790001 102.470001 100.690002 102.160004 101.991325\n", 1728 | "2021-09-16 102.389999 102.699997 100.820000 101.339996 101.172668\n", 1729 | "2021-09-17 101.150002 101.860001 100.129997 100.470001 100.304115\n", 1730 | "2021-09-20 98.500000 99.870003 97.269997 99.809998 99.645195\n", 1731 | "2021-09-21 99.900002 99.989998 96.209999 96.820000 96.660133\n", 1732 | "2021-09-22 97.669998 99.029999 97.660004 98.540001 98.377296\n", 1733 | "2021-09-23 99.529999 104.080002 99.519997 102.959999 102.789993\n", 1734 | "2021-09-24 102.660004 104.199997 102.599998 103.800003 103.709198\n", 1735 | "2021-09-27 104.550003 106.330002 104.389999 105.349998 105.257835\n", 1736 | "2021-09-28 105.290001 106.750000 104.730003 105.730003 105.637512\n", 1737 | "2021-09-29 106.000000 107.000000 105.309998 106.279999 106.187027" 1738 | ] 1739 | }, 1740 | "execution_count": 100, 1741 | "metadata": {}, 1742 | "output_type": "execute_result" 1743 | } 1744 | ], 1745 | "source": [ 1746 | "df_30_days_past" 1747 | ] 1748 | }, 1749 | { 1750 | "cell_type": "code", 1751 | "execution_count": 103, 1752 | "id": "92497be0", 1753 | "metadata": {}, 1754 | "outputs": [ 1755 | { 1756 | "data": { 1757 | "text/plain": [ 1758 | "(30, 4)" 1759 | ] 1760 | }, 1761 | "execution_count": 103, 1762 | "metadata": {}, 1763 | "output_type": "execute_result" 1764 | } 1765 | ], 1766 | "source": [ 1767 | "df_30_days_future=pd.read_csv(\"test.csv\",parse_dates=[\"Date\"],index_col=[0])\n", 1768 | "df_30_days_future.shape" 1769 | ] 1770 | }, 1771 | { 1772 | "cell_type": "code", 1773 | "execution_count": 112, 1774 | "id": "7004371c", 1775 | "metadata": {}, 1776 | "outputs": [ 1777 | { 1778 | "data": { 1779 | "text/html": [ 1780 | "
\n", 1781 | "\n", 1794 | "\n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | " \n", 1805 | " \n", 1806 | " \n", 1807 | " \n", 1808 | " \n", 1809 | " \n", 1810 | " \n", 1811 | " \n", 1812 | " \n", 1813 | " \n", 1814 | " \n", 1815 | " \n", 1816 | " \n", 1817 | " \n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \n", 1848 | " \n", 1849 | " \n", 1850 | " \n", 1851 | " \n", 1852 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | " \n", 1939 | " \n", 1940 | " \n", 1941 | " \n", 1942 | " \n", 1943 | " \n", 1944 | " \n", 1945 | " \n", 1946 | " \n", 1947 | " \n", 1948 | " \n", 1949 | " \n", 1950 | " \n", 1951 | " \n", 1952 | " \n", 1953 | " \n", 1954 | " \n", 1955 | " \n", 1956 | " \n", 1957 | " \n", 1958 | " \n", 1959 | " \n", 1960 | " \n", 1961 | " \n", 1962 | " \n", 1963 | " \n", 1964 | " \n", 1965 | " \n", 1966 | " \n", 1967 | " \n", 1968 | " \n", 1969 | " \n", 1970 | " \n", 1971 | " \n", 1972 | " \n", 1973 | " \n", 1974 | " \n", 1975 | " \n", 1976 | " \n", 1977 | " \n", 1978 | " \n", 1979 | " \n", 1980 | " \n", 1981 | " \n", 1982 | " \n", 1983 | " \n", 1984 | " \n", 1985 | " \n", 1986 | " \n", 1987 | " \n", 1988 | " \n", 1989 | " \n", 1990 | " \n", 1991 | " \n", 1992 | " \n", 1993 | " \n", 1994 | " \n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | "
OpenHighLowCloseAdj Close
Date
2021-09-300107.089996102.949997103.029999102.939865
2021-10-010106.389999103.669998105.820000105.727425
2021-10-040107.080002104.599998104.900002104.808235
2021-10-050106.000000103.750000104.900002104.808235
2021-10-060104.419998102.059998104.330002104.238731
2021-10-070106.529999104.330002105.510002105.417702
2021-10-080106.220001104.660004104.720001104.628387
2021-10-110105.760002103.970001104.080002103.988953
2021-10-120104.040001101.559998102.720001102.630142
2021-10-130103.199997101.180000102.360001102.270454
2021-10-140103.650002102.370003102.739998102.650116
2021-10-150105.900002103.190002104.410004104.318665
2021-10-180104.570000103.040001104.120003104.028915
2021-10-190104.970001103.580002104.730003104.638382
2021-10-200106.019997103.870003106.000000105.907272
2021-10-210106.389999103.010002103.150002103.059761
2021-10-220104.510002102.550003104.050003103.958977
2021-10-250105.989998103.330002105.300003105.207886
2021-10-260110.970001105.220001107.440002107.346008
2021-10-270108.279999103.690002103.849998103.759148
2021-10-280105.379997103.099998105.260002105.167915
2021-10-290105.239998104.120003104.870003104.778259
2021-11-010106.769997105.279999106.230003106.137070
2021-11-020107.139999105.300003106.690002106.596664
2021-11-030106.339996104.820000105.970001105.877296
2021-11-040106.400002104.290001105.209999105.117958
2021-11-050109.650002106.849998108.739998108.644867
2021-11-080110.309998108.320000108.419998108.325150
2021-11-090116.169998110.480003111.290001111.192642
2021-11-100112.680000108.110001108.959999108.864677
\n", 2056 | "
" 2057 | ], 2058 | "text/plain": [ 2059 | " Open High Low Close Adj Close\n", 2060 | "Date \n", 2061 | "2021-09-30 0 107.089996 102.949997 103.029999 102.939865\n", 2062 | "2021-10-01 0 106.389999 103.669998 105.820000 105.727425\n", 2063 | "2021-10-04 0 107.080002 104.599998 104.900002 104.808235\n", 2064 | "2021-10-05 0 106.000000 103.750000 104.900002 104.808235\n", 2065 | "2021-10-06 0 104.419998 102.059998 104.330002 104.238731\n", 2066 | "2021-10-07 0 106.529999 104.330002 105.510002 105.417702\n", 2067 | "2021-10-08 0 106.220001 104.660004 104.720001 104.628387\n", 2068 | "2021-10-11 0 105.760002 103.970001 104.080002 103.988953\n", 2069 | "2021-10-12 0 104.040001 101.559998 102.720001 102.630142\n", 2070 | "2021-10-13 0 103.199997 101.180000 102.360001 102.270454\n", 2071 | "2021-10-14 0 103.650002 102.370003 102.739998 102.650116\n", 2072 | "2021-10-15 0 105.900002 103.190002 104.410004 104.318665\n", 2073 | "2021-10-18 0 104.570000 103.040001 104.120003 104.028915\n", 2074 | "2021-10-19 0 104.970001 103.580002 104.730003 104.638382\n", 2075 | "2021-10-20 0 106.019997 103.870003 106.000000 105.907272\n", 2076 | "2021-10-21 0 106.389999 103.010002 103.150002 103.059761\n", 2077 | "2021-10-22 0 104.510002 102.550003 104.050003 103.958977\n", 2078 | "2021-10-25 0 105.989998 103.330002 105.300003 105.207886\n", 2079 | "2021-10-26 0 110.970001 105.220001 107.440002 107.346008\n", 2080 | "2021-10-27 0 108.279999 103.690002 103.849998 103.759148\n", 2081 | "2021-10-28 0 105.379997 103.099998 105.260002 105.167915\n", 2082 | "2021-10-29 0 105.239998 104.120003 104.870003 104.778259\n", 2083 | "2021-11-01 0 106.769997 105.279999 106.230003 106.137070\n", 2084 | "2021-11-02 0 107.139999 105.300003 106.690002 106.596664\n", 2085 | "2021-11-03 0 106.339996 104.820000 105.970001 105.877296\n", 2086 | "2021-11-04 0 106.400002 104.290001 105.209999 105.117958\n", 2087 | "2021-11-05 0 109.650002 106.849998 108.739998 108.644867\n", 2088 | "2021-11-08 0 110.309998 108.320000 108.419998 108.325150\n", 2089 | "2021-11-09 0 116.169998 110.480003 111.290001 111.192642\n", 2090 | "2021-11-10 0 112.680000 108.110001 108.959999 108.864677" 2091 | ] 2092 | }, 2093 | "execution_count": 112, 2094 | "metadata": {}, 2095 | "output_type": "execute_result" 2096 | } 2097 | ], 2098 | "source": [ 2099 | "df_30_days_future" 2100 | ] 2101 | }, 2102 | { 2103 | "cell_type": "code", 2104 | "execution_count": 104, 2105 | "id": "20277ef8", 2106 | "metadata": {}, 2107 | "outputs": [], 2108 | "source": [ 2109 | "df_30_days_future[\"Open\"]=0\n", 2110 | "df_30_days_future=df_30_days_future[[\"Open\",\"High\",\"Low\",\"Close\",\"Adj Close\"]]\n", 2111 | "old_scaled_array=scaler.transform(df_30_days_past)\n", 2112 | "new_scaled_array=scaler.transform(df_30_days_future)\n", 2113 | "new_scaled_df=pd.DataFrame(new_scaled_array)\n", 2114 | "new_scaled_df.iloc[:,0]=np.nan\n", 2115 | "full_df=pd.concat([pd.DataFrame(old_scaled_array),new_scaled_df]).reset_index().drop([\"index\"],axis=1)" 2116 | ] 2117 | }, 2118 | { 2119 | "cell_type": "code", 2120 | "execution_count": 105, 2121 | "id": "0dcb1ee5", 2122 | "metadata": {}, 2123 | "outputs": [ 2124 | { 2125 | "data": { 2126 | "text/plain": [ 2127 | "(60, 5)" 2128 | ] 2129 | }, 2130 | "execution_count": 105, 2131 | "metadata": {}, 2132 | "output_type": "execute_result" 2133 | } 2134 | ], 2135 | "source": [ 2136 | "full_df.shape" 2137 | ] 2138 | }, 2139 | { 2140 | "cell_type": "code", 2141 | "execution_count": 106, 2142 | "id": "88cfa224", 2143 | "metadata": {}, 2144 | "outputs": [ 2145 | { 2146 | "data": { 2147 | "text/html": [ 2148 | "
\n", 2149 | "\n", 2162 | "\n", 2163 | " \n", 2164 | " \n", 2165 | " \n", 2166 | " \n", 2167 | " \n", 2168 | " \n", 2169 | " \n", 2170 | " \n", 2171 | " \n", 2172 | " \n", 2173 | " \n", 2174 | " \n", 2175 | " \n", 2176 | " \n", 2177 | " \n", 2178 | " \n", 2179 | " \n", 2180 | " \n", 2181 | " \n", 2182 | " \n", 2183 | " \n", 2184 | " \n", 2185 | " \n", 2186 | " \n", 2187 | " \n", 2188 | " \n", 2189 | " \n", 2190 | " \n", 2191 | " \n", 2192 | " \n", 2193 | " \n", 2194 | " \n", 2195 | " \n", 2196 | " \n", 2197 | " \n", 2198 | " \n", 2199 | " \n", 2200 | " \n", 2201 | " \n", 2202 | " \n", 2203 | " \n", 2204 | " \n", 2205 | " \n", 2206 | " \n", 2207 | " \n", 2208 | " \n", 2209 | " \n", 2210 | " \n", 2211 | " \n", 2212 | " \n", 2213 | " \n", 2214 | " \n", 2215 | "
01234
55NaN0.1436400.1641620.1501350.349458
56NaN0.1527490.1712680.1599530.367565
57NaN0.1545990.1753490.1590630.365924
58NaN0.1710240.1813450.1670450.380645
59NaN0.1612420.1747660.1605650.368694
\n", 2216 | "
" 2217 | ], 2218 | "text/plain": [ 2219 | " 0 1 2 3 4\n", 2220 | "55 NaN 0.143640 0.164162 0.150135 0.349458\n", 2221 | "56 NaN 0.152749 0.171268 0.159953 0.367565\n", 2222 | "57 NaN 0.154599 0.175349 0.159063 0.365924\n", 2223 | "58 NaN 0.171024 0.181345 0.167045 0.380645\n", 2224 | "59 NaN 0.161242 0.174766 0.160565 0.368694" 2225 | ] 2226 | }, 2227 | "execution_count": 106, 2228 | "metadata": {}, 2229 | "output_type": "execute_result" 2230 | } 2231 | ], 2232 | "source": [ 2233 | "full_df.tail()" 2234 | ] 2235 | }, 2236 | { 2237 | "cell_type": "code", 2238 | "execution_count": 107, 2239 | "id": "e8cc462a", 2240 | "metadata": {}, 2241 | "outputs": [ 2242 | { 2243 | "data": { 2244 | "text/plain": [ 2245 | "(60, 5)" 2246 | ] 2247 | }, 2248 | "execution_count": 107, 2249 | "metadata": {}, 2250 | "output_type": "execute_result" 2251 | } 2252 | ], 2253 | "source": [ 2254 | "full_df.shape" 2255 | ] 2256 | }, 2257 | { 2258 | "cell_type": "code", 2259 | "execution_count": 114, 2260 | "id": "48bf070f", 2261 | "metadata": {}, 2262 | "outputs": [], 2263 | "source": [ 2264 | "full_df_scaled_array=full_df.values" 2265 | ] 2266 | }, 2267 | { 2268 | "cell_type": "code", 2269 | "execution_count": 115, 2270 | "id": "91fdcf82", 2271 | "metadata": {}, 2272 | "outputs": [ 2273 | { 2274 | "data": { 2275 | "text/plain": [ 2276 | "(60, 5)" 2277 | ] 2278 | }, 2279 | "execution_count": 115, 2280 | "metadata": {}, 2281 | "output_type": "execute_result" 2282 | } 2283 | ], 2284 | "source": [ 2285 | "full_df_scaled_array.shape" 2286 | ] 2287 | }, 2288 | { 2289 | "cell_type": "code", 2290 | "execution_count": 116, 2291 | "id": "547622aa", 2292 | "metadata": {}, 2293 | "outputs": [], 2294 | "source": [ 2295 | "all_data=[]\n", 2296 | "time_step=30\n", 2297 | "for i in range(time_step,len(full_df_scaled_array)):\n", 2298 | " data_x=[]\n", 2299 | " data_x.append(full_df_scaled_array[i-time_step:i,0:full_df_scaled_array.shape[1]])\n", 2300 | " data_x=np.array(data_x)\n", 2301 | " prediction=my_model.predict(data_x)\n", 2302 | " all_data.append(prediction)\n", 2303 | " full_df.iloc[i,0]=prediction" 2304 | ] 2305 | }, 2306 | { 2307 | "cell_type": "code", 2308 | "execution_count": 117, 2309 | "id": "05929d50", 2310 | "metadata": {}, 2311 | "outputs": [ 2312 | { 2313 | "data": { 2314 | "text/plain": [ 2315 | "[array([[0.1378213]], dtype=float32),\n", 2316 | " array([[0.13945529]], dtype=float32),\n", 2317 | " array([[0.14068112]], dtype=float32),\n", 2318 | " array([[0.14162877]], dtype=float32),\n", 2319 | " array([[0.14216018]], dtype=float32),\n", 2320 | " array([[0.14206707]], dtype=float32),\n", 2321 | " array([[0.1421535]], dtype=float32),\n", 2322 | " array([[0.14225037]], dtype=float32),\n", 2323 | " array([[0.14217126]], dtype=float32),\n", 2324 | " array([[0.14150538]], dtype=float32),\n", 2325 | " array([[0.14047278]], dtype=float32),\n", 2326 | " array([[0.13954498]], dtype=float32),\n", 2327 | " array([[0.13914707]], dtype=float32),\n", 2328 | " array([[0.13891666]], dtype=float32),\n", 2329 | " array([[0.13893819]], dtype=float32),\n", 2330 | " array([[0.13930015]], dtype=float32),\n", 2331 | " array([[0.13948296]], dtype=float32),\n", 2332 | " array([[0.13946058]], dtype=float32),\n", 2333 | " array([[0.13963053]], dtype=float32),\n", 2334 | " array([[0.14062819]], dtype=float32),\n", 2335 | " array([[0.14126904]], dtype=float32),\n", 2336 | " array([[0.14153312]], dtype=float32),\n", 2337 | " array([[0.1416432]], dtype=float32),\n", 2338 | " array([[0.14201452]], dtype=float32),\n", 2339 | " array([[0.14254372]], dtype=float32),\n", 2340 | " array([[0.14292328]], dtype=float32),\n", 2341 | " array([[0.14306733]], dtype=float32),\n", 2342 | " array([[0.14389662]], dtype=float32),\n", 2343 | " array([[0.14515653]], dtype=float32),\n", 2344 | " array([[0.14742556]], dtype=float32)]" 2345 | ] 2346 | }, 2347 | "execution_count": 117, 2348 | "metadata": {}, 2349 | "output_type": "execute_result" 2350 | } 2351 | ], 2352 | "source": [ 2353 | "all_data" 2354 | ] 2355 | }, 2356 | { 2357 | "cell_type": "code", 2358 | "execution_count": 118, 2359 | "id": "379cf40a", 2360 | "metadata": {}, 2361 | "outputs": [], 2362 | "source": [ 2363 | "new_array=np.array(all_data)\n", 2364 | "new_array=new_array.reshape(-1,1)\n", 2365 | "prediction_copies_array = np.repeat(new_array,5, axis=-1)\n", 2366 | "y_pred_future_30_days = scaler.inverse_transform(np.reshape(prediction_copies_array,(len(new_array),5)))[:,0]" 2367 | ] 2368 | }, 2369 | { 2370 | "cell_type": "code", 2371 | "execution_count": 119, 2372 | "id": "4ab9307c", 2373 | "metadata": { 2374 | "scrolled": true 2375 | }, 2376 | "outputs": [ 2377 | { 2378 | "data": { 2379 | "text/plain": [ 2380 | "array([101.11468 , 101.69789 , 102.135414, 102.473656, 102.66332 ,\n", 2381 | " 102.6301 , 102.66094 , 102.69551 , 102.66728 , 102.4296 ,\n", 2382 | " 102.06105 , 101.7299 , 101.58788 , 101.50563 , 101.51332 ,\n", 2383 | " 101.64251 , 101.70776 , 101.69977 , 101.76044 , 102.11652 ,\n", 2384 | " 102.34525 , 102.43951 , 102.478806, 102.61133 , 102.80022 ,\n", 2385 | " 102.93569 , 102.98711 , 103.2831 , 103.732796, 104.54266 ],\n", 2386 | " dtype=float32)" 2387 | ] 2388 | }, 2389 | "execution_count": 119, 2390 | "metadata": {}, 2391 | "output_type": "execute_result" 2392 | } 2393 | ], 2394 | "source": [ 2395 | "y_pred_future_30_days" 2396 | ] 2397 | }, 2398 | { 2399 | "cell_type": "code", 2400 | "execution_count": null, 2401 | "id": "265bfef0", 2402 | "metadata": {}, 2403 | "outputs": [], 2404 | "source": [] 2405 | }, 2406 | { 2407 | "cell_type": "code", 2408 | "execution_count": null, 2409 | "id": "eed9c5c8", 2410 | "metadata": {}, 2411 | "outputs": [], 2412 | "source": [ 2413 | "from tensorflow.keras.models import Model\n", 2414 | "from tensorflow.keras.models import load_model" 2415 | ] 2416 | }, 2417 | { 2418 | "cell_type": "code", 2419 | "execution_count": null, 2420 | "id": "0ede34e7", 2421 | "metadata": {}, 2422 | "outputs": [], 2423 | "source": [ 2424 | "mymodel.save('Model_future_value.h5')\n", 2425 | "print('Model Saved!')" 2426 | ] 2427 | }, 2428 | { 2429 | "cell_type": "code", 2430 | "execution_count": null, 2431 | "id": "4f12ddc7", 2432 | "metadata": {}, 2433 | "outputs": [], 2434 | "source": [ 2435 | "scaler" 2436 | ] 2437 | }, 2438 | { 2439 | "cell_type": "code", 2440 | "execution_count": null, 2441 | "id": "13f766d0", 2442 | "metadata": {}, 2443 | "outputs": [], 2444 | "source": [ 2445 | "import pickle\n", 2446 | "scalerfile = 'scaler_model_future_value.pkl'\n", 2447 | "pickle.dump(scaler, open(scalerfile, 'wb'))" 2448 | ] 2449 | }, 2450 | { 2451 | "cell_type": "markdown", 2452 | "id": "dcbe5698", 2453 | "metadata": {}, 2454 | "source": [ 2455 | "# END!!!!" 2456 | ] 2457 | } 2458 | ], 2459 | "metadata": { 2460 | "kernelspec": { 2461 | "display_name": "Python 3 (ipykernel)", 2462 | "language": "python", 2463 | "name": "python3" 2464 | }, 2465 | "language_info": { 2466 | "codemirror_mode": { 2467 | "name": "ipython", 2468 | "version": 3 2469 | }, 2470 | "file_extension": ".py", 2471 | "mimetype": "text/x-python", 2472 | "name": "python", 2473 | "nbconvert_exporter": "python", 2474 | "pygments_lexer": "ipython3", 2475 | "version": "3.9.7" 2476 | } 2477 | }, 2478 | "nbformat": 4, 2479 | "nbformat_minor": 5 2480 | } 2481 | --------------------------------------------------------------------------------