LSTM

Problem 1 - Univariate Forecasting

[1]:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scalecast.Forecaster import Forecaster
from scalecast.Pipeline import Transformer, Reverter, Pipeline
from scalecast.util import (
    find_optimal_transformation,
    gen_rnn_grid,
    backtest_for_resid_matrix,
    get_backtest_resid_matrix,
    overwrite_forecast_intervals,
    infer_apply_Xvar_selection,
)
from scalecast import GridGenerator
from tensorflow.keras.callbacks import EarlyStopping
import pandas_datareader as pdr
[2]:
data = pd.read_csv('AirPassengers.csv',parse_dates=['Month'])

f = Forecaster(
    y=data['#Passengers'],
    current_dates=data['Month'],
    future_dates = 24,
)

f.plot()
plt.show()
../_images/lstm_lstm_latest_2_0.png
[3]:
def forecaster(f):
    f.set_estimator('rnn')
    f.manual_forecast(
        lags = 18,
        layers_struct = [
            ('LSTM',{'units':36,'activation':'tanh'}),
        ],
        epochs=200,
        call_me = 'lstm',
    )

transformer = Transformer(
    transformers = [
        ('DetrendTransform',{'poly_order':2}),
        'DeseasonTransform',
    ],
)

reverter = Reverter(
    reverters = [
        'DeseasonRevert',
        'DetrendRevert',
    ],
    base_transformer = transformer,
)

pipeline = Pipeline(
    steps = [
        ('Transform',transformer),
        ('Forecast',forecaster),
        ('Revert',reverter),
    ]
)

f = pipeline.fit_predict(f)
Epoch 1/200
4/4 [==============================] - 1s 6ms/step - loss: 0.3688
Epoch 2/200
4/4 [==============================] - 0s 6ms/step - loss: 0.3499
Epoch 3/200
4/4 [==============================] - 0s 6ms/step - loss: 0.3314
Epoch 4/200
4/4 [==============================] - 0s 5ms/step - loss: 0.3114
Epoch 5/200
4/4 [==============================] - 0s 6ms/step - loss: 0.2872
Epoch 6/200
4/4 [==============================] - 0s 5ms/step - loss: 0.2577
Epoch 7/200
4/4 [==============================] - 0s 6ms/step - loss: 0.2261
Epoch 8/200
4/4 [==============================] - 0s 6ms/step - loss: 0.2044
Epoch 9/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1807
Epoch 10/200
4/4 [==============================] - 0s 5ms/step - loss: 0.1608
Epoch 11/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1520
Epoch 12/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1460
Epoch 13/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1423
Epoch 14/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1425
Epoch 15/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1395
Epoch 16/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1379
Epoch 17/200
4/4 [==============================] - 0s 5ms/step - loss: 0.1375
Epoch 18/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1373
Epoch 19/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1365
Epoch 20/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1362
Epoch 21/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1359
Epoch 22/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1356
Epoch 23/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1351
Epoch 24/200
4/4 [==============================] - 0s 5ms/step - loss: 0.1348
Epoch 25/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1343
Epoch 26/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1340
Epoch 27/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1339
Epoch 28/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1336
Epoch 29/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1334
Epoch 30/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1330
Epoch 31/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1332
Epoch 32/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1336
Epoch 33/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1328
Epoch 34/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1324
Epoch 35/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1322
Epoch 36/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1320
Epoch 37/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1318
Epoch 38/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1313
Epoch 39/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1310
Epoch 40/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1313
Epoch 41/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1307
Epoch 42/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1305
Epoch 43/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1302
Epoch 44/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1300
Epoch 45/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1300
Epoch 46/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1300
Epoch 47/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1298
Epoch 48/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1294
Epoch 49/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1292
Epoch 50/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1292
Epoch 51/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1288
Epoch 52/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1288
Epoch 53/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1286
Epoch 54/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1281
Epoch 55/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1282
Epoch 56/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1276
Epoch 57/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1271
Epoch 58/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1271
Epoch 59/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1268
Epoch 60/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1263
Epoch 61/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1257
Epoch 62/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1259
Epoch 63/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1253
Epoch 64/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1258
Epoch 65/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1260
Epoch 66/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1245
Epoch 67/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1241
Epoch 68/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1250
Epoch 69/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1254
Epoch 70/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1240
Epoch 71/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1236
Epoch 72/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1242
Epoch 73/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1225
Epoch 74/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1221
Epoch 75/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1225
Epoch 76/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1221
Epoch 77/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1217
Epoch 78/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1216
Epoch 79/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1221
Epoch 80/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1207
Epoch 81/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1213
Epoch 82/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1204
Epoch 83/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1201
Epoch 84/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1216
Epoch 85/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1197
Epoch 86/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1202
Epoch 87/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1205
Epoch 88/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1190
Epoch 89/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1191
Epoch 90/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1194
Epoch 91/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1197
Epoch 92/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1200
Epoch 93/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1192
Epoch 94/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1188
Epoch 95/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1185
Epoch 96/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1177
Epoch 97/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1177
Epoch 98/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1172
Epoch 99/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1176
Epoch 100/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1168
Epoch 101/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1168
Epoch 102/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1166
Epoch 103/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1170
Epoch 104/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1176
Epoch 105/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1198
Epoch 106/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1195
Epoch 107/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1180
Epoch 108/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1170
Epoch 109/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1172
Epoch 110/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1154
Epoch 111/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1152
Epoch 112/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1150
Epoch 113/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1148
Epoch 114/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1146
Epoch 115/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1142
Epoch 116/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1137
Epoch 117/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1137
Epoch 118/200
4/4 [==============================] - 0s 6ms/step - loss: 0.1133
Epoch 119/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1130
Epoch 120/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1127
Epoch 121/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1129
Epoch 122/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1134
Epoch 123/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1141
Epoch 124/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1134
Epoch 125/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1120
Epoch 126/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1139
Epoch 127/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1128
Epoch 128/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1133
Epoch 129/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1116
Epoch 130/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1119
Epoch 131/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1130
Epoch 132/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1113
Epoch 133/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1106
Epoch 134/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1106
Epoch 135/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1099
Epoch 136/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1095
Epoch 137/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1101
Epoch 138/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1098
Epoch 139/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1094
Epoch 140/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1092
Epoch 141/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1093
Epoch 142/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1102
Epoch 143/200
4/4 [==============================] - 0s 7ms/step - loss: 0.1091
Epoch 144/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1092
Epoch 145/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1083
Epoch 146/200
4/4 [==============================] - 0s 8ms/step - loss: 0.1084
Epoch 147/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1076
Epoch 148/200
4/4 [==============================] - 0s 10ms/step - loss: 0.1088
Epoch 149/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1078
Epoch 150/200
4/4 [==============================] - 0s 9ms/step - loss: 0.1072
Epoch 151/200
4/4 [==============================] - 0s 10ms/step - loss: 0.1071
Epoch 152/200
4/4 [==============================] - 0s 10ms/step - loss: 0.1067
Epoch 153/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1073
Epoch 154/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1066
Epoch 155/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1065
Epoch 156/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1057
Epoch 157/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1060
Epoch 158/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1054
Epoch 159/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1059
Epoch 160/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1052
Epoch 161/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1049
Epoch 162/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1050
Epoch 163/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1040
Epoch 164/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1041
Epoch 165/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1041
Epoch 166/200
4/4 [==============================] - 0s 13ms/step - loss: 0.1038
Epoch 167/200
4/4 [==============================] - 0s 14ms/step - loss: 0.1042
Epoch 168/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1051
Epoch 169/200
4/4 [==============================] - 0s 13ms/step - loss: 0.1043
Epoch 170/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1034
Epoch 171/200
4/4 [==============================] - 0s 14ms/step - loss: 0.1035
Epoch 172/200
4/4 [==============================] - 0s 12ms/step - loss: 0.1034
Epoch 173/200
4/4 [==============================] - 0s 14ms/step - loss: 0.1029
Epoch 174/200
4/4 [==============================] - 0s 11ms/step - loss: 0.1044
Epoch 175/200
4/4 [==============================] - 0s 13ms/step - loss: 0.1037
Epoch 176/200
4/4 [==============================] - 0s 14ms/step - loss: 0.1032
Epoch 177/200
4/4 [==============================] - 0s 16ms/step - loss: 0.1033
Epoch 178/200
4/4 [==============================] - 0s 18ms/step - loss: 0.1029
Epoch 179/200
4/4 [==============================] - 0s 17ms/step - loss: 0.1024
Epoch 180/200
4/4 [==============================] - 0s 16ms/step - loss: 0.1026
Epoch 181/200
4/4 [==============================] - 0s 16ms/step - loss: 0.1024
Epoch 182/200
4/4 [==============================] - 0s 16ms/step - loss: 0.1025
Epoch 183/200
4/4 [==============================] - 0s 15ms/step - loss: 0.1032
Epoch 184/200
4/4 [==============================] - 0s 14ms/step - loss: 0.1028
Epoch 185/200
4/4 [==============================] - 0s 16ms/step - loss: 0.1024
Epoch 186/200
4/4 [==============================] - 0s 16ms/step - loss: 0.1024
Epoch 187/200
4/4 [==============================] - 0s 18ms/step - loss: 0.1020
Epoch 188/200
4/4 [==============================] - 0s 17ms/step - loss: 0.1032
Epoch 189/200
4/4 [==============================] - 0s 17ms/step - loss: 0.1027
Epoch 190/200
4/4 [==============================] - 0s 17ms/step - loss: 0.1015
Epoch 191/200
4/4 [==============================] - 0s 25ms/step - loss: 0.1027
Epoch 192/200
4/4 [==============================] - 0s 20ms/step - loss: 0.1025
Epoch 193/200
4/4 [==============================] - 0s 20ms/step - loss: 0.1014
Epoch 194/200
4/4 [==============================] - 0s 19ms/step - loss: 0.1017
Epoch 195/200
4/4 [==============================] - 0s 15ms/step - loss: 0.1019
Epoch 196/200
4/4 [==============================] - 0s 17ms/step - loss: 0.1016
Epoch 197/200
4/4 [==============================] - 0s 20ms/step - loss: 0.1008
Epoch 198/200
4/4 [==============================] - 0s 20ms/step - loss: 0.1009
Epoch 199/200
4/4 [==============================] - 0s 20ms/step - loss: 0.1017
Epoch 200/200
4/4 [==============================] - 0s 19ms/step - loss: 0.1017
1/1 [==============================] - 1s 1s/step
4/4 [==============================] - 0s 9ms/step
[4]:
f.plot()
plt.savefig('LSTM Univariate.png')
plt.show()
../_images/lstm_lstm_latest_4_0.png

