Skip to content

Releases: oegedijk/explainerdashboard

v0.2.16.1: deterministic component names

17 Dec 14:20
Compare
Choose a tag to compare

Bug fix/Improvement

  • Makes component name property for the default composites deterministic instead of random uuid.
    This should help remedy bugs with deployment using e.g. docker swarm.
    • When you pass a list of ExplainerComponents to ExplainerDashboard the tabs will get names '1', '2', '3', etc.
    • If you then make sure that subcomponents get passed a name like name=self.name+"1", then subcomponents will have deterministic names as well.
    • this has been implemented for the default Composites that make up the default explainerdashboard

v0.2.16: whatif improvements

16 Dec 20:45
Compare
Choose a tag to compare

Version 0.2.16:

Breaking Changes

  • hide_whatifcontribution parameter now called hide_whatifcontributiongraph

New Features

  • added parameter n_input_cols to FeatureInputComponent to select in how many columns to split the inputs
  • Made PredictionSummaryComponent and ShapContributionTableComponent also work
    with InputFeatureComponent
  • added a PredictionSummaryComponent and ShapContributionTableComponent
    to the "what if" tab
    • hide with hide_whatifprediction=True and hide_whatifcontributiontable=True

Improvements

  • features of FeatureInputComponent are now ordered by mean shap importance
  • Added range indicator for numerical features in FeatureInputComponent
    • hide them hide_range=True
  • changed a number of dropdowns from dcc.Dropdown to dbc.Select
  • reordered the regression random index selector
    component a bit

v0.2.15: hide individual components

10 Dec 10:44
1f96f20
Compare
Choose a tag to compare

Version 0.2.15:

New Features

  • can now hide entire components on tabs/composites:

    ExplainerDashboard(explainer, 
        # importances tab:
        hide_importances=True,
        # classification stats tab:
        hide_globalcutoff=True, hide_modelsummary=True, 
        hide_confusionmatrix=True, hide_precision=True, 
        hide_classification=True, hide_rocauc=True, 
        hide_prauc=True, hide_liftcurve=True, hide_cumprecision=True,
        # regression stats tab:
        # hide_modelsummary=True, 
        hide_predsvsactual=True, hide_residuals=True, 
        hide_regvscol=True,
        # individual predictions:
        hide_predindexselector=True, hide_predictionsummary=True,
        hide_contributiongraph=True, hide_pdp=True, 
        hide_contributiontable=True,
        # whatif:
        hide_whatifindexselector=True, hide_inputeditor=True, 
        hide_whatifcontribution=True, hide_whatifpdp=True,
        # shap dependence:
        hide_shapsummary=True, hide_shapdependence=True,
        # shap interactions:
        hide_interactionsummary=True, hide_interactiondependence=True,
        # decisiontrees:
        hide_treeindexselector=True, hide_treesgraph=True, 
        hide_treepathtable=True, hide_treepathgraph=True,
        ).run()
    

Bug Fixes

  • Fixed bug where if you passed a default index as **kwargs, the random index selector
    would still fire at startup, overriding the passed index
  • Fixed bug where in case of ties in shap values the contributions graph/table would show
    more than depth/topx feature
  • Fixed bug where favicon was not showing when using custom bootstrap theme
  • Fixed bug where logodds where multiplied by 100 in ShapContributionTableComponent

Improvements

  • added checks on logins parameter to give more helpful error messages
    • also now accepts a single pair of logins: logins=['user1', 'password1']
  • added a hide_footer parameter to components with a CardFooter

v0.2.14:

09 Dec 08:08
Compare
Choose a tag to compare

Version 0.2.14:

New Features

  • added bootstrap parameter to dashboard to make theming easier:
    e.g. ExplainerDashboard(explainer, bootstrap=dbc.themes.FLATLY).run()
  • added hide_subtitle parameter to all components with subtitles
  • added description parameter to all components to adjust the hover-over-title
    tooltip
  • can pass additional **kwargs to ExplainerDashboard.from_config() to override
    stored parameters, e.g. db = ExplainerDashboard.from_config("dashboard.yaml", higher_is_better=False)

Bug Fixes

  • fixed bug where drop_na=True for explainer.plot_pdp() was not working.

Improvements

  • **kwargs are now also stored when calling ExplainerDashboard.to_yaml()
  • turned single radioitems into switches
  • RegressionVsColComponent: hide "show point cloud next to violin" switch
    when col is not in cats

v0.2.13.2: RegressionRandomIndexComponent bug fix

03 Dec 19:44
Compare
Choose a tag to compare

Version 0.2.13.2

Bug Fixes

  • fixed RegressionRandomIndexComponent bug that crashed when y.astype(np.int64),
    now casting all slider ranges to float.

v0.2.13.1: bug fixes

02 Dec 09:48
Compare
Choose a tag to compare

