Spaces:
Runtime error
Runtime error
| 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.") | |