Skip to main content

Trustworthiness metrics and calibration tools for predictive models

Project description

TrustPy - Trustworthiness Python

Python package for validating AI/ML model reliability and uncertainty during development and before deployment. Distributed via Conda-Forge and PyPI.

The implementation is flexible and works out-the-box with any AI/ML library.

Installation

Recommended 1: Install via Conda-Forge

The easiest way to install trustpy-tools is via Conda-Forge, which handles all dependencies automatically. Run the following command:

conda install -c conda-forge trustpy-tools

Recommended 2: Install via PyPI (pip install)

If you prefer using pip (PyPI), you can install directly:

pip install trustpy-tools

Alternative: Manual Installation

If you prefer to install the package manually or are not using Conda, you can install the required dependencies and clone the repository.

Install Dependencies

  • NumPy: For numerical calculations.
  • Matplotlib: For plotting the trust spectrum.
  • Scikit-learn: For Kernel Density Estimation (KDE) in trust density estimation.

Install them via conda:

conda install numpy matplotlib scikit-learn

or

Install them via pip:

pip install numpy matplotlib scikit-learn

Clone the Repository

git clone https://github.com/yaniker/TrustPy.git
cd TrustPy

You can verify installation by running:

python -c "from trustpy import NTS, CNTS; print('TrustPy is ready.')"

Example Usage

from trustpy import NTS, CNTS #This is how the package is imported.
import numpy as np

# Example oracle and predictions
oracle = np.array([0, 0, 1, 2, 2, 0, 1])  # True labels
predictions = np.array([
    [0.8, 0.1, 0.1],  # Correct, high confidence
    [1.0, 0.0, 0.0],  # Correct, high confidence
    [0.2, 0.7, 0.1],  # Correct, high confidence
    [0.1, 0.2, 0.7],  # Correct, high confidence
    [0.1, 0.4, 0.5],  # Correct, lower confidence
    [0.1, 0.8, 0.1],  # Incorrect, high confidence
    [0.3, 0.3, 0.4]   # Incorrect, low confidence
]
) #Replace this with your model's predictions (`predictions = model.predict()`)

# FOR NETTRUSTSCORE #
# Initialize with default parameters
nts = NTS(oracle, predictions, show_summary=True, export_summary=True, trust_spectrum=True)
nts_scores_dict = nts.compute() # Computes trustworthiness for each class and overall.

# FOR CONDITIONAL NETTRUSTSCORE #
# Initialize with default parameters
cnts = CNTS(oracle, predictions, show_summary=True, export_summary=True, trust_spectrum=True)
cnts_scores_dict = cnts.compute() # Computes trustworthiness for each class and overall.

# Sets show_summary=True to print the results table.
# Sets export_summary=True to save the results.
# Sets trust_spectrum=True to generate plots like:
# - trustpy/nts/trust_spectrum.png (for NTS)
# - trustpy/cnts/trust_spectrum.png and conditional_trust_densities.png (for CNTS)

Example Plot for Trust Spectrum (trust_spectrum = True) Alt text

Example Plot for Conditional Trust Spectrum (trust_spectrum = True) Alt text

I shared the codes for the plots Python scripts for plots for users to modify as needed.

Command Line Interface (CLI)

You can run TrustPy directly from the command line after installation. Example:

python -m trustpy --oracle oracle.npy --pred preds.npy --mode cnts --trust_spectrum

For this you will need your actual/predicted results in oracle.npy and preds.npy format. You can generate test samples via:

import numpy as np

oracle = np.array([0, 2, 1, 0, 1])
np.save("oracle.npy", oracle)

predictions = np.array([
    [0.8, 0.1, 0.1],  # correct
    [0.0, 0.0, 1.0],  # correct
    [0.2, 0.7, 0.1],  # correct
    [0.1, 0.8, 0.1],  # wrong
    [0.3, 0.3, 0.4],  # wrong
])
np.save("preds.npy", predictions)

Post Installation Testing

You can run this single command to verify that TrustPy runs correctly and can generate trust spectrum plots:
For NTS:

python -c "from trustpy import NTS; import numpy as np; NTS(np.array([0,1,1,0]), np.array([[0.8,0.2],[0.2,0.8],[0.4,0.6],[0.9,0.1]]), trust_spectrum=True, show_summary=False).compute()"

For CNTS:

python -c "from trustpy import CNTS; import numpy as np; CNTS(np.array([0,1,1,0]), np.array([[0.8,0.2],[0.2,0.8],[0.4,0.6],[0.9,0.1]]), trust_spectrum=True, show_summary=False).compute()"

This will generate a test plot and save it to:

./trustpy/nts/trust_spectrum.png
./trustpy/cnts/conditional_trust_densities.png

Unit Testing

All unit tests were run using pytest with full coverage prior to release to ensure reliability and correctness.

After installation, you can run all tests to verify everything is working:

python -m pytest tests/

Make sure to install pytest first.

pip install pytest

Licence

This project is licensed under the MIT License. See LICENSE for details.

Citations

For scholarly references and the origins of the techniques used in this package, please refer to the CITATION file.

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

trustpy_tools-2.0.12.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trustpy_tools-2.0.12-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file trustpy_tools-2.0.12.tar.gz.

File metadata

  • Download URL: trustpy_tools-2.0.12.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for trustpy_tools-2.0.12.tar.gz
Algorithm Hash digest
SHA256 78d1340b8637c6aaa0d776dc47c8676461de9002dfe60a2e1be904b17e9ef688
MD5 e4e8695d50c77ec6d48b9e2785115000
BLAKE2b-256 bab86ee6e3a8fcc1f05bc8ad9669e5df22b0ae643b4a5947230a76b5ae950311

See more details on using hashes here.

File details

Details for the file trustpy_tools-2.0.12-py3-none-any.whl.

File metadata

  • Download URL: trustpy_tools-2.0.12-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for trustpy_tools-2.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 24f6fa01e96ffeaab017d02a98bae46f1679b06e5b7cbc0ae53c6b8ea6176a59
MD5 54f505a5a232eeed8589f83becbccedf
BLAKE2b-256 b9bb4cd79f2e53b343fd406e877794af82ee7d9fca4ef1a4486d5bc2e6c9f006

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page