A library for explainable AI with SHAP and GPT-based explanations.
Project description
xai-gpt-shap
xai-gpt-shap is a Python library for explainable AI (XAI) that combines SHAP (SHapley Additive exPlanations) value analysis with OpenAI GPT-based explanations to make machine learning model predictions more interpretable.
This library allows you to:
- Perform SHAP analysis on machine learning models.
- Generate role-specific explanations for SHAP results using OpenAI GPT (e.g., for beginners, analysts, or researchers).
- Interactively explore and understand SHAP results via a command-line interface (CLI).
Key Features
- SHAP Integration: Calculate SHAP values for any machine learning model and dataset.
- OpenAI GPT Integration: Automatically explain SHAP results using OpenAI GPT with role-specific messages (e.g., beginner, analyst, executive summary).
- Interactive Chat: Engage in an interactive conversation with GPT to further explore results.
- CLI Support: Easily run SHAP analysis and explanations directly from the command line.
Installation
Install the library using pip:
pip install xai-gpt-shap
Running
After installing the package, you can run it directly from the terminal using the xai-gpt-shap command.
Example:
xai-gpt-shap --model_path ../data/input/shap_model.pkl \
--data_path ../data/input/x_data.csv \
--instance_path ../data/input/selected_instance.csv \
--target_class 1 \
--output_csv ../data/output/output_csv.csv \
--role beginner \
--api_key YOUR_API_KEY
Available Options:
--api_key: Your OpenAI API key.--model_path: Path to the saved machine learning model (e.g.,model.pklormodel.onnx).--data_path: Path to the dataset used for SHAP analysis (e.g.,data.csv).--instance_path: Path to a CSV file containing the instance to analyze (e.g.,instance.csv).--target_class: The target class for SHAP analysis (e.g.,1for binary classification).--role: Role for the GPT explanation (beginner,student,analyst,researcher,executive_summary).--interactive: Enable interactive chat mode after the initial explanation.
3. Programmatic Usage
You can also use the library programmatically in Python scripts.
Example Code:
from xai_gpt_shap import ChatGptClient, ShapCalculator
# Initialize the SHAP calculator
calculator = ShapCalculator(model_path="model.pkl", data_path="data.csv", target_class=1)
calculator.load_model()
calculator.load_data()
# Select an instance for SHAP analysis
selected_instance = calculator.data.iloc[[0]] # First instance
shap_results = calculator.calculate_shap_values_for_instance(selected_instance)
# Initialize ChatGPT client
gpt_client = ChatGptClient(api_key="YOUR_API_KEY")
# Generate a role-specific explanation
message = gpt_client.create_summary_and_message(
shap_df=shap_results,
model="XGBoost",
prediction_summary="Predicted income > 50k",
target_class=1,
role="beginner",
)
response = gpt_client.send_initial_prompt(message)
# Print the explanation
print(response)
# Start an interactive chat for follow-up questions
gpt_client.interactive_chat()
File Structure
xai_gpt_shap/
│
├── xai_gpt_shap/ # Main package directory
│ ├── __init__.py # Package initialization
│ ├── ChatGptClient.py # Handles GPT interactions
│ ├── ShapCalculator.py # Performs SHAP analysis
│ ├── roles.py # Defines role-specific messages
│
├── tests/ # Unit tests
│ ├── test_chat_gpt.py
│ ├── test_shap_calculator.py
│
├── README.md # Documentation
├── pyproject.toml # Poetry configuration
├── requirements.txt # Alternative dependency file
└── LICENSE # License information
Supported Model Formats
This library supports the following model formats:
- ONNX (recommended): Platform-independent and standardized format.
- Pickle: Python models saved with
pickle(e.g., Scikit-learn, XGBoost).
Note: When using Pickle models, the user must ensure that the required libraries (e.g., scikit-learn, xgboost) are installed.
Key Methods
Here’s a breakdown of key methods in the library:
| Class | Method | Description | Parameters | Returns |
|---|---|---|---|---|
ChatGptClient |
send_initial_prompt(prompt) |
Sends an initial prompt to OpenAI GPT and returns the assistant’s response. | prompt (str): The prompt to send to GPT. |
str: The assistant’s response. |
interactive_chat() |
Starts an interactive session with GPT for follow-up questions. | None | None | |
create_summary_and_message(...) |
Generates a GPT prompt from SHAP results, model details, and role-specific requirements. | shap_df (DataFrame): SHAP values, model (str): Model name, short_summary (str): Summary, choice_class (str): Class name, role (str): Role. |
str: Generated GPT prompt. |
|
set_system_message(message) |
Sets the system-level message to configure GPT’s behavior. | message (str): System-level message. |
None | |
stream_response() |
Streams GPT’s response in real time to the console. | None | str: The full streamed response. |
|
clean_chat_history(max_history_tokens) |
Cleans the chat history to reduce token count in case of large conversation contexts. | max_history_tokens (int): Maximum tokens allowed in history. |
None | |
ShapCalculator |
load_model(model_path) |
Loads a machine learning model from a file. | model_path (str): Path to the model file. |
None |
load_data(data_path) |
Loads a dataset from a CSV file. | data_path (str): Path to the dataset file. |
None | |
set_target_class(target_class) |
Sets the target class for SHAP analysis (for multi-class problems). | target_class (int): The class index to analyze. |
None | |
calculate_shap_values_for_instance(instance) |
Calculates SHAP values for a given instance and returns a DataFrame with feature-level explanations. | instance (DataFrame): The instance for SHAP analysis. |
DataFrame: SHAP values with feature importance. |
|
save_shap_values_to_csv(output_path) |
Saves the SHAP values to a CSV file. | output_path (str): Path to save the CSV file. |
None | |
get_feature_importance() |
Computes and summarizes feature importance across all instances in the dataset. | None | DataFrame: Feature importance summary. |
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 xai_gpt_shap-1.0.1.tar.gz.
File metadata
- Download URL: xai_gpt_shap-1.0.1.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1a67c7dac74e6bc506f2198638c5a41cac67311f22836d1749c015e5a57ce9b
|
|
| MD5 |
0952da34a50eb18f2c73b889bdf32032
|
|
| BLAKE2b-256 |
cacaf452346fd6baa359f72c3f7736c15b65e472b710c0f1659844d23f7ca1c0
|
File details
Details for the file xai_gpt_shap-1.0.1-py3-none-any.whl.
File metadata
- Download URL: xai_gpt_shap-1.0.1-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c91972766325e99378392472c83c5cc5c7de555dcbfc3ef71e6f76683c63de84
|
|
| MD5 |
659f2b87816fc830584994c3604c6e34
|
|
| BLAKE2b-256 |
4033752a52a9e481480066a0e7210174159d6d3ec01fa86bfefd9a112dfbbbd6
|