Problem 2 - Multivariate Forecasting

[5]:
data = pd.read_csv('avocado.csv')
[6]:
# demand
vol = data.groupby('Date')['Total Volume'].sum()
# price
price = data.groupby('Date')['AveragePrice'].sum()

fvol = Forecaster(
    y = vol,
    current_dates = vol.index,
    test_length = 13,
    validation_length = 13,
    future_dates = 13,
    metrics = ['rmse','r2'],
)
fprice = Forecaster(
    y = price,
    current_dates = price.index,
    future_dates = 13,
)
[7]:
fvol.plot()
plt.show()
../_images/lstm_lstm_latest_8_0.png
[8]:
transformer, reverter = find_optimal_transformation(
    fvol,
    set_aside_test_set=True, # prevents leakage so we can benchmark the resulting models fairly
    return_train_only = True, # prevents leakage so we can benchmark the resulting models fairly
    verbose=True,
    detrend_kwargs=[
        {'loess':True},
        {'poly_order':1},
        {'ln_trend':True},
    ],
    m = 52, # what makes one seasonal cycle?
    test_length = 4,
)
Using mlr model to find the best transformation set on 1 test sets, each 4 in length.
All transformation tries will be evaluated with 52 lags.
Last transformer tried:
[]
Score (rmse): 10788435.478499832
--------------------------------------------------
Last transformer tried:
[('DetrendTransform', {'loess': True})]
Score (rmse): 17367936.06969349
--------------------------------------------------
Last transformer tried:
[('DetrendTransform', {'poly_order': 1})]
Score (rmse): 12269036.46992314
--------------------------------------------------
Last transformer tried:
[('DetrendTransform', {'ln_trend': True})]
Score (rmse): 12093617.597284064
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'})]
Score (rmse): 9289548.042079216
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('Transform', BoxcoxTransform, {'lmbda': -0.5})]
Score (rmse): 10446492.57435158
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('Transform', BoxcoxTransform, {'lmbda': 0})]
Score (rmse): 10242650.677245248
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('Transform', BoxcoxTransform, {'lmbda': 0.5})]
Score (rmse): 9836892.333276885
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('DiffTransform', 1)]
Score (rmse): 9702659.462897006
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('DiffTransform', 52)]
Score (rmse): 36977467.903368585
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('ScaleTransform',)]
Score (rmse): 9289548.04207921
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('MinMaxTransform',)]
Score (rmse): 9289548.042079207
--------------------------------------------------
Last transformer tried:
[('DeseasonTransform', {'m': 52, 'model': 'add'}), ('RobustScaleTransform',)]
Score (rmse): 9289548.042079205
--------------------------------------------------
Final Selection:
[('DeseasonTransform', {'m': 52, 'model': 'add', 'train_only': True}), ('RobustScaleTransform', {'train_only': True})]
[9]:
fprice = transformer.fit_transform(fprice)
fvol = transformer.fit_transform(fvol)
[10]:
rnn_grid = gen_rnn_grid(
    layer_tries = 10,
    min_layer_size = 3,
    max_layer_size = 5,
    units_pool = [100],
    epochs = [100],
    dropout_pool = [0,0.05],
    validation_split=.2,
    callbacks=EarlyStopping(
      monitor='val_loss',
      patience=3,
    ),
    random_seed = 20,
) # creates a grid of hyperparameter values to tune the LSTM model
[11]:
def forecaster(fvol,fprice):
    # naive forecast for benchmarking
    fvol.set_estimator('naive')
    fvol.manual_forecast()
    # univariate lstm model
    fvol.add_ar_terms(13) # the model will use 13 series lags
    fvol.set_estimator('rnn')
    fvol.ingest_grid(rnn_grid)
    fvol.tune()
    fvol.auto_forecast(call_me='lstm_univariate')
    # multivariate lstm model
    fvol.add_series(fprice.y,called='price')
    fvol.add_lagged_terms('price',lags=13,drop=True)
    fvol.ingest_grid(rnn_grid)
    fvol.tune()
    fvol.auto_forecast(call_me='lstm_multivariate')
