Spaces:
Sleeping
Sleeping
import gradio as gr | |
import cfbd | |
import numpy as np | |
import pandas as pd | |
from fastai.tabular import * | |
from fastai.tabular.all import * | |
configuration = cfbd.Configuration() | |
configuration.api_key["Authorization"] = "be81N7cB5mpl4z+BdHBuD5wUACNkh5YSAhO8uaC3tKCRAgC9WMhJjoHrO3Qx3TFp" | |
configuration.api_key_prefix["Authorization"] = "Bearer" | |
api_config = cfbd.ApiClient(configuration) | |
teams_api = cfbd.TeamsApi(api_config) | |
ratings_api = cfbd.RatingsApi(api_config) | |
games_api = cfbd.GamesApi(api_config) | |
betting_api = cfbd.BettingApi(api_config) | |
def predict(team, year): | |
matchups = get_game_details(year, team) | |
learn = load_learner("cfb-prediction.pkl") | |
pdf = pd.DataFrame(matchups) | |
dl = learn.dls.test_dl(pdf) | |
pdf["predicted"] = learn.get_preds(dl=dl)[0].numpy() | |
return pdf[['home_team','away_team','home_points','away_points','spread','margin','predicted']] | |
# def home_team_change(x): | |
# ratings = ratings_api.get_elo_ratings(team=x, year=2023) | |
# team_detail = ratings[0] | |
# return "Conference: " + team_detail.conference + ", ELO Rating: " + str(team_detail.elo) | |
def home_team_change(team, year): | |
games = games_api.get_games(team=team, year=year) | |
return games | |
def get_game_details(year, target): | |
games = games_api.get_games(team=target, year=year) | |
lines = betting_api.get_lines(team=target, year=year) | |
matchups = [] | |
for game in games: | |
the_game = dict( | |
id=game.id, | |
year=game.season, | |
week=game.week, | |
neutral_site=game.neutral_site, | |
home_team=game.home_team, | |
home_conference=game.home_conference, | |
home_points=game.home_points, | |
home_elo=game.home_pregame_elo, | |
away_team=game.away_team, | |
away_conference=game.away_conference, | |
away_points=game.away_points, | |
away_elo=game.away_pregame_elo, | |
) | |
game_lines = [l for l in lines if l.id == the_game['id']] | |
if len(game_lines) > 0: | |
if len(game_lines[0].lines) > 0: | |
game_line = game_lines[0].lines[0] | |
the_game['spread'] = float(game_line.spread) | |
the_game['margin'] = the_game['away_points'] - the_game['home_points'] | |
matchups.append(the_game) | |
return matchups | |
def lookup_teams(teams_api): | |
team_names = [] | |
teams = teams_api.get_fbs_teams() | |
for team in teams: | |
team_names.append(team.school) | |
return team_names | |
def update_target(x): | |
print(x) | |
teams = lookup_teams(teams_api) | |
with gr.Blocks() as app: | |
with gr.Row(): | |
with gr.Column(scale=1): | |
yearDd = gr.Dropdown( | |
[2023, 2022, 2021, 2020, 2019, 2018, 2017], label="Year" | |
) | |
with gr.Row(): | |
with gr.Column(scale=1): | |
ddTeams1 = gr.Dropdown(choices=teams, label="Target Team") | |
with gr.Row(): | |
submit = gr.Button("Predict") | |
with gr.Row(): | |
data_table = gr.Dataframe( | |
headers=["Home Team", "Away Team", "Home Points", "Away Points", "Consensus Spread", "Margin", "Predicted Spread"], | |
datatype=["str", "str", "number", "number", "number", "number", "number"], | |
row_count=1, | |
col_count=(7, "dynamic") | |
) | |
submit.click( | |
predict, inputs=[ddTeams1, yearDd], outputs=[data_table] | |
) | |
app.launch() | |
# import gradio as gr | |
# languages = ['spanish', 'english'] | |
# homeworks = {'spanish': ['hola', 'bien', 'gracias'], 'english': ['hello', 'good', 'thank you']} | |
# def rs_change(rs): | |
# return gr.update(choices=homeworks[rs], value=None) | |
# with gr.Blocks() as app: | |
# rs = gr.Dropdown(choices=languages, value='english') | |
# rs_hw = gr.Dropdown(choices=homeworks['english'], interactive=True) | |
# rs.change(fn=rs_change, inputs=[rs], outputs=[rs_hw]) | |
# app.launch() | |