@@ -524,9 +524,159 @@ Once we have defined the model, we need to specify the metrics we want to use to
524524 callbacks = [callback])
525525```
526526
527+ This model is slightly fined tuned to reach the lowest validation loss. In this example, we reach a validation loss of 0.20% with an MSE (Mean Square Error) of 0.29% which is relatively good, providing us with a very accurate result.
528+
529+ The training result can be seen below:
530+
531+ ``` cmd
532+ Train on 3055 samples, validate on 881 samples
533+ Epoch 1/100
534+ 2020-07-04 11:48:37.847380: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_100.dll
535+ 3055/3055 [==============================] - 47s 15ms/step - loss: 0.0222 - MSE: 0.0533 - val_loss: 0.0054 - val_MSE: 0.0198
536+ Epoch 2/100
537+ 3055/3055 [==============================] - 43s 14ms/step - loss: 0.0072 - MSE: 0.0156 - val_loss: 0.0050 - val_MSE: 0.0129
538+ Epoch 3/100
539+ 3055/3055 [==============================] - 43s 14ms/step - loss: 0.0060 - MSE: 0.0116 - val_loss: 0.0054 - val_MSE: 0.0104
540+ Epoch 4/100
541+ 3055/3055 [==============================] - 43s 14ms/step - loss: 0.0053 - MSE: 0.0098 - val_loss: 0.0051 - val_MSE: 0.0091
542+ Epoch 5/100
543+ 3055/3055 [==============================] - 43s 14ms/step - loss: 0.0050 - MSE: 0.0087 - val_loss: 0.0048 - val_MSE: 0.0083
544+ Epoch 6/100
545+ 3055/3055 [==============================] - 44s 14ms/step - loss: 0.0045 - MSE: 0.0080 - val_loss: 0.0047 - val_MSE: 0.0076
546+ Epoch 7/100
547+ 3055/3055 [==============================] - 44s 14ms/step - loss: 0.0045 - MSE: 0.0074 - val_loss: 0.0045 - val_MSE: 0.0072
548+ Epoch 8/100
549+ 3055/3055 [==============================] - 44s 14ms/step - loss: 0.0041 - MSE: 0.0070 - val_loss: 0.0045 - val_MSE: 0.0068
550+ Epoch 9/100
551+ 3055/3055 [==============================] - 43s 14ms/step - loss: 0.0038 - MSE: 0.0067 - val_loss: 0.0044 - val_MSE: 0.0065
552+ Epoch 10/100
553+ 3055/3055 [==============================] - 53s 17ms/step - loss: 0.0038 - MSE: 0.0064 - val_loss: 0.0049 - val_MSE: 0.0062
554+ Epoch 11/100
555+ 3055/3055 [==============================] - 67s 22ms/step - loss: 0.0034 - MSE: 0.0061 - val_loss: 0.0041 - val_MSE: 0.0060
556+ Epoch 12/100
557+ 3055/3055 [==============================] - 71s 23ms/step - loss: 0.0035 - MSE: 0.0059 - val_loss: 0.0048 - val_MSE: 0.0058
558+ Epoch 13/100
559+ 3055/3055 [==============================] - 68s 22ms/step - loss: 0.0031 - MSE: 0.0057 - val_loss: 0.0047 - val_MSE: 0.0056
560+ Epoch 14/100
561+ 3055/3055 [==============================] - 64s 21ms/step - loss: 0.0029 - MSE: 0.0055 - val_loss: 0.0038 - val_MSE: 0.0054
562+ Epoch 15/100
563+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0031 - MSE: 0.0054 - val_loss: 0.0036 - val_MSE: 0.0053
564+ Epoch 16/100
565+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0027 - MSE: 0.0052 - val_loss: 0.0047 - val_MSE: 0.0051
566+ Epoch 17/100
567+ 3055/3055 [==============================] - 63s 20ms/step - loss: 0.0028 - MSE: 0.0051 - val_loss: 0.0035 - val_MSE: 0.0050
568+ Epoch 18/100
569+ 3055/3055 [==============================] - 65s 21ms/step - loss: 0.0024 - MSE: 0.0050 - val_loss: 0.0032 - val_MSE: 0.0049
570+ Epoch 19/100
571+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0026 - MSE: 0.0048 - val_loss: 0.0039 - val_MSE: 0.0048
572+ Epoch 20/100
573+ 3055/3055 [==============================] - 63s 20ms/step - loss: 0.0024 - MSE: 0.0047 - val_loss: 0.0048 - val_MSE: 0.0047
574+ Epoch 21/100
575+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0022 - MSE: 0.0046 - val_loss: 0.0031 - val_MSE: 0.0046
576+ Epoch 22/100
577+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0022 - MSE: 0.0045 - val_loss: 0.0030 - val_MSE: 0.0045
578+ Epoch 23/100
579+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0023 - MSE: 0.0044 - val_loss: 0.0032 - val_MSE: 0.0044
580+ Epoch 24/100
581+ 3055/3055 [==============================] - 72s 24ms/step - loss: 0.0021 - MSE: 0.0044 - val_loss: 0.0029 - val_MSE: 0.0043
582+ Epoch 25/100
583+ 3055/3055 [==============================] - 76s 25ms/step - loss: 0.0021 - MSE: 0.0043 - val_loss: 0.0028 - val_MSE: 0.0042
584+ Epoch 26/100
585+ 3055/3055 [==============================] - 86s 28ms/step - loss: 0.0022 - MSE: 0.0042 - val_loss: 0.0042 - val_MSE: 0.0042
586+ Epoch 27/100
587+ 3055/3055 [==============================] - 64s 21ms/step - loss: 0.0021 - MSE: 0.0041 - val_loss: 0.0028 - val_MSE: 0.0041
588+ Epoch 28/100
589+ 3055/3055 [==============================] - 65s 21ms/step - loss: 0.0021 - MSE: 0.0041 - val_loss: 0.0027 - val_MSE: 0.0040
590+ Epoch 29/100
591+ 3055/3055 [==============================] - 67s 22ms/step - loss: 0.0022 - MSE: 0.0040 - val_loss: 0.0026 - val_MSE: 0.0040
592+ Epoch 30/100
593+ 3055/3055 [==============================] - 64s 21ms/step - loss: 0.0020 - MSE: 0.0039 - val_loss: 0.0031 - val_MSE: 0.0039
594+ Epoch 31/100
595+ 3055/3055 [==============================] - 65s 21ms/step - loss: 0.0019 - MSE: 0.0039 - val_loss: 0.0026 - val_MSE: 0.0039
596+ Epoch 32/100
597+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0019 - MSE: 0.0038 - val_loss: 0.0026 - val_MSE: 0.0038
598+ Epoch 33/100
599+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0023 - MSE: 0.0038 - val_loss: 0.0032 - val_MSE: 0.0038
600+ Epoch 34/100
601+ 3055/3055 [==============================] - 67s 22ms/step - loss: 0.0022 - MSE: 0.0037 - val_loss: 0.0026 - val_MSE: 0.0037
602+ Epoch 35/100
603+ 3055/3055 [==============================] - 64s 21ms/step - loss: 0.0021 - MSE: 0.0037 - val_loss: 0.0027 - val_MSE: 0.0037
604+ Epoch 36/100
605+ 3055/3055 [==============================] - 64s 21ms/step - loss: 0.0021 - MSE: 0.0037 - val_loss: 0.0023 - val_MSE: 0.0036
606+ Epoch 37/100
607+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0019 - MSE: 0.0036 - val_loss: 0.0025 - val_MSE: 0.0036
608+ Epoch 38/100
609+ 3055/3055 [==============================] - 65s 21ms/step - loss: 0.0019 - MSE: 0.0036 - val_loss: 0.0022 - val_MSE: 0.0035
610+ Epoch 39/100
611+ 3055/3055 [==============================] - 68s 22ms/step - loss: 0.0022 - MSE: 0.0035 - val_loss: 0.0022 - val_MSE: 0.0035
612+ Epoch 40/100
613+ 3055/3055 [==============================] - 70s 23ms/step - loss: 0.0020 - MSE: 0.0035 - val_loss: 0.0023 - val_MSE: 0.0035
614+ Epoch 41/100
615+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0019 - MSE: 0.0035 - val_loss: 0.0022 - val_MSE: 0.0034
616+ Epoch 42/100
617+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0019 - MSE: 0.0034 - val_loss: 0.0024 - val_MSE: 0.0034
618+ Epoch 43/100
619+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0019 - MSE: 0.0034 - val_loss: 0.0023 - val_MSE: 0.0034
620+ Epoch 44/100
621+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0020 - MSE: 0.0034 - val_loss: 0.0021 - val_MSE: 0.0033
622+ Epoch 45/100
623+ 3055/3055 [==============================] - 66s 22ms/step - loss: 0.0019 - MSE: 0.0033 - val_loss: 0.0020 - val_MSE: 0.0033
624+ Epoch 46/100
625+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0019 - MSE: 0.0033 - val_loss: 0.0022 - val_MSE: 0.0033
626+ Epoch 47/100
627+ 3055/3055 [==============================] - 63s 20ms/step - loss: 0.0020 - MSE: 0.0033 - val_loss: 0.0019 - val_MSE: 0.0033
628+ Epoch 48/100
629+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0018 - MSE: 0.0032 - val_loss: 0.0019 - val_MSE: 0.0032
630+ Epoch 49/100
631+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0019 - MSE: 0.0032 - val_loss: 0.0024 - val_MSE: 0.0032
632+ Epoch 50/100
633+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0019 - MSE: 0.0032 - val_loss: 0.0019 - val_MSE: 0.0032
634+ Epoch 51/100
635+ 3055/3055 [==============================] - 65s 21ms/step - loss: 0.0021 - MSE: 0.0032 - val_loss: 0.0018 - val_MSE: 0.0031
636+ Epoch 52/100
637+ 3055/3055 [==============================] - 67s 22ms/step - loss: 0.0018 - MSE: 0.0031 - val_loss: 0.0018 - val_MSE: 0.0031
638+ Epoch 53/100
639+ 3055/3055 [==============================] - 71s 23ms/step - loss: 0.0021 - MSE: 0.0031 - val_loss: 0.0017 - val_MSE: 0.0031
640+ Epoch 54/100
641+ 3055/3055 [==============================] - 66s 22ms/step - loss: 0.0017 - MSE: 0.0031 - val_loss: 0.0018 - val_MSE: 0.0031
642+ Epoch 55/100
643+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0020 - MSE: 0.0031 - val_loss: 0.0017 - val_MSE: 0.0031
644+ Epoch 56/100
645+ 3055/3055 [==============================] - 66s 22ms/step - loss: 0.0018 - MSE: 0.0030 - val_loss: 0.0018 - val_MSE: 0.0030
646+ Epoch 57/100
647+ 3055/3055 [==============================] - 63s 21ms/step - loss: 0.0018 - MSE: 0.0030 - val_loss: 0.0018 - val_MSE: 0.0030
648+ Epoch 58/100
649+ 3055/3055 [==============================] - 62s 20ms/step - loss: 0.0017 - MSE: 0.0030 - val_loss: 0.0020 - val_MSE: 0.0030
650+ Epoch 00058: early stopping
651+
652+ display the content of the model
653+ loss : 0.002031383795714456
654+ MSE : 0.0029848262201994658
655+ ```
527656
528657### 3.5) Making predictions happen
529658
530659Now it is time to prepare our testing data and send it through our deep-learning model to obtain the predictions we are trying to get.
531660
532- First we need to import the test data:
661+ First we need to import the test data using the same approach we used for the training data using the time steps:
662+
663+ ``` python
664+ # Testing Data Transformation
665+ x_test = []
666+ y_test = []
667+ for i in range (time_steps, test_scaled.shape[0 ]):
668+ x_test.append(test_scaled[i - time_steps:i])
669+ y_test.append(test_scaled[i, 0 ])
670+
671+ x_test, y_test = np.array(x_test), np.array(y_test)
672+ x_test = np.reshape(x_test, (x_test.shape[0 ], x_test.shape[1 ], 1 ))
673+ ```
674+
675+ Now we can call the predict method which will allow us to generate the stock prediction based on the training done over the training data. As a result, we will generate a csv file that contains the result of the prediction and also a chart that shows what's the real vs the estimation.
676+
677+ ![ ] (https://github.com/JordiCorbilla/stock-prediction-deep-neural-learning/raw/master/Alphabet Inc_prediction.png)
678+
679+ With the validation loss and validation MSE metrics:
680+
681+ ![ ] ( https://github.com/JordiCorbilla/stock-prediction-deep-neural-learning/raw/master/loss.png )
682+ ![ ] ( https://github.com/JordiCorbilla/stock-prediction-deep-neural-learning/raw/master/MSE.png )
0 commit comments