The dashboard is constructed out of ExplainerComponents
: self-contained reusable
elements usually consisting of a plot or table and various dropdowns, sliders
and toggles to manipulate that plot. Components can be connected with connectors,
so that when you select an index in one component that automatically updates the
index in another component for example.
When you run ExplainerDashboard
you get the default dashboard with basically
every component listed below with every toggle and slider visible.
The ExplainerComponents
make it very easy to construct your own dashboard
with your own layout, with specific explanations for the workings and results
of your model. So you can select which components to use, where to put them
in the layout, which toggles and sliders to display, and what the initial values
for component should be. This way you can also control which interactive
aspects your end users can and cannot control.
You import the components with from explainerdashboard.custom import *
A simple example, where you build a page with only a ShapDependenceComponent
,
but with no group cats or highlight toggle, and initial feature set to 'Fare':
from explainerdashboard.custom import * class CustomDashboard(ExplainerComponent): def __init__(self, explainer, title="Custom Dashboard", name="None"): super().__init__(explainer, title, name=name) self.shap_dependence = ShapDependenceComponent(explainer, name=self.name+"dep", hide_title=True, hide_cats=True, hide_highlight=True, cats=True, col='Fare') def layout(self): return html.Div([ self.shap_dependence.layout() ]) ExplainerDashboard(explainer, CustomDashboard).run()
Each component subclasses ExplainerComponent
which provides the basic
functionality of registering subcomponents, dependencies, registering callbacks
of subcomponents, calculating dependencies, and providing a list of pos label
selectors of all subcomponents.
.. autoclass:: explainerdashboard.dashboard_methods.ExplainerComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.ShapSummaryComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.ShapDependenceComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.ShapSummaryDependenceConnector :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.InteractionSummaryComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.InteractionDependenceComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.InteractionSummaryDependenceConnector :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.ShapContributionsTableComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.shap_components.ShapContributionsGraphComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.overview_components.PredictionSummaryComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.overview_components.ImportancesComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.overview_components.FeatureDescriptionsComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.overview_components.PdpComponent :members:
Using the feature input component you can edit the features for a particular observation in order to check what would be the change in prediction if you change one or more features.
You can connect the FeatureInputComponent
to the
ShapContributionsGraphComponent
and the PdpComponent
using
the``feature_input_component`` parameter:
class WhatIfComposite(ExplainerComponent): def __init__(self, explainer, title="What if..."): super().__init__(explainer, title, name) self.input = FeatureInputComponent(explainer) self.contrib = ShapContributionsGraphComponent(explainer, feature_input_component=self.input) self.pdp = PdpComponent(explainer, feature_input_component=self.input)
.. autoclass:: explainerdashboard.dashboard_components.overview_components.FeatureInputComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.ClassifierRandomIndexComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.ClassifierPredictionSummaryComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.ConfusionMatrixComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.LiftCurveComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.ClassificationComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.RocAucComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.PrAucComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.PrecisionComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.classifier_components.CumulativePrecisionComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.regression_components.RegressionRandomIndexComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.regression_components.RegressionPredictionSummaryComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.regression_components.PredictedVsActualComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.regression_components.ResidualsComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.regression_components.RegressionVsColComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.regression_components.RegressionModelSummaryComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.decisiontree_components.DecisionTreesComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.decisiontree_components.DecisionPathTableComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.decisiontree_components.DecisionPathGraphComponent :members:
.. autoclass:: explainerdashboard.dashboard_components.connectors.CutoffPercentileComponent :members:
.. autoclass:: explainerdashboard.dashboard_methods.PosLabelSelector :members:
.. autoclass:: explainerdashboard.dashboard_components.connectors.PosLabelConnector :members:
.. autoclass:: explainerdashboard.dashboard_components.connectors.CutoffConnector :members:
.. autoclass:: explainerdashboard.dashboard_components.connectors.IndexConnector :members:
.. autoclass:: explainerdashboard.dashboard_components.connectors.HighlightConnector :members: