File size: 3,007 Bytes
d09cb6c
47d147b
 
 
 
 
 
85b11fb
7a5f7b9
47d147b
 
 
 
 
 
 
 
 
 
 
e7ce3ee
 
 
016e17f
 
3aad77e
 
 
 
 
016e17f
 
 
3aad77e
 
 
 
 
016e17f
 
 
 
85b11fb
 
 
 
 
 
3f61e0e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45e7455
 
3f61e0e
45e7455
 
 
3f61e0e
 
 
 
 
 
 
 
 
 
45e7455
 
d14d4db
 
3f61e0e
 
3579bf6
 
3f61e0e
 
8ed6527
3f61e0e
 
 
b0cdab4
3f61e0e
b0cdab4
3f61e0e
8ed6527
7a5f7b9
3f61e0e
 
 
 
 
7a5f7b9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import streamlit as st
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
import yfinance as yf
yf.pdr_override()
from pandas_datareader import data as pdr
from sklearn.preprocessing import MinMaxScaler
from keras.models import load_model

start = '2005-01-01'
end = '2022-12-31'

st.title("Stock Market Trend Predictor")

user_input = st.text_input("Enter the stock ticker", "TATAPOWER.NS")
df = pdr.get_data_yahoo(user_input, start, end)

st.subheader("Data from year 2005 to 2022:")
st.write(df.describe())

st.subheader("Closing Price VS Time Chart:")
fig = plt.figure(figsize=(12,6))
plt.plot(df.Close, label="Closing Price")
plt.legend()
st.pyplot(fig)

moving_avg_100 = df.Close.rolling(100).mean()
st.subheader("Closing Price VS Time Chart With 100Moving Average:")
fig = plt.figure(figsize=(12,6))
plt.plot(df.Close, label="Closing Price")
plt.plot(moving_avg_100,'red', label="100 Moving Average")
plt.legend()
st.pyplot(fig)

moving_avg_200 = df.Close.rolling(200).mean()
st.subheader("Closing Price VS Time Chart With 100Moving Average and 200Moving Average:")
fig = plt.figure(figsize=(12,6))
plt.plot(df.Close, label="Closing Price")
plt.plot(moving_avg_100,'red', label="100 Moving Average")
plt.plot(moving_avg_200,'green', label="200 Moving Average")
plt.legend()
st.pyplot(fig)

#Spliting Data in Training and Testing Data
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))])

#Scaling
scaler = MinMaxScaler(feature_range=(0,1))
data_training_arr = scaler.fit_transform(data_training)

#Split data in x_train and y_train
x_train = []
y_train = []
for i in range(100, data_training_arr.shape[0]):
    x_train.append(data_training_arr[i-100: i])
    y_train.append(data_training_arr[i, 0])
x_train, y_train = np.array(x_train), np.array(y_train)

#Load the model
model = load_model("keras_model.h5")

past_100_days = data_training.tail(100)
final_test_df = past_100_days._append(data_testing, ignore_index=True)
print("Final_test_df")
print(final_test_df)
input_data = scaler.fit_transform(final_test_df)
print("input_data")
print(input_data.shape)
print(input_data)

#Split data in x_test and y_test
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)
print(x_test.shape)
print(y_test.shape)
print("y_test")
print(y_test)

y_predicted = model.predict(x_test)
print("Predicted")
print(y_predicted)

sc = scaler.scale_
print(sc)
scale_factor = 1/sc[0]

y_predicted = y_predicted * scale_factor
print(y_predicted)
y_test = y_test * scale_factor
print(y_test)

st.subheader("Original Stock Price Vs Predicted Stock Price:")
fig2 = plt.figure(figsize=(12,6))
plt.plot(y_test, 'blue', label="Original Stock Price")
plt.plot(y_predicted, 'red', label="Predicted Stock Price")
plt.xlabel('Time')
plt.ylabel('Price')
plt.legend()
st.pyplot(fig2)