dpanchali's picture
Upload folder using huggingface_hub
f3bfcf9 verified
import streamlit as st
import requests
import json
import pandas as pd
# Define the backend API URL
# Replace with the actual URL of your deployed backend API
BACKEND_API_URL_SINGLE = "https://dpanchali-SuperKart-Backend.hf.space/predict_single"
BACKEND_API_URL_BATCH = "https://dpanchali-SuperKart-Backend.hf.space/predict_batch"
st.title("SuperKart Sales Forecasting")
st.write("This application forecasts the sales revenue for product-store combinations.")
# Option to choose between single prediction and batch prediction
prediction_mode = st.radio("Select Prediction Mode:", ("Single Prediction", "Batch Prediction"))
if prediction_mode == "Single Prediction":
st.header("Predict Sales for a Single Item")
# Input fields for product and store details
product_id = st.text_input("Product ID")
product_weight = st.number_input("Product Weight", min_value=0.0)
product_sugar_content = st.selectbox("Product Sugar Content", ['Low Sugar', 'Regular', 'No Sugar'])
product_allocated_area = st.number_input("Product Allocated Area", min_value=0.0)
product_type = st.selectbox("Product Type", ['Frozen Foods', 'Dairy', 'Canned', 'Baking Goods', 'Health and Hygiene', 'Snack Foods', 'Meat', 'Hard Drinks', 'Fruits and Vegetables', 'Breads', 'Soft Drinks', 'Breakfast', 'Others', 'Starchy Foods', 'Seafood', 'Household'])
product_mrp = st.number_input("Product MRP", min_value=0.0)
store_id = st.selectbox("Store ID", ['OUT004', 'OUT003', 'OUT001', 'OUT002'])
store_establishment_year = st.number_input("Store Establishment Year", min_value=1900, max_value=2024)
store_size = st.selectbox("Store Size", ['Medium', 'High', 'Small'])
store_location_city_type = st.selectbox("Store Location City Type", ['Tier 2', 'Tier 1', 'Tier 3'])
store_type = st.selectbox("Store Type", ['Supermarket Type2', 'Departmental Store', 'Supermarket Type1', 'Food Mart'])
if st.button("Predict Sales"):
# Prepare data for the API request
input_data = {
"Product_Id": product_id,
"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_Id": store_id,
"Store_Establishment_Year": store_establishment_year,
"Store_Size": store_size,
"Store_Location_City_Type": store_location_city_type,
"Store_Type": store_type
}
# Send POST request to the backend API
response = requests.post(BACKEND_API_URL_SINGLE, json=input_data)
# Display the prediction result
if response.status_code == 200:
prediction = response.json()['predicted_sales']
st.success(f"Predicted Sales: {prediction:.2f}")
else:
st.error(f"Error: {response.status_code} - {response.text}")
elif prediction_mode == "Batch Prediction":
st.header("Predict Sales for a Batch of Items")
st.write("Upload a CSV file with product and store details.")
uploaded_file = st.file_uploader("Choose a CSV file", type="csv")
if uploaded_file is not None:
try:
# Read the uploaded CSV file into a DataFrame
input_df = pd.read_csv(uploaded_file)
st.write("Uploaded Data:")
st.dataframe(input_df)
if st.button("Predict Sales (Batch)"):
# Send POST request to the backend API with the CSV file
files = {'file': uploaded_file.getvalue()}
response = requests.post(BACKEND_API_URL_BATCH, files=files)
# Display the prediction result
if response.status_code == 200:
predictions = response.json()['predicted_sales']
# Display predictions in a DataFrame
predictions_df = pd.DataFrame({'Predicted_Sales': predictions})
st.write("Predicted Sales:")
st.dataframe(predictions_df)
else:
st.error(f"Error: {response.status_code} - {response.text}")
except Exception as e:
st.error(f"Error processing file: {e}")