eagle0504 commited on
Commit
862c4f9
1 Parent(s): 74e5e5e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -57
app.py CHANGED
@@ -17,63 +17,67 @@ from utils.helper import *
17
  # Streamlit interface
18
  st.title('Stock Forecasting App')
19
 
20
- stock = st.text_input('Enter Stock Ticker', 'AAPL')
21
- start_date = st.date_input('Start Date', dt.date(2020, 1, 1))
22
- end_date = st.date_input('End Date', dt.date.today())
 
 
 
23
  look_back = 50
24
 
25
  if st.button('Train Models'):
26
- data = download_data(stock, start_date, end_date)
27
-
28
- # Setting 80 percent data for training
29
- training_data_len = math.ceil(len(data) * .8)
30
-
31
- # Splitting the dataset
32
- train_data = data[:training_data_len].iloc[:,:5]
33
- test_data = data[training_data_len:].iloc[:,:5]
34
-
35
- # Selecting Open Price values
36
- dataset_train = train_data.Close.values
37
-
38
- # Reshaping 1D to 2D array
39
- dataset_train = np.reshape(dataset_train, (-1,1))
40
-
41
- # scaling dataset
42
- scaler = MinMaxScaler(feature_range=(0,1))
43
- scaled_train = scaler.fit_transform(dataset_train)
44
-
45
- # Selecting Open Price values
46
- dataset_test = test_data.Close.values
47
-
48
- # Reshaping 1D to 2D array
49
- dataset_test = np.reshape(dataset_test, (-1,1))
50
-
51
- # Normalizing values between 0 and 1
52
- scaled_test = scaler.fit_transform(dataset_test)
53
-
54
- # Split train and test
55
- X_train, y_train = create_datasets(scaled_train, look_back)
56
- X_test, y_test = create_datasets(scaled_test, look_back)
57
-
58
- # Create models
59
- rnn_model = create_rnn_model((look_back, 1))
60
- lstm_model = create_lstm_model((look_back, 1))
61
- gru_model = create_gru_model((look_back, 1))
62
-
63
- # Training
64
- rnn_model.fit(X_train, y_train, epochs=50, batch_size=1)
65
- lstm_model.fit(X_train, y_train, epochs=50, batch_size=1)
66
- gru_model.fit(X_train, y_train, epochs=50, batch_size=1)
67
-
68
- # Prediction
69
- y_rnn_pred = rnn_model.predict(X_test)
70
- y_lstm_pred = lstm_model.predict(X_test)
71
- y_gru_pred = gru_model.predict(X_test)
72
-
73
- # Recover the price data
74
- y_rnn_pred = scaler.inverse_transform(y_rnn_pred)
75
- y_lstm_pred = scaler.inverse_transform(y_lstm_pred)
76
- y_gru_pred = scaler.inverse_transform(y_gru_pred)
77
-
78
- # Visualization
79
- plot_predictions(train_data, test_data, y_rnn_pred, y_lstm_pred, y_gru_pred)
 
 
17
  # Streamlit interface
18
  st.title('Stock Forecasting App')
19
 
20
+ with st.sidebar:
21
+ stock = st.text_input('Enter Stock Ticker', 'AAPL')
22
+ start_date = st.date_input('Start Date', dt.date(2020, 1, 1))
23
+ end_date = st.date_input('End Date', dt.date.today())
24
+ num_of_epochs = st.number_input('Insert a number', step=1, min_value=2, max_value=100, value=10)
25
+
26
  look_back = 50
27
 
28
  if st.button('Train Models'):
29
+ with st.spinner('Wait for it...'):
30
+ data = download_data(stock, start_date, end_date)
31
+
32
+ # Setting 80 percent data for training
33
+ training_data_len = math.ceil(len(data) * .8)
34
+
35
+ # Splitting the dataset
36
+ train_data = data[:training_data_len].iloc[:,:5]
37
+ test_data = data[training_data_len:].iloc[:,:5]
38
+
39
+ # Selecting Open Price values
40
+ dataset_train = train_data.Close.values
41
+
42
+ # Reshaping 1D to 2D array
43
+ dataset_train = np.reshape(dataset_train, (-1,1))
44
+
45
+ # scaling dataset
46
+ scaler = MinMaxScaler(feature_range=(0,1))
47
+ scaled_train = scaler.fit_transform(dataset_train)
48
+
49
+ # Selecting Open Price values
50
+ dataset_test = test_data.Close.values
51
+
52
+ # Reshaping 1D to 2D array
53
+ dataset_test = np.reshape(dataset_test, (-1,1))
54
+
55
+ # Normalizing values between 0 and 1
56
+ scaled_test = scaler.fit_transform(dataset_test)
57
+
58
+ # Split train and test
59
+ X_train, y_train = create_datasets(scaled_train, look_back)
60
+ X_test, y_test = create_datasets(scaled_test, look_back)
61
+
62
+ # Create models
63
+ rnn_model = create_rnn_model((look_back, 1))
64
+ lstm_model = create_lstm_model((look_back, 1))
65
+ gru_model = create_gru_model((look_back, 1))
66
+
67
+ # Training
68
+ rnn_model.fit(X_train, y_train, epochs=num_of_epochs, batch_size=1)
69
+ lstm_model.fit(X_train, y_train, epochs=num_of_epochs, batch_size=1)
70
+ gru_model.fit(X_train, y_train, epochs=num_of_epochs, batch_size=1)
71
+
72
+ # Prediction
73
+ y_rnn_pred = rnn_model.predict(X_test)
74
+ y_lstm_pred = lstm_model.predict(X_test)
75
+ y_gru_pred = gru_model.predict(X_test)
76
+
77
+ # Recover the price data
78
+ y_rnn_pred = scaler.inverse_transform(y_rnn_pred)
79
+ y_lstm_pred = scaler.inverse_transform(y_lstm_pred)
80
+ y_gru_pred = scaler.inverse_transform(y_gru_pred)
81
+
82
+ # Visualization
83
+ plot_predictions(train_data, test_data, y_rnn_pred, y_lstm_pred, y_gru_pred)