[12]:
forecaster(fvol=fvol,fprice=fprice)
1/1 [==============================] - 0s 442ms/step
1/1 [==============================] - 0s 208ms/step
1/1 [==============================] - 0s 361ms/step
WARNING:tensorflow:5 out of the last 9 calls to <function Model.make_predict_function.<locals>.predict_function at 0x000002415F29CF70> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has reduce_retracing=True option that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for  more details.
1/1 [==============================] - 0s 155ms/step
WARNING:tensorflow:6 out of the last 10 calls to <function Model.make_predict_function.<locals>.predict_function at 0x0000024158D988B0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has reduce_retracing=True option that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for  more details.
1/1 [==============================] - 0s 424ms/step
1/1 [==============================] - 0s 471ms/step
1/1 [==============================] - 0s 313ms/step
1/1 [==============================] - 0s 131ms/step
1/1 [==============================] - 0s 293ms/step
1/1 [==============================] - 0s 288ms/step
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:13:34         2234
metadata.json                                  2023-09-20 09:13:34           64
variables.h5                                   2023-09-20 09:13:34       524080
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:13:34         2234
metadata.json                                  2023-09-20 09:13:34           64
variables.h5                                   2023-09-20 09:13:34       524080
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
1/1 [==============================] - 0s 147ms/step
1/1 [==============================] - 0s 202ms/step
5/5 [==============================] - 0s 5ms/step
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:13:41         2234
metadata.json                                  2023-09-20 09:13:41           64
variables.h5                                   2023-09-20 09:13:41       524080
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:13:40         2234
metadata.json                                  2023-09-20 09:13:40           64
variables.h5                                   2023-09-20 09:13:40       524080
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...optimizer
......vars
.........0
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:13:41         2234
metadata.json                                  2023-09-20 09:13:41           64
variables.h5                                   2023-09-20 09:13:41       180720
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:13:40         2234
metadata.json                                  2023-09-20 09:13:40           64
variables.h5                                   2023-09-20 09:13:40       180720
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...optimizer
......vars
.........0
...vars
1/1 [==============================] - 0s 286ms/step
1/1 [==============================] - 0s 193ms/step
1/1 [==============================] - 1s 550ms/step
1/1 [==============================] - 0s 134ms/step
1/1 [==============================] - 0s 310ms/step
1/1 [==============================] - 0s 407ms/step
1/1 [==============================] - 0s 277ms/step
1/1 [==============================] - 0s 117ms/step
1/1 [==============================] - 0s 364ms/step
1/1 [==============================] - 0s 336ms/step
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:14:20         2234
metadata.json                                  2023-09-20 09:14:20           64
variables.h5                                   2023-09-20 09:14:21       524080
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 09:14:20         2234
metadata.json                                  2023-09-20 09:14:20           64
variables.h5                                   2023-09-20 09:14:20       524080
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
1/1 [==============================] - 0s 470ms/step
1/1 [==============================] - 0s 303ms/step
5/5 [==============================] - 0s 8ms/step
[13]:
fvol = reverter.fit_transform(fvol)
[14]:
fvol.plot_test_set(order_by='TestSetRMSE')
plt.savefig('LSTM MV test results.png')
plt.show()
../_images/lstm_lstm_latest_15_0.png
[15]:
pd.options.display.float_format = '{:,.4f}'.format
summ = fvol.export('model_summaries',determine_best_by='TestSetRMSE')
summ[['ModelNickname','TestSetRMSE','TestSetR2']]
[15]:
ModelNickname TestSetRMSE TestSetR2
0 lstm_multivariate 13,241,317.9599 0.3837
1 lstm_univariate 14,475,008.6416 0.2635
2 naive 17,403,456.6059 -0.0646
[16]:
summ[['ModelNickname','HyperParams']].style.set_properties(height = 5)
[16]:
  ModelNickname HyperParams
0 lstm_multivariate {'verbose': 0, 'epochs': 100, 'validation_split': 0.2, 'callbacks': , 'layers_struct': [('LSTM', {'units': 100, 'activation': 'tanh', 'dropout': 0.05, 'return_sequences': False}, 'LSTM', {'units': 100, 'activation': 'tanh', 'dropout': 0.05}, 'LSTM', {'units': 100, 'activation': 'tanh', 'dropout': 0.05})]}
1 lstm_univariate {'verbose': 0, 'epochs': 100, 'validation_split': 0.2, 'callbacks': , 'layers_struct': [('LSTM', {'units': 100, 'activation': 'relu', 'dropout': 0.0, 'return_sequences': False}, 'LSTM', {'units': 100, 'activation': 'relu', 'dropout': 0.0}, 'LSTM', {'units': 100, 'activation': 'relu', 'dropout': 0.0})]}
2 naive {}
[17]:
fvol.plot(order_by='TestSetRMSE')
plt.show()
../_images/lstm_lstm_latest_18_0.png

Problem 3 - Probabilistic Forecasting

[2]:
df = pdr.get_data_fred(
    'HOUSTNSA',
    start = '1959-01-01',
    end = '2022-12-31',
)

f = Forecaster(
    y = df['HOUSTNSA'],
    current_dates = df.index,
    future_dates = 24, # 2-year forecast horizon
    test_length = .1, # 10% test length
    cis = True,
    cilevel = .9, # 90% intervals
)

f.plot()
plt.show()
../_images/lstm_lstm_latest_20_0.png
[3]:
transformer, reverter = find_optimal_transformation(
    f,
    estimator = 'lstm',
    epochs = 10,
    set_aside_test_set=True, # prevents leakage so we can benchmark the resulting models fairly
    return_train_only = True, # prevents leakage so we can benchmark the resulting models fairly
    verbose=True,
    m = 52, # what makes one seasonal cycle?
    test_length = 24,
    num_test_sets = 3,
    space_between_sets = 12,
    detrend_kwargs=[
        {'loess':True},
        {'poly_order':1},
        {'ln_trend':True},
    ],
)
Using lstm model to find the best transformation set on 3 test sets, each 24 in length.
Epoch 1/10
17/17 [==============================] - 2s 3ms/step - loss: 0.4265
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4051
Epoch 3/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3817
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3553
Epoch 5/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3252
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2918
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2571
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2244
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1972
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1771
1/1 [==============================] - 0s 485ms/step
Epoch 1/10
21/21 [==============================] - 3s 3ms/step - loss: 0.4330
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.4043
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3748
Epoch 4/10
21/21 [==============================] - 0s 4ms/step - loss: 0.3421
Epoch 5/10
21/21 [==============================] - 0s 4ms/step - loss: 0.3050
Epoch 6/10
21/21 [==============================] - 0s 5ms/step - loss: 0.2644
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2241
Epoch 8/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1913
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1686
Epoch 10/10
21/21 [==============================] - 0s 3ms/step - loss: 0.1552
1/1 [==============================] - 1s 506ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 2ms/step - loss: 0.4244
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4041
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3819
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3571
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3290
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2980
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2655
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2344
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2068
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.1852
1/1 [==============================] - 0s 495ms/step
Epoch 1/10
20/20 [==============================] - 3s 4ms/step - loss: 0.4423
Epoch 2/10
20/20 [==============================] - 0s 4ms/step - loss: 0.4167
Epoch 3/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3912
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3639
Epoch 5/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3334
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2996
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2618
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2233
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1895
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1654
1/1 [==============================] - 1s 508ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4192
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3979
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3747
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3487
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3197
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2880
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2558
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2256
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2003
Epoch 10/10
16/16 [==============================] - 0s 3ms/step - loss: 0.1809
1/1 [==============================] - 0s 387ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4383
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4104
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3798
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3454
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3066
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2656
Epoch 7/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2263
Epoch 8/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1930
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1697
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1561
1/1 [==============================] - 0s 403ms/step
20/20 [==============================] - 0s 1ms/step
Last transformer tried:
[]
Score (rmse): 22.1277468319124
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 3ms/step - loss: 0.4547
Epoch 2/10
17/17 [==============================] - 0s 4ms/step - loss: 0.4325
Epoch 3/10
17/17 [==============================] - 0s 4ms/step - loss: 0.4079
Epoch 4/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3797
Epoch 5/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3473
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3112
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2736
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2379
Epoch 9/10
17/17 [==============================] - 0s 5ms/step - loss: 0.2081
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1858
1/1 [==============================] - 0s 414ms/step
Epoch 1/10
21/21 [==============================] - 2s 3ms/step - loss: 0.4415
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.4120
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3786
Epoch 4/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3401
Epoch 5/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2974
Epoch 6/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2528
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2124
Epoch 8/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1820
Epoch 9/10
21/21 [==============================] - 0s 3ms/step - loss: 0.1634
Epoch 10/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1531
1/1 [==============================] - 1s 687ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 1s 2ms/step - loss: 0.4513
Epoch 2/10
16/16 [==============================] - 0s 2ms/step - loss: 0.4314
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4094
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3842
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3553
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3226
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2874
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2524
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2208
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.1952
1/1 [==============================] - 0s 417ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4442
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4171
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3871
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3526
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3131
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2709
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2303
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1968
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1739
Epoch 10/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1603
1/1 [==============================] - 0s 424ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 1s 3ms/step - loss: 0.4491
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4290
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4077
Epoch 4/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3837
Epoch 5/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3562
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3251
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2912
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2570
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2255
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.1994
1/1 [==============================] - 0s 421ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4478
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4203
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3918
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3610
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3272
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2906
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2522
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2163
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1863
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1665
1/1 [==============================] - 0s 405ms/step
20/20 [==============================] - 0s 2ms/step
Last transformer tried:
[('DetrendTransform', {'loess': True})]
Score (rmse): 23.107732581389552
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 3ms/step - loss: 0.4457
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4262
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4053
Epoch 4/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3813
Epoch 5/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3531
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3205
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2847
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2489
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2166
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1919
1/1 [==============================] - 0s 409ms/step
Epoch 1/10
21/21 [==============================] - 1s 2ms/step - loss: 0.4143
Epoch 2/10
21/21 [==============================] - 0s 2ms/step - loss: 0.3870
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3567
Epoch 4/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3228
Epoch 5/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2863
Epoch 6/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2502
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2177
Epoch 8/10
21/21 [==============================] - 0s 3ms/step - loss: 0.1920
Epoch 9/10
21/21 [==============================] - 0s 3ms/step - loss: 0.1749
Epoch 10/10
21/21 [==============================] - 0s 3ms/step - loss: 0.1662
1/1 [==============================] - 0s 338ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 1s 3ms/step - loss: 0.4417
Epoch 2/10
16/16 [==============================] - 0s 2ms/step - loss: 0.4218
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4010
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3777
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3513
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3216
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2898
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2578
Epoch 9/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2279
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2026
1/1 [==============================] - 0s 445ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4191
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3921
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3652
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3374
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3080
Epoch 6/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2777
Epoch 7/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2479
Epoch 8/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2202
Epoch 9/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1968
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1789
1/1 [==============================] - 0s 350ms/step
20/20 [==============================] - 0s 1ms/step
Epoch 1/10
16/16 [==============================] - 1s 3ms/step - loss: 0.4330
Epoch 2/10
16/16 [==============================] - 0s 2ms/step - loss: 0.4124
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3905
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3662
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3389
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3088
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2774
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2466
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2191
Epoch 10/10
16/16 [==============================] - 0s 3ms/step - loss: 0.1961
1/1 [==============================] - 0s 338ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4293
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4036
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3779
Epoch 4/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3501
Epoch 5/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3193
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2859
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2518
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2198
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1938
Epoch 10/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1750
1/1 [==============================] - 1s 628ms/step
20/20 [==============================] - 0s 2ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1})]
Score (rmse): 16.923530213289453
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 4ms/step - loss: 0.4302
Epoch 2/10
17/17 [==============================] - 0s 4ms/step - loss: 0.4091
Epoch 3/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3866
Epoch 4/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3615
Epoch 5/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3325
Epoch 6/10
17/17 [==============================] - 0s 5ms/step - loss: 0.3002
Epoch 7/10
17/17 [==============================] - 0s 5ms/step - loss: 0.2659
Epoch 8/10
17/17 [==============================] - 0s 5ms/step - loss: 0.2329
Epoch 9/10
17/17 [==============================] - 0s 5ms/step - loss: 0.2040
Epoch 10/10
17/17 [==============================] - 0s 5ms/step - loss: 0.1821
1/1 [==============================] - 0s 478ms/step
Epoch 1/10
21/21 [==============================] - 2s 3ms/step - loss: 0.4169
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3858
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3518
Epoch 4/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3145
Epoch 5/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2749
Epoch 6/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2360
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2018
Epoch 8/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1766
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1608
Epoch 10/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1527
1/1 [==============================] - 0s 415ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4252
Epoch 2/10
16/16 [==============================] - 0s 2ms/step - loss: 0.4038
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3808
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3555
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3275
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2970
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2659
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2360
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2099
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.1889
1/1 [==============================] - 0s 393ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4294
Epoch 2/10
20/20 [==============================] - 0s 4ms/step - loss: 0.4011
Epoch 3/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3713
Epoch 4/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3388
Epoch 5/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3035
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2660
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2304
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1993
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1757
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1620
1/1 [==============================] - 0s 429ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4228
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4024
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3806
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3567
Epoch 5/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3300
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3003
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2691
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2386
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2112
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.1891
1/1 [==============================] - 0s 387ms/step
Epoch 1/10
20/20 [==============================] - 2s 2ms/step - loss: 0.4390
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4129
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3859
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3563
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3238
Epoch 6/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2887
Epoch 7/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2530
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2185
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1898
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1685
1/1 [==============================] - 0s 384ms/step
20/20 [==============================] - 0s 2ms/step
Last transformer tried:
[('DetrendTransform', {'ln_trend': True})]
Score (rmse): 21.321529285599414
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 1s 3ms/step - loss: 0.4634
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4418
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4178
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3904
Epoch 5/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3589
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3234
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2853
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2482
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2162
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1913
1/1 [==============================] - 0s 410ms/step
Epoch 1/10
21/21 [==============================] - 2s 3ms/step - loss: 0.4300
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.4009
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3692
Epoch 4/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3337
Epoch 5/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2953
Epoch 6/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2566
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2208
Epoch 8/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1928
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1744
Epoch 10/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1642
1/1 [==============================] - 0s 436ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4747
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4537
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4309
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4049
Epoch 5/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3754
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3425
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3067
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2703
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2366
Epoch 10/10
16/16 [==============================] - 0s 5ms/step - loss: 0.2086
1/1 [==============================] - 1s 566ms/step
Epoch 1/10
20/20 [==============================] - 2s 2ms/step - loss: 0.4486
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4211
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3916
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3589
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3233
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2853
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2481
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2154
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1896
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1736
1/1 [==============================] - 0s 365ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 2ms/step - loss: 0.4813
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4603
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4375
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4115
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3820
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3483
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3113
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2730
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2375
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2079
1/1 [==============================] - 0s 473ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4680
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4410
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4114
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3776
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3399
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2994
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2593
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2243
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1969
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1783
1/1 [==============================] - 0s 386ms/step
20/20 [==============================] - 0s 2ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1}), ('DeseasonTransform', {'m': 52, 'model': 'add'})]
Score (rmse): 14.610087883063033
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 2ms/step - loss: 0.8790
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.8552
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.8282
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.7962
Epoch 5/10
17/17 [==============================] - 0s 3ms/step - loss: 0.7575
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: 0.7107
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.6548
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.5886
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.5119
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.4244
1/1 [==============================] - 0s 387ms/step
Epoch 1/10
17/17 [==============================] - 1s 2ms/step - loss: nan
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: nan
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: nan
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: nan
Epoch 5/10
17/17 [==============================] - 0s 4ms/step - loss: nan
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: nan
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: nan
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: nan
Epoch 9/10
17/17 [==============================] - 0s 5ms/step - loss: nan
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: nan
1/1 [==============================] - 0s 439ms/step
Epoch 1/10
17/17 [==============================] - 2s 2ms/step - loss: 0.2927
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2914
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2904
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2894
Epoch 5/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2881
Epoch 6/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2869
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2857
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2842
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2825
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2807
1/1 [==============================] - 0s 366ms/step
Epoch 1/10
17/17 [==============================] - 2s 3ms/step - loss: 0.4306
Epoch 2/10
17/17 [==============================] - 0s 4ms/step - loss: 0.4097
Epoch 3/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3865
Epoch 4/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3601
Epoch 5/10
17/17 [==============================] - 0s 4ms/step - loss: 0.3297
Epoch 6/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2947
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2555
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2148
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1765
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1473
WARNING:tensorflow:5 out of the last 25 calls to <function Model.make_predict_function.<locals>.predict_function at 0x000001C6543F2550> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has reduce_retracing=True option that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for  more details.
1/1 [==============================] - 1s 538ms/step
Epoch 1/10
21/21 [==============================] - 2s 3ms/step - loss: 0.4202
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3913
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3587
Epoch 4/10
21/21 [==============================] - 0s 4ms/step - loss: 0.3206
Epoch 5/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2760
Epoch 6/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2266
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1787
Epoch 8/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1436
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1254
Epoch 10/10
21/21 [==============================] - 0s 5ms/step - loss: 0.1189
WARNING:tensorflow:6 out of the last 26 calls to <function Model.make_predict_function.<locals>.predict_function at 0x000001C658A3AAF0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has reduce_retracing=True option that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for  more details.
1/1 [==============================] - 0s 479ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4244
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4036
Epoch 3/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3812
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3561
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3272
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2941
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2574
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2192
Epoch 9/10
16/16 [==============================] - 0s 3ms/step - loss: 0.1831
Epoch 10/10
16/16 [==============================] - 0s 3ms/step - loss: 0.1544
1/1 [==============================] - 0s 409ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4247
Epoch 2/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3992
Epoch 3/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3715
Epoch 4/10
20/20 [==============================] - 0s 5ms/step - loss: 0.3399
Epoch 5/10
20/20 [==============================] - 0s 5ms/step - loss: 0.3033
Epoch 6/10
20/20 [==============================] - 0s 5ms/step - loss: 0.2621
Epoch 7/10
20/20 [==============================] - 0s 5ms/step - loss: 0.2186
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1782
Epoch 9/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1475
Epoch 10/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1294
1/1 [==============================] - 0s 483ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4294
Epoch 2/10
16/16 [==============================] - 0s 4ms/step - loss: 0.4092
Epoch 3/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3866
Epoch 4/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3608
Epoch 5/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3309
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2965
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2584
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2194
Epoch 9/10
16/16 [==============================] - 0s 5ms/step - loss: 0.1829
Epoch 10/10
16/16 [==============================] - 0s 5ms/step - loss: 0.1545
1/1 [==============================] - 0s 473ms/step
Epoch 1/10
20/20 [==============================] - 2s 2ms/step - loss: 0.4205
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3943
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3642
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3280
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2846
Epoch 6/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2359
Epoch 7/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1880
Epoch 8/10
20/20 [==============================] - 0s 2ms/step - loss: 0.1506
Epoch 9/10
20/20 [==============================] - 0s 2ms/step - loss: 0.1309
Epoch 10/10
20/20 [==============================] - 0s 2ms/step - loss: 0.1235
1/1 [==============================] - 0s 322ms/step
20/20 [==============================] - 0s 1ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1}), ('DeseasonTransform', {'m': 52, 'model': 'add'}), ('DiffTransform', 1)]
Score (rmse): 81.22989950780023
--------------------------------------------------
Epoch 1/10
15/15 [==============================] - 1s 2ms/step - loss: 0.4980
Epoch 2/10
15/15 [==============================] - 0s 2ms/step - loss: 0.4787
Epoch 3/10
15/15 [==============================] - 0s 3ms/step - loss: 0.4585
Epoch 4/10
15/15 [==============================] - 0s 2ms/step - loss: 0.4365
Epoch 5/10
15/15 [==============================] - 0s 2ms/step - loss: 0.4117
Epoch 6/10
15/15 [==============================] - 0s 3ms/step - loss: 0.3837
Epoch 7/10
15/15 [==============================] - 0s 2ms/step - loss: 0.3525
Epoch 8/10
15/15 [==============================] - 0s 3ms/step - loss: 0.3188
Epoch 9/10
15/15 [==============================] - 0s 3ms/step - loss: 0.2845
Epoch 10/10
15/15 [==============================] - 0s 3ms/step - loss: 0.2511
1/1 [==============================] - 0s 322ms/step
Epoch 1/10
19/19 [==============================] - 1s 2ms/step - loss: 0.4822
Epoch 2/10
19/19 [==============================] - 0s 2ms/step - loss: 0.4549
Epoch 3/10
19/19 [==============================] - 0s 2ms/step - loss: 0.4261
Epoch 4/10
19/19 [==============================] - 0s 3ms/step - loss: 0.3941
Epoch 5/10
19/19 [==============================] - 0s 2ms/step - loss: 0.3577
Epoch 6/10
19/19 [==============================] - 0s 3ms/step - loss: 0.3172
Epoch 7/10
19/19 [==============================] - 0s 3ms/step - loss: 0.2753
Epoch 8/10
19/19 [==============================] - 0s 2ms/step - loss: 0.2348
Epoch 9/10
19/19 [==============================] - 0s 2ms/step - loss: 0.2016
Epoch 10/10
19/19 [==============================] - 0s 2ms/step - loss: 0.1775
1/1 [==============================] - 0s 300ms/step
19/19 [==============================] - 0s 1ms/step
Epoch 1/10
15/15 [==============================] - 2s 3ms/step - loss: 0.4967
Epoch 2/10
15/15 [==============================] - 0s 3ms/step - loss: 0.4761
Epoch 3/10
15/15 [==============================] - 0s 3ms/step - loss: 0.4546
Epoch 4/10
15/15 [==============================] - 0s 3ms/step - loss: 0.4310
Epoch 5/10
15/15 [==============================] - 0s 3ms/step - loss: 0.4044
Epoch 6/10
15/15 [==============================] - 0s 3ms/step - loss: 0.3750
Epoch 7/10
15/15 [==============================] - 0s 3ms/step - loss: 0.3430
Epoch 8/10
15/15 [==============================] - 0s 3ms/step - loss: 0.3096
Epoch 9/10
15/15 [==============================] - 0s 3ms/step - loss: 0.2761
Epoch 10/10
15/15 [==============================] - 0s 3ms/step - loss: 0.2452
1/1 [==============================] - 0s 431ms/step
Epoch 1/10
19/19 [==============================] - 2s 2ms/step - loss: 0.4897
Epoch 2/10
19/19 [==============================] - 0s 2ms/step - loss: 0.4642
Epoch 3/10
19/19 [==============================] - 0s 2ms/step - loss: 0.4369
Epoch 4/10
19/19 [==============================] - 0s 2ms/step - loss: 0.4063
Epoch 5/10
19/19 [==============================] - 0s 2ms/step - loss: 0.3709
Epoch 6/10
19/19 [==============================] - 0s 3ms/step - loss: 0.3309
Epoch 7/10
19/19 [==============================] - 0s 3ms/step - loss: 0.2880
Epoch 8/10
19/19 [==============================] - 0s 3ms/step - loss: 0.2460
Epoch 9/10
19/19 [==============================] - 0s 3ms/step - loss: 0.2090
Epoch 10/10
19/19 [==============================] - 0s 3ms/step - loss: 0.1816
1/1 [==============================] - 0s 386ms/step
19/19 [==============================] - 0s 1ms/step
Epoch 1/10
14/14 [==============================] - 2s 2ms/step - loss: 0.4934
Epoch 2/10
14/14 [==============================] - 0s 2ms/step - loss: 0.4759
Epoch 3/10
14/14 [==============================] - 0s 2ms/step - loss: 0.4566
Epoch 4/10
14/14 [==============================] - 0s 3ms/step - loss: 0.4353
Epoch 5/10
14/14 [==============================] - 0s 3ms/step - loss: 0.4112
Epoch 6/10
14/14 [==============================] - 0s 3ms/step - loss: 0.3844
Epoch 7/10
14/14 [==============================] - 0s 3ms/step - loss: 0.3549
Epoch 8/10
14/14 [==============================] - 0s 4ms/step - loss: 0.3236
Epoch 9/10
14/14 [==============================] - 0s 4ms/step - loss: 0.2918
Epoch 10/10
14/14 [==============================] - 0s 4ms/step - loss: 0.2607
1/1 [==============================] - 0s 464ms/step
Epoch 1/10
18/18 [==============================] - 2s 2ms/step - loss: 0.4966
Epoch 2/10
18/18 [==============================] - 0s 3ms/step - loss: 0.4727
Epoch 3/10
18/18 [==============================] - 0s 3ms/step - loss: 0.4488
Epoch 4/10
18/18 [==============================] - 0s 3ms/step - loss: 0.4236
Epoch 5/10
18/18 [==============================] - 0s 3ms/step - loss: 0.3965
Epoch 6/10
18/18 [==============================] - 0s 3ms/step - loss: 0.3666
Epoch 7/10
18/18 [==============================] - 0s 4ms/step - loss: 0.3342
Epoch 8/10
18/18 [==============================] - 0s 4ms/step - loss: 0.3004
Epoch 9/10
18/18 [==============================] - 0s 6ms/step - loss: 0.2665
Epoch 10/10
18/18 [==============================] - 0s 5ms/step - loss: 0.2346
1/1 [==============================] - 1s 559ms/step
18/18 [==============================] - 0s 2ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1}), ('DeseasonTransform', {'m': 52, 'model': 'add'}), ('DiffTransform', 52)]
Score (rmse): 72.21666118044968
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 3ms/step - loss: 0.4649
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4440
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4212
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3954
Epoch 5/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3659
Epoch 6/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3322
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2952
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2578
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2239
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1971
1/1 [==============================] - 1s 530ms/step
Epoch 1/10
21/21 [==============================] - 2s 2ms/step - loss: 0.4294
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.4007
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3691
Epoch 4/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3335
Epoch 5/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2945
Epoch 6/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2549
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2198
Epoch 8/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1919
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1736
Epoch 10/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1639
1/1 [==============================] - 0s 421ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 1s 2ms/step - loss: 0.4752
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4558
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4344
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4100
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3819
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3497
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3138
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2760
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2402
Epoch 10/10
16/16 [==============================] - 0s 5ms/step - loss: 0.2099
1/1 [==============================] - 1s 530ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4517
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4265
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3990
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3672
Epoch 5/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3308
Epoch 6/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2905
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2500
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2143
Epoch 9/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1876
Epoch 10/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1714
1/1 [==============================] - 0s 390ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 3ms/step - loss: 0.4811
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4598
Epoch 3/10
16/16 [==============================] - 0s 4ms/step - loss: 0.4369
Epoch 4/10
16/16 [==============================] - 0s 4ms/step - loss: 0.4110
Epoch 5/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3816
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3484
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3117
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2739
Epoch 9/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2385
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2085
1/1 [==============================] - 0s 437ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4640
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4362
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4051
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3699
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3309
Epoch 6/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2894
Epoch 7/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2496
Epoch 8/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2149
Epoch 9/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1888
Epoch 10/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1723
1/1 [==============================] - 0s 364ms/step
20/20 [==============================] - 0s 2ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1}), ('DeseasonTransform', {'m': 52, 'model': 'add'}), ('ScaleTransform',)]
Score (rmse): 14.208245879919753
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 2ms/step - loss: 0.4655
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4443
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4211
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3944
Epoch 5/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3636
Epoch 6/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3284
Epoch 7/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2903
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2529
Epoch 9/10
17/17 [==============================] - 0s 3ms/step - loss: 0.2194
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1938
1/1 [==============================] - 0s 479ms/step
Epoch 1/10
21/21 [==============================] - 2s 3ms/step - loss: 0.4372
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.4097
Epoch 3/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3802
Epoch 4/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3472
Epoch 5/10
21/21 [==============================] - 0s 4ms/step - loss: 0.3102
Epoch 6/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2712
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2332
Epoch 8/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2013
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1791
Epoch 10/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1666
1/1 [==============================] - 0s 480ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 1s 2ms/step - loss: 0.4697
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4469
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4213
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3925
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3604
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3252
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2884
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2526
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2214
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.1970
1/1 [==============================] - 1s 543ms/step
Epoch 1/10
20/20 [==============================] - 2s 2ms/step - loss: 0.4489
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4207
Epoch 3/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3894
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3545
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3164
Epoch 6/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2773
Epoch 7/10
20/20 [==============================] - 0s 3ms/step - loss: 0.2407
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2099
Epoch 9/10
20/20 [==============================] - 0s 3ms/step - loss: 0.1869
Epoch 10/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1723
1/1 [==============================] - 1s 737ms/step
20/20 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 2s 2ms/step - loss: 0.4819
Epoch 2/10
16/16 [==============================] - 0s 2ms/step - loss: 0.4620
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4413
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4183
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3924
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3630
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3296
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2930
Epoch 9/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2561
Epoch 10/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2224
1/1 [==============================] - 0s 422ms/step
Epoch 1/10
20/20 [==============================] - 2s 3ms/step - loss: 0.4605
Epoch 2/10
20/20 [==============================] - 0s 3ms/step - loss: 0.4320
Epoch 3/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3999
Epoch 4/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3634
Epoch 5/10
20/20 [==============================] - 0s 3ms/step - loss: 0.3232
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2817
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2422
Epoch 8/10
20/20 [==============================] - 0s 5ms/step - loss: 0.2099
Epoch 9/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1870
Epoch 10/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1726
1/1 [==============================] - 1s 556ms/step
20/20 [==============================] - 0s 3ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1}), ('DeseasonTransform', {'m': 52, 'model': 'add'}), ('MinMaxTransform',)]
Score (rmse): 14.445980804969805
--------------------------------------------------
Epoch 1/10
17/17 [==============================] - 2s 3ms/step - loss: 0.4660
Epoch 2/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4441
Epoch 3/10
17/17 [==============================] - 0s 3ms/step - loss: 0.4213
Epoch 4/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3959
Epoch 5/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3669
Epoch 6/10
17/17 [==============================] - 0s 3ms/step - loss: 0.3336
Epoch 7/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2968
Epoch 8/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2593
Epoch 9/10
17/17 [==============================] - 0s 4ms/step - loss: 0.2255
Epoch 10/10
17/17 [==============================] - 0s 4ms/step - loss: 0.1983
1/1 [==============================] - 1s 594ms/step
Epoch 1/10
21/21 [==============================] - 2s 3ms/step - loss: 0.4268
Epoch 2/10
21/21 [==============================] - 0s 3ms/step - loss: 0.3978
Epoch 3/10
21/21 [==============================] - 0s 4ms/step - loss: 0.3656
Epoch 4/10
21/21 [==============================] - 0s 4ms/step - loss: 0.3287
Epoch 5/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2884
Epoch 6/10
21/21 [==============================] - 0s 3ms/step - loss: 0.2479
Epoch 7/10
21/21 [==============================] - 0s 4ms/step - loss: 0.2122
Epoch 8/10
21/21 [==============================] - 0s 3ms/step - loss: 0.1856
Epoch 9/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1686
Epoch 10/10
21/21 [==============================] - 0s 4ms/step - loss: 0.1603
1/1 [==============================] - 1s 600ms/step
21/21 [==============================] - 0s 2ms/step
Epoch 1/10
16/16 [==============================] - 3s 2ms/step - loss: 0.4761
Epoch 2/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4564
Epoch 3/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4355
Epoch 4/10
16/16 [==============================] - 0s 3ms/step - loss: 0.4118
Epoch 5/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3844
Epoch 6/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3529
Epoch 7/10
16/16 [==============================] - 0s 3ms/step - loss: 0.3176
Epoch 8/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2803
Epoch 9/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2444
Epoch 10/10
16/16 [==============================] - 0s 3ms/step - loss: 0.2132
1/1 [==============================] - 0s 442ms/step
Epoch 1/10
20/20 [==============================] - 3s 6ms/step - loss: 0.4506
Epoch 2/10
20/20 [==============================] - 0s 6ms/step - loss: 0.4247
Epoch 3/10
20/20 [==============================] - 0s 5ms/step - loss: 0.3967
Epoch 4/10
20/20 [==============================] - 0s 5ms/step - loss: 0.3651
Epoch 5/10
20/20 [==============================] - 0s 5ms/step - loss: 0.3291
Epoch 6/10
20/20 [==============================] - 0s 6ms/step - loss: 0.2899
Epoch 7/10
20/20 [==============================] - 0s 5ms/step - loss: 0.2510
Epoch 8/10
20/20 [==============================] - 0s 6ms/step - loss: 0.2171
Epoch 9/10
20/20 [==============================] - 0s 7ms/step - loss: 0.1909
Epoch 10/10
20/20 [==============================] - 0s 7ms/step - loss: 0.1748
1/1 [==============================] - 1s 1s/step
20/20 [==============================] - 0s 3ms/step
Epoch 1/10
16/16 [==============================] - 2s 4ms/step - loss: 0.4811
Epoch 2/10
16/16 [==============================] - 0s 4ms/step - loss: 0.4618
Epoch 3/10
16/16 [==============================] - 0s 5ms/step - loss: 0.4408
Epoch 4/10
16/16 [==============================] - 0s 6ms/step - loss: 0.4169
Epoch 5/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3891
Epoch 6/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3571
Epoch 7/10
16/16 [==============================] - 0s 4ms/step - loss: 0.3209
Epoch 8/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2824
Epoch 9/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2453
Epoch 10/10
16/16 [==============================] - 0s 4ms/step - loss: 0.2130
1/1 [==============================] - 1s 528ms/step
Epoch 1/10
20/20 [==============================] - 2s 2ms/step - loss: 0.4618
Epoch 2/10
20/20 [==============================] - 0s 2ms/step - loss: 0.4342
Epoch 3/10
20/20 [==============================] - 0s 4ms/step - loss: 0.4030
Epoch 4/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3672
Epoch 5/10
20/20 [==============================] - 0s 4ms/step - loss: 0.3268
Epoch 6/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2841
Epoch 7/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2437
Epoch 8/10
20/20 [==============================] - 0s 4ms/step - loss: 0.2101
Epoch 9/10
20/20 [==============================] - 0s 4ms/step - loss: 0.1850
Epoch 10/10
20/20 [==============================] - 0s 5ms/step - loss: 0.1700
1/1 [==============================] - 0s 344ms/step
20/20 [==============================] - 0s 1ms/step
Last transformer tried:
[('DetrendTransform', {'poly_order': 1}), ('DeseasonTransform', {'m': 52, 'model': 'add'}), ('RobustScaleTransform',)]
Score (rmse): 15.184932604377607
--------------------------------------------------
Final Selection:
[('DetrendTransform', {'poly_order': 1, 'train_only': True}), ('DeseasonTransform', {'m': 52, 'model': 'add', 'train_only': True}), ('ScaleTransform', {'train_only': True})]
[4]:
rnn_grid = gen_rnn_grid(
    layer_tries = 100,
    min_layer_size = 1,
    max_layer_size = 5,
    units_pool = [100],
    epochs = [100],
    dropout_pool = [0,0.05],
    validation_split=.2,
    callbacks=EarlyStopping(
      monitor='val_loss',
      patience=3,
    ),
    random_seed = 20,
) # make a really big grid and limit it manually
[5]:
def forecaster(f,grid):
    f.auto_Xvar_select(
        try_trend=False,
        try_seasonalities=False,
        max_ar=100
    )
    f.set_estimator('rnn')
    f.ingest_grid(grid)
    f.limit_grid_size(10) # randomly reduce the big grid to 10
    f.cross_validate(k=3,test_length=24) # three-fold cross-validation
    f.auto_forecast()
