import gradio as gr import numpy as np import pandas as pd import pickle import xgboost as xgb from catboost import CatBoostRegressor def predict(team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits): data = [team, opp_team, inning, venue, hits, opp_hits, errors, runs, opp_runs, lob] df_main = pd.read_csv("Score_prediction_dataset_11th_July.csv") df_main = df_main.drop(columns=['Final_Score', 'Opp_LOB']) df_main = pd.get_dummies(df_main, columns=['Team_Name', 'Opposition_Team']) df = pd.DataFrame([data], columns=["Team_Name", "Opposition_Team", "Inning", "Home/Away", "Hits", "Opp_Hits", "Errors", "Runs", "Opp_Runs", "LOB"]) df = pd.get_dummies(df, columns=['Team_Name', 'Opposition_Team']) df = df.reindex(columns=df_main.columns, fill_value=0) # print(df.columns) # print(len(df.columns)) xgb_model = xgb.XGBRegressor() xgb_model.load_model('xgbr1_exp10_model.json') with open('pca_model7.pkl', 'rb') as f: pca = pickle.load(f) # with open('label_encoder_teams_xgbr1_exp3.pkl', 'rb') as f: # label_encoder = pickle.load(f) home_away_status = {'Home': 0, 'Away': 1} df['Home/Away'] = df['Home/Away'].map(home_away_status) df = df.astype(int) df = pca.transform(df) score = xgb_model.predict(df) if score[0] < 0: score = np.clip(score[0], a_min=0, a_max=None) return np.round(score,1) if score[0] < runs: score = runs return score return np.round(score[0],1) def predict_2(team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits): data = [team, opp_team, inning, venue, hits, opp_hits, errors, runs, opp_runs, lob] df_main = pd.read_csv("Score_prediction_dataset_11th_July.csv") df_main = df_main.drop(columns=['Final_Score', 'Opp_LOB']) df_main = pd.get_dummies(df_main, columns=['Team_Name', 'Opposition_Team']) df = pd.DataFrame([data], columns=["Team_Name", "Opposition_Team", "Inning", "Home/Away", "Hits", "Opp_Hits", "Errors", "Runs", "Opp_Runs", "LOB"]) df = pd.get_dummies(df, columns=['Team_Name', 'Opposition_Team']) df = df.reindex(columns=df_main.columns, fill_value=0) cat_model = CatBoostRegressor() cat_model.load_model('catbr1_exp11_model.json') # with open('label_encoder_teams_catbr1_exp1.pkl', 'rb') as f: # label_encoder = pickle.load(f) # df['Team_Name'] = label_encoder.transform(df['Team_Name']) # df['Opposition_Team'] = label_encoder.transform(df['Opposition_Team']) home_away_status = {'Home': 0, 'Away': 1} df['Home/Away'] = df['Home/Away'].map(home_away_status) df = df.astype(int) # print(df) with open('pca_model7.pkl', 'rb') as f: pca = pickle.load(f) df = pca.transform(df) score = cat_model.predict(df) if score[0] < 0: score = np.clip(score[0], a_min=0, a_max=None) return np.round(score,1) if score[0] < runs: score = runs return score return np.round(score[0],1) team_names = ["Arizona Diamondbacks", "Atlanta Braves", "Baltimore Orioles", "Boston Red Sox", "Chicago Cubs", "Chicago White Sox", "Cincinnati Reds", "Cleveland Guardians", "Colorado Rockies", "Detroit Tigers", "Houston Astros", "Kansas City Royals", "Los Angeles Angels", "Los Angeles Dodgers", "Miami Marlins", "Milwaukee Brewers", "Minnesota Twins", "New York Mets", "New York Yankees", "Oakland Athletics", "Philadelphia Phillies", "Pittsburgh Pirates", "San Diego Padres", "San Francisco Giants", "Seattle Mariners", "St. Louis Cardinals", "Tampa Bay Rays", "Texas Rangers", "Toronto Blue Jays", "Washington Nationals"] with gr.Blocks() as demo: # gr.Image("../Documentation/Context Diagram.png", scale=2) # gr(title="Your Interface Title") gr.Markdown("""
MLB Score Predictor
""") # gr.Markdown(""" #
# # Admin Dashboard # #
# """) with gr.Row(): inning = gr.Number(None, label="Inning", minimum = 1, maximum = 8, scale=1) with gr.Row(): with gr.Column(): venue = gr.Dropdown(choices = ["Home", "Away"], value="Away", max_choices = 1, label="Home/Away Status", scale=1) with gr.Column(): opp_venue = gr.Dropdown(choices = ["Home", "Away"], value="Home", max_choices = 1, label="Opposition Home/Away Status", scale=1) with gr.Row(): with gr.Column(): team = gr.Dropdown(choices = team_names, max_choices = 1, label="Team", scale=1) with gr.Column(): opp_team = gr.Dropdown(choices = team_names, max_choices = 1, label="Opposition Team", scale=1) with gr.Row(): with gr.Column(): hits = gr.Number(None, minimum=0, label="Hits - (H)", scale=1) with gr.Column(): opp_hits = gr.Number(None, minimum=0, label="Opposition Hits - (H)", scale=1) # summarize_btn = gr.Button(value="Summarize Text", size = 'sm') with gr.Row(): with gr.Column(): errors = gr.Number(None, minimum=0, label="Errors - (E)", scale=2) with gr.Column(): opp_errors = gr.Number(None, minimum=0, label="Opposition Errors - (E)", scale=2) # runs = gr.Number(None, minimum=0, label="Runs - (R)", scale=1) with gr.Row(): with gr.Column(): lob = gr.Number(None, minimum=0, label="Left on Base - (LOB)", scale=1) with gr.Column(): opp_lob = gr.Number(None, minimum=0, label="Opposition Left on Base - (LOB)", scale=1) with gr.Row(): with gr.Column(): runs = gr.Number(None, minimum=0, label="Runs - (R)", scale=1) with gr.Column(): opp_runs = gr.Number(None, minimum=0, label="Opposition Runs - (R)", scale=1) with gr.Row(): predict_btn = gr.Button(value="Predict", size = 'sm') with gr.Row(): with gr.Column(): final_score_away1 = gr.Textbox(label="Predicted Score Model XGB", scale=1) with gr.Column(): final_score_home1 = gr.Textbox(label="Opposition Predicted Score Model XGB", scale=1) with gr.Row(): with gr.Column(): final_score_away2 = gr.Textbox(label="Predicted Score Model CATB", scale=1) with gr.Column(): final_score_home2 = gr.Textbox(label="Opposition Predicted Score Model CATB", scale=1) # patent_doc.upload(document_to_text, inputs = [patent_doc, slider, select_model], outputs=summary_doc) predict_btn.click(predict, inputs=[team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits], outputs=final_score_away1) predict_btn.click(predict, inputs=[opp_team, inning, opp_venue, opp_hits, opp_errors, opp_lob, opp_runs, team, runs, hits], outputs=final_score_home1) predict_btn.click(predict_2, inputs=[team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits], outputs=final_score_away2) predict_btn.click(predict_2, inputs=[opp_team, inning, opp_venue, opp_hits, opp_errors, opp_lob, opp_runs, team, runs, hits], outputs=final_score_home2) demo.launch(inline=False)