Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| 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') | |
| # Load pre-trained OneHotEncoder and StandardScaler | |
| ohe = joblib.load('ohe.pkl') | |
| scaler = joblib.load('scaler.pkl') | |
| # FastAPI app | |
| app = FastAPI() | |
| # Pydantic model for input validation | |
| class GameDetails(BaseModel): | |
| genre: str | |
| targetPlatform: str | |
| gamePlays: int | |
| competitorPricing: float | |
| currencyFluctuations: float | |
| # 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] | |
| # API endpoint for price prediction | |
| def predict_price(game_details: GameDetails): | |
| # Prepare input data for prediction | |
| input_data = { | |
| 'genre': game_details.genre, | |
| 'targetPlatform': game_details.targetPlatform, | |
| 'gamePlays': game_details.gamePlays, | |
| 'competitorPricing': game_details.competitorPricing, | |
| 'currencyFluctuations': game_details.currencyFluctuations | |
| } | |
| # Make prediction | |
| predicted_price = make_prediction(input_data) | |
| # Return the predicted price | |
| return { | |
| "predicted_price": f"${predicted_price:.2f}", | |
| "input_details": { | |
| "genre": game_details.genre, | |
| "platform": game_details.targetPlatform, | |
| "game_plays": game_details.gamePlays, | |
| "competitor_pricing": game_details.competitorPricing, | |
| "currency_fluctuations": game_details.currencyFluctuations | |
| } | |
| } | |
| def greet_json(): | |
| return {"Hello": "Blackhards♠️♣️!"} | |