[6]:
pipeline = Pipeline(
    steps = [
        ('Transform',transformer),
        ('Forecast',forecaster),
        ('Revert',reverter),
    ]
)

f = pipeline.fit_predict(f,grid=rnn_grid)
1/1 [==============================] - 0s 317ms/step
1/1 [==============================] - 0s 427ms/step
1/1 [==============================] - 0s 141ms/step
1/1 [==============================] - 0s 309ms/step
1/1 [==============================] - 0s 420ms/step
1/1 [==============================] - 0s 150ms/step
1/1 [==============================] - 0s 313ms/step
1/1 [==============================] - 0s 307ms/step
1/1 [==============================] - 0s 292ms/step
1/1 [==============================] - 0s 173ms/step
1/1 [==============================] - 0s 358ms/step
1/1 [==============================] - 0s 454ms/step
1/1 [==============================] - 0s 180ms/step
1/1 [==============================] - 0s 479ms/step
1/1 [==============================] - 0s 312ms/step
1/1 [==============================] - 0s 167ms/step
1/1 [==============================] - 0s 360ms/step
1/1 [==============================] - 0s 340ms/step
1/1 [==============================] - 0s 359ms/step
1/1 [==============================] - 0s 162ms/step
1/1 [==============================] - 0s 361ms/step
1/1 [==============================] - 0s 486ms/step
1/1 [==============================] - 0s 211ms/step
1/1 [==============================] - 1s 638ms/step
1/1 [==============================] - 1s 829ms/step
1/1 [==============================] - 0s 458ms/step
1/1 [==============================] - 0s 405ms/step
1/1 [==============================] - 0s 472ms/step
1/1 [==============================] - 0s 373ms/step
1/1 [==============================] - 0s 167ms/step
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 11:49:23         2235
metadata.json                                  2023-09-20 11:49:23           64
variables.h5                                   2023-09-20 11:49:23       537280
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 11:49:22         2235
metadata.json                                  2023-09-20 11:49:22           64
variables.h5                                   2023-09-20 11:49:22       537280
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
1/1 [==============================] - 0s 371ms/step
1/1 [==============================] - 0s 400ms/step
23/23 [==============================] - 0s 5ms/step
[7]:
f.plot(ci=True)
plt.savefig('Probabilistic LSTM.png')
plt.show()
../_images/lstm_lstm_latest_25_0.png

