NBA_Preccion / app.py
GaboDataScientist's picture
Update app.py
005afbd verified
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()