What's Changed
New features
-
Completely redesigned Smart Report system, with a new modular block-based architecture, default classification and regression reports, configurable report layouts, YAML configuration export, improved responsive rendering, new report components and better multiclass explainability/navigation. #750 #793 by @dalestee @guerinclement and @guillaume-vignal
-
New contribution-weighted correlation plot to analyze relationships between feature contributions rather than only correlations between raw input features. Rows where one of the features has a strong contribution receive more weight in the correlation computation. #754 by @guillaume-vignal
-
Major improvements to interaction plots, including multiclass support, improved sampling and display ordering, adaptive color scales, density/volumetry information, better handling of categorical-like numerical variables and closer visual consistency with
contribution_plot. #758 by @guillaume-vignal -
Add waterfall visualization to
local_plot, including baseline / SHAPbase_valuessupport, configurable x-axis behavior, improved tooltips and compatibility with LIME explanations. #760 by @guillaume-vignal -
Add Lift Curve visualization to model evaluation plots and integrate it with Shapash styling. #736 by @guillaume-vignal
SmartPredictor and production usage
- Strengthen SmartPredictor for production use: improve input validation and support pandas extension/nullable dtypes; add a save/load manifest containing Shapash, Python, model-framework and schema information; add structured prediction logging; and introduce lightweight schema-drift detection with configurable warnings. #711 #722 #742 #756 by @immu4989
Explainer architecture
- Refactor
SmartExplainerinto a lighter public facade, moving computation and state management into the dedicatedExplainerclass and reducing duplicated logic. Follow-up fixes remove redundant helpers and correct dependencies introduced by the refactor. #746 #774 #789 by @guillaume-vignal and @guerinclement
Package and dependency support
-
Simplify report dependencies following the Smart Report refactor, removing
Jinja2,jupyter-client,nbconvert,notebook,papermillandpyarrow; the new report implementation now relies onpanel. #750 by @guerinclement -
Improve pandas 3 compatibility, particularly around the new string dtype behavior, and update the corresponding documentation. #713 #716 by @guerinclement and @guillaume-vignal
-
Upgrade the WebApp to Dash >= 3.0.0. #710 by @milton-minervino
-
Update dependency compatibility, including
category_encoders2.10+, newer scikit-learn versions and removal of the Plotly upper bound; fix rendering regressions introduced by newer Plotly versions. #740 #748 #770 #771 by @meubleancien and @milton-minervino -
Temporarily cap pandas to avoid an upstream segmentation-fault issue. #732 by @milton-minervino
-
Update package license metadata to the SPDX
Apache-2.0format. #783 by @guillaume-vignal -
Derive
shapash.__version__from package metadata instead of maintaining a hard-coded version. #799 by @milton-minervino
Bug fixes
-
Fix WebApp filtering with missing values. #719 by @milton-minervino
-
Fix threshold slider and clustering display issues in the WebApp. #723 by @milton-minervino
-
Improve confusion matrices, with a color scale better suited to imbalanced datasets and correct handling of integer class labels as discrete classes. #738 #739 by @ZakariaRida96
-
Fix LIME multiclass contribution computation and subset handling. #726 by @guillaume-vignal
-
Prevent
Explainer.filter()state from leaking into subsequent plots orto_pandas()calls. #764 by @milton-minervino -
Honour the
forceparameter incompute_features_import. #762 by @VenishPaneliya -
Make
run_app().kill()correctly stop the WebApp server. #737 by @milton-minervino -
Keep the regression True-vs-Predicted reference line on the actual
y = xdiagonal after zoom or axis reset. #778 by @milton-minervino -
Improve stability explanations, fixing nearest-neighbor computation on small datasets and preserving neighbor ordering in explanations. #791 #794 by @aminemanai2003
-
Add generic fallback fonts to plot font families for more reliable rendering across systems. #780 by @milton-minervino
Testing, typing and code quality
-
Enable and strengthen mypy type checking, including CI and pre-commit integration, fixes for the VS Code hook, broader type annotations and correction of previously undetected typing errors. #744 #751 #787 #796 #798 by @milton-minervino and @guillaume-vignal
-
Expand regression test coverage across explainers, plots and the WebApp. #786 by @guillaume-vignal
-
Revise the CI pipeline and pre-commit configuration. #718 #731 by @milton-minervino
-
Add Codecov configuration, branch-coverage reporting and coverage badge. #768 #784 by @milton-minervino
-
Fix Ruff issues and improve code formatting consistency. #715 by @milton-minervino
-
Remove duplicated and obsolete tests and clean test-generated files accidentally tracked by Git. #741 #766 by @milton-minervino and @Anai-Guo
Documentation and examples
-
Add new example notebooks and refresh notebook tutorials. #709 #781 by @guillaume-vignal and @milton-minervino
-
Move WebApp launch examples from documentation/notebooks into reusable scripts. #779 by @milton-minervino
-
Update and clarify the contribution guide. #728 #769 by @milton-minervino and @guerinclement
-
Fix incorrect documented defaults and docstrings referring to non-existing parameters. #765 #767 by @VenishPaneliya
-
Fix report documentation build and README link to the report notebook. #800 by @milton-minervino
-
Fix a typo in the Shapash architecture diagram. #712 by @guerinclement
-
Add P16 and Inria acknowledgements/logos. #797 by @guillaume-vignal
Maintenance
- Merge the latest master changes back into the development branch. #763 by @guillaume-vignal
New Contributors
- @dalestee made their first contribution in #750
- @milton-minervino made their first contribution in #710
- @meubleancien made their first contribution in #740
- @VenishPaneliya made their first contribution in #767
- @Anai-Guo made their first contribution in #766
- @aminemanai2003 made their first contribution in #791
Full Changelog: v2.9.0...v2.10.0