Problem 4 - Dynamic Probabilistic Forecasting

[8]:
params = f.best_params
num_chosen_lags = len(f.get_regressor_names())
[9]:
def forecaster(f,params):
    f.set_estimator('rnn')
    f.manual_forecast(**params,test_again=False,lags=num_chosen_lags)
[10]:
pipeline = Pipeline(
    steps = [
        ('Transform',transformer),
        ('Forecast',forecaster),
        ('Revert',reverter),
    ]
)
[11]:
f = pipeline.fit_predict(f,params = params)
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 11:49:34         2235
metadata.json                                  2023-09-20 11:49:34           64
variables.h5                                   2023-09-20 11:49:34       537280
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 11:49:34         2235
metadata.json                                  2023-09-20 11:49:34           64
variables.h5                                   2023-09-20 11:49:34       537280
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...metrics\mean
......vars
.........0
.........1
...optimizer
......vars
.........0
.........1
.........10
.........2
.........3
.........4
.........5
.........6
.........7
.........8
.........9
...vars
Keras weights file (<HDF5 file "variables.h5" (mode r+)>) saving:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...optimizer
......vars
.........0
...vars
Keras model archive saving:
File Name                                             Modified             Size
config.json                                    2023-09-20 11:49:35         2235
metadata.json                                  2023-09-20 11:49:35           64
variables.h5                                   2023-09-20 11:49:35       185120
Keras model archive loading:
File Name                                             Modified             Size
config.json                                    2023-09-20 11:49:34         2235
metadata.json                                  2023-09-20 11:49:34           64
variables.h5                                   2023-09-20 11:49:34       185120
Keras weights file (<HDF5 file "variables.h5" (mode r)>) loading:
...layers\dense
......vars
.........0
.........1
...layers\lstm
......vars
...layers\lstm\cell
......vars
.........0
.........1
.........2
...optimizer
......vars
.........0
...vars
1/1 [==============================] - 0s 361ms/step
23/23 [==============================] - 0s 5ms/step
[12]:
backtest_results = backtest_for_resid_matrix(
    f,
    pipeline=pipeline,
    alpha = .1,
    jump_back = 12,
    params = f.best_params,
)
1/1 [==============================] - 0s 342ms/step
23/23 [==============================] - 0s 4ms/step
1/1 [==============================] - 0s 499ms/step
22/22 [==============================] - 0s 6ms/step
1/1 [==============================] - 0s 492ms/step
22/22 [==============================] - 0s 5ms/step
1/1 [==============================] - 0s 457ms/step
22/22 [==============================] - 0s 6ms/step
1/1 [==============================] - 0s 438ms/step
21/21 [==============================] - 0s 5ms/step
1/1 [==============================] - 1s 604ms/step
21/21 [==============================] - 0s 7ms/step
1/1 [==============================] - 0s 381ms/step
20/20 [==============================] - 0s 5ms/step
1/1 [==============================] - 1s 514ms/step
20/20 [==============================] - 0s 6ms/step
1/1 [==============================] - 0s 351ms/step
20/20 [==============================] - 0s 4ms/step
1/1 [==============================] - 0s 442ms/step
19/19 [==============================] - 0s 4ms/step
[13]:
backtest_resid_matrix = get_backtest_resid_matrix(backtest_results)
[14]:
pd.options.display.max_columns = None
fig, ax = plt.subplots(figsize=(16,8))
mat = pd.DataFrame(np.abs(backtest_resid_matrix[0]['rnn']))
sns.heatmap(
    mat.round(1),
    annot = True,
    ax = ax,
    cmap = sns.color_palette("icefire", as_cmap=True),
)
plt.ylabel('Backtest Iteration',size=16)
plt.xlabel('Forecast Step',size = 16)
plt.title('Absolute Residuals from LSTM Backtest',size=25)
plt.savefig('LSTM Resid Matrix.png')
plt.show()
../_images/lstm_lstm_latest_33_0.png
[15]:
fig, ax = plt.subplots(1,2,figsize=(16,8))
sns.heatmap(
    pd.DataFrame({'Mean Residuals':mat.mean().round(1)}),
    annot = True,
    cmap = 'cubehelix_r',
    ax = ax[0],
    annot_kws={"fontsize": 16},
)
cbar = ax[0].collections[0].colorbar
cbar.ax.invert_yaxis()
ax[0].set_title('Mean Absolute Residuals',size=20)
ax[0].set_ylabel('Forecast Step',size=15)
ax[0].set_xlabel('')
sns.heatmap(
    pd.DataFrame({'Residuals 95 Percentile':np.percentile(mat, q=95, axis = 0)}),
    annot = True,
    cmap = 'cubehelix_r',
    ax = ax[1],
    annot_kws={"fontsize": 16},
)
cbar = ax[1].collections[0].colorbar
cbar.ax.invert_yaxis()
ax[1].set_title('Absolute Residual 95 Percentiles',size=20)
ax[1].set_ylabel('Forecast Step',size=15)
ax[1].set_xlabel('')
plt.show()
../_images/lstm_lstm_latest_34_0.png
[16]:
overwrite_forecast_intervals(f,backtest_resid_matrix=backtest_resid_matrix,alpha=.1)
[17]:
f.plot(ci=True)
plt.savefig('LSTM dynamic intervals.png')
plt.show()
../_images/lstm_lstm_latest_36_0.png

