├── GOOG.csv ├── LSTM_model_stocks.ipynb ├── README.md ├── logs ├── events.out.tfevents.1595584748.Vytautass-MacBook-Pro.local ├── events.out.tfevents.1595584756.Vytautass-MacBook-Pro.local └── events.out.tfevents.1595585733.Vytautass-MacBook-Pro.local └── weights.h5 /LSTM_model_stocks.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "

\n", 8 | "Prepared by Vytautas Bielinskas. 2020.
\n", 9 | "Download data from: https://finance.yahoo.com/quote/GOOG/history/\n", 10 | "

\n", 11 | "\n", 12 | "

PART 1. Data Pre-processing

" 13 | ] 14 | }, 15 | { 16 | "cell_type": "markdown", 17 | "metadata": {}, 18 | "source": [ 19 | "

Step #0. Fire the system

" 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 85, 25 | "metadata": { 26 | "tags": [] 27 | }, 28 | "outputs": [], 29 | "source": [ 30 | "# Import modules and packages\n", 31 | "import numpy as np\n", 32 | "import pandas as pd\n", 33 | "import matplotlib.pyplot as plt\n", 34 | "import datetime as dt\n", 35 | "from datetime import datetime\n", 36 | "\n", 37 | "from keras.callbacks import EarlyStopping, ReduceLROnPlateau, ModelCheckpoint, TensorBoard\n", 38 | "\n", 39 | "%matplotlib inline" 40 | ] 41 | }, 42 | { 43 | "cell_type": "markdown", 44 | "metadata": {}, 45 | "source": [ 46 | "

Step #1. Read data

" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": null, 52 | "metadata": { 53 | "tags": [] 54 | }, 55 | "outputs": [], 56 | "source": [ 57 | "# Importing Training Set\n", 58 | "dataset_train = pd.read_csv('GOOG.csv')\n", 59 | "\n", 60 | "# Select features (columns) to be involved intro training and predictions\n", 61 | "cols = list(dataset_train)[1:6]\n", 62 | "\n", 63 | "# Extract dates (will be used in visualization)\n", 64 | "datelist_train = list(dataset_train['Date'])\n", 65 | "datelist_train = [dt.datetime.strptime(date, '%Y-%m-%d').date() for date in datelist_train]\n", 66 | "\n", 67 | "print('Training set shape == {}'.format(dataset_train.shape))\n", 68 | "print('All timestamps == {}'.format(len(datelist_train)))\n", 69 | "print('Featured selected: {}'.format(cols))" 70 | ] 71 | }, 72 | { 73 | "cell_type": "markdown", 74 | "metadata": {}, 75 | "source": [ 76 | "

Step #2. Data pre-processing

\n", 77 | "

\n", 78 | "Removing all commas and convert data to matrix shape format.\n", 79 | "

" 80 | ] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "execution_count": 44, 85 | "metadata": { 86 | "tags": [] 87 | }, 88 | "outputs": [ 89 | { 90 | "output_type": "stream", 91 | "name": "stdout", 92 | "text": "Shape of training set == (4006, 5).\n" 93 | }, 94 | { 95 | "output_type": "execute_result", 96 | "data": { 97 | "text/plain": "array([[ 49.813286, 51.835709, 47.800831, 49.982655, 49.982655],\n [ 50.316402, 54.336334, 50.062355, 53.95277 , 53.95277 ],\n [ 55.168217, 56.528118, 54.321388, 54.495735, 54.495735],\n ...,\n [1523.130005, 1535.329956, 1498. , 1513.640015, 1513.640015],\n [1500. , 1518.689941, 1486.310059, 1518. , 1518. ],\n [1521.619995, 1523.439941, 1498.420044, 1515.550049, 1515.550049]])" 98 | }, 99 | "metadata": {}, 100 | "execution_count": 44 101 | } 102 | ], 103 | "source": [ 104 | "dataset_train = dataset_train[cols].astype(str)\n", 105 | "for i in cols:\n", 106 | " for j in range(0, len(dataset_train)):\n", 107 | " dataset_train[i][j] = dataset_train[i][j].replace(',', '')\n", 108 | "\n", 109 | "dataset_train = dataset_train.astype(float)\n", 110 | "\n", 111 | "# Using multiple features (predictors)\n", 112 | "training_set = dataset_train.as_matrix()\n", 113 | "\n", 114 | "print('Shape of training set == {}.'.format(training_set.shape))\n", 115 | "training_set" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 45, 121 | "metadata": { 122 | "tags": [] 123 | }, 124 | "outputs": [ 125 | { 126 | "output_type": "execute_result", 127 | "data": { 128 | "text/plain": "array([[-1.27195197],\n [-1.27058974],\n [-1.25745309],\n ...,\n [ 2.71716347],\n [ 2.65453724],\n [ 2.713075 ]])" 129 | }, 130 | "metadata": {}, 131 | "execution_count": 45 132 | } 133 | ], 134 | "source": [ 135 | "# Feature Scaling\n", 136 | "from sklearn.preprocessing import StandardScaler\n", 137 | "\n", 138 | "sc = StandardScaler()\n", 139 | "training_set_scaled = sc.fit_transform(training_set)\n", 140 | "\n", 141 | "sc_predict = StandardScaler()\n", 142 | "sc_predict.fit_transform(training_set[:, 0:1])" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": 46, 148 | "metadata": { 149 | "tags": [] 150 | }, 151 | "outputs": [ 152 | { 153 | "output_type": "stream", 154 | "name": "stdout", 155 | "text": "X_train shape == (3857, 90, 4).\ny_train shape == (3857, 1).\n" 156 | } 157 | ], 158 | "source": [ 159 | "# Creating a data structure with 90 timestamps and 1 output\n", 160 | "X_train = []\n", 161 | "y_train = []\n", 162 | "\n", 163 | "n_future = 60 # Number of days we want top predict into the future\n", 164 | "n_past = 90 # Number of past days we want to use to predict the future\n", 165 | "\n", 166 | "for i in range(n_past, len(training_set_scaled) - n_future +1):\n", 167 | " X_train.append(training_set_scaled[i - n_past:i, 0:dataset_train.shape[1] - 1])\n", 168 | " y_train.append(training_set_scaled[i + n_future - 1:i + n_future, 0])\n", 169 | "\n", 170 | "X_train, y_train = np.array(X_train), np.array(y_train)\n", 171 | "\n", 172 | "print('X_train shape == {}.'.format(X_train.shape))\n", 173 | "print('y_train shape == {}.'.format(y_train.shape))" 174 | ] 175 | }, 176 | { 177 | "cell_type": "markdown", 178 | "metadata": {}, 179 | "source": [ 180 | "

PART 2. Create a model. Training

" 181 | ] 182 | }, 183 | { 184 | "cell_type": "markdown", 185 | "metadata": {}, 186 | "source": [ 187 | "

Step #3. Building the LSTM based Neural Network

" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 47, 193 | "metadata": {}, 194 | "outputs": [], 195 | "source": [ 196 | "# Import Libraries and packages from Keras\n", 197 | "from keras.models import Sequential\n", 198 | "from keras.layers import Dense\n", 199 | "from keras.layers import LSTM\n", 200 | "from keras.layers import Dropout\n", 201 | "from keras.optimizers import Adam" 202 | ] 203 | }, 204 | { 205 | "cell_type": "code", 206 | "execution_count": 48, 207 | "metadata": { 208 | "tags": [] 209 | }, 210 | "outputs": [], 211 | "source": [ 212 | "# Initializing the Neural Network based on LSTM\n", 213 | "model = Sequential()\n", 214 | "\n", 215 | "# Adding 1st LSTM layer\n", 216 | "model.add(LSTM(units=64, return_sequences=True, input_shape=(n_past, dataset_train.shape[1]-1)))\n", 217 | "\n", 218 | "# Adding 2nd LSTM layer\n", 219 | "model.add(LSTM(units=10, return_sequences=False))\n", 220 | "\n", 221 | "# Adding Dropout\n", 222 | "model.add(Dropout(0.25))\n", 223 | "\n", 224 | "# Output layer\n", 225 | "model.add(Dense(units=1, activation='linear'))\n", 226 | "\n", 227 | "# Compiling the Neural Network\n", 228 | "model.compile(optimizer = Adam(learning_rate=0.01), loss='mean_squared_error')" 229 | ] 230 | }, 231 | { 232 | "cell_type": "markdown", 233 | "metadata": {}, 234 | "source": [ 235 | "

Step #4. Start training

" 236 | ] 237 | }, 238 | { 239 | "cell_type": "code", 240 | "execution_count": 49, 241 | "metadata": { 242 | "tags": [] 243 | }, 244 | "outputs": [ 245 | { 246 | "output_type": "stream", 247 | "name": "stdout", 248 | "text": "Train on 3085 samples, validate on 772 samples\nEpoch 1/30\n3085/3085 [==============================] - 2s 641us/step - loss: 0.0969 - val_loss: 0.2635\n\nEpoch 00001: val_loss improved from inf to 0.26351, saving model to weights.h5\nEpoch 2/30\n3085/3085 [==============================] - 1s 418us/step - loss: 0.0345 - val_loss: 0.5687\n\nEpoch 00002: val_loss did not improve from 0.26351\nEpoch 3/30\n3085/3085 [==============================] - 1s 401us/step - loss: 0.0332 - val_loss: 0.3090\n\nEpoch 00003: val_loss did not improve from 0.26351\nEpoch 4/30\n3085/3085 [==============================] - 1s 400us/step - loss: 0.0316 - val_loss: 0.3467\n\nEpoch 00004: val_loss did not improve from 0.26351\nEpoch 5/30\n3085/3085 [==============================] - 1s 401us/step - loss: 0.0291 - val_loss: 0.2698\n\nEpoch 00005: val_loss did not improve from 0.26351\nEpoch 6/30\n3085/3085 [==============================] - 1s 403us/step - loss: 0.0293 - val_loss: 0.3223\n\nEpoch 00006: val_loss did not improve from 0.26351\nEpoch 7/30\n3085/3085 [==============================] - 1s 414us/step - loss: 0.0267 - val_loss: 0.3096\n\nEpoch 00007: val_loss did not improve from 0.26351\nEpoch 8/30\n3085/3085 [==============================] - 1s 434us/step - loss: 0.0273 - val_loss: 0.3109\n\nEpoch 00008: val_loss did not improve from 0.26351\nEpoch 9/30\n3085/3085 [==============================] - 1s 454us/step - loss: 0.0274 - val_loss: 0.1750\n\nEpoch 00009: val_loss improved from 0.26351 to 0.17496, saving model to weights.h5\nEpoch 10/30\n3085/3085 [==============================] - 1s 437us/step - loss: 0.0262 - val_loss: 0.1437\n\nEpoch 00010: val_loss improved from 0.17496 to 0.14366, saving model to weights.h5\nEpoch 11/30\n3085/3085 [==============================] - 1s 427us/step - loss: 0.0266 - val_loss: 0.2776\n\nEpoch 00011: val_loss did not improve from 0.14366\nEpoch 12/30\n3085/3085 [==============================] - 1s 420us/step - loss: 0.0287 - val_loss: 0.1954\n\nEpoch 00012: val_loss did not improve from 0.14366\nEpoch 13/30\n3085/3085 [==============================] - 1s 419us/step - loss: 0.0249 - val_loss: 0.1461\n\nEpoch 00013: val_loss did not improve from 0.14366\nEpoch 14/30\n3085/3085 [==============================] - 1s 403us/step - loss: 0.0242 - val_loss: 0.2025\n\nEpoch 00014: val_loss did not improve from 0.14366\nEpoch 15/30\n3085/3085 [==============================] - 1s 414us/step - loss: 0.0249 - val_loss: 0.1519\n\nEpoch 00015: val_loss did not improve from 0.14366\nEpoch 16/30\n3085/3085 [==============================] - 1s 429us/step - loss: 0.0270 - val_loss: 0.1589\n\nEpoch 00016: val_loss did not improve from 0.14366\nEpoch 17/30\n3085/3085 [==============================] - 1s 418us/step - loss: 0.0255 - val_loss: 0.1527\n\nEpoch 00017: val_loss did not improve from 0.14366\nEpoch 18/30\n3085/3085 [==============================] - 1s 422us/step - loss: 0.0281 - val_loss: 0.2601\n\nEpoch 00018: val_loss did not improve from 0.14366\nEpoch 19/30\n3085/3085 [==============================] - 1s 432us/step - loss: 0.0277 - val_loss: 0.1767\n\nEpoch 00019: val_loss did not improve from 0.14366\nEpoch 20/30\n3085/3085 [==============================] - 1s 419us/step - loss: 0.0249 - val_loss: 0.1542\n\nEpoch 00020: ReduceLROnPlateau reducing learning rate to 0.004999999888241291.\n\nEpoch 00020: val_loss did not improve from 0.14366\nEpoch 00020: early stopping\nCPU times: user 1min 14s, sys: 14.1 s, total: 1min 28s\nWall time: 28.9 s\n" 249 | } 250 | ], 251 | "source": [ 252 | "%%time\n", 253 | "es = EarlyStopping(monitor='val_loss', min_delta=1e-10, patience=10, verbose=1)\n", 254 | "rlr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=10, verbose=1)\n", 255 | "mcp = ModelCheckpoint(filepath='weights.h5', monitor='val_loss', verbose=1, save_best_only=True, save_weights_only=True)\n", 256 | "\n", 257 | "tb = TensorBoard('logs')\n", 258 | "\n", 259 | "history = model.fit(X_train, y_train, shuffle=True, epochs=30, callbacks=[es, rlr, mcp, tb], validation_split=0.2, verbose=1, batch_size=256)" 260 | ] 261 | }, 262 | { 263 | "cell_type": "markdown", 264 | "metadata": {}, 265 | "source": [ 266 | "

\n", 267 | "Notes:
\n", 268 | "

\n", 274 | "\n", 275 | "\n", 279 | "

\n", 280 | "\n", 281 | "
\n", 282 | "\n", 283 | "

\n", 284 | "The last date for our training set is 30-Dec-2016.
\n", 285 | "

\n", 286 | "\n", 287 | "

\n", 288 | "We will perform predictions for the next 20 days, since 2017-01-01 to 2017-01-20.\n", 289 | "

" 290 | ] 291 | }, 292 | { 293 | "cell_type": "markdown", 294 | "metadata": {}, 295 | "source": [ 296 | "

PART 3. Make future predictions

" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 70, 302 | "metadata": {}, 303 | "outputs": [], 304 | "source": [ 305 | "# Generate list of sequence of days for predictions\n", 306 | "datelist_future = pd.date_range(datelist_train[-1], periods=n_future, freq='1d').tolist()\n", 307 | "\n", 308 | "'''\n", 309 | "Remeber, we have datelist_train from begining.\n", 310 | "'''\n", 311 | "\n", 312 | "# Convert Pandas Timestamp to Datetime object (for transformation) --> FUTURE\n", 313 | "datelist_future_ = []\n", 314 | "for this_timestamp in datelist_future:\n", 315 | " datelist_future_.append(this_timestamp.date())" 316 | ] 317 | }, 318 | { 319 | "cell_type": "markdown", 320 | "metadata": {}, 321 | "source": [ 322 | "

Step #5. Make predictions for future dates

" 323 | ] 324 | }, 325 | { 326 | "cell_type": "code", 327 | "execution_count": 102, 328 | "metadata": { 329 | "tags": [] 330 | }, 331 | "outputs": [], 332 | "source": [ 333 | "# Perform predictions\n", 334 | "predictions_future = model.predict(X_train[-n_future:])\n", 335 | "\n", 336 | "predictions_train = model.predict(X_train[n_past:])" 337 | ] 338 | }, 339 | { 340 | "cell_type": "code", 341 | "execution_count": 110, 342 | "metadata": { 343 | "tags": [] 344 | }, 345 | "outputs": [ 346 | { 347 | "output_type": "execute_result", 348 | "data": { 349 | "text/plain": " Open\n2005-08-01 151.767502\n2005-08-02 152.256302\n2005-08-03 152.603226", 350 | "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Open
2005-08-01151.767502
2005-08-02152.256302
2005-08-03152.603226
\n
" 351 | }, 352 | "metadata": {}, 353 | "execution_count": 110 354 | } 355 | ], 356 | "source": [ 357 | "# Inverse the predictions to original measurements\n", 358 | "\n", 359 | "# ---> Special function: convert to \n", 360 | "def datetime_to_timestamp(x):\n", 361 | " '''\n", 362 | " x : a given datetime value (datetime.date)\n", 363 | " '''\n", 364 | " return datetime.strptime(x.strftime('%Y%m%d'), '%Y%m%d')\n", 365 | "\n", 366 | "\n", 367 | "y_pred_future = sc_predict.inverse_transform(predictions_future)\n", 368 | "y_pred_train = sc_predict.inverse_transform(predictions_train)\n", 369 | "\n", 370 | "PREDICTIONS_FUTURE = pd.DataFrame(y_pred_future, columns=['Open']).set_index(pd.Series(datelist_future))\n", 371 | "PREDICTION_TRAIN = pd.DataFrame(y_pred_train, columns=['Open']).set_index(pd.Series(datelist_train[2 * n_past + n_future -1:]))\n", 372 | "\n", 373 | "# Convert to for PREDCITION_TRAIN\n", 374 | "PREDICTION_TRAIN.index = PREDICTION_TRAIN.index.to_series().apply(datetime_to_timestamp)\n", 375 | "\n", 376 | "PREDICTION_TRAIN.head(3)" 377 | ] 378 | }, 379 | { 380 | "cell_type": "markdown", 381 | "metadata": {}, 382 | "source": [ 383 | "

Step #6. Visualize the Predictions

" 384 | ] 385 | }, 386 | { 387 | "cell_type": "code", 388 | "execution_count": 115, 389 | "metadata": {}, 390 | "outputs": [ 391 | { 392 | "output_type": "display_data", 393 | "data": { 394 | "text/plain": "
", 395 | "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", 396 | "image/png": "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OnbsSGxsLEuWLKFHjx7ExMQQFBTE+++/z4svvohSitDQUD744AMSEhKYOHEiB630Lq+++ipdunQp+g8nDxcuXCAhIcFri8naP1PhOdKm3iHt6h3Srt4h7ep50qbecdddQQCcOHGWhISL+V7v51eNPXv82bMHvvrqDDfcUPgJShcvAuRcaLVjR1MHf38FBJGYCBcuJGRde+HCKRISMqn9v9qmzvefKPSzS4onfl9LJEhSSgUAT2KG2nmc1nouMBcgMjJSZ19h96BTrsRHHoHNmz37/PBwR9rG3Hz11VcMGDCAFi1aULNmTWJjY4mIiOov1H0AACAASURBVGDu3LnExcWxefNm/Pz8SExMpEaNGrz88susXLmSoKCgPO/btWtXfvnlF5RSvP3227zwwgu89NJLuV7/wAMPMGLECF5//XX69OnD3XffTf369ZkxYwYvvvgi33zzDQAvvfQSSin++OMPdu7cSb9+/di9ezfvvvtujvraUlJSuP322xk9ejSjR4/Os97ffPMNbdu2BWDPnj289957dOrUyeWabdu2MX36dNavX09QUFDWsx5++GGmTJlC165dOXjwIP3792fHjh15Pq+oKlSoQK1atbwWJAGygrkXSJt6h7Srd0i7eoe0q+dJm3reddels22bH1FRVShI8zr37FSuXK1A78nu9GnX48ceM8PuatWqAoD91TMyEho3djzgmmtqujyvrP8+FLd+JdWT1AwIBuxepIbAJqVUB+AIcI3TtQ2tsiNAz2zlq0qgrl6xYMECHrZyO95+++0sWLCAiIgIli9fzsSJE/HzMz+KGjVqFOq+hw8fZsSIEcTHx5OWlkZwcHCe1/fv35/9+/ezdOlSvvvuO9q1a8fWrTnya7B27dqsHqJWrVrRuHFjdu/enWd9hwwZwtSpUxk1alSuz+/Vqxe+vr6EhoYyffp0zpw5Q+PGjXMESAArVqxg+PDhWYGi/azly5ezffv2rOvOnj1LSkoKgc4DZ4UQQgghyriuXdPYvduP9gVMGFexomNf69yvy8vs2a7H/fvjEvwoZToUrrnGsYAtSApwr9Ba/wHUto+VUnFApNb6pFJqMfCgUuoTTJKGJK11vFLqe+BfTska+gFPFLcu+fX4eENiYiIrVqzgjz/+QClFRkYGSilmzpxZ4Hs4D1G84DQI9aGHHuLRRx9l8ODBrFq1imnT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\n" 397 | }, 398 | "metadata": { 399 | "needs_background": "light" 400 | } 401 | } 402 | ], 403 | "source": [ 404 | "# Set plot size \n", 405 | "from pylab import rcParams\n", 406 | "rcParams['figure.figsize'] = 14, 5\n", 407 | "\n", 408 | "# Plot parameters\n", 409 | "START_DATE_FOR_PLOTTING = '2012-06-01'\n", 410 | "\n", 411 | "plt.plot(PREDICTIONS_FUTURE.index, PREDICTIONS_FUTURE['Open'], color='r', label='Predicted Stock Price')\n", 412 | "plt.plot(PREDICTION_TRAIN.loc[START_DATE_FOR_PLOTTING:].index, PREDICTION_TRAIN.loc[START_DATE_FOR_PLOTTING:]['Open'], color='orange', label='Training predictions')\n", 413 | "plt.plot(dataset_train.loc[START_DATE_FOR_PLOTTING:].index, dataset_train.loc[START_DATE_FOR_PLOTTING:]['Open'], color='b', label='Actual Stock Price')\n", 414 | "\n", 415 | "plt.axvline(x = min(PREDICTIONS_FUTURE.index), color='green', linewidth=2, linestyle='--')\n", 416 | "\n", 417 | "plt.grid(which='major', color='#cccccc', alpha=0.5)\n", 418 | "\n", 419 | "plt.legend(shadow=True)\n", 420 | "plt.title('Predcitions and Acutal Stock Prices', family='Arial', fontsize=12)\n", 421 | "plt.xlabel('Timeline', family='Arial', fontsize=10)\n", 422 | "plt.ylabel('Stock Price Value', family='Arial', fontsize=10)\n", 423 | "plt.xticks(rotation=45, fontsize=8)\n", 424 | "plt.show()" 425 | ] 426 | }, 427 | { 428 | "cell_type": "code", 429 | "execution_count": null, 430 | "metadata": {}, 431 | "outputs": [], 432 | "source": [] 433 | }, 434 | { 435 | "cell_type": "code", 436 | "execution_count": 99, 437 | "metadata": { 438 | "tags": [] 439 | }, 440 | "outputs": [], 441 | "source": [ 442 | "# Parse training set timestamp for better visualization\n", 443 | "dataset_train = pd.DataFrame(dataset_train, columns=cols)\n", 444 | "dataset_train.index = datelist_train\n", 445 | "dataset_train.index = pd.to_datetime(dataset_train.index)" 446 | ] 447 | } 448 | ], 449 | "metadata": { 450 | "language_info": { 451 | "codemirror_mode": { 452 | "name": "ipython", 453 | "version": 3 454 | }, 455 | "file_extension": ".py", 456 | "mimetype": "text/x-python", 457 | "name": "python", 458 | "nbconvert_exporter": "python", 459 | "pygments_lexer": "ipython3", 460 | "version": "3.7.4-final" 461 | }, 462 | "orig_nbformat": 2, 463 | "kernelspec": { 464 | "name": "python_defaultSpec_1595456381049", 465 | "display_name": "Python 3.7.4 64-bit ('base': conda)" 466 | } 467 | }, 468 | "nbformat": 4, 469 | "nbformat_minor": 2 470 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Video tutorial for the code: https://youtu.be/gSYiKKoREFI

2 | 3 |

4 | Build a Artificial Neural Network (ANN) with Long-Short Term Memory unit (LSTM) to predict value which can be impacted by multiple different features. 5 |
6 | In this video I demonstrate how to use LSTM to predict Google Stock price (you can use any other case) by taking into consideration multiple predictors (features). Let's say, the final stock price can be predicted by finding importance of such features as historical low price, high price, volume, adj. price, etc. 7 |
8 | In this tutorial I used Tensorflow 1.15.0 and Keras 2.3.1 9 |
10 | Download data from: https://finance.yahoo.com/quote/GOOG/history 11 |
12 | This is real life Python code example for demonstration purposes, so the model is not very accuracy and of course could be improved or tuned. 13 |
14 | My goal of this Python tutorial is to demonstrate how to perform LSTM predictions with multiple features (complex dataset). 15 |
16 | Hoping it will help to undersant the way it could be implemented in real Data Science or Data Analysis projects. 17 |

18 | -------------------------------------------------------------------------------- /logs/events.out.tfevents.1595584748.Vytautass-MacBook-Pro.local: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vb100/multivariate-lstm/3322a52a9287ce4a0ba8b148e73a479b78062c2a/logs/events.out.tfevents.1595584748.Vytautass-MacBook-Pro.local -------------------------------------------------------------------------------- /logs/events.out.tfevents.1595584756.Vytautass-MacBook-Pro.local: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vb100/multivariate-lstm/3322a52a9287ce4a0ba8b148e73a479b78062c2a/logs/events.out.tfevents.1595584756.Vytautass-MacBook-Pro.local -------------------------------------------------------------------------------- /logs/events.out.tfevents.1595585733.Vytautass-MacBook-Pro.local: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vb100/multivariate-lstm/3322a52a9287ce4a0ba8b148e73a479b78062c2a/logs/events.out.tfevents.1595585733.Vytautass-MacBook-Pro.local -------------------------------------------------------------------------------- /weights.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vb100/multivariate-lstm/3322a52a9287ce4a0ba8b148e73a479b78062c2a/weights.h5 --------------------------------------------------------------------------------