Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import numpy as np | |
| import pandas as pd | |
| import tensorflow as tf | |
| from sklearn.preprocessing import OneHotEncoder, StandardScaler | |
| import joblib | |
| # Load the trained model | |
| model = tf.keras.models.load_model('trained_game_price_model.h5') | |
| # Function to preprocess the input data | |
| def preprocess_input(data, ohe, scaler): | |
| # Convert input into DataFrame for processing | |
| input_data = pd.DataFrame([data], columns=['genre', 'targetPlatform', 'gamePlays', 'competitorPricing', 'currencyFluctuations']) | |
| # Apply OneHotEncoder for categorical features | |
| input_data_transformed = ohe.transform(input_data[['genre', 'targetPlatform']]) | |
| # Ensure numerical features are 2D | |
| numerical_features = input_data[['gamePlays', 'competitorPricing', 'currencyFluctuations']].values.reshape(1, -1) | |
| # Merge with numerical features | |
| input_data = np.hstack((input_data_transformed.toarray(), numerical_features)) | |
| # Scale the features | |
| input_data_scaled = scaler.transform(input_data) | |
| return input_data_scaled | |
| # Function to make a prediction | |
| def make_prediction(input_data): | |
| # Preprocess the data for the model | |
| input_data_scaled = preprocess_input(input_data, ohe, scaler) | |
| # Make prediction | |
| prediction = model.predict(input_data_scaled) | |
| return prediction[0][0] | |
| # Load pre-trained OneHotEncoder and StandardScaler (assuming you have these saved) | |
| ohe = joblib.load('ohe.pkl') # Load the OneHotEncoder | |
| scaler = joblib.load('scaler.pkl') # Load the StandardScaler | |
| # Streamlit application | |
| st.title("Game Price Prediction App") | |
| st.write(""" | |
| ### Enter the game details below to predict its price. | |
| """) | |
| # Game details form | |
| with st.form("game_details_form"): | |
| genre = st.selectbox('Genre', ['Action', 'RPG', 'Puzzle', 'Adventure', 'Simulation', 'Strategy', 'Horror', 'Fighting', 'Sports', 'Racing', 'Casual', 'MOBA', 'Sandbox']) | |
| target_platform = st.selectbox('Platform', ['PC', 'PlayStation', 'Xbox', 'Mobile', 'Switch', 'Nintendo 3DS', 'VR', 'Web']) | |
| total_sales = st.number_input('Total Sales (units)', min_value=0, value=50000) | |
| initial_price = st.number_input('Initial Price Offering ($)', min_value=0.0, value=29.99, format="%.2f") | |
| revenue = total_sales * initial_price | |
| competitor_pricing = st.number_input('Average Market Price for Similar Games ($)', min_value=0.0, value=30.0, format="%.2f") | |
| currency_fluctuations = st.number_input('Currency Fluctuations', min_value=0.5, max_value=1.5, value=1.0, format="%.2f") | |
| # Submit button | |
| submitted = st.form_submit_button("Predict Price") | |
| # Prediction logic | |
| if submitted: | |
| # Prepare input data | |
| input_data = { | |
| 'genre': genre, | |
| 'targetPlatform': target_platform, | |
| 'gamePlays': revenue, | |
| 'competitorPricing': competitor_pricing, | |
| 'currencyFluctuations': currency_fluctuations | |
| } | |
| # Make prediction | |
| predicted_price = make_prediction(input_data) | |
| # Display results | |
| st.write(f"### Predicted Game Price: ${predicted_price:.2f}") | |
| # Show the input details for reference | |
| st.write("#### Input Details:") | |
| st.write(f"- **Genre**: {genre}") | |
| st.write(f"- **Platform**: {target_platform}") | |
| st.write(f"- **Total Sales**: {total_sales}") | |
| st.write(f"- **Initial Price**: ${initial_price:.2f}") | |
| st.write(f"- **Current Revenue**: ${revenue:.2f}") | |
| st.write(f"- **Competitor Pricing**: ${competitor_pricing:.2f}") | |
| st.write(f"- **Currency Fluctuations**: {currency_fluctuations}") |