Last active
March 29, 2021 23:12
-
-
Save Aphellirus/a314e1456998b238084de6617beb0a0c to your computer and use it in GitHub Desktop.
Recurrent neural network to predict stock exchange data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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