.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/ngb.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_ngb.py: ======================================== 2.1 NGBoost (Disinfection Efficiency) ======================================== This file shows how to use ngboost for modeling disinfection efficiency of sonolysis. .. GENERATED FROM PYTHON SOURCE LINES 8-31 .. code-block:: Python import shap import numpy as np import seaborn as sns import matplotlib.pyplot as plt from ngboost import NGBRegressor from easy_mpl import plot, bar_chart from easy_mpl.utils import make_clrs_from_cmap from ai4water import Model from ai4water.utils import TrainTestSplit from ai4water.postprocessing import PartialDependencePlot from utils import SAVE from utils import set_xticklabels, version_info from utils import ci_from_dist, plot_1d_pdp, plot_stds from utils import read_data, shap_scatter, residual_plot from utils import set_rcParams, COLUMN_MAPS_, regression_plot .. GENERATED FROM PYTHON SOURCE LINES 32-36 .. code-block:: Python for lib, ver in version_info().items(): print(lib, ver) .. rst-class:: sphx-glr-script-out .. code-block:: none python 3.9.20 (main, Nov 5 2024, 16:07:55) [GCC 11.4.0] os posix ai4water 1.07 easy_mpl 0.21.4 SeqMetrics 2.0.0 tensorflow 2.10.1 keras.api._v2.keras 2.10.0 numpy 1.21.6 pandas 1.5.3 matplotlib 3.7.1 h5py 3.13.0 sklearn 1.3.1 seaborn 0.13.2 ngboost 0.4.1 shap 0.41.0 .. GENERATED FROM PYTHON SOURCE LINES 37-39 .. code-block:: Python set_rcParams() .. GENERATED FROM PYTHON SOURCE LINES 40-52 .. code-block:: Python data = read_data() input_features = data.columns.tolist()[0:-1] output_features = data.columns.tolist()[-1:] TrainX, TestX, TrainY, TestY = TrainTestSplit(seed=313).split_by_random( data[input_features], data[output_features] ) .. GENERATED FROM PYTHON SOURCE LINES 53-55 Model Building ================= .. GENERATED FROM PYTHON SOURCE LINES 55-67 .. code-block:: Python ngb = NGBRegressor(early_stopping_rounds=40) model = Model( model=ngb, mode="regression", category="ML", input_features=input_features, output_features=output_features, #wandb_config=dict(project="flowcam", entity="atherabbas", monitor="val_loss") ) .. rst-class:: sphx-glr-script-out .. code-block:: none building ML model for regression problem using NGBRegressor .. GENERATED FROM PYTHON SOURCE LINES 68-70 Model training ================== .. GENERATED FROM PYTHON SOURCE LINES 70-77 .. code-block:: Python rgr = model.fit( TrainX, TrainY.values, X_val=TestX, Y_val=TestY, ) .. rst-class:: sphx-glr-script-out .. code-block:: none [iter 0] loss=4.4656 val_loss=4.7147 scale=1.0000 norm=15.9834 [iter 100] loss=3.5147 val_loss=3.6025 scale=2.0000 norm=11.2907 [iter 200] loss=3.0657 val_loss=3.1542 scale=2.0000 norm=8.2020 [iter 300] loss=2.8137 val_loss=2.9477 scale=2.0000 norm=6.9692 [iter 400] loss=2.7066 val_loss=2.8456 scale=2.0000 norm=6.5244 .. GENERATED FROM PYTHON SOURCE LINES 78-81 Prediction on training data ============================ make prediction on training data .. GENERATED FROM PYTHON SOURCE LINES 81-90 .. code-block:: Python train_p = model.predict( TrainX.values, TrainY.values, log_on_wb=model.use_wb, prefix="train", plots=["prediction", "edf"], #max_iter=rgr.best_val_loss_itr ) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/images/sphx_glr_ngb_001.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_001.png, /auto_examples/images/sphx_glr_ngb_001_2_00x.png 2.00x :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_ngb_002.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_002.png, /auto_examples/images/sphx_glr_ngb_002_2_00x.png 2.00x :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none divide by zero encountered in true_divide invalid value encountered in log .. GENERATED FROM PYTHON SOURCE LINES 91-92 evaluate the model on training data .. GENERATED FROM PYTHON SOURCE LINES 92-98 .. code-block:: Python print(model.evaluate( TrainX, TrainY.values, metrics=["r2", "nse", "rmse", "mae"], #max_iter=rgr.best_val_loss_itr )) .. rst-class:: sphx-glr-script-out .. code-block:: none {'r2': 0.95977096466093, 'nse': 0.9589725986188338, 'rmse': 4.380941376158224, 'mae': 3.0949118704995007} .. GENERATED FROM PYTHON SOURCE LINES 99-103 .. code-block:: Python train_dist = rgr.pred_dist(TrainX.iloc[0:50]) print(type(train_dist)) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 104-114 .. code-block:: Python train_std = train_dist.dist.std() train_mean = train_dist.dist.mean() plot_stds( train_mean, train_std, label= "Disinfection Efficiency (%)" ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_003.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_003.png, /auto_examples/images/sphx_glr_ngb_003_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 115-117 Now we get the negative log likelihood for training data. Negative log likelihood is another way of quantification of model performance. .. GENERATED FROM PYTHON SOURCE LINES 117-120 .. code-block:: Python print(-train_dist.logpdf(TrainY).mean()) .. rst-class:: sphx-glr-script-out .. code-block:: none 33.71058154068604 .. GENERATED FROM PYTHON SOURCE LINES 121-123 Prediction on test data ============================ .. GENERATED FROM PYTHON SOURCE LINES 123-130 .. code-block:: Python test_p = model.predict(TestX.values, TestY.values, log_on_wb=model.use_wb, plots=["prediction", "edf"], #max_iter=rgr.best_val_loss_itr ) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/images/sphx_glr_ngb_004.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_004.png, /auto_examples/images/sphx_glr_ngb_004_2_00x.png 2.00x :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/images/sphx_glr_ngb_005.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_005.png, /auto_examples/images/sphx_glr_ngb_005_2_00x.png 2.00x :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none divide by zero encountered in true_divide .. GENERATED FROM PYTHON SOURCE LINES 131-141 .. code-block:: Python residual_plot( TrainY.values, train_p, TestY.values, test_p, ) if SAVE: plt.savefig("results/figures/residue_ngb_eff", dpi=600, bbox_inches="tight") plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_006.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_006.png, /auto_examples/images/sphx_glr_ngb_006_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 142-143 Regression plot of training and test combined .. GENERATED FROM PYTHON SOURCE LINES 143-154 .. code-block:: Python ax = regression_plot( TrainY.values, train_p, TestY.values, test_p, label= "Disinfection Efficiency (%)") ax.set_xlim([-2, 100]) ax.set_ylim([-2, 100]) if SAVE: plt.savefig("results/figures/reg_ngb_eff", dpi=600, bbox_inches="tight") plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_007.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_007.png, /auto_examples/images/sphx_glr_ngb_007_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none *c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*. Please use the *color* keyword-argument or provide a 2D array with a single row if you intend to specify the same RGB or RGBA value for all points. .. GENERATED FROM PYTHON SOURCE LINES 155-161 .. code-block:: Python print(model.evaluate( TestX, TestY.values, metrics=["r2", "nse", "rmse", "mae"], max_iter=rgr.best_val_loss_itr )) .. rst-class:: sphx-glr-script-out .. code-block:: none {'r2': 0.8444807052078073, 'nse': 0.8424719568543588, 'rmse': 7.188939442202566, 'mae': 3.7397113143646306} .. GENERATED FROM PYTHON SOURCE LINES 162-173 .. code-block:: Python test_dist = rgr.pred_dist(TestX.iloc[0:50]) test_std = test_dist.dist.std() test_mean = test_dist.dist.mean() plot_stds( test_mean, test_std, label= "Disinfection Efficiency (%)" ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_008.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_008.png, /auto_examples/images/sphx_glr_ngb_008_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 174-175 get negative log likelihood on test data .. GENERATED FROM PYTHON SOURCE LINES 175-180 .. code-block:: Python test_dist = rgr.pred_dist(TestX) print(-test_dist.logpdf(TestY).mean()) .. rst-class:: sphx-glr-script-out .. code-block:: none 30.44333989412887 .. GENERATED FROM PYTHON SOURCE LINES 181-184 Feature Importance ===================== Feature importance for loc trees .. GENERATED FROM PYTHON SOURCE LINES 184-187 .. code-block:: Python feature_importance_loc = rgr.feature_importances_[0] .. GENERATED FROM PYTHON SOURCE LINES 188-189 Feature importance for scale trees .. GENERATED FROM PYTHON SOURCE LINES 189-192 .. code-block:: Python feature_importance_scale = rgr.feature_importances_[1] .. GENERATED FROM PYTHON SOURCE LINES 193-209 .. code-block:: Python bar_chart( feature_importance_loc, labels=input_features, color="skyblue", sort=True, ax_kws=dict( title="loc", ylabel="Input Features", xlabel="Importance" ), show=False ) plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_009.png :alt: loc :srcset: /auto_examples/images/sphx_glr_ngb_009.png, /auto_examples/images/sphx_glr_ngb_009_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 210-227 .. code-block:: Python bar_chart( feature_importance_scale, labels=input_features, color="skyblue", sort=True, ax_kws=dict( title="scale", ylabel="Input Features", xlabel="Importance", ), show=False ) plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_010.png :alt: scale :srcset: /auto_examples/images/sphx_glr_ngb_010.png, /auto_examples/images/sphx_glr_ngb_010_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 228-231 SHAP ======= SHAP plot for loc trees .. GENERATED FROM PYTHON SOURCE LINES 231-237 .. code-block:: Python explainer = shap.TreeExplainer(rgr, model_output=0) shap_values = explainer.shap_values(TrainX.values) plot(shap_values.sum(axis=1) - TrainY.values.reshape(-1)) .. image-sg:: /auto_examples/images/sphx_glr_ngb_011.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_011.png, /auto_examples/images/sphx_glr_ngb_011_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 238-239 The default cmap is boring so use a different color map .. GENERATED FROM PYTHON SOURCE LINES 239-255 .. code-block:: Python cm = sns.diverging_palette(0,100, as_cmap=True) feature_names = [COLUMN_MAPS_.get(fname, fname) for fname in input_features] shap.summary_plot(shap_values, TrainX.values, feature_names=feature_names, cmap=cm, alpha=0.7, show=False ) if SAVE: plt.savefig(f"results/figures/ngb_shap_loc_eff.png", dpi=600, bbox_inches="tight") plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_012.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_012.png, /auto_examples/images/sphx_glr_ngb_012_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none No data for colormapping provided via 'c'. Parameters 'vmin', 'vmax' will be ignored .. GENERATED FROM PYTHON SOURCE LINES 256-273 .. code-block:: Python sv_bar = np.mean(np.abs(shap_values), axis=0) bar_chart( sv_bar, feature_names, orient="horizontal", color=["#bb74b0", "#39a9e0", "#25b77c", "#9fa437", "#f07671", "#d7845b"], sort=True, show=False, ax_kws=dict(xlabel="mean(|SHAP value|)") ) if SAVE: plt.savefig(f"results/figures/ngb_shap_loc_bar_eff.png", dpi=600, bbox_inches="tight") plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_013.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_013.png, /auto_examples/images/sphx_glr_ngb_013_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 274-275 SHAP plot for scale trees .. GENERATED FROM PYTHON SOURCE LINES 275-281 .. code-block:: Python explainer = shap.TreeExplainer(rgr, model_output=1) shap_values = explainer.shap_values(TrainX.values) plot(shap_values.sum(axis=1) - TrainY.values.reshape(-1)) .. image-sg:: /auto_examples/images/sphx_glr_ngb_014.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_014.png, /auto_examples/images/sphx_glr_ngb_014_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 282-296 .. code-block:: Python feature_names = [COLUMN_MAPS_.get(fname, fname) for fname in input_features] shap.summary_plot(shap_values, TrainX.values, feature_names=feature_names, cmap=cm, alpha=0.7, show=False ) if SAVE: plt.savefig(f"results/figures/ngb_shap_scale_eff.png", dpi=600, bbox_inches="tight") plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_015.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_015.png, /auto_examples/images/sphx_glr_ngb_015_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 297-314 .. code-block:: Python sv_bar = np.mean(np.abs(shap_values), axis=0) bar_chart( sv_bar, feature_names, orient="horizontal", color=["#bb74b0", "#39a9e0", "#25b77c", "#9fa437", "#f07671", "#d7845b"], sort=True, show=False, ax_kws=dict(xlabel="mean(|SHAP value|)") ) if SAVE: plt.savefig(f"results/figures/ngb_shap_scale_bar_eff.png", dpi=600, bbox_inches="tight") plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_016.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_016.png, /auto_examples/images/sphx_glr_ngb_016_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 315-324 .. code-block:: Python feature_name = 'Time (min)' shap_scatter( shap_values[:, 0], TrainX.loc[:, feature_name], color_feature=TrainX.loc[:, 'Ini. CC'], feature_name=feature_name ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_017.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_017.png, /auto_examples/images/sphx_glr_ngb_017_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 325-333 .. code-block:: Python feature_name = 'Time (min)' shap_scatter( shap_values[:, 0], TrainX.loc[:, feature_name], color_feature=TrainX.loc[:, 'Sonic. PD'], feature_name=feature_name ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_018.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_018.png, /auto_examples/images/sphx_glr_ngb_018_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 334-342 .. code-block:: Python feature_name = 'Time (min)' shap_scatter( shap_values[:, 0], TrainX.loc[:, feature_name], color_feature=TrainX.loc[:, 'h20 Conc.'], feature_name=feature_name ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_019.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_019.png, /auto_examples/images/sphx_glr_ngb_019_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 343-351 .. code-block:: Python feature_name = 'Time (min)' shap_scatter( shap_values[:, 0], TrainX.loc[:, feature_name], color_feature=TrainX.loc[:, 'Volume (mL)'], feature_name=feature_name ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_020.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_020.png, /auto_examples/images/sphx_glr_ngb_020_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 352-361 .. code-block:: Python feature_name = 'Time (min)' shap_scatter( shap_values[:, 0], TrainX.loc[:, feature_name], color_feature=TrainX.loc[:, 'Solution pH'], feature_name=feature_name ) .. image-sg:: /auto_examples/images/sphx_glr_ngb_021.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_021.png, /auto_examples/images/sphx_glr_ngb_021_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 362-364 Partial Dependence Plot ========================= .. GENERATED FROM PYTHON SOURCE LINES 364-374 .. code-block:: Python pdp = PartialDependencePlot( model.predict, TrainX, num_points=20, feature_names=TrainX.columns.tolist(), show=False, save=False ) .. GENERATED FROM PYTHON SOURCE LINES 375-377 .. code-block:: Python plot_1d_pdp(pdp, TrainX.values, 'Time (min)') .. image-sg:: /auto_examples/images/sphx_glr_ngb_022.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_022.png, /auto_examples/images/sphx_glr_ngb_022_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. .. GENERATED FROM PYTHON SOURCE LINES 378-381 .. code-block:: Python plot_1d_pdp(pdp, TrainX.values, 'Ini. CC') .. image-sg:: /auto_examples/images/sphx_glr_ngb_023.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_023.png, /auto_examples/images/sphx_glr_ngb_023_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. .. GENERATED FROM PYTHON SOURCE LINES 382-385 .. code-block:: Python plot_1d_pdp(pdp, TrainX.values, 'Sonic. PD') .. image-sg:: /auto_examples/images/sphx_glr_ngb_024.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_024.png, /auto_examples/images/sphx_glr_ngb_024_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. .. GENERATED FROM PYTHON SOURCE LINES 386-389 .. code-block:: Python plot_1d_pdp(pdp, TrainX.values, 'h20 Conc.') .. image-sg:: /auto_examples/images/sphx_glr_ngb_025.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_025.png, /auto_examples/images/sphx_glr_ngb_025_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. .. GENERATED FROM PYTHON SOURCE LINES 390-393 .. code-block:: Python plot_1d_pdp(pdp, TrainX.values, 'Volume (mL)') .. image-sg:: /auto_examples/images/sphx_glr_ngb_026.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_026.png, /auto_examples/images/sphx_glr_ngb_026_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. .. GENERATED FROM PYTHON SOURCE LINES 394-397 .. code-block:: Python plot_1d_pdp(pdp, TrainX.values, 'Solution pH') .. image-sg:: /auto_examples/images/sphx_glr_ngb_027.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_027.png, /auto_examples/images/sphx_glr_ngb_027_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none This figure includes Axes that are not compatible with tight_layout, so results might be incorrect. .. GENERATED FROM PYTHON SOURCE LINES 398-402 .. code-block:: Python if model.use_wb: model.wb_finish() .. GENERATED FROM PYTHON SOURCE LINES 403-407 Now plot the probability distributions by for individual samples. The vertical line shows the prediction fromt he model. The width of the curve shows the uncertainly for a particular data point/sample. The larger the width, the greater is the uncertainty. .. GENERATED FROM PYTHON SOURCE LINES 409-420 .. code-block:: Python clrs = make_clrs_from_cmap(cm="tab20", num_cols=10) y_pred_all = rgr.predict(data[input_features]) Y_dists = rgr.pred_dist(data[input_features]) y_range = np.linspace(data[output_features].min().item(), data[output_features].max().item(), len(data)) dist_values = Y_dists.pdf(y_range.reshape(-1,1)).transpose()# plot index 0 and 114 indices = [28, 35, 45, 54, 90, 100, 150, 200, 250, 300] .. GENERATED FROM PYTHON SOURCE LINES 421-444 .. code-block:: Python fig, all_axes = plt.subplots(10, 1, sharex="all", figsize=(6, 8)) idx1 = 0 for idx, ax in zip(indices, all_axes.flat): ax = plot(y_range, dist_values[idx], color=clrs[idx1], ax=ax, show=False) ax.axvline(y_pred_all[idx], color="darkgray") ax.text(x=0.5, y=0.7, s=f"Sample ID: {idx}", transform=ax.transAxes, fontsize=12, weight="bold") ax.set_yticks([]) idx1 += 1 set_xticklabels(ax) ax.set_xlabel("Disinfection Efficiency (%)", fontsize=14, weight="bold") if SAVE: plt.savefig("results/figures/local_pdfs_eff", dpi=600, bbox_inches="tight") plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_028.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_028.png, /auto_examples/images/sphx_glr_ngb_028_2_00x.png 2.00x :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 445-458 .. code-block:: Python ci_from_dist( Y_dists, 0.95, data[output_features].values, "Disinfection Efficiency (%)", fill_color = "forestgreen", line_color = "forestgreen" ) if SAVE: plt.savefig("results/figures/ci_95_eff", dpi=600, bbox_inches="tight") plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_029.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_029.png, /auto_examples/images/sphx_glr_ngb_029_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none FixedFormatter should only be used together with FixedLocator FixedFormatter should only be used together with FixedLocator .. GENERATED FROM PYTHON SOURCE LINES 459-472 .. code-block:: Python ci_from_dist( Y_dists, 0.9, data[output_features].values, "Disinfection Efficiency (%)", fill_color = np.array([217, 140, 122])/255, line_color = np.array([180, 27, 40])/255 ) if SAVE: plt.savefig("results/figures/ci_90_eff", dpi=600, bbox_inches="tight") plt.tight_layout() plt.show() .. image-sg:: /auto_examples/images/sphx_glr_ngb_030.png :alt: ngb :srcset: /auto_examples/images/sphx_glr_ngb_030.png, /auto_examples/images/sphx_glr_ngb_030_2_00x.png 2.00x :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none FixedFormatter should only be used together with FixedLocator FixedFormatter should only be used together with FixedLocator .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 17.586 seconds) .. _sphx_glr_download_auto_examples_ngb.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: ngb.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: ngb.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: ngb.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_