Satyam0077's picture
Upload 3 files
7b29ac7 verified
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Load the dataset
data = pd.read_csv("ProductInfo.csv") # Replace with your actual dataset
# Title and description
st.title("Demand Forecasting")
st.write("Demand Overview for Top 10 Products")
# Sample dropdown for stock codes or product codes
stock_codes = data['StockCode'].unique()
selected_stock = st.selectbox("Select a Stock Code:", stock_codes)
# Filter data for selected stock code
filtered_data = data[data['StockCode'] == selected_stock]
# Generate dummy data for the forecast and actual values
# Replace this with your actual forecasting model's output
dates = pd.date_range(start='2023-01-01', periods=len(filtered_data), freq='W')
actual_demand = np.random.randint(50, 150, size=len(filtered_data)) # Replace with actual demand data
predicted_demand_train = actual_demand + np.random.normal(0, 10, size=len(filtered_data)) # Replace with your model's predictions
predicted_demand_test = actual_demand + np.random.normal(0, 15, size=len(filtered_data)) # Replace with your test predictions
# Line chart: Actual vs Predicted Demand
st.write(f"Demand Overview for {selected_stock}")
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(dates, actual_demand, label='Actual Demand', color='blue', marker='o')
ax.plot(dates, predicted_demand_train, label='Train Predicted Demand', color='green', linestyle='--', marker='x')
ax.plot(dates, predicted_demand_test, label='Test Predicted Demand', color='red', linestyle='--', marker='x')
ax.legend()
ax.set_xlabel("Date")
ax.set_ylabel("Demand")
st.pyplot(fig)
# Histograms for error distributions
train_error = actual_demand - predicted_demand_train
test_error = actual_demand - predicted_demand_test
# Training Error Distribution
st.write("Training Error Distribution")
fig, ax = plt.subplots(figsize=(6, 4))
ax.hist(train_error, bins=20, color='green', alpha=0.7)
ax.set_xlabel("Error")
ax.set_ylabel("Frequency")
st.pyplot(fig)
# Testing Error Distribution
st.write("Testing Error Distribution")
fig, ax = plt.subplots(figsize=(6, 4))
ax.hist(test_error, bins=20, color='red', alpha=0.7)
ax.set_xlabel("Error")
ax.set_ylabel("Frequency")
st.pyplot(fig)