1. Introduction
  2. Load Data
  3. Build Pipelines
  4. Test Results
  5. Analyze 2019 Data

1. Introduction

In this article, we will use various preprocessors and machine learning algorithms from scikit-learn, along with the scikit-learn wrapper for XGBoost. We determine which preprocessors to use based on what we believe will work well with this problem, we will show in subsequent articles how to use machine learning algorithms to do this automatically. As this is a small data set, we can use grid search of hyperparameters to refine the models.

2. Load Data

See Plate Discipline for Hitters – Data Exploration for a description of the data as well as code for converting the raw csv files into Pandas DataFrames. Data can be downloaded from this link. As the 2019 regular season is over, the full 2019 data set is included.

First, we read in the DataFrames, shuffle them, divide into three parts (train1, train2, test), and save as Numpy arrays.

import pandas as pd
import numpy as np
import os

from sklearn.utils import shuffle

def create_save_data(): 
    code_dir = 'YOUR PATH'
    data_dir = code_dir + 'YOUR PATH'
    
    # read data       
    list_df = []
    for year in np.arange(2015,2019,1):
        dftemp = pd.read_pickle(data_dir + 'plate_discipline_hitters_' + str(year) + '.pkl')
        list_df.append(dftemp)
        
    # merge, shuffle, save
    df_calibration = pd.concat(list_df)
    df_calibration = shuffle(df_calibration)
    df_calibration.to_pickle(data_dir + 'df_calibration.pkl')

    # split into 3 parts, save as arrays
    header_attr = ['O-Swing%', 'Z-Swing%', 'Swing%', 'O-Contact%', 'Z-Contact%',
                   'Contact%', 'Zone%', 'F-Strike%', 'SwStr%']
    
    # train 1
    num_train1 = 700
    x_train1 = dfcalib[header_attr].values[:num_train1]
    np.save(data_dir + 'x_train1.npy', x_train1)
    
    y_train1_bb = dfcalib['BB%'].values[:num_train1]
    np.save(data_dir + 'y_train1_bb.npy', y_train1_bb)
    
    y_train1_k = dfcalib['K%'].values[:num_train1]
    np.save(data_dir + 'y_train1_k.npy', y_train1_k)
    
    
    # train 2
    num_train2 = 500
    x_train2 = dfcalib[header_attr].values[num_train1:num_train1 + num_train2]
    np.save(data_dir + 'x_train2.npy', x_train2)
    
    y_train2_bb = dfcalib['BB%'].values[num_train1:num_train1 + num_train2]
    np.save(data_dir + 'y_train2_bb.npy', y_train2_bb)
    
    y_train2_k = dfcalib['K%'].values[num_train1:num_train1 + num_train2]
    np.save(data_dir + 'y_train2_k.npy', y_train2_k)
    
    
    # test
    x_test = dfcalib[header_attr].values[num_train1 + num_train2:]
    np.save(data_dir + 'x_test.npy', x_test)
    
    y_test_bb = dfcalib['BB%'].values[num_train1 + num_train2:]
    np.save(data_dir + 'y_test_bb.npy', y_test_bb)
    
    y_test_k = dfcalib['K%'].values[num_train1 + num_train2:]
    np.save(data_dir + 'y_test_k.npy', y_test_k)    

To load the data and feed it into functions where we will construct machine learning pipelines, we have:

import numpy as np
import os
from pathlib import Path

if __name__ == '__main__':
    base_dir = YOUR PATH
    data_direct = base_dir + 'data/'
    
    for target_type in ['BB','K']:
        tt = target_type.lower()
        
        results_direct = base_dir + YOUR PATH + tt + '/'
        if not Path(results_direct).is_dir():
            os.mkdir(results_direct)
            
        x_train1 = np.load(data_direct + 'x_train1.npy')
        y_train1 = np.load(data_direct + 'y_train1_' + tt + '.npy')
        
        x_train2 = np.load(data_direct + 'x_train2.npy')
        y_train2 = np.load(data_direct + 'y_train2_' + tt + '.npy')
        
        x_train = np.vstack(([x_train1, x_train2]))
        y_train = np.hstack(([y_train1, y_train2]))
        
        x_test = np.load(data_direct + 'x_test.npy')
        y_test = np.load(data_direct + 'y_test_' + tt + '.npy')
                 
        cvfolds = 5  # number of folds for cross validation
        errormetric = 'neg_mean_squared_error'
        numjobs = -1  # use all available cpus
        verbose = 0
                
        list_df_results = []
        list_df_production_predict = []
        
        result_df = random_forest(x_train, y_train,
                  x_test, y_test, x_production,
                  cvfolds, errormetric, numjobs, verbose,
                  data_direct, results_direct,'random_forest_' + tt + '.txt')
        list_df_results.append(result_df)

        # gather results
        df_results = pd.concat(list_df_results, axis=0)
        df_results.to_pickle(results_direct + 'df_results.pkl')
        df_results.to_csv(results_direct + 'df_results.csv')

Splitting the data into three parts was done to do stacking at a later time. For now, we combine train1 and train2. Later in this article we will use the unseen 2019 data.
Each specific combination of preprocessor and algorithm will have its own function as the random_forest function call above. The result is a DataFrame, with test errors, that is returned from the function. All are combined into a single DataFrame so that we can then compare them.

3. Build Pipelines

In this section, we show the full code for the pipeline construction and evaluation on test data for a specific pipeline. Then we show the relevant code snippet for all of the other pipelines used.

Standard Scaler, Polynomial Features, K-Neighbors

import pandas as pd
import joblib
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import KFold
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error  # ‘neg_mean_squared_error’
from sklearn.metrics import median_absolute_error  # ‘neg_median_absolute_error’

def knn_ss_pf2(xtrain, ytrain, xtest, ytest,
               cv_folds, error_metric, num_jobs, verbosity,
               results_dir, results_filename):
    model_name = results_filename[:-4]
    
    # scaling and feature transformation
    scaler = StandardScaler()   
    feature_transformer = PolynomialFeatures(degree=2, interaction_only=False)
    
    # ml algo
    algo = KNeighborsRegressor(n_jobs=num_jobs)
    
    # construct pipeline
    pipeline = Pipeline([('scaler', scaler),('feature_transformer',feature_transformer),
                         ('algo', algo)])

    # range of params for scalers, feature selectors, ml hyper params for use in grid search
    dict_param_grid = dict(algo__n_neighbors = np.arange(3,19,3),
                           algo__weights = ['uniform','distance'])
    
    # set up cross validation
    kfold = KFold(n_splits=cv_folds, shuffle=True, random_state=7)
    
    # grid search with cross validation
    ml_model = GridSearchCV(estimator=pipeline, param_grid=dict_param_grid, scoring=error_metric, 
                            cv=kfold, n_jobs=num_jobs, verbose=verbosity)
 
    # fit train data to model
    ml_model.fit(xtrain, ytrain)
    
    # save pipeline
    joblib.dump(ml_model.best_estimator_, results_dir + model_name + '.sav')
    
    # test data predictions and errors
    ytest_predict = ml_model.predict(xtest)   
    neg_mean_squared_error = mean_squared_error(ytest, ytest_predict)
    neg_median_absolute_error = median_absolute_error(ytest, ytest_predict)
    df_results = pd.DataFrame(data=[-ml_model.best_score_], index=[model_name],
                              columns=['cv score'])
    df_results['mean squared error'] = neg_mean_squared_error
    df_results['median absolute error'] = neg_median_absolute_error
    
    # print error metrics to results_filename
    stdout_default = sys.stdout
    sys.stdout = open(results_dir + results_filename,'w')    
    print('for',error_metric,'best cv score =',-ml_model.best_score_)
    print('\nbest parameters:',ml_model.best_params_)
    print('\nbest pipeline:',ml_model.best_estimator_)     
    print('\ntest metrics: mean_squared_error =', neg_mean_squared_error)
    print('\ntest metrics: median_absolute_error =',neg_median_absolute_error)    
    sys.stdout = stdout_default
       
    return df_results

XGBoost

algo = XGBRegressor(n_jobs=num_jobs, objective='reg:squarederror')
pipeline = Pipeline([('algo', algo)])
dict_param_grid = dict(algo__n_estimators = [100,150,200],
                           algo__learning_rate = [0.0001, 0.001, 0.01, 0.1, 0.5, 0.9],
                           algo__max_depth = [2,4,6,8,10,12],
                           algo__min_child_weight = [2,4,6,8,10,12],
                           algo__subsample = [0.25, 0.5, 0.75, 0.9],
                           algo__colsample_bylevel = [0.7, 0.85, 1.0])

Random Forest

algo = RandomForestRegressor(n_jobs=num_jobs)
pipeline = Pipeline([('algo', algo)])
dict_param_grid = dict(algo__n_estimators = [150,200,250],
                           algo__min_samples_split = [2,4,6,8,10,12],
                           algo__min_samples_leaf = [2,4,6,8,10,12],
                           algo__max_features = np.arange(0.05, 1.01, 0.2),
                           algo__bootstrap = [True, False])

Extra Trees

algo = ExtraTreesRegressor(n_jobs=num_jobs)
pipeline = Pipeline([('algo', algo)])
dict_param_grid = dict(algo__n_estimators = [50,100,150,200,250],
                           algo__min_samples_split = [2,4,6,8,10,12],
                           algo__min_samples_leaf = [2,4,6,8,10,12],
                           algo__max_features = np.arange(0.05, 1.01, 0.2),
                           algo__bootstrap = [True, False])

Standard Scaler, Support Vector Machine

scaler = StandardScaler()
algo = SVR(kernel = 'rbf', cache_size=1000)
pipeline = Pipeline([('scaler', scaler), ('algo', algo)])
dict_param_grid = dict(algo__gamma = [5.0e-5, 1.0e-2, 1.0, 1.0e3],
                           algo__C = [1.0e-3, 1.0e-1, 1.0, 100.0, 1.0e4])

Standard Scaler, K-Neighbors

scaler = StandardScaler()
algo = KNeighborsRegressor(n_jobs=num_jobs)
pipeline = Pipeline([('scaler', scaler), ('algo', algo)])
dict_param_grid = dict(algo__n_neighbors = np.arange(3,19,3),
                           algo__weights = ['uniform','distance'])

Polynomial Features, Standard Scaler, K-Neighbors

scaler = StandardScaler()
feature_transformer = PolynomialFeatures(degree=2, interaction_only=False)
algo = KNeighborsRegressor(n_jobs=num_jobs)
pipeline = Pipeline([('feature_transformer',feature_transformer),('scaler', scaler),
                         ('algo', algo)])
dict_param_grid = dict(algo__n_neighbors = np.arange(3,19,3),
                           algo__weights = ['uniform','distance'])

Decision tree based algorithms are fairly insensitive to features with different scales. Here, all features are of similar scale, being between 0 and 1, so no scaling was used. Polynomial features is a useful method of adding diversity to a data set with few features. For a degree of 2, each feature is multiplied by every feature, including itself, to generate new features.

Click on the links below to go to the scikit-learn documentation.
Preprocessors: Standard Scaler, Polynomial Features
Algorithms: K-Neighbors, Extra Trees, Random Forest, Support Vector Machine, XGBoost.

4. Test Results

Here are the test results for predicting walk percent (BB%)

 CV Mean Squared ErrorMean Squared ErrorMedian Absolute Error
XGBoost2.7342.4711.016
Random Forest2.8212.4660.986
Extra Trees2.8162.4810.968
Standard Scaler, Support Vector Machine2.5872.5171.047
Standard Scaler, K-Neighbors3.3772.8150.994
Standard Scaler, Polynomial Features, K-Neighbors3.6242.9951.101
Polynomial Features, Standard Scaler, K-Neighbors3.2932.6590.962

Strike out percent (K%) test results
 CV Mean Squared ErrorMean Squared ErrorMedian Absolute Error
XGBoost6.3697.3741.600
Random Forest6.5087.1261.622
Extra Trees6.4807.0081.729
Standard Scaler, Support Vector Machine6.1856.8641.524
Standard Scaler, K-Neighbors7.0027.4931.732
Standard Scaler, Polynomial Features, K-Neighbors7.5357.7311.810
Polynomial Features, Standard Scaler, K-Neighbors6.9117.6101.719

The various pipelines yielded comparable results

5. Analyze 2019 Data

The analyses above were done in early September, before the end of the regular season. We used 2019 data through the All Star break as unseen data. Then we decided to wait until the end of the season so that all 2019 data was available. So the code below was written to read in this data and use the saved pipelines from the previous code in this article. Also, we use the 2019 data DataFrame with player names and team names so that we can see how the predictions perform for specific players. Additional post processing was done directly on the resulting spreadsheet.

import pandas as pd
import numpy as np
import os
from pathlib import Path
import joblib
from sklearn.metrics import mean_squared_error  # ‘neg_mean_squared_error’
from sklearn.metrics import median_absolute_error  # ‘neg_median_absolute_error’

# *******************************************************************

