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