Python wrapper for the R package shapr (via rpy2)
Project description
shaprpy
shaprpy is a Python wrapper for the R package shapr,
using the rpy2 Python library to access R from within Python.
Note: This wrapper is not as comprehensively tested as the R package.
rpy2has limited support on Windows, and the same therefore applies toshaprpy.shaprpyhas only been tested on Linux (and WSL - Windows Subsystem for Linux), and the below instructions assume a Linux environment.Requirement: Python 3.10 or later is required to use
shaprpy.
Changelog
For a list of changes and updates to the shaprpy package, see the shaprpy CHANGELOG.
Installation
These instructions assume you already have pip and R installed and available to the Python environment in which you want to run shaprpy.
- Official instructions for installing
pipcan be found here. - Official instructions for installing R can be found here.
On Debian/Ubuntu-based systems, R can also be installed via:
sudo apt update
sudo apt install r-base r-base-dev -y
1. Install the R package shapr
shaprpy requires the R package shapr (version 1.0.5 or newer).
In your R environment, install the latest version from CRAN using:
Rscript -e 'install.packages("shapr", repos="https://cran.rstudio.com")'
2. Ensure R is discoverable (R_HOME and PATH)
Sometimes rpy2 (which shaprpy relies on) cannot automatically locate your R installation. To ensure proper detection, verify that:
- R is available in your system
PATH, or - The
R_HOMEenvironment variable is set to your R installation directory.
Example:
export R_HOME=$(R RHOME)
export PATH=$PATH:$(R RHOME)/bin
3. Install the Python wrapper
Install directly from PyPI with:
pip install shaprpy
Local development install (for contributors)
If you have cloned the repository and want to install in development mode for local changes, navigate to the ./python directory and run:
pip install -e .
The -e flag installs in editable mode, allowing local code changes to be reflected immediately.
Quick Demo
from sklearn.ensemble import RandomForestRegressor
from shaprpy import explain
from shaprpy.datasets import load_california_housing
# Load example data
dfx_train, dfx_test, dfy_train, dfy_test = load_california_housing()
# Fit a model
model = RandomForestRegressor()
model.fit(dfx_train, dfy_train.values.flatten())
# Explain predictions
explanation = explain(
model=model,
x_train=dfx_train,
x_explain=dfx_test,
approach="empirical",
phi0=dfy_train.mean().item(),
seed=1
)
explanation.print() # Print the Shapley values
# Get a summary object with computation details
summary = explanation.summary()
print(summary) # Displays a formatted summary (also available directly via explanation.summary())
# Access specific summary attributes (available with tab-completion in Jupyter)
summary['approach'] # Approach used
summary['timing_summary']['total_time_secs'] # Total computation time
# Extract one or more specific result objects directly
explanation.get_results("proglang") # Programming language used (Python/R)
explanation.get_results("approach") # Approach used
explanation.get_results().keys() # All available result objects
# Plotting (requires the 'shap' library)
# Convert to a SHAP Explanation object
shap_exp = explanation.to_shap()
import shap
shap.plots.waterfall(shap_exp[0]) # Plot the first observation
Supported Models
shaprpy can explain predictions from models built with:
scikit-learnkeras(Sequential API)xgboost
For other model types, you can supply:
- A custom
predict_modelfunction - (Optionally) a custom
get_model_specsfunction toshaprpy.explain.
Examples
See the examples folder on GitHub for runnable examples, including:
- Basic usage with
scikit-learnmodels - Usage with
xgboostmodels - Usage with
kerasmodels - A custom PyTorch model
- Usage of the
Shaprclass and associatedShaprSummaryclass for exploration and extraction of explanation results. - Plotting functionality for the Shapley values through the
shappackage - The regression paradigm described in Olsen et al. (2024),
which shows:
- How to specify the regression model
- How to enable automatic cross-validation of hyperparameters
- How to apply pre-processing steps before fitting regression models
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shaprpy-0.4.1.tar.gz.
File metadata
- Download URL: shaprpy-0.4.1.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0bd05f72be0d7e5b304b77c61731d6ed3e709bc542fba66826da9ca4b15f6bb
|
|
| MD5 |
b4c0daf55d030b0c69857e6d1c2c89f2
|
|
| BLAKE2b-256 |
8a6768007328463adc2135e20b2aaf07d3ee73a988d5c59ba23ddff69b72eecf
|
File details
Details for the file shaprpy-0.4.1-py3-none-any.whl.
File metadata
- Download URL: shaprpy-0.4.1-py3-none-any.whl
- Upload date:
- Size: 19.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a8aa9de43ad6ab9d3dddb171aac24a0b86830a651119508e2bc22b64bef1769
|
|
| MD5 |
8d624c90f3817e642d2e9e576e590890
|
|
| BLAKE2b-256 |
241739b3544ea7c9efb9394207e62247df4f6097070918eb8557ce40543b17d3
|