File size: 4,740 Bytes
6e65a0b
4610f9e
6e65a0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import pandas as pd
import requests

# Streamlit UI for SuperKart Sales Revenue Forecasting
st.title("SuperKart Sales Revenue Forecasting App")
st.write("This app predicts the total sales revenue for product-store combinations based on product and store features.")
st.write("Adjust the values below to get a sales prediction.")

# Collect user input using sliders and selectboxes
col1, col2 = st.columns(2)

with col1:
    st.subheader("Product Features")
    Product_Weight = st.slider("Product Weight", 5.0, 25.0, 12.5, 0.1)
    Product_Sugar_Content = st.selectbox("Product Sugar Content", ["Low Sugar", "Regular", "No Sugar"])
    Product_Allocated_Area = st.slider("Product Allocated Area (ratio)", 0.0, 0.5, 0.05, 0.01)
    Product_Type = st.selectbox("Product Type", [
        "Meat", "Snack Foods", "Hard Drinks", "Dairy", "Canned", "Soft Drinks",
        "Health and Hygiene", "Baking Goods", "Bread", "Breakfast", "Frozen Foods",
        "Fruits and Vegetables", "Household", "Seafood", "Starchy Foods", "Others"
    ])
    Product_MRP = st.slider("Product MRP (Maximum Retail Price)", 50.0, 300.0, 150.0, 1.0)

with col2:
    st.subheader("Store Features")
    Store_Establishment_Year = st.slider("Store Establishment Year", 1985, 2015, 2000, 1)
    Store_Size = st.selectbox("Store Size", ["Small", "Medium", "High"])
    Store_Location_City_Type = st.selectbox("Store Location City Type", ["Tier 1", "Tier 2", "Tier 3"])
    Store_Type = st.selectbox("Store Type", [
        "Departmental Store", "Supermarket Type1", "Supermarket Type2", "Food Mart"
    ])

# Create input data dictionary
input_data = {
    'Product_Weight': Product_Weight,
    'Product_Sugar_Content': Product_Sugar_Content,
    'Product_Allocated_Area': Product_Allocated_Area,
    'Product_Type': Product_Type,
    'Product_MRP': Product_MRP,
    'Store_Establishment_Year': Store_Establishment_Year,
    'Store_Size': Store_Size,
    'Store_Location_City_Type': Store_Location_City_Type,
    'Store_Type': Store_Type
}

if st.button("Predict Sales Revenue", type='primary'):
    # Replace with your Hugging Face backend space URL
    api_url = "https://<----user-name---->-<---repo name--->.hf.space/v1/sales"  # Enter user name and space name
    try:
        response = requests.post(api_url, json=input_data, timeout=30)
        if response.status_code == 200:
            result = response.json()
            predicted_sales = result["Predicted_Sales_Total"]
            st.success(f"💰 Predicted Sales Revenue: **${predicted_sales:,.2f}**")
            st.info(f"This prediction is for a {Product_Type} product in a {Store_Size} {Store_Type} located in {Store_Location_City_Type}.")
        else:
            st.error(f"Error in API request: Status Code {response.status_code}")
            st.error(f"Response: {response.text}")
    except requests.exceptions.RequestException as e:
        st.error(f"Error connecting to API: {str(e)}")
        st.info("Please ensure your backend API is deployed and the URL is correct.")

# Batch Prediction
st.subheader("Batch Prediction")
st.write("Upload a CSV file with product and store features to get predictions for multiple combinations.")

file = st.file_uploader("Upload CSV file", type=["csv"])
if file is not None:
    # Display preview of uploaded file
    df_preview = pd.read_csv(file)
    st.write("Preview of uploaded file:")
    st.dataframe(df_preview.head())

    if st.button("Predict for Batch", type='primary'):
        # Replace with your Hugging Face backend space URL
        api_url = "https://<----user-name---->-<---repo name--->.hf.space/v1/salesbatch"  # Enter user name and space name
        try:
            files = {"file": (file.name, file, "text/csv")}
            response = requests.post(api_url, files=files, timeout=60)
            if response.status_code == 200:
                result = response.json()
                result_df = pd.DataFrame(result)
                st.header("Batch Prediction Results")
                st.dataframe(result_df)

                # Download button
                csv = result_df.to_csv(index=False).encode('utf-8')
                st.download_button(
                    label="Download Predictions as CSV",
                    data=csv,
                    file_name="predictions.csv",
                    mime="text/csv"
                )
            else:
                st.error(f"Error in API request: Status Code {response.status_code}")
                st.error(f"Response: {response.text}")
        except requests.exceptions.RequestException as e:
            st.error(f"Error connecting to API: {str(e)}")
            st.info("Please ensure your backend API is deployed and the URL is correct.")