Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import joblib | |
| import pandas as pd | |
| import numpy as np | |
| MODEL_PATH = 'src/vgsales_prediction.joblib' | |
| FEATURES = ["Rank", "NA_Sales", "EU_Sales", "JP_Sales", "Other_Sales"] | |
| def load_linear_model(): | |
| try: | |
| model = joblib.load(MODEL_PATH) | |
| return model | |
| except Exception as e: | |
| st.error(f"Error loading the Linear Regression model. Ensure '{MODEL_PATH}' is uploaded. Error: {e}") | |
| return None | |
| def predict_sales(model, input_data): | |
| input_df = pd.DataFrame([input_data])[FEATURES] | |
| prediction = model.predict(input_df) | |
| return float(prediction[0]) | |
| # --- Streamlit Interface --- | |
| st.set_page_config(page_title="Game Sales Predictor", layout="centered") | |
| st.title("🎮 Global Video Game Sales Prediction") | |
| st.markdown("Enter regional sales figures (in Millions) and Rank to predict total Global Sales.") | |
| model = load_linear_model() | |
| if model is not None: | |
| st.sidebar.header("Sales Input (in Millions)") | |
| rank = st.sidebar.number_input("Game Rank:", min_value=1, value=1000) | |
| na_sales = st.sidebar.number_input("North America Sales (NA_Sales):", min_value=0.0, value=0.5, step=0.01) | |
| eu_sales = st.sidebar.number_input("Europe Sales (EU_Sales):", min_value=0.0, value=0.25, step=0.01) | |
| jp_sales = st.sidebar.number_input("Japan Sales (JP_Sales):", min_value=0.0, value=0.1, step=0.01) | |
| other_sales = st.sidebar.number_input("Other Sales (Other_Sales):", min_value=0.0, value=0.05, step=0.01) | |
| input_data = { | |
| "Rank": rank, | |
| "NA_Sales": na_sales, | |
| "EU_Sales": eu_sales, | |
| "JP_Sales": jp_sales, | |
| "Other_Sales": other_sales | |
| } | |
| st.subheader("Regional Sales Input (Millions):") | |
| st.dataframe(pd.DataFrame([input_data]), hide_index=True) | |
| if st.button("Predict Global Sales"): | |
| with st.spinner('Calculating prediction...'): | |
| predicted_global_sales = predict_sales(model, input_data) | |
| st.success("Prediction Successful!") | |
| st.markdown("### Predicted Global Sales:") | |
| st.markdown(f"**{predicted_global_sales:,.2f} Million**") | |
| st.info("Note: This simple linear model uses Rank and regional sales to predict the total.") |