Spaces:
Sleeping
Sleeping
import gradio as gr | |
from joblib import load | |
import pandas as pd | |
path='./huggingface_final_df_deployment.csv' | |
df=pd.read_csv(path) | |
df['DATE']=pd.to_datetime(df['DATE']) | |
y_values = ['L', 'W'] | |
y=pd.Series(y_values) | |
y=y.astype('category') | |
model=load('./model_LogisticRegression.joblib') | |
#aquí indicamos cuál es el valor de las clases | |
label_encoding=load('./label_classes.joblib') # aquí traemos el orden de clasificación de las categoría | |
idx_labels=label_encoding.transform(y.cat.categories) # reordeno mis categorías con esos índices | |
class_names=y.cat.categories[idx_labels] # aquí damos los valores de las categorías en el orden que teníamos guardados | |
def run_my_model(Home_Team, Away_Team): #aquí ponemos que es solo una entrada pero es UNA TABLA la entrada | |
#Paso1: Función de HomeTeam | |
def home_team_recent_record(Home_Team): | |
filtered_df=df[df['TEAM_ABBREVIATION']==Home_Team] | |
most_recent_record=filtered_df[filtered_df['DATE']==filtered_df['DATE'].max()] | |
return most_recent_record | |
#Paso2: Función de AwayTeam | |
def away_team_recent_record(Away_Team): | |
filtered_df=df[df['TEAM_ABBREVIATION']==Away_Team] | |
most_recent_record=filtered_df[filtered_df['DATE']==filtered_df['DATE'].max()] | |
return most_recent_record | |
#Paso3: Dataframe con últimos records de HomeTeam | |
df_home_team_latest_record=home_team_recent_record(Home_Team) | |
df_home_team_latest_record=df_home_team_latest_record.reset_index() | |
#Paso4: Dataframe con últimos records de AwayTeam | |
df_away_team_latest_record=away_team_recent_record(Away_Team) | |
df_away_team_latest_record=df_away_team_latest_record.reset_index() | |
#Paso5: Cálculos | |
HOME_AWAY="HOME" | |
WINS_DIFFERENTIAL=df_home_team_latest_record.loc[0,"W"]-df_away_team_latest_record.loc[0,"W"] | |
WINNING_PERCENTAGE_DIFFERENTIAL=(df_home_team_latest_record.loc[0,'W_PCT']-df_away_team_latest_record.loc[0,'W_PCT'])*100 | |
AWAY_WINS_DIFFERENTIAL=df_home_team_latest_record.loc[0,'AWAY_WINS']-df_away_team_latest_record.loc[0,'AWAY_WINS'] | |
WINS_IN_LAST_10_GAMES=df_home_team_latest_record.loc[0,'LAST_10_GAME_WINS'] | |
WINS_IN_LAST_5_GAMES=df_home_team_latest_record.loc[0,'LAST_5_GAME_WINS'] | |
BACK_TO_BACK="NO_B2B" | |
#Paso6: Convierto a un input dataframe | |
data = { | |
'HOME/AWAY': [HOME_AWAY], | |
'WINS_DIFFERENTIAL': [WINS_DIFFERENTIAL], | |
'WINNING PERCENTAGE DIFFERENTIAL': [WINNING_PERCENTAGE_DIFFERENTIAL], | |
'AWAY WINS DIFFERENTIAL': [AWAY_WINS_DIFFERENTIAL], | |
'WINS IN LAST 10 GAMES': [WINS_IN_LAST_10_GAMES], | |
'WINS IN LAST 5 GAMES': [WINS_IN_LAST_5_GAMES], | |
'BACK-TO-BACK': [BACK_TO_BACK]} | |
input_df = pd.DataFrame(data) | |
#Paso7: Creación del If | |
if class_names[model.predict(input_df)][0]=="W": | |
Winning_Team=Home_Team | |
Winning_Proba=model.predict_proba(input_df)[0][1] | |
else: | |
Winning_Team=Away_Team | |
Winning_Proba=model.predict_proba(input_df)[0][0] | |
return f"El equipo con mayor probabilidad de ganar es: {Winning_Team} con una probabilidad de {Winning_Proba * 100:.2f}%" | |
gui= gr.Interface( | |
fn=run_my_model, | |
inputs=[gr.Dropdown(['ATL', 'BKN', 'BOS', 'CHA', 'CHI', 'CLE', 'DAL', 'DEN', 'DET', 'GSW', 'HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL', 'MIN', 'NOP', 'NYK', 'OKC', 'ORL', 'PHI', 'PHX', 'POR', 'SAC', 'SAS', 'TOR', 'UTA', 'WAS'],label="LOCAL"),gr.Dropdown(['ATL', 'BKN', 'BOS', 'CHA', 'CHI', 'CLE', 'DAL', 'DEN', 'DET', 'GSW', 'HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL', 'MIN', 'NOP', 'NYK', 'OKC', 'ORL', 'PHI', 'PHX', 'POR', 'SAC', 'SAS', 'TOR', 'UTA', 'WAS'],label="VISITANTE")], | |
outputs="text", | |
live=False, | |
title='Pronósticos NBA Temporada Regular.', | |
description='IMPORTANTE: La información de esta herramienta de inteligencia artificial, incluyendo las predicciones de resultados de partidos, es solo para fines informativos. El rendimiento pasado no garantiza resultados futuros. Las predicciones son solo para la temporada regular de la NBA.' | |
) | |
gui.launch() |