Skip to content

Releases: oegedijk/explainerdashboard

v0.5.8: lightgbm treeviz, LinearSVC support, logodds fixes

Choose a tag to compare

@oegedijk oegedijk released this 08 Feb 16:41
4efff76

Version 0.5.8:

Bug Fixes

  • Fix issue #198: handle LightGBM models with string categorical features in SHAP/dashboard paths by normalizing tree-SHAP evaluation input for categorical columns.
  • Prevent crashes in LightGBM what-if/SHAP flows caused by object/string categorical values during SHAP value computation.
  • Fix CatBoost PDP/dashboard callback crashes when categorical values in X_row are missing (NaN) by preserving dataframe categorical handling and sanitizing CatBoost categorical prediction inputs.
  • Fix issue #146: ExplainerHub.to_yaml(..., integrate_dashboard_yamls=True) now honors pickle_type instead of hardcoding .joblib, and correctly dumps explainer files when dump_explainers=True.
  • Fix issue #294: align multiclass model_output='logodds' semantics across Prediction Box and Contributions Plot by using per-class raw margins for multiclass logodds displays.
  • Fix multiclass PDP highlight predictions in logodds mode to use the same raw-margin scale as SHAP contributions.
  • Fix XGBoost multiclass decision-path summary wording to display prediction (logodds) when explainer model_output='logodds'.
  • Fix issue #256: add robust multiclass probability fallback for classifiers that expose decision_function but not predict_proba (e.g. LinearSVC), and use it consistently across kernel SHAP, prediction helpers, PDP, and permutation scorer paths.
  • Prevent multiclass class-count mismatches when user-provided/broken predict_proba outputs do not match model class count by falling back to decision_function-based probabilities.
  • Fix issue #118: add LightGBM decision-tree visualization support (dtreeviz) across explainer auto-detection, tree plotting, and decision-path rendering in dashboard tree tabs.
  • Fix dtreeviz callback rendering on macOS by switching matplotlib to a non-interactive backend for off-main-thread tree rendering to prevent dashboard 500 errors.

v0.5.7: what input features controls, dataframe input robustness

Choose a tag to compare

@oegedijk oegedijk released this 08 Feb 09:50
5631de9

Version 0.5.7:

Bug Fixes

  • Allow FeatureInputComponent (what-if inputs) to customize numeric ranges and rounding, and apply min/max/step to inputs.
  • Add input_features and hide_features to FeatureInputComponent so what-if fields can be explicitly ordered and selectively hidden, while preserving the full callback input contract.
  • Fix issue #220: accept single-row list/array X_row inputs in get_contrib_df, and harden related row-input paths (get_col_value_plus_prediction, pdp_df, and classifier/regression prediction_result_df) with regression tests.
  • Fix issue #262: add feature-based filters to classifier/regression random_index(...) (numeric ranges and categorical inclusion), enabling what-if random selection constrained by input feature values.
  • Improve compatibility with AutoGluon/custom wrappers by coercing pandas DataFrame outputs from predict_proba/predict to numpy arrays before indexing in classifier/regression helper paths.
  • Harden one-vs-all scorer handling so make_one_vs_all_scorer also accepts classifiers whose predict_proba returns a pandas DataFrame.
  • Fix ExplainerHub add_dashboard_route after first request by allowing dynamic dashboard registration/setup during route-triggered add, and add a regression test for issue #269.
  • Fix issue #273: avoid crashes when sorting categorical values containing mixed types and NaNs across explainer setup, PDP/category ordering, and categorical plot paths.
  • Add regression tests for mixed-type categorical sorting and mixed target-label sorting fallbacks in explainers and plots.

v0.5.6: boolean features, string class labels, logging and CalibratedClassifier support

Choose a tag to compare

@oegedijk oegedijk released this 06 Feb 21:13
1a5fc74

Version 0.5.6:

Bug Fixes

  • Fix FeatureInputComponent range calculation for boolean columns (avoid np.round on bools) and add a regression test.
  • Ensure save_html includes custom tabs by providing a static-export fallback for tabs without a to_html implementation.
  • Support string class labels in ClassifierExplainer by preserving label mappings and avoiding float casts.
  • Support CalibratedClassifierCV by using its fitted base estimator for SHAP (avoids falling back to kernel).

Improvements

  • Replace print statemen

v0.5.5: categorical Nan handling, gputree and sagemaker support

Choose a tag to compare

@oegedijk oegedijk released this 29 Jan 20:37
632883f

Version 0.5.5:

Bug Fixes

  • Handle missing values in categorical features by surfacing a "NaN" option in inputs and normalizing NaN selections back to real missing values.
  • Add tests covering categorical NaN handling for both merged and unmerged input paths.
  • Preserve categorical dtypes during permutation importance shuffles and PDP grid generation to prevent dtype-related model errors (e.g., LightGBM).
  • Align categorical/boolean dtypes for user-provided X_row inputs and add dtype alignment tests.

