In this project, we are going to predict the stocks price of Alphabet Inc. The data contains the stocks price of Google from 2010 to 2019. This project will be implemented by Recurrent Neural Network and LSTM using Python.
The data contains the following columns:
- Date
- Open
- High
- Low
- Close
- Volume
.
let’s get our environment ready with the libraries we’ll need and then import the data!
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
plt.style.use('fivethirtyeight')
Check out the Data
google_train = pd.read_csv('~/DataSet GitHub/RNN/GOOGLE_STOCK_TRAIN.csv')

Let’s extract the Open feature from data to implement prediction based on that.
training_set = dataset_train.iloc[:, 1:2].values

.
Feature Scaling
Let’s scale our training data into 0 to 1
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler(feature_range = (0, 1))
training_set_scaled = sc.fit_transform(training_set)

Now let’s visualise the training set of data
plt.figure(figsize=(15,10))
plt.plot(training_set)
plt.ylabel('Price')

Now let’s create a data structure with 60 timesteps and 1 output. Recurrent Neural Network will observe the previous 60 timestamps for computing the prediction of next stock price.
X_train = []
y_train = []
for i in range(60, 1258):
X_train.append(training_set_scaled[i-60:i, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
Reshaping
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
.
Building the RNN
Importing the Keras libraries and packages
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
Initialising the RNN
regressor = Sequential()
Adding the first LSTM layer and some Dropout regularisation
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
Adding a second LSTM layer and some Dropout regularisation
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
Adding a third LSTM layer and some Dropout regularisation
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
Adding a fourth LSTM layer and some Dropout regularisation
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.2))
Adding the output layer
regressor.add(Dense(units = 1))
Compiling the RNN
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
Fitting the RNN to the Training set
regressor.fit(X_train, y_train, epochs = 200, batch_size = 32)

.
Making the predictions and visualising the results
Getting the real stock price of 2019
google_test = pd.read_csv('/Users/sadegh/Desktop/DataSet GitHub/RNN/GOOGLE_STOCK_TEST.csv')

real_stock_price = dataset_test.iloc[:, 1:2].values

Getting the predicted stock price of 2019
dataset_total = pd.concat((dataset_train['Open'], dataset_test['Open']), axis = 0)
inputs = dataset_total[len(dataset_total) - len(dataset_test) - 60:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
X_test = []
for i in range(60, 222):
X_test.append(inputs[i-60:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_stock_price = regressor.predict(X_test)
predicted_stock_price = sc.inverse_transform(predicted_stock_price)

.
Visualising the results
plt.figure(figsize=(15,10))
plt.plot(real_stock_price, color = 'green', label = 'Real Google Stock Price')
plt.plot(predicted_stock_price, color = 'orange', label = 'Predicted Google Stock Price')
plt.title('Google Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Google Stock Price')
plt.legend()
plt.show()


You may have heard the world is made up of atoms and molecules, but it’s really made up of stories.