Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -27,6 +27,7 @@ import joblib
|
|
| 27 |
in_zone_model = joblib.load('joblib_model/in_zone_model_knn_20240410.joblib')
|
| 28 |
px_model = joblib.load('joblib_model/linear_reg_model_x.joblib')
|
| 29 |
pz_model = joblib.load('joblib_model/linear_reg_model_z.joblib')
|
|
|
|
| 30 |
|
| 31 |
def percentile(n):
|
| 32 |
def percentile_(x):
|
|
@@ -301,6 +302,9 @@ exit_velo_df_codes_summ = exit_velo_df_codes.groupby(['batter_id','batter_name',
|
|
| 301 |
tb = ('tb','sum'),
|
| 302 |
woba = ('woba','sum'),
|
| 303 |
woba_codes = ('woba_codes','sum'),
|
|
|
|
|
|
|
|
|
|
| 304 |
hard_hit = ('hard_hit','sum'),
|
| 305 |
barrel = ('barrel','sum'),
|
| 306 |
sweet_spot = ('sweet_spot','sum'),
|
|
@@ -357,9 +361,13 @@ exit_velo_df_codes_summ['whiff_rate'] = [exit_velo_df_codes_summ.whiffs[x]/exit_
|
|
| 357 |
|
| 358 |
exit_velo_df_codes_summ['swstr_rate'] = [exit_velo_df_codes_summ.whiffs[x]/exit_velo_df_codes_summ.pitches[x] if exit_velo_df_codes_summ.pitches[x] != 0 else np.nan for x in range(len(exit_velo_df_codes_summ))]
|
| 359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 360 |
exit_velo_df_codes_summ = exit_velo_df_codes_summ.dropna(subset=['bip'])
|
| 361 |
|
| 362 |
-
woba_list = ['woba']
|
| 363 |
pa_list = ['k','bb','bb_minus_k']
|
| 364 |
balls_in_play_list = ['hard_hit','launch_speed','launch_speed_90','launch_angle','barrel','sweet_spot']
|
| 365 |
pitches_list = ['zone_percent','swing_percent','sw_str','csw']
|
|
@@ -375,6 +383,7 @@ plot_dict = {
|
|
| 375 |
'bb_minus_k':{'x_axis':'Plate Appearances','y_axis':'BB-K%','title':'BB-K%','x_value':'bb_minus_k','x_range':[-0.3,-0.2,-0.1,0,0.1,0.2],'percent':True,'percentile_label':'bb_minus_k_percent','flip_p':False,'percentile':False,'avg_adjust':False},
|
| 376 |
'csw':{'x_axis':'Pitches','y_axis':'CSW%','title':'CSW%','x_value':'csw','x_range':[.2,.25,.3,.35,.4],'percent':True,'percentile_label':'csw_percent','flip_p':True,'percentile':False,'avg_adjust':False},
|
| 377 |
'woba':{'x_axis':'wOBA PA','y_axis':'wOBA','title':'wOBA','x_value':'woba','x_range':[.20,.30,.40,.50],'percent':False,'percentile_label':'woba_percent','flip_p':False,'percentile':False,'avg_adjust':True},
|
|
|
|
| 378 |
'launch_speed':{'x_axis':'Balls In Play','y_axis':'Exit Velocity','title':'Exit Velocity','x_value':'launch_speed','x_range':[85,90,95,100],'percent':False,'percentile_label':'launch_speed','flip_p':False,'percentile':False,'avg_adjust':False},
|
| 379 |
'launch_speed_90':{'x_axis':'Balls In Play','y_axis':'90th Percentile Exit Velocity','title':'90th Percentile Exit Velocity','x_value':'launch_speed','x_range':[95,100,105,110,115],'percent':False,'percentile_label':'launch_speed_90','flip_p':False,'percentile':True,'avg_adjust':False},
|
| 380 |
'hard_hit':{'x_axis':'Balls In Play','y_axis':'HardHit%','title':'HardHit%','x_value':'hard_hit','x_range':[0.2,0.3,0.4,0.5,0.6,0.7],'percent':True,'percentile_label':'hard_hit_percent','flip_p':False,'percentile':False,'avg_adjust':False},
|
|
@@ -413,6 +422,7 @@ plot_dict_small = {
|
|
| 413 |
'bb_minus_k':'BB-K%',
|
| 414 |
'csw':'CSW%',
|
| 415 |
'woba':'wOBA',
|
|
|
|
| 416 |
'launch_speed':'Exit Velocity',
|
| 417 |
'launch_speed_90':'90th Percentile Exit Velocity',
|
| 418 |
'hard_hit':'HardHit%',
|
|
|
|
| 27 |
in_zone_model = joblib.load('joblib_model/in_zone_model_knn_20240410.joblib')
|
| 28 |
px_model = joblib.load('joblib_model/linear_reg_model_x.joblib')
|
| 29 |
pz_model = joblib.load('joblib_model/linear_reg_model_z.joblib')
|
| 30 |
+
xwoba_model = joblib.load('joblib_model/xwoba_model.joblib')
|
| 31 |
|
| 32 |
def percentile(n):
|
| 33 |
def percentile_(x):
|
|
|
|
| 302 |
tb = ('tb','sum'),
|
| 303 |
woba = ('woba','sum'),
|
| 304 |
woba_codes = ('woba_codes','sum'),
|
| 305 |
+
xwoba = ('xwoba','sum'),
|
| 306 |
+
xwoba_contact = ('xwoba_contact','sum'),
|
| 307 |
+
woba_codes = ('woba_codes','sum'),
|
| 308 |
hard_hit = ('hard_hit','sum'),
|
| 309 |
barrel = ('barrel','sum'),
|
| 310 |
sweet_spot = ('sweet_spot','sum'),
|
|
|
|
| 361 |
|
| 362 |
exit_velo_df_codes_summ['swstr_rate'] = [exit_velo_df_codes_summ.whiffs[x]/exit_velo_df_codes_summ.pitches[x] if exit_velo_df_codes_summ.pitches[x] != 0 else np.nan for x in range(len(exit_velo_df_codes_summ))]
|
| 363 |
|
| 364 |
+
df_summ['xwoba_percent'] = [df_summ.xwoba[x]/df_summ.woba_codes[x] if df_summ.woba_codes[x] != 0 else np.nan for x in range(len(df_summ))]
|
| 365 |
+
df_summ['xwoba_percent_contact'] = [df_summ.xwoba_contact[x]/df_summ.bip[x] if df_summ.bip[x] != 0 else np.nan for x in range(len(df_summ))]
|
| 366 |
+
|
| 367 |
+
|
| 368 |
exit_velo_df_codes_summ = exit_velo_df_codes_summ.dropna(subset=['bip'])
|
| 369 |
|
| 370 |
+
woba_list = ['woba','xwoba']
|
| 371 |
pa_list = ['k','bb','bb_minus_k']
|
| 372 |
balls_in_play_list = ['hard_hit','launch_speed','launch_speed_90','launch_angle','barrel','sweet_spot']
|
| 373 |
pitches_list = ['zone_percent','swing_percent','sw_str','csw']
|
|
|
|
| 383 |
'bb_minus_k':{'x_axis':'Plate Appearances','y_axis':'BB-K%','title':'BB-K%','x_value':'bb_minus_k','x_range':[-0.3,-0.2,-0.1,0,0.1,0.2],'percent':True,'percentile_label':'bb_minus_k_percent','flip_p':False,'percentile':False,'avg_adjust':False},
|
| 384 |
'csw':{'x_axis':'Pitches','y_axis':'CSW%','title':'CSW%','x_value':'csw','x_range':[.2,.25,.3,.35,.4],'percent':True,'percentile_label':'csw_percent','flip_p':True,'percentile':False,'avg_adjust':False},
|
| 385 |
'woba':{'x_axis':'wOBA PA','y_axis':'wOBA','title':'wOBA','x_value':'woba','x_range':[.20,.30,.40,.50],'percent':False,'percentile_label':'woba_percent','flip_p':False,'percentile':False,'avg_adjust':True},
|
| 386 |
+
'xwoba':{'x_axis':'xwOBA PA','y_axis':'xwOBA','title':'xwOBA','x_value':'xwoba','x_range':[.20,.30,.40,.50],'percent':False,'percentile_label':'xwoba_percent','flip_p':False,'percentile':False,'avg_adjust':True},
|
| 387 |
'launch_speed':{'x_axis':'Balls In Play','y_axis':'Exit Velocity','title':'Exit Velocity','x_value':'launch_speed','x_range':[85,90,95,100],'percent':False,'percentile_label':'launch_speed','flip_p':False,'percentile':False,'avg_adjust':False},
|
| 388 |
'launch_speed_90':{'x_axis':'Balls In Play','y_axis':'90th Percentile Exit Velocity','title':'90th Percentile Exit Velocity','x_value':'launch_speed','x_range':[95,100,105,110,115],'percent':False,'percentile_label':'launch_speed_90','flip_p':False,'percentile':True,'avg_adjust':False},
|
| 389 |
'hard_hit':{'x_axis':'Balls In Play','y_axis':'HardHit%','title':'HardHit%','x_value':'hard_hit','x_range':[0.2,0.3,0.4,0.5,0.6,0.7],'percent':True,'percentile_label':'hard_hit_percent','flip_p':False,'percentile':False,'avg_adjust':False},
|
|
|
|
| 422 |
'bb_minus_k':'BB-K%',
|
| 423 |
'csw':'CSW%',
|
| 424 |
'woba':'wOBA',
|
| 425 |
+
'xwoba':'xwOBA',
|
| 426 |
'launch_speed':'Exit Velocity',
|
| 427 |
'launch_speed_90':'90th Percentile Exit Velocity',
|
| 428 |
'hard_hit':'HardHit%',
|