├── 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 | " Open | \n",
97 | " High | \n",
98 | " Low | \n",
99 | " Close | \n",
100 | " Adj Close | \n",
101 | "
\n",
102 | " \n",
103 | " | Date | \n",
104 | " | \n",
105 | " | \n",
106 | " | \n",
107 | " | \n",
108 | " | \n",
109 | "
\n",
110 | " \n",
111 | " \n",
112 | " \n",
113 | " | 2001-01-25 | \n",
114 | " 356.730774 | \n",
115 | " 362.980774 | \n",
116 | " 352.403839 | \n",
117 | " 353.365387 | \n",
118 | " 197.122452 | \n",
119 | "
\n",
120 | " \n",
121 | " | 2001-01-26 | \n",
122 | " 357.211548 | \n",
123 | " 360.096161 | \n",
124 | " 342.788452 | \n",
125 | " 343.269226 | \n",
126 | " 191.490234 | \n",
127 | "
\n",
128 | " \n",
129 | " | 2001-01-29 | \n",
130 | " 345.153839 | \n",
131 | " 355.769226 | \n",
132 | " 338.461548 | \n",
133 | " 341.384613 | \n",
134 | " 190.439011 | \n",
135 | "
\n",
136 | " \n",
137 | " | 2001-01-30 | \n",
138 | " 344.307678 | \n",
139 | " 355.923065 | \n",
140 | " 341.692322 | \n",
141 | " 355.769226 | \n",
142 | " 198.463318 | \n",
143 | "
\n",
144 | " \n",
145 | " | 2001-01-31 | \n",
146 | " 359.615387 | \n",
147 | " 361.153839 | \n",
148 | " 350.461548 | \n",
149 | " 353.692322 | \n",
150 | " 197.304749 | \n",
151 | "
\n",
152 | " \n",
153 | "
\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 | " Open | \n",
203 | " High | \n",
204 | " Low | \n",
205 | " Close | \n",
206 | " Adj Close | \n",
207 | "
\n",
208 | " \n",
209 | " | Date | \n",
210 | " | \n",
211 | " | \n",
212 | " | \n",
213 | " | \n",
214 | " | \n",
215 | "
\n",
216 | " \n",
217 | " \n",
218 | " \n",
219 | " | 2021-09-23 | \n",
220 | " 99.529999 | \n",
221 | " 104.080002 | \n",
222 | " 99.519997 | \n",
223 | " 102.959999 | \n",
224 | " 102.789993 | \n",
225 | "
\n",
226 | " \n",
227 | " | 2021-09-24 | \n",
228 | " 102.660004 | \n",
229 | " 104.199997 | \n",
230 | " 102.599998 | \n",
231 | " 103.800003 | \n",
232 | " 103.709198 | \n",
233 | "
\n",
234 | " \n",
235 | " | 2021-09-27 | \n",
236 | " 104.550003 | \n",
237 | " 106.330002 | \n",
238 | " 104.389999 | \n",
239 | " 105.349998 | \n",
240 | " 105.257835 | \n",
241 | "
\n",
242 | " \n",
243 | " | 2021-09-28 | \n",
244 | " 105.290001 | \n",
245 | " 106.750000 | \n",
246 | " 104.730003 | \n",
247 | " 105.730003 | \n",
248 | " 105.637512 | \n",
249 | "
\n",
250 | " \n",
251 | " | 2021-09-29 | \n",
252 | " 106.000000 | \n",
253 | " 107.000000 | \n",
254 | " 105.309998 | \n",
255 | " 106.279999 | \n",
256 | " 106.187027 | \n",
257 | "
\n",
258 | " \n",
259 | "
\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 | " Open | \n",
1446 | " High | \n",
1447 | " Low | \n",
1448 | " Close | \n",
1449 | " Adj Close | \n",
1450 | "
\n",
1451 | " \n",
1452 | " | Date | \n",
1453 | " | \n",
1454 | " | \n",
1455 | " | \n",
1456 | " | \n",
1457 | " | \n",
1458 | "
\n",
1459 | " \n",
1460 | " \n",
1461 | " \n",
1462 | " | 2021-08-18 | \n",
1463 | " 101.080002 | \n",
1464 | " 103.470001 | \n",
1465 | " 100.760002 | \n",
1466 | " 101.410004 | \n",
1467 | " 101.242561 | \n",
1468 | "
\n",
1469 | " \n",
1470 | " | 2021-08-19 | \n",
1471 | " 100.000000 | \n",
1472 | " 100.820000 | \n",
1473 | " 98.599998 | \n",
1474 | " 99.419998 | \n",
1475 | " 99.255844 | \n",
1476 | "
\n",
1477 | " \n",
1478 | " | 2021-08-20 | \n",
1479 | " 99.589996 | \n",
1480 | " 100.669998 | \n",
1481 | " 99.099998 | \n",
1482 | " 100.050003 | \n",
1483 | " 99.884804 | \n",
1484 | "
\n",
1485 | " \n",
1486 | " | 2021-08-23 | \n",
1487 | " 100.599998 | \n",
1488 | " 101.480003 | \n",
1489 | " 100.269997 | \n",
1490 | " 100.970001 | \n",
1491 | " 100.803284 | \n",
1492 | "
\n",
1493 | " \n",
1494 | " | 2021-08-24 | \n",
1495 | " 101.290001 | \n",
1496 | " 103.510002 | \n",
1497 | " 101.059998 | \n",
1498 | " 103.269997 | \n",
1499 | " 103.099487 | \n",
1500 | "
\n",
1501 | " \n",
1502 | " | 2021-08-25 | \n",
1503 | " 103.360001 | \n",
1504 | " 105.129997 | \n",
1505 | " 102.550003 | \n",
1506 | " 104.699997 | \n",
1507 | " 104.527122 | \n",
1508 | "
\n",
1509 | " \n",
1510 | " | 2021-08-26 | \n",
1511 | " 104.459999 | \n",
1512 | " 104.620003 | \n",
1513 | " 102.839996 | \n",
1514 | " 103.379997 | \n",
1515 | " 103.209305 | \n",
1516 | "
\n",
1517 | " \n",
1518 | " | 2021-08-27 | \n",
1519 | " 103.900002 | \n",
1520 | " 106.150002 | \n",
1521 | " 103.900002 | \n",
1522 | " 106.089996 | \n",
1523 | " 105.914825 | \n",
1524 | "
\n",
1525 | " \n",
1526 | " | 2021-08-30 | \n",
1527 | " 106.330002 | \n",
1528 | " 106.459999 | \n",
1529 | " 104.800003 | \n",
1530 | " 105.190002 | \n",
1531 | " 105.016312 | \n",
1532 | "
\n",
1533 | " \n",
1534 | " | 2021-08-31 | \n",
1535 | " 104.940002 | \n",
1536 | " 106.360001 | \n",
1537 | " 104.459999 | \n",
1538 | " 105.410004 | \n",
1539 | " 105.235954 | \n",
1540 | "
\n",
1541 | " \n",
1542 | " | 2021-09-01 | \n",
1543 | " 105.360001 | \n",
1544 | " 105.470001 | \n",
1545 | " 103.260002 | \n",
1546 | " 103.660004 | \n",
1547 | " 103.488846 | \n",
1548 | "
\n",
1549 | " \n",
1550 | " | 2021-09-02 | \n",
1551 | " 104.000000 | \n",
1552 | " 106.339996 | \n",
1553 | " 103.980003 | \n",
1554 | " 106.260002 | \n",
1555 | " 106.084557 | \n",
1556 | "
\n",
1557 | " \n",
1558 | " | 2021-09-03 | \n",
1559 | " 106.000000 | \n",
1560 | " 107.360001 | \n",
1561 | " 104.080002 | \n",
1562 | " 104.750000 | \n",
1563 | " 104.577042 | \n",
1564 | "
\n",
1565 | " \n",
1566 | " | 2021-09-07 | \n",
1567 | " 104.500000 | \n",
1568 | " 104.940002 | \n",
1569 | " 102.309998 | \n",
1570 | " 103.290001 | \n",
1571 | " 103.119453 | \n",
1572 | "
\n",
1573 | " \n",
1574 | " | 2021-09-08 | \n",
1575 | " 102.949997 | \n",
1576 | " 104.730003 | \n",
1577 | " 100.419998 | \n",
1578 | " 102.580002 | \n",
1579 | " 102.410629 | \n",
1580 | "
\n",
1581 | " \n",
1582 | " | 2021-09-09 | \n",
1583 | " 102.360001 | \n",
1584 | " 104.919998 | \n",
1585 | " 102.110001 | \n",
1586 | " 103.290001 | \n",
1587 | " 103.119453 | \n",
1588 | "
\n",
1589 | " \n",
1590 | " | 2021-09-10 | \n",
1591 | " 103.290001 | \n",
1592 | " 103.949997 | \n",
1593 | " 101.779999 | \n",
1594 | " 102.000000 | \n",
1595 | " 101.831581 | \n",
1596 | "
\n",
1597 | " \n",
1598 | " | 2021-09-13 | \n",
1599 | " 102.650002 | \n",
1600 | " 104.860001 | \n",
1601 | " 102.019997 | \n",
1602 | " 104.459999 | \n",
1603 | " 104.287521 | \n",
1604 | "
\n",
1605 | " \n",
1606 | " | 2021-09-14 | \n",
1607 | " 104.540001 | \n",
1608 | " 104.550003 | \n",
1609 | " 100.070000 | \n",
1610 | " 100.379997 | \n",
1611 | " 100.214256 | \n",
1612 | "
\n",
1613 | " \n",
1614 | " | 2021-09-15 | \n",
1615 | " 100.790001 | \n",
1616 | " 102.470001 | \n",
1617 | " 100.690002 | \n",
1618 | " 102.160004 | \n",
1619 | " 101.991325 | \n",
1620 | "
\n",
1621 | " \n",
1622 | " | 2021-09-16 | \n",
1623 | " 102.389999 | \n",
1624 | " 102.699997 | \n",
1625 | " 100.820000 | \n",
1626 | " 101.339996 | \n",
1627 | " 101.172668 | \n",
1628 | "
\n",
1629 | " \n",
1630 | " | 2021-09-17 | \n",
1631 | " 101.150002 | \n",
1632 | " 101.860001 | \n",
1633 | " 100.129997 | \n",
1634 | " 100.470001 | \n",
1635 | " 100.304115 | \n",
1636 | "
\n",
1637 | " \n",
1638 | " | 2021-09-20 | \n",
1639 | " 98.500000 | \n",
1640 | " 99.870003 | \n",
1641 | " 97.269997 | \n",
1642 | " 99.809998 | \n",
1643 | " 99.645195 | \n",
1644 | "
\n",
1645 | " \n",
1646 | " | 2021-09-21 | \n",
1647 | " 99.900002 | \n",
1648 | " 99.989998 | \n",
1649 | " 96.209999 | \n",
1650 | " 96.820000 | \n",
1651 | " 96.660133 | \n",
1652 | "
\n",
1653 | " \n",
1654 | " | 2021-09-22 | \n",
1655 | " 97.669998 | \n",
1656 | " 99.029999 | \n",
1657 | " 97.660004 | \n",
1658 | " 98.540001 | \n",
1659 | " 98.377296 | \n",
1660 | "
\n",
1661 | " \n",
1662 | " | 2021-09-23 | \n",
1663 | " 99.529999 | \n",
1664 | " 104.080002 | \n",
1665 | " 99.519997 | \n",
1666 | " 102.959999 | \n",
1667 | " 102.789993 | \n",
1668 | "
\n",
1669 | " \n",
1670 | " | 2021-09-24 | \n",
1671 | " 102.660004 | \n",
1672 | " 104.199997 | \n",
1673 | " 102.599998 | \n",
1674 | " 103.800003 | \n",
1675 | " 103.709198 | \n",
1676 | "
\n",
1677 | " \n",
1678 | " | 2021-09-27 | \n",
1679 | " 104.550003 | \n",
1680 | " 106.330002 | \n",
1681 | " 104.389999 | \n",
1682 | " 105.349998 | \n",
1683 | " 105.257835 | \n",
1684 | "
\n",
1685 | " \n",
1686 | " | 2021-09-28 | \n",
1687 | " 105.290001 | \n",
1688 | " 106.750000 | \n",
1689 | " 104.730003 | \n",
1690 | " 105.730003 | \n",
1691 | " 105.637512 | \n",
1692 | "
\n",
1693 | " \n",
1694 | " | 2021-09-29 | \n",
1695 | " 106.000000 | \n",
1696 | " 107.000000 | \n",
1697 | " 105.309998 | \n",
1698 | " 106.279999 | \n",
1699 | " 106.187027 | \n",
1700 | "
\n",
1701 | " \n",
1702 | "
\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 | " Open | \n",
1799 | " High | \n",
1800 | " Low | \n",
1801 | " Close | \n",
1802 | " Adj Close | \n",
1803 | "
\n",
1804 | " \n",
1805 | " | Date | \n",
1806 | " | \n",
1807 | " | \n",
1808 | " | \n",
1809 | " | \n",
1810 | " | \n",
1811 | "
\n",
1812 | " \n",
1813 | " \n",
1814 | " \n",
1815 | " | 2021-09-30 | \n",
1816 | " 0 | \n",
1817 | " 107.089996 | \n",
1818 | " 102.949997 | \n",
1819 | " 103.029999 | \n",
1820 | " 102.939865 | \n",
1821 | "
\n",
1822 | " \n",
1823 | " | 2021-10-01 | \n",
1824 | " 0 | \n",
1825 | " 106.389999 | \n",
1826 | " 103.669998 | \n",
1827 | " 105.820000 | \n",
1828 | " 105.727425 | \n",
1829 | "
\n",
1830 | " \n",
1831 | " | 2021-10-04 | \n",
1832 | " 0 | \n",
1833 | " 107.080002 | \n",
1834 | " 104.599998 | \n",
1835 | " 104.900002 | \n",
1836 | " 104.808235 | \n",
1837 | "
\n",
1838 | " \n",
1839 | " | 2021-10-05 | \n",
1840 | " 0 | \n",
1841 | " 106.000000 | \n",
1842 | " 103.750000 | \n",
1843 | " 104.900002 | \n",
1844 | " 104.808235 | \n",
1845 | "
\n",
1846 | " \n",
1847 | " | 2021-10-06 | \n",
1848 | " 0 | \n",
1849 | " 104.419998 | \n",
1850 | " 102.059998 | \n",
1851 | " 104.330002 | \n",
1852 | " 104.238731 | \n",
1853 | "
\n",
1854 | " \n",
1855 | " | 2021-10-07 | \n",
1856 | " 0 | \n",
1857 | " 106.529999 | \n",
1858 | " 104.330002 | \n",
1859 | " 105.510002 | \n",
1860 | " 105.417702 | \n",
1861 | "
\n",
1862 | " \n",
1863 | " | 2021-10-08 | \n",
1864 | " 0 | \n",
1865 | " 106.220001 | \n",
1866 | " 104.660004 | \n",
1867 | " 104.720001 | \n",
1868 | " 104.628387 | \n",
1869 | "
\n",
1870 | " \n",
1871 | " | 2021-10-11 | \n",
1872 | " 0 | \n",
1873 | " 105.760002 | \n",
1874 | " 103.970001 | \n",
1875 | " 104.080002 | \n",
1876 | " 103.988953 | \n",
1877 | "
\n",
1878 | " \n",
1879 | " | 2021-10-12 | \n",
1880 | " 0 | \n",
1881 | " 104.040001 | \n",
1882 | " 101.559998 | \n",
1883 | " 102.720001 | \n",
1884 | " 102.630142 | \n",
1885 | "
\n",
1886 | " \n",
1887 | " | 2021-10-13 | \n",
1888 | " 0 | \n",
1889 | " 103.199997 | \n",
1890 | " 101.180000 | \n",
1891 | " 102.360001 | \n",
1892 | " 102.270454 | \n",
1893 | "
\n",
1894 | " \n",
1895 | " | 2021-10-14 | \n",
1896 | " 0 | \n",
1897 | " 103.650002 | \n",
1898 | " 102.370003 | \n",
1899 | " 102.739998 | \n",
1900 | " 102.650116 | \n",
1901 | "
\n",
1902 | " \n",
1903 | " | 2021-10-15 | \n",
1904 | " 0 | \n",
1905 | " 105.900002 | \n",
1906 | " 103.190002 | \n",
1907 | " 104.410004 | \n",
1908 | " 104.318665 | \n",
1909 | "
\n",
1910 | " \n",
1911 | " | 2021-10-18 | \n",
1912 | " 0 | \n",
1913 | " 104.570000 | \n",
1914 | " 103.040001 | \n",
1915 | " 104.120003 | \n",
1916 | " 104.028915 | \n",
1917 | "
\n",
1918 | " \n",
1919 | " | 2021-10-19 | \n",
1920 | " 0 | \n",
1921 | " 104.970001 | \n",
1922 | " 103.580002 | \n",
1923 | " 104.730003 | \n",
1924 | " 104.638382 | \n",
1925 | "
\n",
1926 | " \n",
1927 | " | 2021-10-20 | \n",
1928 | " 0 | \n",
1929 | " 106.019997 | \n",
1930 | " 103.870003 | \n",
1931 | " 106.000000 | \n",
1932 | " 105.907272 | \n",
1933 | "
\n",
1934 | " \n",
1935 | " | 2021-10-21 | \n",
1936 | " 0 | \n",
1937 | " 106.389999 | \n",
1938 | " 103.010002 | \n",
1939 | " 103.150002 | \n",
1940 | " 103.059761 | \n",
1941 | "
\n",
1942 | " \n",
1943 | " | 2021-10-22 | \n",
1944 | " 0 | \n",
1945 | " 104.510002 | \n",
1946 | " 102.550003 | \n",
1947 | " 104.050003 | \n",
1948 | " 103.958977 | \n",
1949 | "
\n",
1950 | " \n",
1951 | " | 2021-10-25 | \n",
1952 | " 0 | \n",
1953 | " 105.989998 | \n",
1954 | " 103.330002 | \n",
1955 | " 105.300003 | \n",
1956 | " 105.207886 | \n",
1957 | "
\n",
1958 | " \n",
1959 | " | 2021-10-26 | \n",
1960 | " 0 | \n",
1961 | " 110.970001 | \n",
1962 | " 105.220001 | \n",
1963 | " 107.440002 | \n",
1964 | " 107.346008 | \n",
1965 | "
\n",
1966 | " \n",
1967 | " | 2021-10-27 | \n",
1968 | " 0 | \n",
1969 | " 108.279999 | \n",
1970 | " 103.690002 | \n",
1971 | " 103.849998 | \n",
1972 | " 103.759148 | \n",
1973 | "
\n",
1974 | " \n",
1975 | " | 2021-10-28 | \n",
1976 | " 0 | \n",
1977 | " 105.379997 | \n",
1978 | " 103.099998 | \n",
1979 | " 105.260002 | \n",
1980 | " 105.167915 | \n",
1981 | "
\n",
1982 | " \n",
1983 | " | 2021-10-29 | \n",
1984 | " 0 | \n",
1985 | " 105.239998 | \n",
1986 | " 104.120003 | \n",
1987 | " 104.870003 | \n",
1988 | " 104.778259 | \n",
1989 | "
\n",
1990 | " \n",
1991 | " | 2021-11-01 | \n",
1992 | " 0 | \n",
1993 | " 106.769997 | \n",
1994 | " 105.279999 | \n",
1995 | " 106.230003 | \n",
1996 | " 106.137070 | \n",
1997 | "
\n",
1998 | " \n",
1999 | " | 2021-11-02 | \n",
2000 | " 0 | \n",
2001 | " 107.139999 | \n",
2002 | " 105.300003 | \n",
2003 | " 106.690002 | \n",
2004 | " 106.596664 | \n",
2005 | "
\n",
2006 | " \n",
2007 | " | 2021-11-03 | \n",
2008 | " 0 | \n",
2009 | " 106.339996 | \n",
2010 | " 104.820000 | \n",
2011 | " 105.970001 | \n",
2012 | " 105.877296 | \n",
2013 | "
\n",
2014 | " \n",
2015 | " | 2021-11-04 | \n",
2016 | " 0 | \n",
2017 | " 106.400002 | \n",
2018 | " 104.290001 | \n",
2019 | " 105.209999 | \n",
2020 | " 105.117958 | \n",
2021 | "
\n",
2022 | " \n",
2023 | " | 2021-11-05 | \n",
2024 | " 0 | \n",
2025 | " 109.650002 | \n",
2026 | " 106.849998 | \n",
2027 | " 108.739998 | \n",
2028 | " 108.644867 | \n",
2029 | "
\n",
2030 | " \n",
2031 | " | 2021-11-08 | \n",
2032 | " 0 | \n",
2033 | " 110.309998 | \n",
2034 | " 108.320000 | \n",
2035 | " 108.419998 | \n",
2036 | " 108.325150 | \n",
2037 | "
\n",
2038 | " \n",
2039 | " | 2021-11-09 | \n",
2040 | " 0 | \n",
2041 | " 116.169998 | \n",
2042 | " 110.480003 | \n",
2043 | " 111.290001 | \n",
2044 | " 111.192642 | \n",
2045 | "
\n",
2046 | " \n",
2047 | " | 2021-11-10 | \n",
2048 | " 0 | \n",
2049 | " 112.680000 | \n",
2050 | " 108.110001 | \n",
2051 | " 108.959999 | \n",
2052 | " 108.864677 | \n",
2053 | "
\n",
2054 | " \n",
2055 | "
\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 | " 0 | \n",
2167 | " 1 | \n",
2168 | " 2 | \n",
2169 | " 3 | \n",
2170 | " 4 | \n",
2171 | "
\n",
2172 | " \n",
2173 | " \n",
2174 | " \n",
2175 | " | 55 | \n",
2176 | " NaN | \n",
2177 | " 0.143640 | \n",
2178 | " 0.164162 | \n",
2179 | " 0.150135 | \n",
2180 | " 0.349458 | \n",
2181 | "
\n",
2182 | " \n",
2183 | " | 56 | \n",
2184 | " NaN | \n",
2185 | " 0.152749 | \n",
2186 | " 0.171268 | \n",
2187 | " 0.159953 | \n",
2188 | " 0.367565 | \n",
2189 | "
\n",
2190 | " \n",
2191 | " | 57 | \n",
2192 | " NaN | \n",
2193 | " 0.154599 | \n",
2194 | " 0.175349 | \n",
2195 | " 0.159063 | \n",
2196 | " 0.365924 | \n",
2197 | "
\n",
2198 | " \n",
2199 | " | 58 | \n",
2200 | " NaN | \n",
2201 | " 0.171024 | \n",
2202 | " 0.181345 | \n",
2203 | " 0.167045 | \n",
2204 | " 0.380645 | \n",
2205 | "
\n",
2206 | " \n",
2207 | " | 59 | \n",
2208 | " NaN | \n",
2209 | " 0.161242 | \n",
2210 | " 0.174766 | \n",
2211 | " 0.160565 | \n",
2212 | " 0.368694 | \n",
2213 | "
\n",
2214 | " \n",
2215 | "
\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 |
--------------------------------------------------------------------------------