Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pandas as pd | |
| import datetime | |
| import pickle | |
| # Step 1 | |
| def extract_week(df): | |
| try: | |
| df['Date'] = pd.to_datetime(df['Date']) | |
| df['Week'] = df['Date'].dt.isocalendar().week | |
| df['Year'] = pd.DatetimeIndex(df['Date']).year | |
| df['Month'] = pd.DatetimeIndex(df['Date']).month | |
| except Exception as e: | |
| st.error(f"Error during date extraction: {str(e)}") | |
| return df | |
| # Step 2 | |
| def maping_type(df): | |
| try: | |
| df['Type'] = df['Type'].map({'A': 1, 'B': 2, 'C': 3}) # Convert to integer directly | |
| except Exception as e: | |
| st.error(f"Error during type mapping: {str(e)}") | |
| return df | |
| # Step 3 | |
| def convert_to_int(df): | |
| try: | |
| df['Type'] = df['Type'].astype(int) | |
| df['IsHoliday'] = df['IsHoliday'].astype(int) | |
| except Exception as e: | |
| st.error(f"Error during data type conversion: {str(e)}") | |
| return df | |
| # Step 4 | |
| def input_col_sel(df): | |
| input_col = ['Store', 'Dept', 'IsHoliday', 'Type', 'Size', 'Temperature', | |
| 'Fuel_Price', 'CPI', 'Unemployment', 'Week', 'Year', 'Month', | |
| 'Fuel_Price_Cat'] | |
| return df[input_col] | |
| def load_model(): | |
| try: | |
| # Load the pre-trained model from the pickle file | |
| model = pickle.load(open('model.pkl', 'rb')) | |
| return model | |
| except Exception as e: | |
| st.error(f"Error loading the model: {str(e)}") | |
| return None | |
| def predict_sales(model, input_data): | |
| try: | |
| # Make predictions using the loaded model | |
| # Replace this line with the appropriate prediction logic based on your model | |
| prediction = model.predict(input_data) | |
| return prediction | |
| except Exception as e: | |
| st.error(f"Error during prediction: {str(e)}") | |
| return None | |
| def main(): | |
| st.title("Walmart Sales Forecasting App") | |
| # Create input fields for manual input | |
| st.sidebar.header("Inputs") | |
| store = st.sidebar.number_input("Store", min_value=1, max_value=45, step=1, value=1) | |
| dept = st.sidebar.number_input("Dept", min_value=1, max_value=99, step=1, value=1) | |
| is_holiday = st.sidebar.checkbox("Is Holiday") | |
| type_input = st.sidebar.selectbox("Type", ['A', 'B', 'C']) | |
| size = st.sidebar.number_input("Size", min_value=34875, max_value=219622, step=1, value=34875) | |
| temperature = st.sidebar.number_input("Temperature", min_value=-2, max_value=100) | |
| fuel_price = st.sidebar.number_input("Fuel Price", min_value=2.5, max_value=4.4) | |
| cpi = st.sidebar.number_input("CPI", min_value=126, max_value=227) | |
| unemployment = st.sidebar.number_input("Unemployment", min_value=3.879, max_value=14.00, value=3.879) | |
| min_date = datetime.date(2010, 3, 1) # Minimum allowed date | |
| input_date = st.sidebar.date_input("Date", min_value=min_date, value=datetime.date.today()) | |
| fuel_price_cat = st.sidebar.number_input("Fuel Price Category", min_value=2.00, max_value=4.25) | |
| # Create a dataframe from manual input | |
| input_data = pd.DataFrame({ | |
| 'Store': [store], | |
| 'Dept': [dept], | |
| 'IsHoliday': [int(is_holiday)], | |
| 'Type': [type_input], | |
| 'Size': [size], | |
| 'Temperature': [temperature], | |
| 'Fuel_Price': [fuel_price], | |
| 'CPI': [cpi], | |
| 'Unemployment': [unemployment], | |
| 'Date': [input_date], # Use the manually input date | |
| 'Fuel_Price_Cat': [fuel_price_cat] | |
| }) | |
| # Load the model | |
| model = load_model() | |
| if model is not None and st.button("Predict Sales Amount"): | |
| # Apply the preprocessing steps to the manual input | |
| input_data = extract_week(input_data) | |
| input_data = maping_type(input_data) | |
| input_data = convert_to_int(input_data) | |
| input_data = input_col_sel(input_data) | |
| # Make predictions | |
| prediction = predict_sales(model, input_data) | |
| if prediction is not None: | |
| st.success(f"Prediction: {prediction}") | |
| if __name__ == "__main__": | |
| main() | |