File size: 3,106 Bytes
47d147b
 
3b24ace
 
47d147b
3b24ace
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3f61e0e
3b24ace
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
109
110
111
112
113
114
115
116
117
118
119
120
121
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import pandas_datareader as data
import yfinance as yf
import tensorflow as tf

from keras.models import  load_model
import streamlit as st 

start = '2010-01-01'
end = '2023-7-30'


st.title('Stock Future Predicter')

use_input = st.text_input('Enter stock Ticker', 'AAPL')##############

if st.button('Predict'):
    df = yf.download(use_input, start ,end )

    
    #describing data 
    st.subheader('Data From 2010-2023')
    st.write(df.describe())

    #maps 

    st.subheader('closing Price VS Time Chart ')
    fig = plt.figure(figsize=(10,5))
    plt.plot(df.Close , color = 'yellow')
    plt.legend()
    st.pyplot(fig)

    st.subheader('closing Price VS Time Chart with 100 moving Average  ')
    ma100= df.Close.rolling(100).mean()
    fig = plt.figure(figsize=(10,5))
    plt.plot(ma100, color = 'red')
    plt.plot(df.Close , color = 'yellow')
    plt.legend()
    st.pyplot(fig)


    st.subheader('closing Price VS Time Chart with 100 & 200 moving Average  ')
    ma100= df.Close.rolling(100).mean()
    ma200= df.Close.rolling(200).mean()
    fig = plt.figure(figsize=(10,5))
    plt.plot(ma100 , color = 'red')
    plt.plot(ma200, color = 'green')
    plt.plot(df.Close , color = 'yellow')
    plt.legend()
    st.pyplot(fig)


    #spltting data into train test 
    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(' taining ', data_training.shape)
    print(' testing ', data_testing.shape)

    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler(feature_range = (0,1))

    data_training_array = scaler.fit_transform(data_training)




    #load Model 

    model = load_model('model.h5')

    #testing past 
    pass_100_days = data_training.tail(100)

    final_df = pd.concat([pass_100_days, 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


    #final graph 
    def plot_transparent_graph():
        st.subheader('prediction vs Original')
        fig2 = plt.figure(figsize= (12,6))
        plt.plot(y_test , 'b', label = 'Original Price')
        plt.plot(y_predicted , 'r', label = 'prdicted Price')
        plt.style.use('dark_background')
        plt.xlabel('time')
        plt.ylabel('price')
        plt.legend()
        st.pyplot(fig2)


    def main():
        st.title('Stock Price Predicted Analysis')
        
        # Call the function to plot the transparent graph
        plot_transparent_graph()

        # Other interactive elements and text can be added here as needed
        # ...

    if __name__ == "__main__":
        main()