Releases: oegedijk/explainerdashboard
Releases · oegedijk/explainerdashboard
Release list
v0.5.8: lightgbm treeviz, LinearSVC support, logodds fixes
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_roware missing (NaN) by preserving dataframe categorical handling and sanitizing CatBoost categorical prediction inputs. - Fix issue #146:
ExplainerHub.to_yaml(..., integrate_dashboard_yamls=True)now honorspickle_typeinstead of hardcoding.joblib, and correctly dumps explainer files whendump_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 explainermodel_output='logodds'. - Fix issue #256: add robust multiclass probability fallback for classifiers that expose
decision_functionbut notpredict_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_probaoutputs do not match model class count by falling back todecision_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
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_featuresandhide_featurestoFeatureInputComponentso 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_rowinputs inget_contrib_df, and harden related row-input paths (get_col_value_plus_prediction,pdp_df, and classifier/regressionprediction_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
DataFrameoutputs frompredict_proba/predictto numpy arrays before indexing in classifier/regression helper paths. - Harden one-vs-all scorer handling so
make_one_vs_all_scoreralso accepts classifiers whosepredict_probareturns a pandasDataFrame. - Fix ExplainerHub
add_dashboard_routeafter 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
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
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_rowinputs 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
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_endfor 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
Version 0.5.3:
Improvements
- Allow NumPy 2.x but cap to
<2.4on Python 3.11+ to avoid numba/llvmlite downgrade issues
v0.5.2: dash v3 and plotly v6 compatibility + dtreeviz fixes
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
dashandplotlydependencies, 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
titlefonttotitle.fontformat - Improved integration test setup with automatic ChromeDriver management via
webdriver-manager - Fixed threading issues with Plotly validator initialization by switching to recommended
plotly.graph_objectsimport - Made
torchandskorchoptional dependencies on Intel Macs (where torch wheels are not available)
Bug Fixes
- Fixed
SystemExitwarnings in integration tests caused by Plotly validator initialization in multi-threaded contexts - Updated
.gitignoreto exclude webdriver-manager cache directories anduv.lockfile - XGBoost 3.1+ compatibility: Fixed handling of string-formatted predictions and
base_scorevalues 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_scoreconversion in bothget_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 usesintinstead ofint16) and observation array conversion forpredict_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")andcopy=Falseparameter 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()withwhereparameter
v0.5.0: migrate to pyproject.toml and uv
migrating to modern pyproject.toml (and deprecating old setup.py)
v0.4.8: sklearn 1.6 compatibility
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
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