shap

Game-theoretic Shapley values to explain the output of any machine learning model

Library
PyPI
v0.52.0
25,692stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
92/100Excellent
Development Activity96
Maintenance96
Community76
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
87/100Excellent
Architecture87
Code Quality85
Innovation92
Learning Curve72

SHAP (SHapley Additive exPlanations) is a Python library for explaining the predictions of machine learning models using a game-theoretic approach based on Shapley values. It attributes each prediction to the contributions of individual input features, giving both local (per-prediction) and global (model-wide) interpretability.

SHAP connects optimal credit allocation with local explanations and ships specialized, high-performance explainers for tree ensembles, deep learning models, and linear models, along with model-agnostic explainers and a rich set of visualizations for understanding and debugging models.

What You Get

  • A unified, theoretically grounded framework for local and global model explanations
  • TreeExplainer for fast, exact explanations of gradient-boosted trees and random forests
  • DeepExplainer and GradientExplainer for neural networks in TensorFlow and PyTorch
  • Model-agnostic KernelExplainer, Permutation, and Partition explainers for any model
  • Rich visualizations including force, waterfall, beeswarm, and dependence plots

Common Use Cases

  • Explaining individual predictions to end users, auditors, or regulators
  • Identifying which features drive a model globally to guide feature engineering
  • Debugging models by spotting spurious or leaking features
  • Comparing feature attributions across models and datasets

Under The Hood

Architecture - SHAP is built around a common Explainer abstraction (shap/explainers/_explainer.py) with specialized subclasses in shap/explainers/: _tree.py (TreeExplainer), _deep/ (DeepExplainer), _gradient.py, _linear.py, _kernel.py, plus exact, permutation, and partition methods. Explanations are represented by a unified Explanation object (_explanation.py) that feeds the plots/ visualization layer, while maskers define how features are perturbed. Performance-critical tree traversal is implemented in a C extension under shap/cext/.

Tech Stack - Python with a C/C++ extension for tree explainers, built on NumPy, SciPy, pandas, scikit-learn, numba, and tqdm, with optional integrations for XGBoost, LightGBM, CatBoost, TensorFlow, and PyTorch. Much of the documentation and examples are delivered as Jupyter notebooks.

Code Quality - The project has a substantial tests/ tree mirroring the explainer and plot modules, a conftest.py, and CI, reflecting mature testing across many model backends. The modular explainer/masker/plot separation keeps the large surface area maintainable.

API Design - The public API is compact and consistent: construct an explainer with your model, call it on data to get an Explanation, then pass that to plotting helpers. Auto-detection of model type routes to the fastest available explainer, minimizing boilerplate, though effective use still benefits from understanding Shapley-value semantics.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search