Nevidu commited on
Commit
7488952
·
verified ·
1 Parent(s): 81d10c4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -15
app.py CHANGED
@@ -3,15 +3,16 @@ import numpy as np
3
  import pandas as pd
4
  import pickle
5
  import xgboost as xgb
 
6
 
7
  def predict(team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits):
8
  data = [team, opp_team, inning, venue, hits, opp_hits, errors, runs, opp_runs, lob]
9
  df = pd.DataFrame([data], columns=["Team_Name", "Opposition_Team", "Inning", "Home/Away", "Hits", "Opp_Hits", "Errors", "Runs", "Opp_Runs", "LOB"])
10
 
11
  xgb_model = xgb.XGBRegressor()
12
- xgb_model.load_model('xgbr3_model3_exp8.json')
13
 
14
- with open('label_encoder_teams_exp8.pkl', 'rb') as f:
15
  label_encoder = pickle.load(f)
16
 
17
  df['Team_Name'] = label_encoder.transform(df['Team_Name'])
@@ -20,6 +21,30 @@ def predict(team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, op
20
  home_away_status = {'Home': 0, 'Away': 1}
21
  df['Home/Away'] = df['Home/Away'].map(home_away_status)
22
  score = xgb_model.predict(df)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  return np.round(score[0],1)
24
 
25
  team_names = ["Arizona Diamondbacks",
@@ -71,17 +96,30 @@ with gr.Blocks() as demo:
71
  # </center>
72
  # """)
73
  with gr.Row():
74
- team = gr.Dropdown(choices = team_names, max_choices = 1, label="Team", scale=1)
 
 
 
 
 
75
 
76
  with gr.Column():
77
- inning = gr.Number(None, label="Inning", minimum = 1, maximum = 8, scale=1)
 
78
 
79
  with gr.Row():
80
  with gr.Column():
81
- venue = gr.Dropdown(choices = ["Home", "Away"], max_choices = 1, label="Home/Away Status", scale=1)
82
-
 
 
 
 
83
  with gr.Column():
84
  hits = gr.Number(None, minimum=0, label="Hits - (H)", scale=1)
 
 
 
85
 
86
  # summarize_btn = gr.Button(value="Summarize Text", size = 'sm')
87
 
@@ -90,30 +128,46 @@ with gr.Blocks() as demo:
90
  errors = gr.Number(None, minimum=0, label="Errors - (E)", scale=2)
91
 
92
  with gr.Column():
93
- lob = gr.Number(None, minimum=0, label="Left on Base - (LOB)", scale=1)
94
 
95
  # runs = gr.Number(None, minimum=0, label="Runs - (R)", scale=1)
96
 
97
  with gr.Row():
98
  with gr.Column():
99
- runs = gr.Number(None, minimum=0, label="Runs - (R)", scale=1)
100
-
101
  with gr.Column():
102
- opp_team = gr.Dropdown(choices = team_names, max_choices = 1, label="Opposition Team", scale=1)
103
 
104
  with gr.Row():
105
  with gr.Column():
106
- opp_runs = gr.Number(None, minimum=0, label="Opposition Runs - (R)", scale=1)
107
-
108
  with gr.Column():
109
- opp_hits = gr.Number(None, minimum=0, label="Opposition Hits - (H)", scale=1)
110
 
111
  with gr.Row():
112
  predict_btn = gr.Button(value="Predict", size = 'sm')
113
 
114
  with gr.Row():
115
- final_score = gr.Textbox(label="Predicted Score", scale=1)
 
 
 
 
 
 
 
 
 
 
 
 
116
  # patent_doc.upload(document_to_text, inputs = [patent_doc, slider, select_model], outputs=summary_doc)
117
- predict_btn.click(predict, inputs=[team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits], outputs=final_score)
 
 
 
 
118
 
119
  demo.launch(inline=False)
 
3
  import pandas as pd
4
  import pickle
5
  import xgboost as xgb
6
+ from catboost import CatBoostRegressor
7
 
8
  def predict(team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits):
9
  data = [team, opp_team, inning, venue, hits, opp_hits, errors, runs, opp_runs, lob]
10
  df = pd.DataFrame([data], columns=["Team_Name", "Opposition_Team", "Inning", "Home/Away", "Hits", "Opp_Hits", "Errors", "Runs", "Opp_Runs", "LOB"])
11
 
12
  xgb_model = xgb.XGBRegressor()
13
+ xgb_model.load_model('alpha1_xgbr1.json')
14
 
15
+ with open('label_encoder_teams_alpha1_xgbr1.pkl', 'rb') as f:
16
  label_encoder = pickle.load(f)
17
 
18
  df['Team_Name'] = label_encoder.transform(df['Team_Name'])
 
21
  home_away_status = {'Home': 0, 'Away': 1}
22
  df['Home/Away'] = df['Home/Away'].map(home_away_status)
23
  score = xgb_model.predict(df)
24
+ if score[0] < 0:
25
+ score = np.clip(score[0], a_min=0, a_max=None)
26
+ return np.round(score,1)
27
+ return np.round(score[0],1)
28
+
29
+ def predict_2(team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits):
30
+ data = [team, opp_team, inning, venue, hits, opp_hits, errors, runs, opp_runs, lob]
31
+ df = pd.DataFrame([data], columns=["Team_Name", "Opposition_Team", "Inning", "Home/Away", "Hits", "Opp_Hits", "Errors", "Runs", "Opp_Runs", "LOB"])
32
+
33
+ cat_model = CatBoostRegressor()
34
+ cat_model.load_model('CATBR1_model1_exp1.json')
35
+
36
+ with open('label_encoder_teams_catbr1_exp1.pkl', 'rb') as f:
37
+ label_encoder = pickle.load(f)
38
+
39
+ df['Team_Name'] = label_encoder.transform(df['Team_Name'])
40
+ df['Opposition_Team'] = label_encoder.transform(df['Opposition_Team'])
41
+
42
+ home_away_status = {'Home': 0, 'Away': 1}
43
+ df['Home/Away'] = df['Home/Away'].map(home_away_status)
44
+ score = cat_model.predict(df)
45
+ if score[0] < 0:
46
+ score = np.clip(score[0], a_min=0, a_max=None)
47
+ return np.round(score,1)
48
  return np.round(score[0],1)
49
 
50
  team_names = ["Arizona Diamondbacks",
 
96
  # </center>
97
  # """)
98
  with gr.Row():
99
+ inning = gr.Number(None, label="Inning", minimum = 1, maximum = 8, scale=1)
100
+
101
+ with gr.Row():
102
+ with gr.Column():
103
+ venue = gr.Dropdown(choices = ["Home", "Away"], value="Away", max_choices = 1, label="Home/Away Status", scale=1)
104
+
105
 
106
  with gr.Column():
107
+ opp_venue = gr.Dropdown(choices = ["Home", "Away"], value="Home", max_choices = 1, label="Opposition Home/Away Status", scale=1)
108
+
109
 
110
  with gr.Row():
111
  with gr.Column():
112
+ team = gr.Dropdown(choices = team_names, max_choices = 1, label="Team", scale=1)
113
+
114
+ with gr.Column():
115
+ opp_team = gr.Dropdown(choices = team_names, max_choices = 1, label="Opposition Team", scale=1)
116
+
117
+ with gr.Row():
118
  with gr.Column():
119
  hits = gr.Number(None, minimum=0, label="Hits - (H)", scale=1)
120
+
121
+ with gr.Column():
122
+ opp_hits = gr.Number(None, minimum=0, label="Opposition Hits - (H)", scale=1)
123
 
124
  # summarize_btn = gr.Button(value="Summarize Text", size = 'sm')
125
 
 
128
  errors = gr.Number(None, minimum=0, label="Errors - (E)", scale=2)
129
 
130
  with gr.Column():
131
+ opp_errors = gr.Number(None, minimum=0, label="Opposition Errors - (E)", scale=2)
132
 
133
  # runs = gr.Number(None, minimum=0, label="Runs - (R)", scale=1)
134
 
135
  with gr.Row():
136
  with gr.Column():
137
+ lob = gr.Number(None, minimum=0, label="Left on Base - (LOB)", scale=1)
138
+
139
  with gr.Column():
140
+ opp_lob = gr.Number(None, minimum=0, label="Opposition Left on Base - (LOB)", scale=1)
141
 
142
  with gr.Row():
143
  with gr.Column():
144
+ runs = gr.Number(None, minimum=0, label="Runs - (R)", scale=1)
145
+
146
  with gr.Column():
147
+ opp_runs = gr.Number(None, minimum=0, label="Opposition Runs - (R)", scale=1)
148
 
149
  with gr.Row():
150
  predict_btn = gr.Button(value="Predict", size = 'sm')
151
 
152
  with gr.Row():
153
+ with gr.Column():
154
+ final_score_away1 = gr.Textbox(label="Predicted Score Model XGB", scale=1)
155
+
156
+ with gr.Column():
157
+ final_score_home1 = gr.Textbox(label="Opposition Predicted Score Model XGB", scale=1)
158
+
159
+ with gr.Row():
160
+ with gr.Column():
161
+ final_score_away2 = gr.Textbox(label="Predicted Score Model CATB", scale=1)
162
+
163
+ with gr.Column():
164
+ final_score_home2 = gr.Textbox(label="Opposition Predicted Score Model CATB", scale=1)
165
+
166
  # patent_doc.upload(document_to_text, inputs = [patent_doc, slider, select_model], outputs=summary_doc)
167
+ predict_btn.click(predict, inputs=[team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits], outputs=final_score_away1)
168
+ 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)
169
+
170
+ predict_btn.click(predict_2, inputs=[team, inning, venue, hits, errors, lob, runs, opp_team, opp_runs, opp_hits], outputs=final_score_away2)
171
+ 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)
172
 
173
  demo.launch(inline=False)