Version 0.2.13.1

Bug Fixes

  • fixed pdp bug introduced with setting X.index to self.idxs where
    the highlighted index was not the right index
  • now hiding entire CardHeader when hide_title=True
  • index was not initialized in ShapContributionsGraphComponent and Shap ContributionsTableComponent

v0.2.13: visual upgrade

01 Dec 14:59
4c0f558
Compare
Choose a tag to compare

Version 0.2.13:

Breaking Changes

  • Now always have to pass a specific port when terminating a JupyterDash-based
    (i.e. inline, external or jupyterlab) dashboard: ExplainerDashboard.terminate(port=8050)
    • but now also works as a classmethod, so don't have to instantiate an
      actual dashboard just to terminate one!
  • ExplainerComponent _register_components has been renamed to component_callbacks
    to avoid the confusing underscore

New Features

  • new: ClassifierPredictionSummaryComponent,RegressionPredictionSummaryComponent
    • already integrated into the individual predictions tab
    • also added a piechart with predictions
  • Wrapped all the ExplainerComponents in dbc.Card for a cleaner look to the dashboard.
  • added subtitles to all components

Improvements

  • using go.Scattergl instead of go.Scatter for some plots which should improve
    performance with larger datasets
  • ExplainerDashboard.terminate() is now a classmethod, so don't have to build
    an ExplainerDashboard instance in order to terminate a running JupyterDash
    dashboard.
  • added no_permutations boolean argument to ImportancesComponent (that
    you can also pass to ExplainerDashboard **kwargs)

Other Changes

  • Added warning that kwargs get passed down the ExplainerComponents
  • Added exception when trying to use ClassifierRandomIndexComponent with a
    RegressionExplainer or RegressionRandomIndexComponent with a ClassifierExplainer
  • dashboard now uses Composites directly instead of the ExplainerTabs

v0.2.12.1: fix RangeIndex bug

26 Nov 14:47
Compare
Choose a tag to compare

v0.2.12.1

Bug Fix:

  • When X had a RangeIndex, the plot against feature component would not work. This is now fixed (by casting it to a str index)

Improvement

  • hiding orientation dropdown on ShapContributionsGraphComponent by default. (undo by passing hide_orientation=False.)

v0.2.12: add tooltips to all the things

22 Nov 21:11
Compare
Choose a tag to compare

Version 0.2.12:

Breaking Changes

  • removed metrics_markdown() method. Added metrics_descriptions() that
    describes the metric in words.
  • removed PredsVsColComponent, ResidualsVsColComponent and ActualVsColComponent,
    these three are now subsumed in RegressionVsColComponent.

New Features

  • Added tooltips everywhere throughout the dashboard to explainer
    components, plots, dropdowns and toggles of the dashboard itself.

Improvements

  • changed colors on contributions graph and xgboost trees graph: up=green, down=red
    • added higher_is_better parameter. Set to False to switch green and red colors.
  • Clarified wording on index selector components
  • hiding group cats toggle everywhere when no cats are passed
  • passing **kwargs of ExplainerDashbaord down to all all tabs and (sub) components
    so that you can configure components from an ExplainerDashboard param.
    e.g. ExplainerDashboard(explainer, higher_is_better=False).run() will
    pass the higher_is_better param down to all components. In the case of the
    ShapContributionsGraphComponent and the XGBoostDecisionTrees component
    this will cause the red and green colors to flip (normally green is up
    and red is down.)

v0.2.11:

18 Nov 13:35
Compare
Choose a tag to compare

Version 0.2.11:

New Features

  • added (very limited) sklearn.Pipeline support. You can pass a Pipeline as
    model parameter as long as the pipeline either:
    1. Does not add, remove or reorders any input columns
    2. has a .get_feature_names() method that returns the new column names
      (this is currently beings debated in sklearn SLEP007)
  • added cutoff slider to CumulativePrecisionComponent
  • For RegressionExplainer added ActualVsColComponent and PredsVsColComponent
    in order to investigate partial correlations between y/preds and
    various features.
  • added index_name parameter: name of the index column (defaults to X.index.name
    or idxs.name). So when you pass index_name="Passenger", you get
    a "Random Passenger" button on the index selector instead of "Random Index",
    etc.

Bug Fixes

  • Fixed a number of bugs for when no labels are passed (y=None):
    • fixing explainer.random_index() for when y is missing
    • Hiding label/y/residuals selector in RandomIndexSelectors
    • Hiding y/residuals in prediction summary
    • Hiding model_summary tab
    • Removing permutation importances from dashboard

Improvements

  • Seperated labels for "observed" and "average prediction" better in tree plot
  • Renamed "actual" to "observed" in prediction summary
  • added unique column check for whatif-component with clearer error message
  • model metrics now formatted in a nice table
  • removed most of the loading spinners as most graphs are not long loads anyway.