Spaces:
Runtime error
Runtime error
File size: 4,616 Bytes
d757d64 b4d6be3 d757d64 0796ac7 57a986f 0796ac7 87f9277 1d4b55c 57a986f b75872d 57a986f 1d4b55c 57a986f 1d4b55c 57a986f 1d4b55c 57a986f 1d4b55c 2b7564e 1d4b55c b75872d 1d4b55c 7575093 341740c b75872d 1d4b55c 87f9277 57a986f 87f9277 d757d64 6a1e1c5 d757d64 6a1e1c5 57a986f d757d64 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
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() |