Skip to content

Instantly share code, notes, and snippets.

@Aphellirus
Last active March 29, 2021 23:12
Show Gist options
  • Save Aphellirus/a314e1456998b238084de6617beb0a0c to your computer and use it in GitHub Desktop.
Save Aphellirus/a314e1456998b238084de6617beb0a0c to your computer and use it in GitHub Desktop.
Recurrent neural network to predict stock exchange data
# recurrent neural network to predict stock exchange data
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset_train = pd.read_csv('Download/Google_Stock_Price_Train.csv')
dataset_test = pd.read_csv('Download/Google_Stock_Price_Test.csv')
training_set = dataset_train.iloc[:,1:2].values
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler(feature_range=(0,1))
training_set_scaled = sc.fit_transform(training_set)
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)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1],1))
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
regressor = Sequential()
#1th Layer
regressor.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1],1)))
regressor.add(Dropout(0.2))
#2th Layer
regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
#3th Layer
regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
#4th Layer
regressor.add(LSTM(units=50))
regressor.add(Dropout(0.2))
#Exit Layer
regressor.add(Dense(units=1))
regressor.compile(optimizer = 'adam', loss='mean_squared_error')
regressor.fit(X_train, y_train, epochs=100, batch_size=32)
real_stock_price = dataset_test.iloc[:,1:2].values
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,80):
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)
plt.plot(real_stock_price, color = 'red', label = 'Real Google stock exchange data')
plt.plot(predicted_stock_price, color = 'blue', label = 'Predicted Google Exchange Data')
plt.title('Google Stock Exchange Data Prediction')
plt.xlabel('Time')
plt.ylabel('Google stock price')
plt.legend()
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment