File size: 6,633 Bytes
6654368
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

# import streamlit as st
# import pandas as pd
# import pickle

# # Load your trained model #pickle.load() requires a file object opened in binary read mode ('rb').
# with open('models/sales_prediction_pipeline.pkl', 'rb') as file:
#     model = pickle.load(file)

# # Function to predict sales
# def predict_sales(input_data):
#     # Make predictions using the loaded model
#     sales_prediction = model.predict(input_data)
#     return sales_prediction

# # ///////////////////////////////////////////// Streamlit app //////////////////////////////////////////

# def main():
#     st.title('Sales Prediction App')
#     st.image("images\\r1.jpg", caption="Rossmann")


#     # Input widgets
#     PromoInterval = st.selectbox("Promo Interval", ['No Promotion', 'Jan,Apr,Jul,Oct', 'Feb,May,Aug,Nov', 'Mar,Jun,Sept,Dec'])

#     # -----------------------------------------------------------------------------------------------
#     StoreType = st.radio("StoreType", ["Small Shop", "Medium Store", "Large Store", "Hypermarket"])
#     Assortment = st.radio("Assortment", ["basic", "extra", "extended"])
    

#     # Encode StateHoliday as 1 for 'Yes' and 0 for 'No' --------------------------------------
#     StateHoliday = st.radio("State Holiday", ["Yes", "No"])
#     StateHoliday = 1 if StateHoliday == "Yes" else 0

#     SchoolHoliday = st.radio("School Holiday", ["Yes", "No"])
#     SchoolHoliday = 1 if SchoolHoliday == "Yes" else 0

#     Promo = st.radio("Promotion", ["store is participating", "store is not participating"])
#     Promo = 1 if Promo == "store is participating" else 0
#     # ----------------------------------------------------------------------------------------
    

#     Store = st.slider("Store", 1, 1115)
#     Customers = st.slider("Customers", 0, 7388)
#     CompetitionDistance = st.slider("Competition Distance", 20, 75860)
#     CompetitionOpenSinceMonth = st.slider("Competition Open Since Month", 1, 12)
#     CompetitionOpenSinceYear = st.slider("Competition Open Since Year", 1998, 2015)
#     # ----------------------------------------------------------------------------------------

#     # Store user inputs
#     input_data = pd.DataFrame({
#         'PromoInterval': [PromoInterval],
#         'StoreType': [StoreType],
#         'Assortment': [Assortment],
#         'StateHoliday': [StateHoliday],
#         'Store': [Store],
#         'Customers': [Customers],
#         'Promo': [Promo],
#         'SchoolHoliday': [SchoolHoliday],
#         'CompetitionDistance': [CompetitionDistance],
#         'CompetitionOpenSinceMonth': [CompetitionOpenSinceMonth],
#         'CompetitionOpenSinceYear': [CompetitionOpenSinceYear]
#     })

#     # Display input data
#     st.subheader('Input Data:')
#     st.write(input_data)

#     # Predict sales
#     if st.button('Predict Sales'):
#         prediction = predict_sales(input_data)[0]
#         formatted_prediction = "{:.2f}".format(prediction)  # Format prediction to display two decimal points
#         st.write('Predicted Sales:', formatted_prediction)


# if __name__ == '__main__':
#     main()



# # Record at index 795018:
# # PromoInterval                Jan,Apr,Jul,Oct
# # StoreType                         Small Shop
# # Assortment                             basic
# # StateHoliday                               0
# # SchoolHoliday                              0
# # Promo                                      1
# # Store                                    650
# # Customers                                636
# # CompetitionDistance                     1420
# # CompetitionOpenSinceMonth                 10
# # CompetitionOpenSinceYear                2012
# # Sales                                   6322
# # Name: 795018, dtype: object






import streamlit as st
import pandas as pd
import pickle

# Load your trained pipeline
with open(r'models/sales_prediction_pipeline.pkl', 'rb') as file:  # Use raw string or forward slashes
    model = pickle.load(file)

# Function to predict sales
def predict_sales(input_data):
    # Make predictions using the loaded model
    sales_prediction = model.predict(input_data)
    return sales_prediction

# Streamlit app
def main():
    st.title('Sales Prediction App')
    st.image("images/r1.jpg", caption="Rossmann")  # Use forward slashes for image path

    # Input widgets
    PromoInterval = st.selectbox("Promo Interval", ['No Promotion', 'Jan,Apr,Jul,Oct', 'Feb,May,Aug,Nov', 'Mar,Jun,Sept,Dec'])
    StoreType = st.radio("StoreType", ["Small Shop", "Medium Store", "Large Store", "Hypermarket"])
    Assortment = st.radio("Assortment", ["basic", "extra", "extended"])
    
    # Encode StateHoliday as 1 for 'Yes' and 0 for 'No'
    StateHoliday = st.radio("State Holiday", ["Yes", "No"])
    StateHoliday = 1 if StateHoliday == "Yes" else 0

    SchoolHoliday = st.radio("School Holiday", ["Yes", "No"])
    SchoolHoliday = 1 if SchoolHoliday == "Yes" else 0

    Promo = st.radio("Promotion", ["store is participating", "store is not participating"])
    Promo = 1 if Promo == "store is participating" else 0

    Store = st.slider("Store", 1, 1115)
    Customers = st.slider("Customers", 0, 7388)
    CompetitionDistance = st.slider("Competition Distance", 20, 75860)
    CompetitionOpenSinceMonth = st.slider("Competition Open Since Month", 1, 12)
    CompetitionOpenSinceYear = st.slider("Competition Open Since Year", 1998, 2015)

    # Store user inputs
    input_data = pd.DataFrame({
        'PromoInterval': [PromoInterval],
        'StoreType': [StoreType],
        'Assortment': [Assortment],
        'StateHoliday': [StateHoliday],
        'Store': [Store],
        'Customers': [Customers],
        'Promo': [Promo],
        'SchoolHoliday': [SchoolHoliday],
        'CompetitionDistance': [CompetitionDistance],
        'CompetitionOpenSinceMonth': [CompetitionOpenSinceMonth],
        'CompetitionOpenSinceYear': [CompetitionOpenSinceYear]
    })

    # Display input data
    st.subheader('Input Data:')
    st.write(input_data)

    # Predict sales
    if st.button('Predict Sales'):
        try:
            prediction = predict_sales(input_data)[0]  # Get the first prediction
            formatted_prediction = "{:.2f}".format(prediction)  # Format prediction to two decimal points
            st.write('Predicted Sales:', formatted_prediction)
        except Exception as e:
            st.error(f"An error occurred: {e}")


if __name__ == '__main__':
    main()