def sklearn_regression(dfprod, header_features, header_target, model_dir, results_dir):
    
    x = dfprod[header_features].values
    y = dfprod[header_target].values
    
    dfresults = pd.DataFrame(data=dfprod['Name'], index=dfprod.index)
    dfresults['Team'] = dfprod['Team']
    dfresults[header_target] = dfprod[header_target]
    
    dferrors = pd.DataFrame(index=['mean_squared_error','median_absolute_error'])
        
    list_models = []
    for f in os.listdir(model_dir):
        if '.sav' in f:
            list_models.append(f)
            
    list_y_predicted = []
    for model_file_name in list_models:
        name = model_file_name[:-4]
        ml_model = joblib.load(model_dir + model_file_name)
        y_predicted = ml_model.predict(x)
        dfresults[name] = y_predicted
        list_y_predicted.append(y_predicted)
        neg_mean_squared_error = mean_squared_error(y, y_predicted)
        neg_median_absolute_error = median_absolute_error(y, y_predicted)
        dferrors[name] = [neg_mean_squared_error, neg_median_absolute_error]
        
    # compute median of results
    y_all = np.vstack(tuple(list_y_predicted)).T
    y_all_median = np.median(y_all, axis=1)
    dfresults['Median'] = y_all_median
    neg_mean_squared_error = mean_squared_error(y, y_all_median)
    neg_median_absolute_error = median_absolute_error(y, y_all_median)
    dferrors['Median'] = [neg_mean_squared_error, neg_median_absolute_error]
    
    # save results
    ht = header_target[:-1].lower()
    dfresults = dfresults.round(decimals=3)
    dfresults.to_csv(results_dir + 'df_results_' + ht + '.csv')
    dferrors = dferrors.round(decimals=5)
    dferrors.to_csv(results_dir + 'df_errors_' + ht + '.csv')

# ******************************************************************* 

if __name__ == '__main__':
        
    base_direct = 'YOUR PATH'
    data_direct = base_direct + 'data/'
    
    df = pd.read_pickle(data_direct + 'df_plate_discipline_hitters_2019.pkl')
    
    header_attr = ['O-Swing%', 'Z-Swing%', 'Swing%', 'O-Contact%',
                   'Z-Contact%','Contact%', 'Zone%', 'F-Strike%', 'SwStr%']
    
    for target_type in ['BB%','K%']:        
        tt = target_type[:-1].lower()        
        results_direct = base_direct + '2019_results_sklearn_aws_' + tt + '/'
        if not Path(results_direct).is_dir():
            os.mkdir(results_direct)            
        model_direct = base_direct + 'results_' + tt + '/aws_sklearn_' + tt + '/'        
        sklearn_regression(df, header_attr, target_type, model_direct, results_direct)

Below are the prediction errors for 2019 for both BB% and K%. Median is the median of the pipeline errors.

 BB% Mean Squared ErrorBB% Median Absolute ErrorK% Mean Squared ErrorK% Median Absolute Error
Extra Trees2.7451.1157.8871.943
Polynomial Features, Standard Scaler, K-Neighbors2.9051.0879.1062.003
Standard Scaler, Polynomial Features, K-Neighbors3.2231.12910.5562.109
Standard Scaler, K-Neighbors3.0411.1379.2752.043
Random Forest2.9091.1388.0811.975
Standard Scaler, Support Vector Machine2.9411.1537.1461.866
XGBoost2.8911.1318.1971.904
Median2.6851.1368.0031.922

Predictions for individual players are in the following tables.

2019 BB%

