logml.model_search.shap

Functions

aggregate_shap_values_to_columns(exp)

Aggregate shap values from (samples, columns) to (columns,)

create_shap_explainer(model_cls)

Creates explainer for a given model class.

Classes

ModelExplainerType(value)

Defines model explainer subsystems.

ShapExplainable()

Implemented by BaseModels to provide model-specific shap parameters.

ShapExplainerContext([estimator, dataset, ...])

Context shared between shap invoker and model

ShapExplainerState([estimator, data, ...])

Internal shap explainer state, updated each fold iteration.

ShapExplanationWrapper([shap_exp, metrics])

Container for shap explanation and metrics weights.

ShapModelExplainer()

Wrapper around default shap.Explainer class.

Exceptions

MissingExplainerException

Exception risen in case if explanation module cannot find or identify suitable explainer for a given model

class logml.model_search.shap.ShapExplainerContext(estimator: Optional[object] = None, dataset: Optional[logml.data.datasets.cv_dataset.ModelingDataset] = None, train_idx: Optional[list] = None, test_idx: Optional[list] = None)

Bases: object

Context shared between shap invoker and model

estimator: object = None
dataset: logml.data.datasets.cv_dataset.ModelingDataset = None
train_idx: list = None
class logml.model_search.shap.ShapExplainerState(estimator: Optional[object] = None, data: Optional[numpy.array] = None, masker: Optional[object] = None, explainer: Optional[shap.explainers._explainer.Explainer] = None, explainer_invoke_params: Optional[dict] = None)

Bases: object

Internal shap explainer state, updated each fold iteration.

estimator: object = None
data: numpy.array = None
masker: object = None
explainer: shap.explainers._explainer.Explainer = None
explainer_invoke_params: dict = None
class logml.model_search.shap.ShapExplainable

Bases: object

Implemented by BaseModels to provide model-specific shap parameters.

validate_shap_run(dataset: Optional[logml.data.datasets.cv_dataset.ModelingDataset] = None, **kwargs)

Validate specific data before calculating shap values. Raise ModelException to fail validation.

get_shap_init_params(ctx: Optional[logml.model_search.shap.ShapExplainerContext] = None) dict

Define shap explainer initialization parameters

Returns

Dictionary to be passed to estimator constructor. use_predict_method: if true, then estimator.predict method is passed to explainer.

get_shap_invoke_params(ctx: Optional[logml.model_search.shap.ShapExplainerContext] = None) dict

Define shap explainer invocation parameters Return dictionary to be passed to estimator function.

set_shap_invoke_params(params: dict)

Set shap explainer invocation parameters

create_explainer(ctx: Optional[logml.model_search.shap.ShapExplainerContext] = None) shap.explainers._explainer.Explainer

Create shap explainer. Note: override in model class to create model-specific explainer type.

get_explanation_data(ctx: Optional[logml.model_search.shap.ShapExplainerContext] = None) numpy.array

Get data to generate shap values. By default uses training subset.

prepare_shap_state(state: logml.model_search.shap.ShapExplainerState, ctx: logml.model_search.shap.ShapExplainerContext)

Initialize state before invoke.

class logml.model_search.shap.ShapExplanationWrapper(shap_exp: Optional[shap._explanation.Explanation] = None, metrics: Optional[logml.models.base.MetricsResult] = None)

Bases: object

Container for shap explanation and metrics weights.

shap_exp: shap._explanation.Explanation = None
metrics: logml.models.base.MetricsResult = None
class logml.model_search.shap.ShapModelExplainer

Bases: object

Wrapper around default shap.Explainer class.

cals_shap_values(model: Union[logml.models.base.BaseModel, logml.model_search.shap.ShapExplainable], dataset: logml.data.datasets.cv_dataset.ModelingDataset) Optional[List[logml.model_search.shap.ShapExplanationWrapper]]

Calculate shap values for a given fit Mode instance and dataset.

logml.model_search.shap.create_shap_explainer(model_cls: type) Optional[logml.model_search.shap.ShapModelExplainer]

Creates explainer for a given model class.

logml.model_search.shap.aggregate_shap_values_to_columns(exp: shap._explanation.Explanation) numpy.array

Aggregate shap values from (samples, columns) to (columns,)

exception logml.model_search.shap.MissingExplainerException

Bases: Exception

Exception risen in case if explanation module cannot find or identify suitable explainer for a given model

class logml.model_search.shap.ModelExplainerType(value)

Bases: str, enum.Enum

Defines model explainer subsystems.

SHAP = 'shap'