Professional Documents
Culture Documents
DLL 7 Harsh Kabir 2203254
DLL 7 Harsh Kabir 2203254
scaler2= 424.102997
MinMaxScaler()
427.834991 384.532013 394.795990 37919700.0
training_data = scaler.fit_transform(training_data)
3 394.673004 423.295990 389.882996 408.903992
training_data 36863600.0
X_train = []
Y_train = []
training_data.shape[0]
1932
X_train.shape
(1872, 60, 5)
Building LSTM
regressor = Sequential()
regressor.add(LSTM(units = 50, activation = 'relu', return_sequences = True, input_shape = (X_train.shape[1], 5)))
regressor.add(Dropout(0.2))
regressor.add(Dense(units =1))
regressor.summary()
Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_31 (LSTM) (None, 60, 50) 11200
_________________________________________________________________
dropout_16 (Dropout) (None, 60, 50) 0
_________________________________________________________________
lstm_32 (LSTM) (None, 60, 60) 26640
_________________________________________________________________
dropout_17 (Dropout) (None, 60, 60) 0
_________________________________________________________________
lstm_33 (LSTM) (None, 60, 80) 45120
_________________________________________________________________
dropout_18 (Dropout) (None, 60, 80) 0
_________________________________________________________________
lstm_34 (LSTM) (None, 120) 96480
_________________________________________________________________
dropout_19 (Dropout) (None, 120) 0
_________________________________________________________________
dense_4 (Dense) (None, 1) 121
=================================================================
Total params: 179,561
Trainable params: 179,561
Non-trainable params: 0
_________________________________________________________________
Epoch 1/20
38/38 [==============================] - 6s 148ms/step - loss: 0.0018
Epoch 2/20
38/38 [==============================] - 5s 141ms/step - loss: 0.0017
Epoch 3/20
38/38 [==============================] - 6s 151ms/step - loss: 0.0018
Epoch 4/20
38/38 [==============================] - 6s 169ms/step - loss: 0.0020
Epoch 5/20
38/38 [==============================] - 7s 184ms/step - loss: 0.0017
Epoch 6/20
38/38 [==============================] - 6s 149ms/step - loss: 0.0016
Epoch 7/20
38/38 [==============================] - 6s 147ms/step - loss: 0.0016
Epoch 8/20
38/38 [==============================] - 7s 175ms/step - loss: 0.0016
Epoch 9/20
38/38 [==============================] - 6s 166ms/step - loss: 0.0017
Epoch 10/20
38/38 [==============================] - 6s 152ms/step - loss: 0.0017
Epoch 11/20
38/38 [==============================] - 6s 151ms/step - loss: 0.0016
Epoch 12/20
38/38 [==============================] - 7s 188ms/step - loss: 0.0017
Epoch 13/20
38/38 [==============================] - 6s 167ms/step - loss: 0.0017 0s - loss: 0.00
Epoch 14/20
38/38 [==============================] - 6s 154ms/step - loss: 0.0017
Epoch 15/20
38/38 [==============================] - 6s 160ms/step - loss: 0.0015
Epoch 16/20
38/38 [==============================] - 6s 166ms/step - loss: 0.0017
Epoch 17/20
38/38 [==============================] - 6s 148ms/step - loss: 0.0016
Epoch 18/20
38/38 [==============================] - 6s 146ms/step - loss: 0.0018
Epoch 19/20
38/38 [==============================] - 7s 184ms/step - loss: 0.0019
Epoch 20/20
38/38 [==============================] - 6s 167ms/step - loss: 0.0016
<tensorflow.python.keras.callbacks.History at 0x221ab8fb988>
Test Dataset
past_60_days = data_training.tail(60)
df= past_60_days.append(data_test, ignore_index = True)
df = df.drop(['Date', 'Adj Close'], axis = 1)
df.head()
inputs = scaler.transform(df)
inputs
X_test = []
Y_test = []
for i in range (60, inputs.shape[0]):
X_test.append(inputs[i-60:i])
Y_test.append(inputs[i, 0])
Y_pred = regressor.predict(X_test)
Y_pred, Y_test
(array([[0.33222204],
[0.33067423],
[0.3300987 ],
[0.32950842],
[0.32959914],
[0.33210015],
[0.33979833],
[0.35222936],
[0.36205846],
[0.3687042 ],
[0.37212318],
[0.37260526],
[0.37161416],
[0.37809885],
[0.38943133],
[0.39754272],
[0.40306145],
[0.40565163],
[0.40642768],
[0.40333158],
[0.39764762],
[0.39164567],
[0.3870269 ],
[0.38332552],
[0.37950993],
[0.3773709 ],
[0.38074654],
[0.39203656],
[0.4063325 ],
[0.41987926],
[0.42887574],
[0.43211204],
[0.4328301 ],
[0.43232703],
[0.43006158],
[0.42968714],
[0.43324727],
[0.4380203 ],
[0.4424796 ],
[0.44719243],
[0.45237428],
[0.45607632],
[0.46191502],
[0.4693219 ],
[0.47267473],
[0.4715137 ],
[0.4665203 ],
[0.4597565 ],
[0.4537127 ],
[0.44863302],
[0.44286656],
[0.43640596],
[0.42944974],
[0.42519504],
[0.42498922],
[0.42497563],
[0.4235627 ],
[0.41921288],
scaler.scale_
19298.903787912797
Y_test = Y_test*scale
Y_pred = Y_pred*scale
Y_pred
array([[6411.5215],
[6381.6504],
[6370.543 ],
[6359.1514],
[6360.9023],
[6409.169 ],
[6557.7354],
[6797.6406],
[6987.3315],
[7115.587 ],
[7181.57 ],
[7190.8735],
[7171.746 ],
[7296.8936],
[7515.598 ],
[7672.1387],
[7778.6445],
[7828.632 ],
[7843.609 ],
[7783.8574],
[7674.1636],
[7558.3325],
[7469.1953],
[7397.7627],
[7324.126 ],
[7282.8447],
[7347.991 ],
[7565.876 ],
[7841.772 ],
[8103.2095],
[8276.832 ],
[8339.289 ],
[8353.146 ],
[8343.438 ],
[8299.717 ],
[8292.491 ],
[8361.197 ],
[8453.312 ],
[8539.372 ],
[8630.324 ],
[8730.328 ],
[8801.773 ],
[8914.454 ],
[9057.398 ],
[9122.1045],
[9099.697 ],
[9003.331 ],
[8872.797 ],
[8756.158 ],
[8658.126 ],
[8546.84 ],
[8422.157 ],
[8287.909 ],
[8205.799 ],
[8201.826 ],
[8201.564 ],
[8174.296 ],
[8090.349 ],
Y_test
plt.figure(figsize=(14,5))
plt.plot(Y_test, color = 'red', label = 'Real Bitcoin Price')
plt.plot(Y_pred, color = 'green', label = 'Predicted Bitcoin Price')
plt.title('Bitcoin Price Prediction using RNN-LSTM')
plt.xlabel('Time')
plt.ylabel('Price')
plt.legend()
plt.show()