Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from PIL import Image | |
| import requests | |
| import hopsworks | |
| import joblib | |
| import pandas as pd | |
| import datetime | |
| import os | |
| year = datetime.date.today().year - 1 | |
| project = hopsworks.login() | |
| fs = project.get_feature_store() | |
| mr = project.get_model_registry() | |
| model_url = f"valuation_model_v{year-1}_{year}" | |
| model = mr.get_model(model_url) | |
| model_dir = model.download() | |
| model = joblib.load(f"{model_dir}/valuation_model.pkl") | |
| scaler = joblib.load(f"{model_dir}/scaler.pkl") | |
| #Get data that has not been trained on | |
| fg = fs.get_or_create_feature_group( | |
| name='prediction_valuation_fg', | |
| version=1, | |
| description='Feature group containing X_test and y_test data for model performance measurement', | |
| primary_key=['player_id', 'date'] # Replace with your primary key column name(s) | |
| ) | |
| def valuation_predictor(goals, assists, y_cards, r_cards, | |
| m_played, height, age, mo_left, | |
| t_made_goals, t_conceded_goals, t_clean_sheets, | |
| pos, league): | |
| features_for_prediction = [ | |
| y_cards, r_cards, goals, assists, m_played, height, age, mo_left, t_made_goals, t_conceded_goals, t_clean_sheets, league=="La Liga", league=="League 1", league=="Premier league", league=="Serie A", league=="Bundesliga", pos=="Attack", pos=="Defender", pos=="Goalkeeper", pos=="Midfield" | |
| ] | |
| column_names = [ | |
| "yellow_cards", "red_cards", "goals", "assists", "minutes_played", "height_in_cm", "age", "months_left", "own_goals", "opponent_goals", "clean_sheets", "league_es1","league_fr1", "league_gb1","league_it1","league_l1", "position_attack","position_defender", "position_goalkeeper","position_midfield" | |
| ] | |
| # Create DataFrame from the input features | |
| X_predict = pd.DataFrame([features_for_prediction], columns=column_names) | |
| # Apply the scaler to the relevant columns | |
| scaled_columns = ['age', 'height_in_cm', 'minutes_played'] | |
| X_predict[scaled_columns] = scaler.transform(X_predict[scaled_columns]) | |
| estimated_valuation = model.predict(X_predict) | |
| # Reformatting to the nearest thousand with commas | |
| formatted_output_thousand = f"{round(estimated_valuation[0], -3):,} EUR" | |
| return formatted_output_thousand | |
| df = pd.DataFrame(fg.read()) | |
| df = df.drop(columns=["player_id", "date"]) | |
| print(df) | |
| new_rows = [] | |
| for index, row in df.iterrows(): | |
| league = "" | |
| pos = "" | |
| if row['league_es1']: | |
| league = "La Liga" | |
| elif row['league_fr1']: | |
| league = "League 1" | |
| elif row['league_gb1']: | |
| league = "Premier League" | |
| elif row['league_it1']: | |
| league = "Serie A" | |
| elif row['league_l1']: | |
| league = "Bundesliga" | |
| if row['position_attack']: | |
| pos = "Attack" | |
| elif row['position_defender']: | |
| pos = "Defender" | |
| elif row['position_goalkeeper']: | |
| pos = "Goalkeeper" | |
| elif row['position_midfield']: | |
| pos = "Midfield" | |
| new_row = { | |
| "Player name": row["player_name"], | |
| "League": league, | |
| "Goals": row["goals"], | |
| "Assists": row["assists"], | |
| "Yellow cards": row["yellow_cards"], | |
| "Red cards": row["red_cards"], | |
| "Minutes played": row["minutes_played"], | |
| "Height": row["height_in_cm"], | |
| "Age": row["age"], | |
| "Months left on contract": row["months_left"], | |
| "Team made goals": row["own_goals"], | |
| "Team conceded goals": row["opponent_goals"], | |
| "Team clean sheets": row["clean_sheets"], | |
| "Actual market value (EUR)": f"{round(float(row['market_value_in_eur']), -3):,} EUR", | |
| "Model predicted market value (EUR)": | |
| valuation_predictor( | |
| row["goals"], row["assists"], row["yellow_cards"], row["red_cards"], row["minutes_played"], row["height_in_cm"], row["age"], row["months_left"], row["own_goals"], row["opponent_goals"], row["clean_sheets"], pos, league | |
| ) | |
| } | |
| # Append new row to df_present | |
| new_rows.append(new_row) | |
| #predicted_value = valuation_predictor() | |
| df_present = pd.DataFrame(new_rows, columns=["Player name", "League", "Goals", "Assists", "Yellow cards", "Red cards", "Minutes played", "Height (cm)", "Age", "Months left on contract", "Team made goals", "Team conceded goals", "Team clean sheets", "Actual market value (EUR)", "Model predicted market value (EUR)"]) | |
| print(df_present) | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| with gr.Row(): | |
| gr.Label(value="Latest predictions", show_label=False) | |
| with gr.Row(): | |
| gr.DataFrame(value=df_present) | |
| demo.launch() |