Improvements

  • Add support for GPU Tree SHAP explainers via shap='gputree' (requires CUDA-enabled SHAP).
  • Add SageMaker Studio support: auto-detect environment, apply proxy prefixes, and CLI flags for overrides.

v0.5.4: support dash-bootstrap-components v2

Choose a tag to compare

@oegedijk oegedijk released this 25 Jan 21:45
a2fe9d9

Version 0.5.4:

Breaking Changes

  • Require Dash >=3.0.4 to support dash-bootstrap-components 2.x

Improvements

  • Relaxed dash-bootstrap-components upper bound to allow 2.x releases
  • Updated DropdownMenu alignment to use align_end for dbc 2.x
  • Adjusted logistic regression test fixture to avoid convergence warnings

Bug Fixes

  • Avoid sklearn feature-name warnings in PDP computations by passing numpy arrays to estimators without feature_names_in_
  • Consistent model-input handling in PDP and prediction helpers to prevent warning noise

v0.5.3: relax numpy v2

Choose a tag to compare

@oegedijk oegedijk released this 25 Jan 20:45
0081fe1

Version 0.5.3:

Improvements

  • Allow NumPy 2.x but cap to <2.4 on Python 3.11+ to avoid numba/llvmlite downgrade issues

v0.5.2: dash v3 and plotly v6 compatibility + dtreeviz fixes

Choose a tag to compare

@oegedijk oegedijk released this 25 Jan 16:23
81d2216

Version 0.5.2:

Breaking Changes

  • Dropped support for Python 3.8 and 3.9 (Python 3.9 reached end-of-life). Minimum Python version is now 3.10
  • Now explicitly supports and tests on Python 3.10, 3.11, 3.12, and 3.13

Improvements

  • Removed upper version constraints for dash and plotly dependencies, now supports Dash 2.10+ and 3.0+, and Plotly 5.0+ and 6.0+
  • Added backward compatibility code to support both Dash 2.x (app.run_server()) and Dash 3.x (app.run()) APIs
  • Fixed Plotly 6.0 compatibility by updating titlefont to title.font format
  • Improved integration test setup with automatic ChromeDriver management via webdriver-manager
  • Fixed threading issues with Plotly validator initialization by switching to recommended plotly.graph_objects import
  • Made torch and skorch optional dependencies on Intel Macs (where torch wheels are not available)

Bug Fixes

  • Fixed SystemExit warnings in integration tests caused by Plotly validator initialization in multi-threaded contexts
  • Updated .gitignore to exclude webdriver-manager cache directories and uv.lock file
  • XGBoost 3.1+ compatibility: Fixed handling of string-formatted predictions and base_score values returned by XGBoost 3.1+. Added robust string-to-numeric conversion with proper regex fallback to handle various string formats (e.g., '[3.2967056E1]', '[8.563135E-2,7.169811E-1,1.9738752E-1]')
  • XGBoost SHAP initialization: Fixed base_score conversion in both get_params() and booster's internal JSON configuration to ensure SHAP TreeExplainer initializes correctly with XGBoost 3.1+
  • RandomForest dtreeviz compatibility: Fixed dtype handling for y_train (now uses int instead of int16) and observation array conversion for predict_path() to work with newer dtreeviz versions
  • Dtreeviz decisiontree_view: Ensure observations are passed as numpy arrays to avoid pandas label lookup errors when dtreeviz indexes features by integer position
  • PyPI packaging: Removed duplicate wheel entries from hatchling build config to fix "Duplicate filename in local headers" upload errors
  • Pandas deprecation warnings: Removed deprecated pd.option_context("future.no_silent_downcasting") and copy=False parameter from .infer_objects() calls
  • Runtime warnings: Fixed divide-by-zero warnings in classification plots and residuals plots (log-ratio calculations) by adding proper zero checks and using np.divide() with where parameter

v0.5.0: migrate to pyproject.toml and uv

Choose a tag to compare

@oegedijk oegedijk released this 03 Jun 18:36
7ceefb8

migrating to modern pyproject.toml (and deprecating old setup.py)

v0.4.8: sklearn 1.6 compatibility

Choose a tag to compare

@oegedijk oegedijk released this 29 Dec 21:23

minor changes to ensure sklearn 1.6 compatibility.

Certain models like xgboost or skorch have not updated their sklearn_tags properties, but presumably these will be be fixed upstream soon.

V0.4.7: categorical bug fixes

Choose a tag to compare

@oegedijk oegedijk released this 18 Mar 21:01

Version 0.4.7:

Bug Fixes

  • fix merge_categorical_columns when there are no cats
  • Handle pandas option setting context in case it doesn't exist
  • Remove is_categorical_dtype as it is getting deprecated