| | import os |
| | os.environ["STREAMLIT_SERVER_HEADLESS"] = "true" |
| |
|
| | import streamlit as st |
| | import pandas as pd |
| | from huggingface_hub import hf_hub_download |
| | import joblib |
| |
|
| | |
| | st.empty() |
| | st.set_page_config(page_title="SuperKart Sales Prediction") |
| | st.set_option("browser.gatherUsageStats", False) |
| |
|
| | |
| | Repo_ID = os.getenv("Repo_ID") |
| | HF_TOKEN = os.getenv("HF_TOKEN") |
| |
|
| | if not Repo_ID: |
| | st.error("❌ Repo_ID secret is missing in HF Space") |
| | st.stop() |
| |
|
| | |
| | st.title("🛒 SuperKart Sales Prediction") |
| | st.write("✅ UI rendered successfully") |
| |
|
| | |
| | @st.cache_resource |
| | def load_model(): |
| | model_path = hf_hub_download( |
| | repo_id=Repo_ID, |
| | filename="best_superkart_sales_model_v1.joblib", |
| | repo_type="model", |
| | token=HF_TOKEN |
| | ) |
| | return joblib.load(model_path) |
| |
|
| | |
| | try: |
| | with st.spinner("Loading ML model…"): |
| | model = load_model() |
| | st.success("✅ Model loaded successfully") |
| | except Exception as e: |
| | st.error("❌ Model failed to load") |
| | st.exception(e) |
| | st.stop() |
| |
|
| | |
| | st.write(""" |
| | This application predicts the **total product sales** for SuperKart |
| | based on product characteristics and store attributes. |
| | """) |
| |
|
| | product_sugar_content = st.selectbox("Product Sugar Content", ["Low Sugar", "Regular", "No Sugar"]) |
| | product_type = st.selectbox("Product Type", [ |
| | "Dairy", "Soft Drinks", "Meat", "Fruits and Vegetables", |
| | "Baking Goods", "Frozen Foods", "Health and Hygiene", |
| | "Canned", "Household", "Snack Foods", "Others" |
| | ]) |
| | store_id = st.selectbox("Store ID", ["OUT001", "OUT002", "OUT003", "OUT004", "OUT005"]) |
| | store_size = st.selectbox("Store Size", ["Small", "Medium", "High"]) |
| | store_city_type = st.selectbox("Store Location City Type", ["Tier 1", "Tier 2", "Tier 3"]) |
| | store_type = st.selectbox("Store Type", ["Grocery Store", "Supermarket Type1", "Supermarket Type2", "Food Mart"]) |
| |
|
| | product_weight = st.number_input("Product Weight (kg)", 0.1, 50.0, 10.0) |
| | product_allocated_area = st.number_input("Product Allocated Area", 0.001, 1.0, 0.05, step=0.001) |
| | product_mrp = st.number_input("Product MRP", 1.0, 1000.0, 100.0) |
| | store_est_year = st.number_input("Store Establishment Year", 1950, 2025, 2005) |
| |
|
| | input_data = pd.DataFrame([{ |
| | "Product_Weight": product_weight, |
| | "Product_Allocated_Area": product_allocated_area, |
| | "Product_MRP": product_mrp, |
| | "Store_Establishment_Year": store_est_year, |
| | "Product_Sugar_Content": product_sugar_content, |
| | "Product_Type": product_type, |
| | "Store_Id": store_id, |
| | "Store_Size": store_size, |
| | "Store_Location_City_Type": store_city_type, |
| | "Store_Type": store_type |
| | }]) |
| |
|
| | if st.button("Predict Sales"): |
| | prediction = model.predict(input_data)[0] |
| | st.success(f"Estimated Product Sales: **₹ {prediction:,.2f}**") |
| |
|