frontend / app.py
MuthuVaidy's picture
Upload folder using huggingface_hub
9e68a57 verified
import requests
import streamlit as st
import pandas as pd
# Set page title
st.title("SuperKart Sales Forecast")
st.markdown("Predict the future sales revenue for SuperKart products based on store and product features.")
# --- Single Prediction Section ---
st.subheader("Single Prediction")
# Input fields
Product_Weight = st.number_input("Product Weight (in kg)", min_value=1.0, max_value=50.0, value=12.7)
Product_Allocated_Area = st.number_input("Product Allocated Area (ratio)", min_value=0.001, max_value=0.5, value=0.08)
Product_MRP = st.number_input("Product MRP (Maximum Retail Price)", min_value=10.0, max_value=500.0, value=160.0)
Store_Age = st.number_input("Store Age (years since establishment)", min_value=1, max_value=50, value=5)
Product_Sugar_Content = st.selectbox("Product Sugar Content", ["Low Sugar", "Regular", "No Sugar"])
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"
])
Store_Size = st.selectbox("Store Size", ["High", "Medium", "Low"])
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 Type 1", "Supermarket Type 2", "Food Mart"])
Product_Prefix = st.text_input("Product Prefix (two letters, e.g., 'SN')", value="SN")
# Create JSON payload
data = {
"Product_Weight": Product_Weight,
"Product_Allocated_Area": Product_Allocated_Area,
"Product_MRP": Product_MRP,
"Store_Age": Store_Age,
"Product_Sugar_Content": Product_Sugar_Content,
"Product_Type": Product_Type,
"Store_Size": Store_Size,
"Store_Location_City_Type": Store_Location_City_Type,
"Store_Type": Store_Type,
"Product_Prefix": Product_Prefix
}
# Predict button
if st.button("Predict Sales", type="primary"):
try:
response = requests.post(
"https://muthuvaidy-backend.hf.space/v1/predict", json=data
)
if response.status_code == 200:
result = response.json()
st.success(f"Predicted Sales Total: {result['Predicted_Sales_Total']:.2f}")
else:
st.error("Error in API request. Please try again.")
except Exception as e:
st.error(f"Request failed: {e}")
# --- Batch Prediction Section ---
st.subheader("Batch Prediction")
st.markdown("Upload a CSV file with multiple records for batch predictions.")
file = st.file_uploader("Upload CSV File", type=["csv"])
if file is not None:
if st.button("Predict Batch Sales", type="primary"):
try:
response = requests.post(
"https://muthuvaidy-backend.hf.space/v1/predict_batch", files={"file": file}
)
if response.status_code == 200:
result = response.json()
st.success("Batch Prediction Completed!")
st.write(result)
else:
st.error("Error in batch prediction request.")
except Exception as e:
st.error(f"Batch request failed: {e}")