Spaces:
Build error
Build error
| from sklearn.preprocessing import MinMaxScaler | |
| from keras.models import Sequential | |
| from keras.layers import Dense, LSTM | |
| import numpy as np | |
| def __lstm__(stock_df): | |
| # fig, ax = plt.subplots(figsize=(20, 10)) | |
| # self.stock_df[["Adj Close", "pred_timesfm"]].plot(ax=ax) | |
| # st.pyplot(fig) | |
| # --------------------------------------- LSTM ----------------------------------- | |
| data = stock_df.filter(['Close']) | |
| # Convert the dataframe to a numpy array | |
| dataset = data.values | |
| # Get the number of rows to train the model on | |
| training_data_len = int(np.ceil( len(dataset) * .80 )) | |
| scaler = MinMaxScaler(feature_range=(0,1)) | |
| scaled_data = scaler.fit_transform(dataset) | |
| train_data = scaled_data[0:int(training_data_len), :] | |
| x_train = [] | |
| y_train = [] | |
| for i in range(60, len(train_data)): | |
| x_train.append(train_data[i - 60 : i, 0]) | |
| y_train.append(train_data[i, 0]) | |
| # Convert the x_train and y_train to numpy arrays | |
| x_train, y_train = np.array(x_train), np.array(y_train) | |
| # Reshape the data | |
| x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1)) | |
| # Build the LSTM model | |
| model = Sequential() | |
| # -> (B, 60, 1) | |
| model.add(LSTM(128, return_sequences=True, input_shape= (x_train.shape[1], 1), use_bias = False)) | |
| # -> (B, 60, 128) | |
| model.add(LSTM(64, return_sequences=False, use_bias = False)) | |
| # -> (B, 64) | |
| model.add(Dense(25)) | |
| # -> (B, 25) | |
| model.add(Dense(1)) | |
| # -> (B, 1) | |
| # Compile the model | |
| model.compile(optimizer='adam', loss='mean_squared_error') | |
| # Train the model | |
| model.fit(x_train, y_train, batch_size=1, epochs=1) | |
| # Create the testing data set | |
| test_data = scaled_data[: , :] | |
| # Create the data sets x_test and y_test | |
| x_test = [] | |
| y_test = dataset[:, :] | |
| for i in range(60, len(test_data)): | |
| x_test.append(test_data[i - 60:i, 0]) | |
| # Convert the data to a numpy array | |
| x_test = np.array(x_test) | |
| # Reshape the data | |
| x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1 )) | |
| # Get the models predicted price values | |
| preds = model.predict(x_test) | |
| preds = scaler.inverse_transform(preds) | |
| print (preds.shape) | |
| predictions = np.full((60,1), np.nan) | |
| predictions = np.concatenate((predictions, preds), axis=0) | |
| print(predictions.shape) | |
| return predictions | |
| # -------------------------------- timefm + LSTM --------------------------------- | |
| # st.pyplot(plot_lstm_timefm_prediction(data = stock_df, lstm_prediction = predictions)) |