Problem 5 - Transfer Learning

Scenario 1: New data from the same series

[49]:
df = pdr.get_data_fred(
    'HOUSTNSA',
    start = '1959-01-01',
    end = '2023-06-30',
)

f_new = Forecaster(
    y = df.iloc[:,0],
    current_dates = df.index,
    future_dates = 24, # 2-year forecast horizon
)

f_new.plot()
plt.show()
../_images/lstm_lstm_latest_38_0.png
[50]:
def transfer_forecast(f_new,transfer_from):
    f_new = infer_apply_Xvar_selection(
        infer_from=transfer_from,
        apply_to=f_new
    )
    f_new.transfer_predict(
        transfer_from=transfer_from,
        model='rnn',
        model_type='tf'
    )
[51]:
pipeline_can = Pipeline(
    steps = [
        ('Transform',transformer),
        ('Transfer Forecast',transfer_forecast),
        ('Revert',reverter),
    ]
)

f_new = pipeline_can.fit_predict(f_new,transfer_from=f)
1/1 [==============================] - 0s 20ms/step
24/24 [==============================] - 0s 3ms/step
[53]:
f_new.plot()
plt.title('Housing Starts Forecast with Actuals Through June, 2023')
plt.savefig('RNN transferred same series.png')
plt.show()
../_images/lstm_lstm_latest_41_0.png

