n_estimators=args.n_estimators, learning_rate=args.lr, natural_gradient=args.natural, minibatch_frac=args.minibatch_frac, verbose=True, ) ngb.fit(x_tr, y_tr) x_te, y_te, _ = gen_data(n=1000, bound=1.3) x_te = poly_transform.transform(x_te) preds = ngb.pred_dist(x_te) pctles, obs, _, _ = calibration_regression(preds, y_te) all_preds = ngb.staged_pred_dist(x_te) preds = all_preds[-1] plt.figure(figsize=(6, 3)) plt.scatter(x_tr[:, 1], y_tr, color="black", marker=".", alpha=0.5) plt.plot( x_te[:, 1], preds.loc, color="black", linestyle="-", linewidth=1, label="Predicted mean", ) plt.plot( x_te[:, 1], preds.loc - 1.96 * preds.scale, color="black",
y_true += list(y_test.flatten()) ngb = NGBoost(Base=base_name_to_learner[args.base], Dist=eval(args.distn), Score=score_name_to_score[args.score](64), n_estimators=args.n_est, learning_rate=args.lr, natural_gradient=args.natural, minibatch_frac=args.minibatch_frac, verbose=args.verbose) train_loss, val_loss = ngb.fit(X_train, y_train) #, X_val, y_val) y_preds = ngb.staged_predict(X_val) y_forecasts = ngb.staged_pred_dist(X_val) val_rmse = [mean_squared_error(y_pred, y_val) for y_pred in y_preds] val_nll = [-y_forecast.logpdf(y_val.flatten()).mean() for y_forecast in y_forecasts] best_itr = np.argmin(val_rmse) + 1 best_itr = np.argmin(val_nll) + 1 full_retrain = True if full_retrain: ngb = NGBoost(Base=base_name_to_learner[args.base], Dist=eval(args.distn), Score=score_name_to_score[args.score](64), n_estimators=args.n_est, learning_rate=args.lr, natural_gradient=args.natural, minibatch_frac=args.minibatch_frac, verbose=args.verbose)