NameTeamBB%Extra TreesPolynomial Features, Standard Scaler, K-NeighborsStandard Scaler, Polynomial Features, K-NeighborsStandard Scaler, K-NeighborsRandom ForestStandard Scaler, Support Vector MachineXGBoostMedianMedian – Actual
Christian YelichBrewers13.810.65710.85410.45110.03810.92111.75511.12210.854-2.946
Mike TroutAngels18.315.89414.85514.94114.74315.72916.27915.92715.729-2.571
Yordan AlvarezAstros14.110.96611.25711.86611.3910.55111.42110.72811.257-2.843
Alex BregmanAstros17.214.89113.59313.25113.55816.45515.98316.90914.891-2.309
Nelson CruzTwins10.710.87211.08711.26210.74111.17412.4411.43711.1740.474
David FreeseDodgers12.49.3639.6319.3399.7479.7379.0229.4269.426-2.974
Cody BellingerDodgers14.412.20911.78911.35111.72112.58613.48813.25912.209-2.191
Anthony RendonNationals12.410.9139.4879.4259.52911.69611.36712.20310.913-1.487
Ketel MarteDiamondbacks8.49.1169.0469.1089.4219.3429.1239.6339.1230.723
Mitch GarverTwins11.414.7613.20112.91913.11414.98714.63715.20214.6373.237
Joey GalloRangers17.514.6114.00413.70513.36513.98217.76415.34814.004-3.496
George SpringerAstros12.112.19411.22810.56811.01412.63213.13812.93412.1940.094
Howie KendrickNationals7.37.2026.876.9536.686.7757.316.8186.87-0.43
Fernando Tatis Jr.Padres8.19.5929.2419.0379.3729.39710.329.9749.3971.297
Juan SotoNationals16.413.712.49312.0712.32914.14715.53914.96313.7-2.7
Nolan ArenadoRockies9.46.7646.797.3726.7126.667.057.1376.79-2.61
Anthony RizzoCubs11.69.24210.04210.96510.3739.1449.7288.6339.728-1.872
Xander BogaertsRed Sox10.99.7819.5599.6499.4459.68310.02710.4299.683-1.217
Keston HiuraBrewers7.26.9417.2027.0727.5227.0587.5566.8437.072-0.128
Charlie BlackmonRockies6.36.0586.3756.0936.3066.2286.9146.5136.3060.006
Freddie FreemanBraves12.69.569.65410.9789.92910.26411.26710.69610.264-2.336
J.D. MartinezRed Sox118.5878.6748.5288.2198.5149.1789.0668.587-2.413
Mark CanhaAthletics13.511.95211.58410.26911.48511.77213.03111.77911.772-1.728
Jeff McNeilMets6.24.4294.5434.2014.7354.4885.0214.8724.543-1.657
Bo BichetteBlue Jays6.65.6435.7195.1735.3355.9986.9066.4835.719-0.881
Peter AlonsoMets10.48.5268.7978.5539.0068.58210.3658.558.582-1.818
Jordan LuplowIndians12.613.4711.95513.03712.24814.13114.34814.74213.470.87
Aaron JudgeYankees14.313.21412.36512.33311.92313.12414.38713.6113.124-1.176
Eugenio SuarezReds10.610.78410.68210.2310.52310.91210.89510.85610.7840.184
Carlos CorreaAstros10.98.9099.3769.4639.5988.8889.2939.6839.376-1.524
Mookie BettsRed Sox13.714.22312.91912.72712.42814.8812.65713.45212.919-0.781
Trevor StoryRockies8.89.2579.2539.4039.2929.4229.3719.6639.3710.571
Carlos SantanaIndians15.714.72114.16113.9513.1614.92615.71914.60714.607-1.093
Austin MeadowsRays9.19.989.6259.7759.98810.12910.4259.8619.980.88
Kris BryantCubs11.710.5719.6729.65510.00210.46311.13910.67310.463-1.237
Yoan MoncadaWhite Sox7.27.6397.1627.4167.0137.6427.7287.7017.6390.439
Miguel SanoTwins12.513.04512.50311.88311.86213.70913.97713.51813.0450.545
Josh BellPirates12.111.08710.7411.52110.96311.26312.73111.40511.263-0.837
Jorge SolerRoyals10.812.74911.0810.74611.10713.7612.6512.24112.2411.441
Josh DonaldsonBraves15.213.8812.46613.31212.58414.33315.5711413.88-1.32
Hunter PenceRangers8.26.9086.7956.2866.6437.3188.7167.1276.908-1.292
Rafael DeversRed Sox6.85.4065.2745.165.1485.3936.0545.8725.393-1.407
DJ LeMahieuYankees78.5158.6618.6618.6028.678.2278.3828.6021.602
Jose AltuveAstros7.58.3858.1558.2198.2378.5659.6689.0388.3850.885
J.D. DavisMets8.49.2929.158.9489.0058.9719.8769.3039.150.75
Trey ManciniOrioles9.38.1557.6497.6657.6658.2258.7988.058.05-1.25
Marcus SemienAthletics11.611.93311.34711.36211.14412.48113.08113.03611.9330.333
Max MuncyDodgers15.313.52912.86413.44512.80414.24715.2415.11213.529-1.771
Mike FordYankees10.412.22211.40610.54611.34312.72313.15712.46312.2221.822
Matt JoyceBraves1613.16712.53412.12912.58813.16514.51413.60513.165-2.835
Bryan ReynoldsPirates8.49.4378.8988.5588.5648.96310.0769.9498.9630.563
Justin TurnerDodgers9.39.1249.4829.5199.6689.369.4079.3539.4070.107
Giovanny UrshelaYankees5.34.4694.4054.5354.4274.2065.0744.7474.469-0.831
Ronald Acuna Jr.Braves10.611.58910.4179.46610.38911.76612.46912.09611.5890.989
Will SmithDodgers9.210.60310.81710.40610.78510.52711.0310.58610.6031.403
Dominic SmithMets9.68.2118.18.8998.4028.3159.2539.2788.402-1.198
Willson ContrerasCubs9.37.3037.3356.7757.2847.3428.7887.3677.335-1.965
Matt OlsonAthletics9.311.16110.60610.13811.26111.37711.61411.16911.1691.869
Ian HappCubs9.67.0117.1127.6337.246.8787.1276.7437.112-2.488
Brad Miller- - -8.812.32512.21411.25712.22712.3312.77212.38212.3253.525
Michael BrantleyAstros87.4477.6297.397.5397.4856.9356.7177.447-0.553
Corey Dickerson- - -5.75.0015.2195.0265.2414.9915.1485.6285.148-0.552
Bryce HarperPhillies14.510.4519.6939.4838.99610.67112.12210.14710.147-4.353
Yuli GurrielAstros66.3645.8946.5146.0756.6926.696.5926.5140.514
David DahlRockies6.86.3896.627.0356.5816.5397.1986.6456.62-0.18
Mike TauchmanYankees11.512.65311.80711.77511.43513.13813.38613.14912.6531.153
Tim AndersonWhite Sox2.94.2834.1844.0874.2154.3483.554.7514.2151.315
Cameron MaybinYankees11.211.63311.10710.83611.07812.34812.29411.62411.6240.424
Edwin Encarnacion- - -11.911.87911.19511.63311.71412.19912.76511.91911.879-0.021
Joc PedersonDodgers9.710.33410.18110.95610.24410.24710.4410.51110.3340.634
Yasmani GrandalBrewers17.213.85713.1813.19312.79914.23514.89614.48313.857-3.343
Luis ArraezTwins9.88.9498.8218.6719.0039.0628.4119.2988.949-0.851
Aristides AquinoReds7.16.2316.1956.3236.6446.0498.7436.4816.323-0.777
Hunter DozierRoyals9.49.4179.6178.8549.2719.669.2539.0449.271-0.129
Luke VoitYankees13.912.6310.5959.46210.45112.613.36112.92712.6-1.3
Gleyber TorresYankees7.96.7996.9246.7597.1837.0577.8247.1787.057-0.843
Wilmer FloresDiamondbacks5.37.4676.626.9966.9997.6517.2636.5026.9991.699
Andrew McCutchenPhillies16.414.31913.60613.65713.37514.15614.74115.36114.156-2.244
Michael ConfortoMets1311.84610.84310.16410.43612.24912.4811.9311.846-1.154
Lourdes Gurriel Jr.Blue Jays5.86.4596.4626.686.6236.8866.9536.8166.680.88
Nicholas Castellanos- - -6.25.4765.6045.4485.4715.2735.3336.3525.471-0.729
Kyle SchwarberCubs11.512.73212.27512.54612.51312.89713.04113.09712.7321.232
Tommy EdmanCardinals4.66.8387.1116.8327.1576.8257.5577.0347.0342.434
Ramon LaureanoAthletics5.66.3616.5646.4286.6886.7076.4686.186.4680.868
Trea TurnerNationals7.68.4038.0818.3718.2248.3228.7558.8788.3710.771
Max KeplerTwins10.18.9647.1067.6357.7118.48.5938.8848.4-1.7
Tom MurphyMariners6.810.10610.3549.85910.44910.1549.3349.88310.1063.306
Matt ChapmanAthletics10.911.87510.93310.79411.40312.36812.81112.34911.8750.975
Brandon LoweRays7.67.2397.0536.7557.3517.6147.6917.2587.258-0.342
Ryan BraunBrewers6.76.8616.4696.5266.5446.8456.4236.5736.544-0.156
Ozzie AlbiesBraves7.76.0145.4295.9375.3736.1616.8426.7716.014-1.686
Eric ThamesBrewers11.19.91410.03610.18310.1259.49210.99310.01910.036-1.064
Shin-Soo ChooRangers11.812.2311.60312.14511.58611.85212.35111.79111.8520.052
Starling MartePirates4.36.6396.1945.6196.0096.6666.9346.8076.6392.339
Mike YastrzemskiGiants7.89.3219.0379.4129.0469.3418.9828.7739.0461.246
Jorge PolancoTwins8.59.8929.5778.7589.0519.8210.01610.1929.821.32
Shohei OhtaniAngels7.89.4559.1339.9049.2629.84910.3359.7099.7091.909
Danny SantanaRangers4.94.9735.0785.5365.4435.0854.3754.6445.0780.178
Tommy La StellaAngels6.27.747.157.0867.3187.5917.2446.8377.2441.044
Jesse WinkerReds9.910.16910.249.70910.31710.30610.73310.90410.3060.406
Willie CalhounRangers6.87.5857.8117.9517.8227.9757.2087.7587.8111.011
Francisco LindorIndians76.7316.8577.0716.7856.9866.4367.1786.857-0.143
Tommy PhamRays12.414.65513.7713.37113.43114.52314.46714.20914.2091.809
Mike MoustakasBrewers9.18.5759.2638.8119.1548.4428.7968.9658.811-0.289
Ji-Man ChoiRays13.111.68710.82110.79510.71312.11412.62512.17611.687-1.413
Mitch MorelandRed Sox10.110.32710.1629.8259.91210.37910.51710.62110.3270.227
Javier BaezCubs54.8865.6756.0366.0085.1395.0655.1325.1390.139
Rhys HoskinsPhillies16.514.01214.00614.35914.58914.43614.83614.42514.425-2.075
Gary SanchezYankees99.53710.18310.03210.48.65510.2568.95510.0321.032
Paul GoldschmidtCardinals11.48.5987.9417.0047.6078.80810.1899.4878.598-2.802
Donovan SolanoGiants4.45.575.5645.9735.55.775.4685.6315.571.17
Christian WalkerDiamondbacks11.111.24810.84211.20111.37711.40811.55711.11211.2480.148
Aledmys DiazAstros10.59.4419.0258.3989.0379.839.0139.7859.037-1.463
Omar NarvaezMariners9.88.9278.0358.0558.3918.94410.1549.2498.927-0.873
Brett GardnerYankees9.510.96512.19212.42611.98111.24710.64810.72411.2471.747
Jose AbreuWhite Sox5.26.5116.5916.8886.8426.6325.796.5936.5931.393
Jake CaveTwins9.210.0149.7069.2489.38710.0710.16210.71710.0140.814
Eloy JimenezWhite Sox66.6486.7576.8846.8986.7237.8597.066.8840.884
Cavan BiggioBlue Jays16.516.414.1113.47213.79317.31817.12917.53716.4-0.1
Brian AndersonMarlins8.57.2717.0917.1727.3187.3917.2497.3387.271-1.229
Eric Sogard- - -8.69.2759.7079.8569.6699.32610.0449.5979.6691.069
Adam EatonNationals9.99.19.099.6389.029.239.4649.3819.23-0.67
Alex VerdugoDodgers6.97.977.9757.6167.3217.9957.3247.2927.6160.716
Yandy DiazRays10.111.29610.47910.27510.3511.47712.59211.89911.2961.196
Eduardo EscobarDiamondbacks7.25.8396.3276.4266.6315.8025.9966.5376.327-0.873
Alex Dickerson- - -6.86.6877.2156.4057.216.5176.7346.9496.734-0.066
Corey SeagerDodgers8.18.9999.1849.8569.2158.6759.0199.4189.1841.084
Byron BuxtonTwins6.45.7416.0376.3576.1435.8146.0055.8136.005-0.395
Whit MerrifieldRoyals6.17.0726.7636.8726.7226.7387.2456.9516.8720.772
J.T. RealmutoPhillies6.97.2157.3447.8267.2087.4157.2477.6557.3440.444
Brandon NimmoMets18.113.67212.66212.70912.77813.85213.79313.97313.672-4.428
Kevin NewmanPirates5.35.6945.4835.1145.3966.2255.776.0445.6940.394
Carson KellyDiamondbacks13.211.28910.52610.70810.62811.35611.8711.14611.146-2.054
Franmil Reyes- - -8.67.5477.5818.0237.8947.8719.2848.3067.894-0.706
Victor CaratiniCubs10.49.738.9269.029.2429.32510.18710.1859.325-1.075
David PeraltaDiamondbacks8.36.8946.8427.2657.1536.8566.6476.5396.856-1.444
Marcell OzunaCardinals11.310.72610.6510.34910.02412.09411.40211.24110.726-0.574
Kurt SuzukiNationals6.56.5916.3456.8126.3326.4066.6466.3816.406-0.094
Austin NolaMariners8.69.8919.3229.3479.5819.839.8859.6939.6931.093
Garrett CooperMarlins7.86.8046.7057.6016.9036.8397.5926.6746.839-0.961
Robinson ChirinosAstros11.78.4279.1148.4598.5318.6839.4118.778.683-3.017
Pablo SandovalGiants6.15.7245.4955.7425.6275.7256.7926.775.725-0.375
David BoteCubs12.410.12810.32910.14410.44910.23310.39210.71710.329-2.071
Jonathan VillarOrioles8.59.6539.1219.0678.7628.9099.9519.3479.1210.621
Manny MachadoPadres9.88.7378.8569.3898.9798.6319.6639.4768.979-0.821
Jose RamirezIndians9.69.5979.2438.7569.1079.69910.49610.79.597-0.003
Avisail GarciaRays5.86.2816.3646.6866.5876.0857.196.5686.5680.768
Phillip ErvinReds6.99.9849.7669.8979.92510.4389.79110.4189.9253.025
Derek DietrichReds9.29.7239.3159.5219.5239.9039.79910.2489.7230.523
Kolten WongCardinals8.68.958.9618.6118.9619.0827.8698.8828.950.35
Shed LongMariners9.59.6049.2659.8929.36310.08710.0810.5629.8920.392
Clint FrazierYankees6.512.12911.53211.91811.35712.22212.44613.3912.1295.629
Brock HoltRed Sox9.59.0089.3419.5689.5899.1659.3739.3259.341-0.159
Daniel VogelbachMariners16.514.22513.53414.01813.90114.64317.53215.31514.225-2.275
A.J. PollockDodgers6.78.2448.4788.4788.858.3798.0378.448.441.74
James McCannWhite Sox6.36.5847.2727.9067.3736.2356.4916.3646.5840.284
Brian GoodwinAngels8.39.87710.85810.27810.9669.5339.4769.3879.8771.577
Nick MarkakisBraves109.1118.9239.2928.8429.47410.16110.0169.292-0.708
Joey VottoReds12.512.72811.52611.37111.45312.90913.74512.64712.6470.147
Kyle SeagerMariners9.910.07110.10310.80810.60210.00610.73110.40510.4050.505
Christian VazquezRed Sox6.35.9246.0046.0175.7755.8566.3736.0086.004-0.296
Stephen VogtGiants7.17.0557.8717.5657.8167.1667.7538.0687.7530.653
Asdrubal Cabrera- - -11.19.6919.5599.3549.07310.159.6279.8579.627-1.473
Chris TaylorDodgers8.98.9117.678.1558.4829.1778.8918.9818.891-0.009
Yasiel Puig- - -7.27.8277.3646.8117.2648.4087.7057.6347.6340.434
Tyler NaquinIndians4.84.7235.0215.1954.9934.6645.5425.6025.0210.221
Kole CalhounAngels11.110.8139.7389.4759.61311.13510.85910.63410.634-0.466
Ryan McMahonRockies10.410.0389.3159.5019.2410.42810.0839.4549.501-0.899
Andrew BenintendiRed Sox9.68.6368.2319.1768.9998.7099.9779.0648.999-0.601
Brian DozierNationals12.714.42913.32913.32513.13914.88714.29314.55114.2931.593
Vladimir Guerrero Jr.Blue Jays8.98.9728.6978.6368.169.25910.6459.9538.9720.072
Scott KingeryPhillies6.87.7537.4787.0317.5967.677.7217.6267.6260.826
Eddie RosarioTwins3.74.4034.7314.8045.0354.5484.8245.9894.8041.104
Nathaniel LoweRays7.710.10710.2410.0029.88511.69410.05410.98110.1072.407
Todd FrazierMets811.38511.27311.30210.94911.64111.3311.02411.3023.302
Jason CastroTwins1212.10511.78611.5611.53711.80213.28712.26311.802-0.198
Daniel MurphyRockies6.77.5766.526.9616.8267.5817.0427.6947.0420.342
Ian DesmondRockies7.19.6639.6429.7439.34710.1089.42710.0429.6632.563
Jason HeywardCubs11.510.21710.30510.88810.4210.07510.20710.39310.305-1.195
Mike FreemanIndians10.37.3957.2266.8856.7827.4837.8487.8967.395-2.905
Wilson RamosMets8.45.8315.6175.5585.9035.8885.7516.0155.831-2.569
Nomar MazaraRangers66.5356.9987.3567.046.86.8586.6376.8580.858
Jon BertiMarlins8.410.1399.8539.7149.8810.10911.22510.52310.1091.709
Domingo SantanaMariners9.910.5339.2029.0449.03410.51310.0029.5419.541-0.359
Ehire AdrianzaTwins8.58.4038.6728.7968.5928.3167.4978.3128.403-0.097
Dexter FowlerCardinals12.912.99211.56211.21911.22112.92214.33412.94912.9220.022
Roberto PerezIndians1013.53512.77912.30212.14114.0614.58314.40113.5353.535
Mitch HanigerMariners10.610.90311.55111.48211.27810.57210.31110.21910.9030.303
Aaron HicksYankees12.214.17813.08213.08312.98514.55616.3214.32214.1781.978
C.J. CronTwins5.86.376.5876.5126.8086.4576.4736.5376.5120.712
Teoscar HernandezBlue Jays9.79.8138.8658.5768.5999.20610.8289.7939.206-0.494
Victor ReyesTigers4.85.3285.2954.4995.3245.3895.025.2915.2950.495
Jonathan SchoopTwins4.35.4075.815.9685.855.4095.5675.2955.5671.267
Matt BeatyDodgers6.38.5998.6699.0688.9278.2127.568.2998.5992.299
Justin SmoakBlue Jays15.813.52312.95812.96412.84614.22814.56114.06113.523-2.277
Alex AvilaDiamondbacks17.916.46214.74115.46614.70516.33518.29218.15416.335-1.565
Michael ChavisRed Sox8.17.1767.9027.9897.9077.5458.8447.3257.902-0.198
Renato NunezOrioles7.36.7337.3487.277.1296.7386.6756.8126.812-0.488
Jose MartinezCardinals9.49.7499.5059.4059.6039.9949.73910.0189.7390.339
Evan LongoriaGiants8.58.3198.2098.9768.1348.6738.8618.9078.6730.173
Paul DeJongCardinals9.38.1858.9039.1579.0958.2667.7947.7178.266-1.034
Anthony SantanderOrioles4.75.795.9917.2126.8765.7915.8646.585.9911.291
Oscar MercadoIndians5.88.2018.068.5178.2738.1478.3098.1818.2012.401
Austin SlaterGiants11.512.03612.11411.10512.0412.58213.34112.8912.1140.614
Adam FrazierPirates6.68.258.2039.0858.3078.5997.7388.0018.251.65
Hunter RenfroePadres9.38.6568.537.9298.1128.5819.5619.3748.581-0.719
Jose OsunaPirates6.37.2396.7886.5746.6717.2368.3337.8457.2360.936
Neil WalkerMarlins119.4728.8938.5539.219.65210.5859.7779.472-1.528
Brandon BeltGiants13.512.25810.51210.81610.25112.29712.5112.07712.077-1.423
Alex GordonRoyals8.18.7478.3537.7568.2018.4238.9998.7258.4230.323
Chance SiscoOrioles11.112.88912.85511.3112.58513.28914.49313.74812.8891.789
Greg GarciaPadres14.213.09412.60711.99612.15413.57813.10913.98413.094-1.106
Miguel CabreraTigers8.77.2296.9717.1747.0767.1046.9876.9597.076-1.624
Hanser AlbertoOrioles2.93.7023.7963.3923.9333.7373.1784.4393.7370.837
Amed RosarioMets4.76.5196.636.7086.7126.316.1036.3886.5191.819
Ender InciarteBraves11.37.0337.4048.317.5376.7416.8357.3127.312-3.988
Jay Bruce- - -5.76.1996.3586.4176.3756.0276.5056.1066.3580.658
David FletcherAngels8.48.2789.8649.7039.5097.927.5157.5058.278-0.122
Dansby SwansonBraves9.411.35311.15510.99111.10311.20511.01111.27511.1551.755
Francisco MejiaPadres5.34.2144.5394.7734.7194.6363.8925.5084.636-0.664
Victor RoblesNationals5.77.5757.9398.3837.8417.627.9177.3967.8412.141
Wil MyersPadres10.410.3239.9589.459.44710.85610.5479.7339.958-0.442
Josh VanMeterReds11.211.90411.95912.40712.35411.58711.59911.45211.9040.704
Pedro SeverinoOrioles8.512.76411.27511.38411.26913.12812.36412.26312.2633.763
Trent GrishamBrewers10.912.91112.56312.7512.78412.89712.27112.35312.751.85
Curt CasaliReds10.612.2311.2211.42411.27612.9612.89713.03512.231.63
Niko GoodrumTigers9.79.0559.0149.2059.2379.3949.4369.2669.237-0.463
Cesar HernandezPhillies6.78.3517.5197.8027.6788.5148.1368.4958.1361.436
Colin MoranPirates65.3325.9725.825.8525.5236.3916.2515.852-0.148
Jean SeguraPhillies4.96.3446.1016.0266.256.6036.0196.1516.1511.251
Austin RomineYankees4.24.5634.2174.2134.4464.3724.9444.8944.4460.246
Nick SenzelReds7.28.687.9898.1947.9338.5659.5849.0218.5651.365
Tim BeckhamMariners6.48.3028.6038.8078.6828.7477.9847.6868.6032.203
Matt CarpenterCardinals12.813.3513.23513.26413.65713.99613.77413.92313.6570.857
Nick AhmedDiamondbacks8.38.2087.3177.6697.4228.1158.1217.6787.678-0.622
Jordy MercerTigers4.88.6169.3589.0239.2318.9158.9458.5718.9454.145
Travis d'Arnaud- - -8.26.6336.8527.0176.9826.5966.5686.3926.633-1.567
Tim LocastroDiamondbacks5.66.7587.8027.4887.7886.2346.0755.6726.7581.158
Jackie Bradley Jr.Red Sox9.98.978.4859.279.2399.3099.3778.9049.239-0.661
Ryan ZimmermanNationals8.910.76511.20510.73910.94711.14910.24610.28710.7651.865
Marwin GonzalezTwins6.76.8686.7036.1916.717.0916.6356.6936.7030.003
Willy AdamesRays7.99.5519.3489.6069.5288.8638.8768.8249.3481.448
Jorge AlfaroMarlins4.75.2565.5016.0665.6485.375.3545.775.5010.801
Adeiny Hechavarria- - -6.34.6195.0754.6074.6284.3475.4114.6214.621-1.679
JaCoby JonesTigers8.17.8826.7416.5846.9168.1158.3528.3357.882-0.218
Brian McCannBraves9.810.54210.2389.96410.44611.35512.02511.21410.5420.742
Tyler FlowersBraves109.0618.2268.6357.9689.1938.6237.9528.623-1.377
Eric HosmerPadres67.6958.0787.3617.5557.6238.0768.2297.6951.695
Adam HaseleyPhillies5.87.8127.5277.747.7047.6837.9027.8517.741.94
Albert PujolsAngels7.98.9568.5689.4848.8339.0897.8639.0488.9561.056
Harold RamirezMarlins44.8095.4825.4555.5534.3315.7225.5445.4821.482
Adam JonesDiamondbacks5.94.9975.3284.9425.3124.8014.7654.9664.966-0.934
Ben GamelBrewers11.210.6210.7219.72810.26210.81110.98510.84510.721-0.479
Rowdy TellezBlue Jays7.16.4787.2727.2967.5736.5967.0156.5957.015-0.085
Robinson CanoMets5.95.625.8456.2325.6475.6436.1326.2325.845-0.055
Tyler O'NeillCardinals6.67.0658.4428.658.4517.2247.8867.4957.8861.286
Manny PinaBrewers8.910.6239.6869.7469.86710.94310.23810.98310.2381.338
Josh ReddickAstros6.56.6726.4366.7176.6326.8056.5796.9716.6720.172
Ryon HealyMariners77.6157.8847.4747.7227.5697.3077.2927.5690.569
Freddy Galvis- - -4.85.2965.5445.2135.5675.2425.1585.6645.2960.496
Jesus Aguilar- - -11.710.11110.11210.77510.10410.7511.35110.32310.323-1.377
Justin UptonAngels12.511.15211.33910.89811.1911.2410.91410.62911.152-1.348
Austin RileyBraves5.46.0196.4146.816.5415.9798.376.2336.4141.014
Raimel TapiaRockies4.74.7594.8715.2625.0154.4964.8885.0414.8880.188
Randal GrichukBlue Jays5.67.3997.2167.5587.267.3386.6926.7937.261.66
Starlin CastroMarlins4.17.5447.1317.6437.337.6816.7837.4047.4043.304
Matt AdamsNationals67.3947.0477.0927.0457.5837.7497.6047.3941.394
Stephen PiscottyAthletics7.46.8186.8567.2447.0296.8816.8316.9236.881-0.519
Josh NaylorPadres98.8748.4558.9018.8759.1359.3648.8238.875-0.125
Jose IglesiasReds3.83.6914.1393.6684.13.883.6684.8723.880.08
Ronald GuzmanRangers10.87.6087.37.4977.4157.6247.8038.0147.608-3.192
Kevan SmithAngels7.67.9977.5957.6567.5978.2678.527.5717.6560.056
Gregory PolancoPirates7.28.9498.6589.4319.0969.07110.069.5739.0961.896
Miguel RojasMarlins6.17.6757.7558.0987.5217.2357.4656.8487.5211.421
Brandon DixonTigers56.276.5446.5636.6846.3946.42366.4231.423
Chris IannettaRockies1113.40711.93911.9711.78913.94813.87715.02813.4072.407
Matt ThaissAngels10.412.52311.03111.2211.13512.2114.28713.40812.211.81
Ben ZobristCubs13.112.86813.91411.42713.85613.33216.67414.33613.8560.756
Yadier MolinaCardinals5.14.3644.6423.9744.334.2025.4825.0484.364-0.736
Lorenzo CainBrewers89.1989.1028.2429.1429.5249.1799.3569.1791.179
Rougned OdorRangers98.6828.5398.2338.569.3798.269.3458.56-0.44
Enrique HernandezDodgers7.88.6468.4269.3198.5788.7419.1029.2088.7410.941
Jurickson ProfarAthletics9.310.53710.04510.07910.1710.56410.17910.76410.1790.879
Jason KipnisIndians7.89.0138.2138.2888.3368.8697.8659.2838.3360.536
Melky CabreraPirates4.35.5385.1075.1755.3265.9385.7026.1735.5381.238
Tucker BarnhartReds12.19.0759.6829.7839.7778.7849.0669.1039.103-2.997
Ildemaro VargasDiamondbacks4.37.8267.4887.4947.4227.7937.4437.3387.4883.188
Elvis AndrusRangers5.26.8847.1117.0146.8216.8986.8567.0456.8981.698
Dwight Smith Jr.Orioles6.69.5868.6377.9798.4899.969.1279.7049.1272.527
Matt DuffyRays11.212.57512.51912.89112.56412.77912.91212.80512.7791.579
Robbie GrossmanAthletics12.214.37712.83214.31812.8814.46814.02514.84914.3182.118
Dylan MooreMariners8.911.2210.3329.20210.34111.04911.25411.11811.0492.149
Tyler Austin- - -13.412.26712.38210.93511.58713.32514.09812.8312.382-1.018
Luis RengifoAngels9.99.73510.1439.53410.6629.6619.399.9069.735-0.165
Logan ForsytheRangers1213.53813.07411.64112.32514.10315.78714.17613.5381.538
Yan GomesNationals10.67.2056.9816.8977.2847.3977.2537.1057.205-3.395
Adalberto MondesiRoyals4.35.5915.7156.2375.915.5356.245.2695.7151.415
Chad PinderAthletics5.48.1487.4857.4347.4188.1668.2327.887.882.48
Ryan GoinsWhite Sox10.412.75213.21513.71513.20213.07513.97313.34513.2152.815
Buster PoseyGiants7.68.5448.6318.398.3138.5128.38.7318.5120.912
Kevin Pillar- - -2.83.953.8483.9923.8984.0183.3025.0773.951.15
Didi GregoriusYankees4.94.9754.3524.6134.6865.0115.6396.2514.9750.075
Jacob StallingsPirates7.66.6496.6637.0526.9486.7225.9736.3696.663-0.937
Jake LambDiamondbacks14.212.07911.76511.52911.50912.3212.05911.99611.996-2.204
Addison RussellCubs8.36.9556.8356.056.2766.8657.1847.2616.865-1.435
Jake MarisnickAstros5.36.1796.5036.2656.2696.3546.2836.256.2690.969
Ty FrancePadres4.58.568.2538.6318.4028.2928.6818.288.4023.902
Jake BauersIndians10.612.31211.46311.6811.60412.45912.93112.14212.1421.542
J.P. CrawfordMariners10.911.69710.66410.85810.82711.90411.48311.18611.1860.286
Manuel MargotPadres8.610.84810.50810.28110.42910.63210.91310.49510.5081.908
Adam EngelWhite Sox5.66.4186.3136.2056.5646.1636.5556.5426.4180.818
Russell MartinDodgers1211.72410.73511.08810.55112.27311.54310.68211.088-0.912
Delino DeShieldsRangers9.39.6629.589.5969.1879.69510.5139.5249.5960.296
Leury GarciaWhite Sox3.44.9745.8025.7395.414.7934.6444.8514.9741.574
Luis UriasPadres109.9259.7199.0939.29710.00410.81310.389.925-0.075
Rio RuizOrioles9.79.8639.2679.359.37510.33910.2919.6919.691-0.009
Christin StewartTigers8.27.4187.6427.8727.6917.4137.6197.1337.619-0.581
Harrison BaderCardinals11.39.88210.2288.3349.33810.139.9089.4159.882-1.418
Harold CastroTigers2.44.3115.3955.235.8934.274.144.7684.7682.368
Matt WietersCardinals6.610.1869.5149.298.7711.11411.90210.99810.1863.586
Garrett HampsonRockies7.312.16111.96711.55812.09312.19711.79911.97911.9794.679
Billy McKinneyBlue Jays6.98.1537.9878.1617.818.3478.0368.0068.0361.136
Josh PhegleyAthletics4.46.9126.8087.1816.8936.8166.9887.0696.9122.512
Guillermo HerediaRays7.810.6739.9189.8529.56310.91211.16610.5910.592.79
Joey Rickard- - -9.59.1217.8288.0398.3668.79810.8059.7238.798-0.702
Andrelton SimmonsAngels5.77.6667.0686.0186.9277.7456.9817.3197.0681.368
Tony WoltersRockies8.88.8459.0217.9778.9579.0668.6968.6798.8450.045
Khris DavisAthletics8.89.7798.5948.3028.610.33911.45410.3779.7790.979
Kyle FarmerReds5.15.9266.6977.2086.6446.0654.8675.7816.0650.965
Willians AstudilloTwins2.54.2564.3459.1084.3464.2233.4684.1254.2561.756
Martin Maldonado- - -8.67.77.217.3897.0828.1757.9277.4367.436-1.164
Gerardo Parra- - -6.37.627.4258.0167.5247.7498.1067.9857.7491.449
Cheslor CuthbertRoyals5.87.9968.057.6518.6798.0668.9688.6148.0662.266
Welington CastilloWhite Sox6.48.7218.8617.9738.3629.3438.8359.2138.8352.435
Steve WilkersonOrioles6.18.3418.9699.1789.1448.18.9438.9968.9692.869
Jonathan Lucroy- - -8.27.669.0318.9329.2917.768.3948.1028.3940.194
Tony Kemp- - -8.28.3046.9326.2926.8248.3568.3848.0118.011-0.189
Francisco Cervelli- - -8.19.8279.0328.8499.2559.71710.0369.4199.4191.319
Derek Fisher- - -12.615.84113.95915.16913.58316.08216.59916.64315.8413.241
Kevin KiermaierRays5.44.8135.1445.8485.3774.4765.1655.0545.144-0.256
Joe Panik- - -8.810.8039.0749.1899.4711.85210.86911.9410.8032.003
Jeimer CandelarioTigers11.19.1799.2979.0159.2478.7399.8779.3649.247-1.853
Ronny RodriguezTigers4.44.2325.216.2175.7944.6033.7535.2335.210.81
Dee GordonMariners4.34.1024.9845.165.2024.1954.2974.1444.297-0.003
Andrew KnappPhillies11.38.4468.1448.5148.3348.5298.1527.58.334-2.966
Maikel FrancoPhillies8.47.0096.9247.157.2356.8436.6236.5026.924-1.476
Yolmer SanchezWhite Sox7.97.046.5317.2796.5866.9757.77.237.04-0.86
Brandon CrawfordGiants9.58.6768.6768.4538.2778.6639.0278.8798.676-0.824
Yairo MunozCardinals3.94.0574.214.3834.2654.0974.3374.2124.2120.312
Jarrod DysonDiamondbacks10.411.76910.65710.710.62111.97411.62411.50311.5031.103
Ryan CordellWhite Sox7.77.3267.1167.3157.3517.5967.737.9357.351-0.349
Josh RojasDiamondbacks11.512.61211.91712.1511.8512.69513.58512.45112.4510.951
Johan CamargoBraves65.2095.3535.4145.4525.1465.35.7135.353-0.647
Ryan O'HearnRoyals10.59.9569.88810.16410.18910.12510.10310.89310.125-0.375
Mallex SmithMariners7.47.957.8648.3068.3418.1038.0818.0798.0810.681
Yonder Alonso- - -11.69.6329.5199.419.4599.8759.7539.7569.632-1.968
Ian KinslerPadres6.88.5986.9246.676.668.5588.568.4368.4361.636
Austin DeanMarlins4.86.1626.6667.3177.416.1475.9866.7386.6661.866
Jon JayWhite Sox4.45.1855.5084.7995.1895.0155.1425.3975.1850.785
Curtis GrandersonMarlins11.312.11210.96510.73210.44312.81212.81512.24912.1120.812
Joey WendleRays5.36.6497.4627.8317.4926.8366.2936.5416.8361.536
Danny JansenBlue Jays8.19.3957.7738.3478.3249.84310.0610.089.3951.295
Daniel RobertsonRays10.19.0718.6258.7848.579.5459.5989.0229.022-1.078
Gordon BeckhamTigers5.46.8857.6678.3317.8826.6566.8936.6196.8931.493
Greg AllenIndians4.37.3398.1028.8688.3987.2497.0947.0557.3393.039
Tyler White- - -12.911.39110.66810.76710.54711.84412.38511.86311.391-1.509
Kevin PlaweckiIndians6.99.3169.4798.749.4599.3099.8399.0629.3162.416
Sam TravisRed Sox75.5796.0366.4116.2435.4475.7435.6885.743-1.257
Travis DemeritteTigers7.57.6117.397.6627.1927.9917.5258.0547.6110.111
Jose PerazaReds4.25.0364.6644.8494.8194.7935.5285.3354.8490.649
Isiah Kiner-FalefaRangers6.38.1968.0848.3018.3498.1658.0117.6568.1651.865
Dawel LugoTigers2.83.5984.094.0844.2433.7873.7794.7444.0841.284
Austin BarnesDodgers9.511.1049.76110.089.77911.40911.17911.11311.1041.604
Brandon DruryBlue Jays5.66.9296.7037.246.7787.1336.9586.7966.9291.329
Albert Almora Jr.Cubs4.45.4526.356.4876.4965.5385.3516.3896.351.95
Hernan PerezBrewers4.55.2155.8596.5016.1235.5594.8035.1795.5591.059
Leonys MartinIndians86.6786.947.3717.1486.5067.3876.5496.94-1.06
Orlando ArciaBrewers7.97.7757.7468.9218.0437.9547.7747.8097.809-0.091
Mark ReynoldsRockies13.611.62711.88510.84510.45311.95111.95311.70211.702-1.898
Justin BourAngels1010.611.5711.97311.36910.429.99910.13310.60.6
Marco HernandezRed Sox1.95.4215.8445.6665.8295.4695.7835.1415.6663.766
Steven DuggarGiants5.79.168.9298.3558.6768.6698.6818.3028.6762.976
Elias DiazPirates6.99.378.5318.3338.3319.4059.5379.7629.372.47
Cole TuckerPirates6.310.8179.7759.889.91211.16210.87410.47910.4794.179
Kendrys Morales- - -12.913.13611.88112.04412.09213.30712.00413.61512.092-0.808
Chris DavisOrioles11.114.02213.17413.43213.03413.58814.09814.10513.5882.488
Erik GonzalezPirates5.86.0285.9435.2875.635.7437.2826.565.9430.143
Pablo ReyesPirates8.310.6410.6410.74810.80810.29611.30710.96510.7482.448
Nicky LopezRoyals4.55.8826.3956.6896.3175.8765.8486.2176.2171.717
John HicksTigers3.94.7885.0075.2255.0974.8193.74.5114.8190.919
Juan LagaresMets7.76.9846.637.147.1227.0466.4336.7866.984-0.716
Jung Ho KangPirates5.97.1017.3547.6897.5727.417.4687.0197.411.51
Charlie TilsonWhite Sox6.45.3425.9015.8255.9324.7795.9755.3995.825-0.575
Carlos Gonzalez- - -10.87.0617.6797.4067.6727.4098.7937.6257.625-3.175
Richie Martin Jr.Orioles4.54.895.3394.5145.044.8035.1445.3095.040.54
Billy Hamilton- - -9.18.2627.6777.9067.7618.2477.7538.0757.906-1.194
Isan DiazMarlins9.513.1312.71112.83712.85113.69715.34313.77713.133.63
Travis ShawBrewers13.312.61712.02811.9711.79112.8513.19813.1612.617-0.683
Bubba StarlingRoyals4.66.9316.5556.1316.5916.9287.3336.7186.7182.118
Martin PradoMarlins4.67.2587.7827.7967.8147.1876.8446.4767.2582.658
Austin HedgesPadres7.86.8317.237.4777.6657.1226.7226.6997.122-0.678
Grayson GreinerTigers5.88.1858.7248.4588.2418.0418.9618.7368.4582.658
Jose Rondon- - -78.7579.55410.549.8028.6389.4339.7019.5542.554
Sandy LeonRed Sox6.88.4368.328.1198.6068.378.0638.1678.321.52
Daniel DescalsoCubs11.913.15611.97212.31511.88413.20713.39113.413.1561.256
Mike ZuninoRays6.97.2268.1087.2117.9377.5337.6837.4057.5330.633
Eduardo NunezRed Sox2.35.5485.5975.7025.6165.5464.9945.6695.5973.297
Keon Broxton- - -8.810.1279.1588.9478.62310.3138.88310.1749.1580.358
Lewis BrinsonMarlins5.25.9466.2346.5216.5146.117.0056.5956.5141.314
Chris Owings- - -7.17.6027.7987.7187.7567.0997.1136.857.6020.502
Jeff MathisRangers6.15.0095.1885.645.5944.8284.4534.9135.009-1.091

