Spaces:
Sleeping
Sleeping
| import os | |
| import pandas as pd | |
| import numpy as np | |
| import streamlit as st | |
| import joblib | |
| from huggingface_hub import hf_hub_download | |
| # Model repo (overridable via env) | |
| MODEL_REPO = os.getenv("MODEL_ID", "dev02chandan/sales-forecast-model") | |
| def load_model(): | |
| pkl_path = hf_hub_download(repo_id=MODEL_REPO, repo_type="model", filename="model.pkl") | |
| return joblib.load(pkl_path) | |
| model = load_model() | |
| st.title("Sales Forecast: Product × Store") | |
| # Inputs | |
| with st.form("inference"): | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| product_id = st.text_input("Product_Id", "FD30") | |
| product_weight = st.number_input("Product_Weight", min_value=0.0, value=500.0) | |
| sugar = st.selectbox("Product_Sugar_Content", ["low sugar","regular","no sugar"]) | |
| allocated_area = st.number_input("Product_Allocated_Area", min_value=0.0, max_value=1.0, value=0.05) | |
| product_type = st.text_input("Product_Type", "dairy") | |
| with col2: | |
| product_mrp = st.number_input("Product_MRP", min_value=0.0, value=199.0) | |
| store_id = st.text_input("Store_Id", "OUT001") | |
| store_est_year = st.number_input("Store_Establishment_Year", min_value=1900, max_value=2100, value=2010) | |
| store_size = st.selectbox("Store_Size", ["Small","Medium","High"]) | |
| 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"]) | |
| submitted = st.form_submit_button("Predict") | |
| if submitted: | |
| # Engineered features used during training | |
| store_age = max(0, 2025 - int(store_est_year)) | |
| mrp_x_area = float(product_mrp) * float(allocated_area) | |
| # Assemble frame in the same schema as training | |
| row = { | |
| "Product_Id": product_id, | |
| "Product_Sugar_Content": sugar, | |
| "Product_Type": product_type, | |
| "Store_Id": store_id, | |
| "Store_Size": store_size, | |
| "Store_Location_City_Type": city_type, | |
| "Store_Type": store_type, | |
| "Product_Weight": float(product_weight), | |
| "Product_Allocated_Area": float(allocated_area), | |
| "Product_MRP": float(product_mrp), | |
| "Store_Establishment_Year": int(store_est_year), | |
| "Store_Age": float(store_age), | |
| "MRP_x_Area": float(mrp_x_area), | |
| } | |
| X = pd.DataFrame([row]) | |
| y_pred = model.predict(X)[0] | |
| st.metric("Predicted Product_Store_Sales_Total", f"{y_pred:,.2f}") | |