Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import pandas as pd | |
| import matplotlib.pyplot as plt | |
| import streamlit as st | |
| from keras import models | |
| from keras.models import load_model | |
| st.title('Stock Market Prediction') | |
| user_input=st.text_input('Enter Stock Ticker','AAPL') | |
| df=pd.read_csv('AAPL.csv') | |
| #Describing the data | |
| st.subheader('Data from 2010-2019') | |
| st.write(df.describe()) | |
| #Visualizing the data | |
| st.subheader('Closing Price vs Time Chart') | |
| fig=plt.figure(figsize=(12,6)) | |
| plt.plot(df.close) | |
| st.pyplot(fig) | |
| st.subheader('Closing Price vs Time Chart with 100MA') | |
| ma100=df.close.rolling(100).mean() | |
| fig=plt.figure(figsize=(12,6)) | |
| plt.plot(ma100) | |
| plt.plot(df.close) | |
| st.pyplot(fig) | |
| st.subheader('Closing Price vs Time Chart with 100MA & 200MA') | |
| ma100=df.close.rolling(100).mean() | |
| ma200=df.close.rolling(200).mean() | |
| fig=plt.figure(figsize=(12,6)) | |
| plt.plot(ma100,'r') | |
| plt.plot(ma200,'g') | |
| plt.plot(df.close,'b') | |
| st.pyplot(fig) | |
| #Splitting the data into training and testing | |
| data_training=pd.DataFrame(df['close'][0:int(len(df)*0.70)]) | |
| data_testing=pd.DataFrame(df['close'][int(len(df)*0.70):int(len(df))]) | |
| print(data_training.shape) | |
| print(data_testing.shape) | |
| from sklearn.preprocessing import MinMaxScaler | |
| scaler=MinMaxScaler(feature_range=(0,1)) | |
| data_training_array=scaler.fit_transform(data_training) | |
| #Splitting data into x_train and y_train | |
| x_train = [] | |
| y_train = [] | |
| for i in range(100, data_training_array.shape[0]): | |
| x_train.append(data_training_array[i - 100:i]) | |
| y_train.append(data_training_array[i, 0]) | |
| #load my model | |
| model=load_model('keras_model.h5') | |
| x_train, y_train = np.array(x_train), np.array(y_train) | |
| #Testing part | |
| past_100_days=data_training.tail(100) | |
| final_df=past_100_days._append(data_testing,ignore_index=True) | |
| input_data=scaler.fit_transform(final_df) | |
| x_test=[] | |
| y_test=[] | |
| for i in range(100,input_data.shape[0]): | |
| x_test.append(input_data[i-100:i]) | |
| y_test.append(input_data[i,0]) | |
| x_test,y_test=np.array(x_test),np.array(y_test) | |
| y_predicted=model.predict(x_test) | |
| scaler=scaler.scale_ | |
| scale_factor=1/scaler[0] | |
| y_predicted=y_predicted*scale_factor | |
| y_test=y_test*scale_factor | |
| st.subheader('Predicted vs Original') | |
| fig2=plt.figure(figsize=(12,6)) | |
| plt.plot(y_test,'b',label='Original Price') | |
| plt.plot(y_predicted,'r',label='Predicted Price') | |
| plt.xlabel('Time') | |
| plt.ylabel('Price') | |
| plt.legend() | |
| st.pyplot(fig2) |