2019 K%

NameTeamK%Extra TreesPolynomial Features, Standard Scaler, K-NeighborsStandard Scaler, Polynomial Features, K-NeighborsStandard Scaler, K-NeighborsRandom ForestStandard Scaler, Support Vector MachineXGBoostMedianMedian – Actual
Christian YelichBrewers20.323.26122.40721.7822.6623.06922.41922.0322.4192.119
Mike TroutAngels2019.00319.32919.44218.89119.19818.02719.919.198-0.802
Yordan AlvarezAstros25.523.00221.84921.46621.34523.20522.60122.60122.601-2.899
Alex BregmanAstros1215.11215.51914.62915.33415.1814.37215.08315.1123.112
Nelson CruzTwins25.127.75927.9827.30926.4827.80127.01127.85527.7592.659
David FreeseDodgers23.727.43626.7872727.40927.84427.80827.55827.4363.736
Cody BellingerDodgers16.420.28619.80219.52119.95319.52120.01920.27919.9533.553
Anthony RendonNationals13.311.59713.04912.23312.6911.90210.82610.08511.902-1.398
Ketel MarteDiamondbacks13.714.29214.4314.2214.52314.23514.07613.02514.2350.535
Mitch GarverTwins24.223.54523.87223.76923.26723.47324.51424.63223.769-0.431
Joey GalloRangers38.435.47133.15532.34933.39235.36338.56833.98533.985-4.415
George SpringerAstros20.324.4523.53423.60724.15524.77824.17424.20524.1743.874
Howie KendrickNationals13.214.52813.64613.71414.12214.74314.95315.40614.5281.328
Fernando Tatis Jr.Padres29.631.39130.39432.8730.88330.79229.68431.50430.8831.283
Juan SotoNationals2020.91321.26120.85620.80620.18420.5519.9120.8060.806
Nolan ArenadoRockies1416.73917.79417.33618.20616.3516.48415.98116.7392.739
Anthony RizzoCubs1416.87817.79817.10317.46116.9416.08916.93216.942.94
Xander BogaertsRed Sox17.519.25619.68819.07219.20118.95519.41718.42719.2011.701
Keston HiuraBrewers30.732.46531.8232.59832.22533.18931.78733.23432.4651.765
Charlie BlackmonRockies16.416.95817.03617.53916.87816.70716.69517.10716.9580.558
Freddie FreemanBraves18.420.48920.24121.24920.09520.54718.10217.90420.2411.841
J.D. MartinezRed Sox2122.29121.67921.27421.70522.25721.85821.67521.7050.705
Mark CanhaAthletics21.520.94620.77221.73721.1321.19121.37220.76321.13-0.37
Jeff McNeilMets13.216.20816.0415.91216.08315.9213.96115.24315.922.72
Bo BichetteBlue Jays23.621.74421.03921.52121.18921.56921.00220.30721.189-2.411
Peter AlonsoMets26.424.78523.74822.99323.77924.2723.9724.06923.97-2.43
Jordan LuplowIndians23.421.93121.04422.47523.30221.49822.29720.76821.931-1.469
Aaron JudgeYankees31.533.42232.44531.37631.82433.66833.55833.24133.2411.741
Eugenio SuarezReds28.525.72126.80526.69225.64325.86325.95725.64125.863-2.637
Carlos CorreaAstros23.422.37822.23522.5322.32822.67422.24622.06322.328-1.072
Mookie BettsRed Sox14.315.5515.65415.77415.00116.34314.10815.28415.551.25
Trevor StoryRockies26.522.8820.70420.60520.79622.56722.31121.82221.822-4.678
Carlos SantanaIndians15.719.61721.07119.68920.42819.53418.78318.14419.6173.917
Austin MeadowsRays22.221.07821.30822.08621.29521.65121.27320.33621.295-0.905
Kris BryantCubs22.923.30122.77522.23922.43122.85522.76321.56622.763-0.137
Yoan MoncadaWhite Sox27.528.27528.90828.37328.3428.43728.08627.98128.340.84
Miguel SanoTwins36.234.05532.07232.06332.25734.39133.87234.15733.872-2.328
Josh BellPirates19.220.98420.54720.66320.91120.9519.75519.69420.6631.463
Jorge SolerRoyals26.228.51228.03227.46728.39128.25527.77228.67528.2552.055
Josh DonaldsonBraves23.526.22127.33926.91826.4525.86926.47625.29126.452.95
Hunter PenceRangers21.826.10524.9125.59825.68326.13826.80325.30225.6833.883
Rafael DeversRed Sox1720.18419.82720.36419.55619.7319.10219.32719.732.73
DJ LeMahieuYankees13.713.67713.95614.16314.11713.63513.7814.37113.9560.256
Jose AltuveAstros1518.3316.51317.93916.6618.21217.96316.2917.9392.939
J.D. DavisMets21.424.05223.16723.08623.79824.14123.73124.09723.7982.398
Trey ManciniOrioles21.123.05322.13621.89822.22122.69122.73222.35822.3581.258
Marcus SemienAthletics13.716.96317.0816.85116.5816.98916.75116.10716.8513.151
Max MuncyDodgers25.325.6124.96524.70425.05825.88825.8824.03125.058-0.242
Mike FordYankees17.220.52321.37620.66121.10820.62620.52319.620.6263.426
Matt JoyceBraves18.922.00521.55822.17421.69421.63622.08621.64821.6942.794
Bryan ReynoldsPirates22.221.15920.31120.19820.21520.91820.99420.36920.369-1.831
Justin TurnerDodgers1615.34814.89614.52914.79915.68214.7716.38214.896-1.104
Giovanny UrshelaYankees18.318.60218.34318.86818.48718.43717.63517.96818.4370.137
Ronald Acuna Jr.Braves26.324.84824.2123.6524.17324.50124.30724.46424.307-1.993
Will SmithDodgers26.522.96323.68524.33523.7623.2523.34122.83123.341-3.159
Dominic SmithMets22.322.49221.920.82521.39222.41222.18421.48121.9-0.4
Willson ContrerasCubs24.927.22724.75124.98424.97527.45827.06827.54927.0682.168
Matt OlsonAthletics25.223.81324.01927.01324.73724.22823.86524.29824.228-0.972
Ian HappCubs2525.66924.75323.8224.25625.61525.78825.225.20.2
Brad Miller- - -26.526.47627.98528.36126.82826.51225.86625.35626.5120.012
Michael BrantleyAstros10.49.6610.20210.26310.1559.3229.75910.73410.155-0.245
Corey Dickerson- - -20.122.47321.85821.59321.63522.45921.16921.921.8581.758
Bryce HarperPhillies26.129.0626.7627.07826.69528.29327.57628.62227.5761.476
Yuli GurrielAstros10.612.46412.0712.33812.20612.51112.34512.3312.3381.738
David DahlRockies26.624.99924.33524.26825.20224.97125.51424.84624.971-1.629
Mike TauchmanYankees2419.17118.5518.78918.88418.97818.84518.50418.845-5.155
Tim AndersonWhite Sox2120.60719.90118.15818.76220.15118.57219.1919.19-1.81
Cameron MaybinYankees26.826.24925.65125.06225.51926.36426.05525.84725.847-0.953
Edwin Encarnacion- - -21.222.56122.23221.10522.51922.40622.83622.94922.5191.319
Joc PedersonDodgers21.621.23420.7920.80920.9821.11920.84920.95520.955-0.645
Yasmani GrandalBrewers2223.64224.1824.74724.19223.43223.89622.96823.8961.896
Luis ArraezTwins7.99.48310.74710.62710.7759.497.23210.21510.2152.315
Aristides AquinoReds26.730.3327.28224.72527.35130.98228.8829.88628.882.18
Hunter DozierRoyals25.324.32724.86124.39223.83724.71223.82223.27624.327-0.973
Luke VoitYankees27.831.58729.78430.18429.36132.92830.34132.98530.3412.541
Gleyber TorresYankees21.423.10721.92122.2722.30922.21422.421.62322.270.87
Wilmer FloresDiamondbacks10.910.64911.42612.36911.68810.5510.3810.95910.9590.059
Andrew McCutchenPhillies2124.18424.05724.23223.82823.9425.86425.56424.1843.184
Michael ConfortoMets2323.24322.20722.40722.31922.82122.82222.26722.407-0.593
Lourdes Gurriel Jr.Blue Jays25.128.50526.33826.06926.80327.67428.61927.84427.6742.574
Nicholas Castellanos- - -21.522.57323.0922.48722.60522.01721.17821.06322.4870.987
Kyle SchwarberCubs25.625.17925.78426.31925.82825.12224.87824.0225.179-0.421
Tommy EdmanCardinals17.516.23716.69316.83916.75616.82616.42416.32216.693-0.807
Ramon LaureanoAthletics25.625.26825.55224.12725.27925.6125.34524.91925.279-0.321
Trea TurnerNationals19.920.21119.71719.24819.72820.23120.01218.64819.728-0.172
Max KeplerTwins16.617.4317.96218.48217.83116.81716.14715.83117.430.83
Tom MurphyMariners3127.05527.04427.23827.10926.86927.28326.82727.055-3.945
Matt ChapmanAthletics21.921.46420.72721.220.45921.4521.59722.11221.45-0.45
Brandon LoweRays34.632.22430.65430.830.52933.62232.60732.90132.224-2.376
Ryan BraunBrewers20.721.36721.84321.36321.37721.35320.27319.62621.3630.663
Ozzie AlbiesBraves1618.46117.91318.27718.39618.19617.05816.0718.1962.196
Eric ThamesBrewers30.528.8828.22726.09327.77128.25527.95428.18728.187-2.313
Shin-Soo ChooRangers2527.53828.35128.63328.80628.07428.16228.52928.3513.351
Starling MartePirates1620.98320.63320.9120.50520.53719.81419.80420.5374.537
Mike YastrzemskiGiants2623.97223.2223.04922.90423.77723.53223.25123.251-2.749
Jorge PolancoTwins16.515.21814.54714.92614.92815.04815.37714.84914.928-1.572
Shohei OhtaniAngels25.922.73422.21420.66122.84222.41622.27222.35422.354-3.546
Danny SantanaRangers29.525.2824.40225.33824.49125.06725.48824.6125.067-4.433
Tommy La StellaAngels8.710.99311.60111.03912.21611.07311.811.67911.6012.901
Jesse WinkerReds15.616.0715.19715.51415.21316.04715.56415.13815.514-0.086
Willie CalhounRangers15.712.88812.73212.57812.38812.83612.73412.41412.732-2.968
Francisco LindorIndians1513.02112.91812.40712.69412.9512.22312.55312.694-2.306
Tommy PhamRays18.820.2821.11921.12921.25520.23819.94319.66920.281.48
Mike MoustakasBrewers16.819.97918.83919.40718.84319.52418.67619.02519.0252.225
Ji-Man ChoiRays22.223.21424.09423.86723.53622.67523.60123.30623.5361.336
Mitch MorelandRed Sox22.124.22123.49824.19323.923.0324.24222.7723.91.8
Javier BaezCubs27.829.56427.22826.11226.98530.83229.35931.30129.3591.559
Rhys HoskinsPhillies24.521.2822.01622.27222.03621.56821.75121.2921.751-2.749
Gary SanchezYankees2826.75325.89224.76325.85426.88627.60826.44126.441-1.559
Paul GoldschmidtCardinals24.323.1621.60621.68622.07222.98323.1523.19422.983-1.317
Donovan SolanoGiants21.516.36915.35815.84915.51616.59816.25516.99116.255-5.245
Christian WalkerDiamondbacks25.723.73522.92522.01623.4523.0523.33323.11123.111-2.589
Aledmys DiazAstros11.318.09518.18618.34118.09917.92317.30417.61318.0956.795
Omar NarvaezMariners19.119.2519.47420.29119.72919.01318.87818.74119.250.15
Brett GardnerYankees19.618.42520.64620.94119.11918.58918.41518.3718.589-1.011
Jose AbreuWhite Sox21.921.18121.50421.71621.55421.41720.36720.64121.417-0.483
Jake CaveTwins31.128.08128.15427.1527.09627.64726.70727.12127.15-3.95
Eloy JimenezWhite Sox26.628.16227.50327.44527.38727.75127.88528.64227.7511.151
Cavan BiggioBlue Jays28.62524.39623.91223.88924.40825.89826.16224.408-4.192
Brian AndersonMarlins21.922.67822.88322.33222.44622.76323.37923.38322.7630.863
Eric Sogard- - -14.312.01313.612.69213.1611.85112.38612.84412.692-1.608
Adam EatonNationals16.215.73215.37716.13915.48615.72915.53315.49815.533-0.667
Alex VerdugoDodgers1314.50114.5914.76614.52315.0414.53514.38314.5351.535
Yandy DiazRays17.619.42220.11219.88220.05219.20819.17818.81719.4221.822
Eduardo EscobarDiamondbacks18.620.93621.59622.11821.84421.47320.16920.77521.4732.873
Alex Dickerson- - -22.119.26119.69818.919.59418.94519.04718.80119.047-3.053
Corey SeagerDodgers18.121.09921.28721.30320.9521.20920.10719.8421.0992.999
Byron BuxtonTwins23.123.6523.4492323.10522.91624.09123.33723.3370.237
Whit MerrifieldRoyals17.117.48517.01617.25617.74417.17816.82716.8217.1780.078
J.T. RealmutoPhillies20.719.55119.51118.92519.04219.09419.18118.78219.094-1.606
Brandon NimmoMets2825.7424.67524.64824.39126.35325.74525.65225.652-2.348
Kevin NewmanPirates11.712.16812.34912.23512.32412.0211.23611.36512.1680.468
Carson KellyDiamondbacks21.620.77220.92720.71320.67320.63220.72520.28220.713-0.887
Franmil Reyes- - -28.531.96131.56231.89131.43432.63131.16132.08331.8913.391
Victor CaratiniCubs21.120.1720.01919.87319.36719.64819.56918.95919.648-1.452
David PeraltaDiamondbacks20.621.47420.92922.00921.24121.38920.50721.06921.2410.641
Marcell OzunaCardinals20.823.39422.80221.4622.11823.7123.16523.27223.1652.365
Kurt SuzukiNationals11.716.3916.32516.6516.62216.4915.97215.33816.394.69
Austin NolaMariners23.621.44521.42722.6321.81721.61921.65920.62321.619-1.981
Garrett CooperMarlins26.119.66221.00122.35620.81819.65319.70218.56919.702-6.398
Robinson ChirinosAstros28.629.38628.96528.37329.59429.12129.01928.34629.0190.419
Pablo SandovalGiants22.622.59323.16123.19722.99922.39321.61221.21922.593-0.007
David BoteCubs26.127.84929.15927.91728.46527.80628.03528.96628.0351.935
Jonathan VillarOrioles24.622.91923.06823.62223.57422.51122.85322.25522.919-1.681
Manny MachadoPadres19.420.86519.25520.24319.71120.65220.49120.2420.2430.843
Jose RamirezIndians13.713.46214.02313.14313.43813.79813.06913.15213.438-0.262
Avisail GarciaRays23.627.10125.68125.50925.89927.1726.01626.51626.0162.416
Phillip ErvinReds24.225.07824.59925.16524.67724.48424.55724.15924.5990.399
Derek DietrichReds24.225.83524.7724.58824.76125.70725.78124.65624.770.57
Kolten WongCardinals15.114.60314.96315.67615.39914.2614.33114.21414.603-0.497
Shed LongMariners23.822.97623.56822.0623.77322.89623.2923.58723.29-0.51
Clint FrazierYankees28.529.43329.9728.64429.3928.41828.99428.78728.9940.494
Brock HoltRed Sox19.316.47615.66815.70915.73916.42216.75617.19316.422-2.878
Daniel VogelbachMariners26.723.79924.46424.28623.93623.57626.53625.65924.286-2.414
A.J. PollockDodgers21.623.48722.47222.30721.70923.26622.85223.59622.8521.252
James McCannWhite Sox28.825.60225.94925.19425.33925.34725.33625.33625.339-3.461
Brian GoodwinAngels28.225.08624.87924.28824.32625.16726.13825.70425.086-3.114
Nick MarkakisBraves12.611.50412.00311.8312.29811.42611.64511.59311.645-0.955
Joey VottoReds20.217.6917.07717.24217.04217.65117.46517.33817.338-2.862
Kyle SeagerMariners19.418.37918.78919.23218.83818.11517.93718.13118.379-1.021
Christian VazquezRed Sox19.417.34516.25617.29116.48717.07517.29817.46917.291-2.109
Stephen VogtGiants23.622.52822.26922.59822.21922.4121.64821.85922.269-1.331
Asdrubal Cabrera- - -2018.38517.83519.05817.79818.69517.86918.26318.263-1.737
Chris TaylorDodgers27.828.77229.26328.59628.78929.0427.91627.53128.7720.972
Yasiel Puig- - -21.823.04622.19321.66122.22922.29522.65422.39722.2950.495
Tyler NaquinIndians22.421.73621.57421.81821.62321.90421.44921.08221.623-0.777
Kole CalhounAngels25.628.66928.22728.04627.53128.21227.98528.57128.2122.612
Ryan McMahonRockies29.728.13627.10227.29227.19728.15727.49127.21827.292-2.408
Andrew BenintendiRed Sox22.821.01220.61920.50820.14521.03819.45819.73320.508-2.292
Brian DozierNationals21.823.36522.82923.07222.89523.46623.33622.32123.0721.272
Vladimir Guerrero Jr.Blue Jays17.721.0219.93920.22520.48620.68720.09720.50520.4862.786
Scott KingeryPhillies29.428.46727.32526.01226.84328.45127.83728.30627.837-1.563
Eddie RosarioTwins14.617.54218.24517.34217.98517.84215.38715.82717.5422.942
Nathaniel LoweRays29.621.33720.53420.54520.00321.22621.09720.63720.637-8.963
Todd FrazierMets21.223.42723.79823.81823.423.72222.97723.03523.4272.227
Jason CastroTwins3234.10831.99233.42932.38734.10733.24533.09733.2451.245
Daniel MurphyRockies15.511.17311.23411.24211.27710.95210.70310.88311.173-4.327
Ian DesmondRockies24.722.13322.63420.49522.01222.17422.64621.92722.133-2.567
Jason HeywardCubs18.719.12919.4919.42619.72518.97918.36717.67219.1290.429
Mike FreemanIndians28.623.16323.50423.22123.68523.82622.91723.22323.223-5.377
Wilson RamosMets13.215.90915.88116.40717.22415.69315.74315.1815.8812.681
Nomar MazaraRangers2322.67422.80722.78722.79622.73622.57523.0622.787-0.213
Jon BertiMarlins25.423.34423.65223.8324.0223.2523.14622.41223.344-2.056
Domingo SantanaMariners32.329.94629.58730.7129.67529.90629.24330.63329.906-2.394
Ehire AdrianzaTwins16.915.37216.57515.79116.35715.08815.24715.08915.372-1.528
Dexter FowlerCardinals24.723.24324.07922.35223.85722.94823.52122.18723.243-1.457
Roberto PerezIndians28.328.59327.16827.16826.85927.75429.00426.75327.168-1.132
Mitch HanigerMariners28.626.44927.2727.1826.21426.83926.20626.926.839-1.761
Aaron HicksYankees28.228.63928.66127.58928.32428.0428.81928.43728.4370.237
C.J. CronTwins21.422.40422.65722.51922.82422.58321.57122.36622.5191.119
Teoscar HernandezBlue Jays3329.66928.24527.93327.86728.49329.03828.62528.493-4.507
Victor ReyesTigers21.917.43217.97419.34518.27317.71216.79716.69517.712-4.188
Jonathan SchoopTwins2526.3425.51624.9225.53826.7625.71825.70425.7040.704
Matt BeatyDodgers12.314.99115.7415.79216.28515.16914.56114.6215.1692.869
Justin SmoakBlue Jays21.222.18422.33521.72422.17822.64221.82521.79322.1780.978
Alex AvilaDiamondbacks33.833.99631.81733.12331.37634.40535.44535.7933.9960.196
Michael ChavisRed Sox33.233.28832.57932.92732.51933.47232.88533.10932.927-0.273
Renato NunezOrioles23.923.54623.63622.33623.03523.42423.2723.61723.424-0.476
Jose MartinezCardinals2220.81920.58121.43420.50220.47420.99919.67420.581-1.419
Evan LongoriaGiants2221.91221.93720.94322.21822.4122.20322.35822.2030.203
Paul DeJongCardinals22.421.4321.47520.92821.54321.23121.14620.87421.231-1.169
Anthony SantanderOrioles21.216.93417.3315.33615.47916.58916.20915.71116.209-4.991
Oscar MercadoIndians17.421.6420.87520.28120.52421.4719.3719.12220.5243.124
Austin SlaterGiants30.729.33128.92329.43829.45528.74729.43129.55729.431-1.269
Adam FrazierPirates12.312.64412.67912.96112.25112.62612.52711.95512.6260.326
Hunter RenfroePadres31.226.46925.94326.26225.83226.28127.10726.25826.262-4.938
Jose OsunaPirates16.818.89418.73519.40118.94318.44618.00418.01318.7351.935
Neil WalkerMarlins20.222.95220.19421.38920.922.76422.17121.88321.8831.683
Brandon BeltGiants20.618.50819.28318.3918.68917.97617.72717.56318.39-2.21
Alex GordonRoyals15.817.88217.77217.77617.47817.61517.59117.87917.7721.972
Chance SiscoOrioles30.826.31526.42927.38527.12726.21626.04124.68826.315-4.485
Greg GarciaPadres22.316.29816.43316.1216.11716.96816.21817.28816.298-6.002
Miguel CabreraTigers19.720.22421.45722.23221.54519.85519.69619.62420.2240.524
Hanser AlbertoOrioles9.112.27315.35915.66615.31412.13610.52612.23512.2733.173
Amed RosarioMets18.920.80221.60921.96321.55820.56819.55720.5320.8021.902
Ender InciarteBraves17.816.84817.17417.37217.0716.67416.18616.13816.848-0.952
Jay Bruce- - -24.624.92324.8324.19925.12325.06424.57923.06124.830.23
David FletcherAngels9.810.97314.60614.4814.65910.72512.00912.95512.9553.155
Dansby SwansonBraves22.825.00825.37826.24425.76925.26724.00723.95825.2672.467
Francisco MejiaPadres2321.78321.35420.31721.2222.25521.37921.19221.354-1.646
Victor RoblesNationals22.720.14520.45819.98820.31419.70519.92620.01620.016-2.684
Wil MyersPadres34.330.23928.79527.74528.44529.38730.60231.56429.387-4.913
Josh VanMeterReds21.521.13321.60721.1621.64521.16121.76720.27221.161-0.339
Pedro SeverinoOrioles21.420.58820.43118.83920.02820.08820.0220.04820.048-1.352
Trent GrishamBrewers26.221.6922.12122.35622.10921.27622.36622.07622.109-4.091
Curt CasaliReds2520.92719.97420.04819.8820.48920.62319.86320.048-4.952
Niko GoodrumTigers29.227.6626.73925.53325.31327.76927.4527.98727.45-1.75
Cesar HernandezPhillies1514.8615.2214.8215.21614.72215.24915.23715.2160.216
Colin MoranPirates23.320.77220.79120.89720.76820.43719.37919.66520.768-2.532
Jean SeguraPhillies11.812.6512.77713.03212.81313.03812.90313.51212.9031.103
Austin RomineYankees20.817.55416.73316.9617.19317.43617.10718.26817.193-3.607
Nick SenzelReds24.421.29320.04920.921.03620.81120.41620.84120.841-3.559
Tim BeckhamMariners31.128.74828.35726.68628.45229.46728.31928.48828.452-2.648
Matt CarpenterCardinals26.223.622.5422.4222.59423.58723.6122.84122.841-3.359
Nick AhmedDiamondbacks18.118.65819.35119.58919.6718.23118.31818.36618.6580.558
Jordy MercerTigers2119.89520.12220.51120.41220.08720.73520.49320.412-0.588
Travis d'Arnaud- - -21.723.323.38123.92423.98423.31323.50323.91923.5031.803
Tim LocastroDiamondbacks17.619.39919.76520.40419.86119.70720.39920.61619.8612.261
Jackie Bradley Jr.Red Sox27.329.63729.51129.52728.97329.78129.15829.21429.5112.211
Ryan ZimmermanNationals20.523.62423.90224.13223.94223.42324.2721.82523.9023.402
Marwin GonzalezTwins21.220.85221.80421.36921.61621.04420.46320.67621.044-0.156
Willy AdamesRays26.223.9523.08223.52723.14523.26623.63723.73223.527-2.673
Jorge AlfaroMarlins33.131.49827.70126.96927.43131.70330.77730.88230.777-2.323
Adeiny Hechavarria- - -21.720.90120.01919.14619.85521.07821.03821.35920.901-0.799
JaCoby JonesTigers28.222.13721.2320.87721.29122.23523.15323.31322.137-6.063
Brian McCannBraves16.816.07516.33116.54916.26416.21615.7114.68516.216-0.584
Tyler FlowersBraves33.933.60733.03132.82732.64934.56732.91335.44233.031-0.869
Eric HosmerPadres24.423.89623.01122.35722.84823.53823.37422.46223.011-1.389
Adam HaseleyPhillies24.824.21523.68123.95923.22823.92323.95722.96423.923-0.877
Albert PujolsAngels12.516.06816.99117.22916.90716.04216.35815.60316.3583.858
Harold RamirezMarlins20.420.84421.44521.04521.36520.56119.75820.58520.8440.444
Adam JonesDiamondbacks19.122.72922.42122.64323.05622.37322.19721.72122.4213.321
Ben GamelBrewers29.220.90721.91621.48621.36321.09321.52219.95621.363-7.837
Rowdy TellezBlue Jays28.426.2524.84524.4825.02326.08927.32925.66225.662-2.738
Robinson CanoMets16.314.97914.72716.615.60514.86314.15214.01114.863-1.437
Tyler O'NeillCardinals35.135.0633.67933.8232.94834.54836.22533.68433.82-1.28
Manny PinaBrewers27.923.4224.01324.96424.97923.60223.71723.59523.717-4.183
Josh ReddickAstros1212.29611.04310.54511.23712.41310.92312.05911.237-0.763
Ryon HealyMariners21.422.52622.89822.09422.6322.87422.21922.14522.5261.126
Freddy Galvis- - -24.623.5223.24823.17323.09623.28623.45922.77523.248-1.352
Jesus Aguilar- - -2223.32722.52422.28623.03122.99723.40823.11823.0311.031
Justin UptonAngels30.530.69531.32931.45531.07931.43830.95231.48631.3290.829
Austin RileyBraves36.433.54228.40627.33928.75633.02232.2231.4731.47-4.93
Raimel TapiaRockies22.422.4723.47623.54723.34123.16821.57521.84223.1680.768
Randal GrichukBlue Jays2623.03823.76623.18523.1622.71322.82822.61723.038-2.962
Starlin CastroMarlins16.415.58715.35415.19115.10315.26815.6215.4115.354-1.046
Matt AdamsNationals34.528.5728.7129.02728.5927.87528.07428.09128.57-5.93
Stephen PiscottyAthletics21.424.94124.23423.79624.00525.00625.12124.71524.7153.315
Josh NaylorPadres22.919.18120.13619.06519.35419.419.13418.75519.181-3.719
Jose IglesiasReds13.212.33715.20314.53215.41912.212.4411.87812.44-0.76
Ronald GuzmanRangers29.526.35626.16125.83525.41126.35826.51225.27726.161-3.339
Kevan SmithAngels17.517.64217.86117.82717.69417.78918.03217.38117.7890.289
Gregory PolancoPirates29.324.98424.00522.60123.68524.78725.09623.24824.005-5.295
Miguel RojasMarlins11.814.38914.32314.13914.28614.57315.01615.61514.3892.589
Brandon DixonTigers32.431.60131.40832.12431.36832.67231.02532.3631.601-0.799
Chris IannettaRockies32.932.88430.05430.53430.35232.57733.58733.07832.577-0.323
Matt ThaissAngels31.727.63727.34827.15827.69526.96927.89226.35727.348-4.352
Ben ZobristCubs13.616.17815.97617.15715.67116.86416.52217.01616.5222.922
Yadier MolinaCardinals12.815.91716.53517.6417.06815.60615.19616.25916.2593.459
Lorenzo CainBrewers1717.6316.60217.05916.28417.71416.86317.4917.0590.059
Rougned OdorRangers30.625.42425.24823.23325.28125.04224.85624.92125.042-5.558
Enrique HernandezDodgers21.121.28419.95719.20320.32921.15321.44120.59420.594-0.506
Jurickson ProfarAthletics14.517.96418.07318.38317.67917.7816.81516.39617.783.28
Jason KipnisIndians17.218.59918.70819.41818.09518.43817.58218.41218.4381.238
Melky CabreraPirates10.312.47112.40311.71612.39412.56610.92911.72112.3942.094
Tucker BarnhartReds22.820.59620.32320.00820.3820.53220.56420.71420.532-2.268
Ildemaro VargasDiamondbacks11.411.12412.1411.71311.94111.12911.39510.82611.395-0.005
Elvis AndrusRangers14.817.80719.45618.45918.65117.96618.17317.53318.1733.373
Dwight Smith Jr.Orioles20.925.02425.08324.61124.59325.3725.25225.69825.0834.183
Matt DuffyRays17.217.93819.03418.14218.47718.10617.63716.9718.1060.906
Robbie GrossmanAthletics17.816.59517.83617.32617.33117.05615.43616.28917.056-0.744
Dylan MooreMariners3324.44225.22223.90824.67424.09424.82424.74224.674-8.326
Tyler Austin- - -37.434.43532.21131.83231.99734.49734.23934.534.239-3.161
Luis RengifoAngels22.923.2823.42723.44623.71923.61723.45624.08523.4560.556
Logan ForsytheRangers27.221.22122.54721.55222.52521.62223.04322.36522.365-4.835
Yan GomesNationals23.522.0723.01322.95622.73222.19221.79621.67622.192-1.308
Adalberto MondesiRoyals29.832.23328.28225.82428.52233.1232.36731.52131.5211.721
Chad PinderAthletics23.821.81920.74920.5821.121.61420.64820.52920.749-3.051
Ryan GoinsWhite Sox2723.58724.2522.35823.93323.62324.95824.6323.933-3.067
Buster PoseyGiants1616.6715.78915.77615.47816.22316.0915.81215.812-0.188
Kevin Pillar- - -13.814.65316.72817.14917.09114.4712.59613.59914.6530.853
Didi GregoriusYankees15.418.12918.32818.87219.33818.21416.64216.55718.2142.814
Jacob StallingsPirates1921.89723.24822.83722.83121.67321.12820.821.8972.897
Jake LambDiamondbacks24.324.15424.64923.83323.43724.82523.91623.57423.916-0.384
Addison RussellCubs24.126.47426.33426.3826.56226.28827.02326.3126.382.28
Jake MarisnickAstros29.923.18522.99822.49122.51822.38323.11222.61222.612-7.288
Ty FrancePadres24.419.66520.68220.90920.77519.14719.57918.55919.665-4.735
Jake BauersIndians27.221.37521.33621.27221.64321.42321.05420.86121.336-5.864
J.P. CrawfordMariners2119.46518.67519.39418.7319.80319.04719.11819.118-1.882
Manuel MargotPadres2019.50920.10120.53420.88219.83919.66719.619.839-0.161
Adam EngelWhite Sox31.529.79129.90329.79629.07430.40529.1131.20229.796-1.704
Russell MartinDodgers24.126.02225.63425.72425.60526.07527.00127.23326.0221.922
Delino DeShieldsRangers24.520.52521.07221.17520.89620.60620.96120.11820.896-3.604
Leury GarciaWhite Sox22.521.07219.4418.71119.24320.63520.26520.69620.265-2.235
Luis UriasPadres22.521.73121.93422.51122.18522.29121.89422.62522.185-0.315
Rio RuizOrioles21.321.92420.49720.84820.76621.79321.35421.94321.3540.054
Christin StewartTigers24.823.6223.01222.22322.67423.48223.43923.00123.012-1.788
Harrison BaderCardinals28.824.08524.31523.85924.46324.27724.78324.18224.277-4.523
Harold CastroTigers23.320.46420.22121.6121.55120.72920.31720.36720.464-2.836
Matt WietersCardinals25.721.66820.7582120.93621.45121.43821.44621.438-4.262
Garrett HampsonRockies26.921.21222.2922.33521.91521.25121.74321.02821.743-5.157
Billy McKinneyBlue Jays26.422.86721.75621.09621.6423.31823.02222.84822.848-3.552
Josh PhegleyAthletics18.420.56320.52519.48320.0820.79220.58619.97520.5252.125
Guillermo HerediaRays2623.62422.31622.27322.72723.36823.48222.86522.865-3.135
Joey Rickard- - -26.520.4219.73620.05619.59220.09120.09420.50420.091-6.409
Andrelton SimmonsAngels8.712.66411.82811.77611.6312.48311.82412.02511.8283.128
Tony WoltersRockies16.517.8616.8717.44317.0217.7917.04917.68817.4430.943
Khris DavisAthletics27.430.26829.21728.59528.60130.03228.77429.15829.1581.758
Kyle FarmerReds29.925.43824.54724.64924.15525.34426.38226.52525.344-4.556
Willians AstudilloTwins3.99.26912.39222.55712.3329.2843.3657.6349.2845.384
Martin Maldonado- - -2321.45921.29920.59621.0721.83721.70721.70421.459-1.541
Gerardo Parra- - -19.619.17619.45919.84919.71118.70618.93518.28519.176-0.424
Cheslor CuthbertRoyals20.320.16920.76820.30720.62519.86820.21520.24720.247-0.053
Welington CastilloWhite Sox29.526.40325.7928.72626.9726.51226.83725.93626.512-2.988
Steve WilkersonOrioles29.923.97823.43824.03622.74723.5223.80824.17323.808-6.092
Jonathan Lucroy- - -15.515.54416.68416.67216.84515.71215.47116.46716.4670.967
Tony Kemp- - -16.815.87315.2915.75915.94616.28516.19116.59715.946-0.854
Francisco Cervelli- - -25.623.65724.29824.76624.83324.09224.0824.68424.298-1.302
Derek Fisher- - -34.133.85332.42931.90132.45933.7235.31135.00333.72-0.38
Kevin KiermaierRays21.721.08920.27820.25520.72421.14420.60921.03520.724-0.976
Joe Panik- - -9.610.46610.97110.62711.33810.5419.51910.17310.5410.941
Jeimer CandelarioTigers25.623.18422.89221.98122.83423.02523.66622.43122.892-2.708
Ronny RodriguezTigers27.931.36627.96626.6327.82131.1932.31933.5931.193.29
Dee GordonMariners14.513.57913.9914.84614.47913.87313.04113.05313.873-0.627
Andrew KnappPhillies31.925.55923.82623.53924.14725.32825.72325.54425.328-6.572
Maikel FrancoPhillies14.317.3617.20118.05117.75217.00717.37717.16417.363.06
Yolmer SanchezWhite Sox21.120.22319.99620.14519.72320.24719.71619.47319.996-1.104
Brandon CrawfordGiants20.923.16522.47921.77222.46822.49122.76622.04922.4791.579
Yairo MunozCardinals20.422.60322.58122.89922.49522.52221.73422.83822.5812.181
Jarrod DysonDiamondbacks1919.66420.07220.2620.09720.04619.56319.96120.0461.046
Ryan CordellWhite Sox27.928.47427.57627.86326.89827.62428.01226.79727.624-0.276
Josh RojasDiamondbacks26.125.44926.81126.55626.48825.44625.8525.44925.85-0.25
Johan CamargoBraves17.320.87221.33622.05621.43420.3619.72919.49720.8723.572
Ryan O'HearnRoyals26.822.38921.73520.9121.13322.58122.34822.60222.348-4.452
Mallex SmithMariners24.925.78725.81225.26624.80425.85225.64924.90225.6490.749
Yonder Alonso- - -20.920.59320.84319.96719.96520.59220.6720.27620.592-0.308
Ian KinslerPadres19.217.51217.16718.72317.99117.28817.24317.71117.512-1.688
Austin DeanMarlins24.918.09519.88417.37518.65717.95817.79117.68617.958-6.942
Jon JayWhite Sox16.513.46313.87114.37714.21913.45213.44413.73613.736-2.764
Curtis GrandersonMarlins2723.123.14522.81522.94423.22923.31122.12423.1-3.9
Joey WendleRays17.917.5817.84517.95918.32517.87917.67717.70917.845-0.055
Danny JansenBlue Jays20.617.41315.77917.74517.14517.53517.03716.57917.145-3.455
Daniel RobertsonRays24.920.03720.33119.90919.61320.04520.17919.98820.037-4.863
Gordon BeckhamTigers28.324.67523.98624.124.02824.2924.92824.81824.29-4.01
Greg AllenIndians20.720.93722.57322.20322.35320.61221.48921.28721.4890.789
Tyler White- - -2821.06721.49721.30921.63921.34721.26421.86321.347-6.653
Kevin PlaweckiIndians17.817.00916.55817.59517.2616.67916.84217.60617.009-0.791
Sam TravisRed Sox22.918.28117.67916.88418.02817.9517.93317.78117.933-4.967
Travis DemeritteTigers33.929.64631.2632.7332.29630.30831.07231.4431.26-2.64
Jose PerazaReds14.413.41514.11814.28714.17413.20611.62713.07713.415-0.985
Isiah Kiner-FalefaRangers22.118.39518.85319.57118.73818.46318.4318.16218.463-3.637
Dawel LugoTigers20.517.67217.84918.2318.58318.01318.07718.36318.077-2.423
Austin BarnesDodgers23.121.12121.96321.65921.59621.45421.76421.60821.608-1.492
Brandon DruryBlue Jays25.324.05922.30422.05322.55823.91724.48924.28723.917-1.383
Albert Almora Jr.Cubs17.120.91221.76920.68121.33320.90619.75520.31620.9063.806
Hernan PerezBrewers26.822.64321.60922.43122.91322.81422.74722.38422.643-4.157
Leonys MartinIndians29.528.78728.73628.45928.14828.40228.20729.61428.459-1.041
Orlando ArciaBrewers2021.64121.13621.05821.30322.40621.27222.73321.3031.303
Mark ReynoldsRockies35.234.31332.43832.19632.40434.6835.18434.7534.313-0.887
Justin BourAngels30.625.84125.52825.24125.03825.73126.36525.04325.528-5.072
Marco HernandezRed Sox27.130.04327.18826.92227.19531.42729.52831.06229.5282.428
Steven DuggarGiants27.824.41524.20823.21224.10625.04824.08825.55624.208-3.592
Elias DiazPirates16.920.2119.04818.44919.11820.23719.44618.83319.1182.218
Cole TuckerPirates25.222.61721.72621.30121.77622.25721.96821.41321.776-3.424
Kendrys Morales- - -12.916.41116.63116.12416.39517.00415.10715.29316.3953.495
Chris DavisOrioles39.534.46332.67932.45332.6734.38336.22434.6334.383-5.117
Erik GonzalezPirates23.725.21224.36824.66124.4124.85524.2323.92224.410.71
Pablo ReyesPirates22.919.76819.38720.4619.6819.16319.14819.38419.387-3.513
Nicky LopezRoyals12.712.4213.36513.6913.29612.28712.1611.82412.42-0.28
John HicksTigers32.729.67826.91926.8726.97231.49130.32931.05529.678-3.022
Juan LagaresMets26.320.85820.97121.87621.04921.26120.74820.52520.971-5.329
Jung Ho KangPirates32.432.43933.59233.24233.2631.73131.47332.68832.6880.288
Charlie TilsonWhite Sox24.221.49120.82520.64120.25821.95221.73222.28421.491-2.709
Carlos Gonzalez- - -31.331.6930.35429.4629.45631.57130.02931.67430.354-0.946
Richie Martin Jr.Orioles26.924.16723.2825.12724.49424.39124.14324.50924.391-2.509
Billy Hamilton- - -24.621.14821.1820.77521.19521.71121.36622.56121.195-3.405
Isan DiazMarlins29.425.41325.06825.82225.58625.44825.85525.51525.515-3.885
Travis ShawBrewers3326.75428.38427.75328.36726.39727.62725.72627.627-5.373
Bubba StarlingRoyals28.427.81527.63228.23327.48126.77526.73826.17127.481-0.919
Martin PradoMarlins15.813.10214.89514.41615.17713.14113.23513.34613.346-2.454
Austin HedgesPadres31.429.79828.71826.54628.70828.97829.0929.49228.978-2.422
Grayson GreinerTigers31.328.26427.74626.55227.53628.43428.52629.24428.264-3.036
Jose Rondon- - -24.222.38822.2922.9422.28222.66122.64422.63422.634-1.566
Sandy LeonRed Sox24.618.06817.96617.3317.34318.45717.87317.64317.873-6.727
Daniel DescalsoCubs29.427.05328.39927.42527.61326.93727.97527.26127.425-1.975
Mike ZuninoRays33.933.41632.28832.20932.50133.95133.33533.19433.194-0.706
Eduardo NunezRed Sox15.515.07515.18915.94915.23815.05113.88515.14315.143-0.357
Keon Broxton- - -45.635.85934.78535.77934.95836.21943.24836.89935.859-9.741
Lewis BrinsonMarlins29.826.76725.44525.92425.07926.57526.69526.66826.575-3.225
Chris Owings- - -39.832.50832.22332.3832.54932.7232.78933.84532.549-7.251
Jeff MathisRangers35.731.27430.47431.09431.05731.06631.7632.01231.094-4.606

Let us look at the top 3 over and under predictions using the median of the machine learning predictions.

2019 BB% Maximum Prediction Errors

NameTeamBB%MedianMedian – ActualO-Swing%Z-Swing%Swing%O-Contact%Z-Contact%Contact%Zone%F-Strike%SwStr%K%
Brandon NimmoMets18.113.672-4.42820.0 %65.8 %40.3 %52.1 %83.6 %74.9 %44.4 %57.5 %10.1 %28.0 %
Bryce HarperPhillies14.510.147-4.35331.6 %77.3 %48.3 %52.2 %79.7 %68.3 %36.4 %59.5 %15.3 %26.1 %
Ender InciarteBraves11.37.312-3.98831.3 %70.0 %49.0 %73.2 %87.2 %82.4 %45.8 %54.4 %8.7 %17.8 %
Clint FrazierYankees6.512.1295.62925.0 %70.3 %44.1 %43.3 %82.7 %69.8 %42.1 %58.1 %13.3 %28.5 %
Garrett HampsonRockies7.311.9794.67923.0 %60.7 %39.6 %59.9 %88.2 %79.0 %44.0 %56.6 %8.3 %26.9 %
Cole TuckerPirates6.310.4794.17929.4 %74.5 %47.9 %62.0 %83.2 %75.5 %41.0 %58.5 %11.7 %25.2 %