Scenario 2: A new time series with similar characteristics

[54]:
df = pdr.get_data_fred(
    'CANWSCNDW01STSAM',
    start = '2010-01-01',
    end = '2023-06-30',
)

f_new = Forecaster(
    y = df.iloc[:,0],
    current_dates = df.index,
    future_dates = 24, # 2-year forecast horizon
)

f_new.plot()
plt.show()
../_images/lstm_lstm_latest_43_0.png
[55]:
def transfer_forecast(f_new,transfer_from):
    f_new = infer_apply_Xvar_selection(
        infer_from=transfer_from,
        apply_to=f_new
    )
    f_new.transfer_predict(
        transfer_from=transfer_from,
        model='rnn',
        model_type='tf'
    )
[56]:
pipeline_can = Pipeline(
    steps = [
        ('Transform',transformer),
        ('Transfer Forecast',transfer_forecast),
        ('Revert',reverter),
    ]
)

f_new = pipeline_can.fit_predict(f_new,transfer_from=f)
1/1 [==============================] - 0s 22ms/step
4/4 [==============================] - 0s 4ms/step
[57]:
f_new.plot()
plt.title('Candian Housing Starts Forecast')
plt.savefig('Transferred RNN Canada')
plt.show()
../_images/lstm_lstm_latest_46_0.png
[ ]: