output_df.to_csv(args.output_dir + 'icu_data_analysis_measure_' +
                 str(args.measure) + '_est_' + str(args.estimator_type) +
                 '.csv')
## -------------------------------------
## SHAP values
## -------------------------------------
print("Getting SHAP values")
## fit the full regression function
cc_all = (np.sum(np.isnan(data.x_train), axis=1) == 0)
cc_all_test = (np.sum(np.isnan(data.x_test), axis=1) == 0)
start = time.time()
ensemble.fit(data.x_train[cc_all, :], np.ravel(data.y_train[cc_all]))
## print test-set error
if args.measure == "auc":
    if 'nn' in args.estimator_type:
        test_preds = np.mean(ensemble.transform(data.x_test[cc_all_test, :]),
                             axis=1)
    else:
        test_preds = ensemble.predict_proba(data.x_test[cc_all_test, :])
else:
    test_preds = ensemble.predict(data.x_test[cc_all_test, :])

log_lik = (-1) * sl_scorer(y_true=np.ravel(data.y_test[cc_all_test]),
                           y_pred=test_preds,
                           normalize=False)
print('Estimated negative log likelihood: ' + str(log_lik))
if "tree" in args.estimator_type:
    explainer = shap.TreeExplainer(ensemble)
    shap_values = explainer.shap_values(data.x_test[cc_all_test, :])
else:
    if args.measure == "auc":