2019 K% Maximum Prediction Errors

NameTeamK%MedianMedian – ActualO-Swing%Z-Swing%Swing%O-Contact%Z-Contact%Contact%Zone%F-Strike%SwStr%BB%
Keon Broxton- - -45.635.859-9.74126.4 %67.7 %45.0 %39.7 %65.4 %57.1 %45.0 %69.3 %19.3 %8.8 %
Nathaniel LoweRays29.620.637-8.96330.0 %67.9 %44.8 %57.8 %89.3 %76.4 %39.1 %55.0 %10.6 %7.7 %
Dylan MooreMariners3324.674-8.32626.4 %67.0 %44.0 %61.5 %81.3 %74.6 %43.3 %59.9 %11.2 %8.9 %
Aledmys DiazAstros11.318.0956.79527.8 %68.0 %45.1 %62.2 %92.1 %81.6 %43.0 %57.5 %8.3 %10.5 %
Willians AstudilloTwins3.99.2845.38442.7 %83.3 %59.0 %84.8 %97.5 %92.0 %40.3 %64.7 %4.7 %2.5 %
Kurt SuzukiNationals11.716.394.6932.4 %75.4 %51.9 %67.9 %89.4 %82.1 %45.2 %64.1 %9.3 %6.5 %

For the calibration data, the mean BB% and K% are 8.327% and 21.085% respectively. Regression algorithms bias their predictions towards the mean when using mean squared error as the variable to maximize. So we expect that the predictions will be less accurate at the extremes. Also, how hitters approach plate appearances can play an important role in BB% and K%. Some hitters rarely swing at the first pitch, some are aggressive on first pitch fastballs, some cut down their swing when behind in the count, etc. The lack of such information in our models can explain some of the errors at the extremes.

Regarding specific players, it is not surprising to see Willians Astudillo on this list, due to his elite contact skills and aggressive approach. Keon Broxton’s low contact % led to a K% higher than 42.2%, the maximum value in the calibration data and thus machine learning algorithms struggled to model him effectively.

The algorithms also struggled with high BB/K ratio players such as Clint Frazier, Garrett Hampson, Cole Tucker, Nate Lowe, and Dylan Moore. Lowe only had 169 plate appearances so there may be a small sample size issue.

We only performed limited feature engineering here. More will be done in future articles, as well as using additional machine learning algorithms.

Pin It on Pinterest