xailib.models package

Submodules

xailib.models.bbox module

Abstract base class for black-box model wrappers.

This module defines the AbstractBBox interface that all model wrappers must implement. Model wrappers provide a unified API for interacting with machine learning models from different frameworks (scikit-learn, Keras, PyTorch, etc.).

Classes:

AbstractBBox: Abstract base class for black-box model wrappers.

Example

Creating a custom model wrapper:

from xailib.models.bbox import AbstractBBox

class MyModelWrapper(AbstractBBox):
    def __init__(self, model):
        super().__init__()
        self.model = model

    def predict(self, X):
        return self.model.predict(X)

    def predict_proba(self, X):
        return self.model.predict_proba(X)

See also

xailib.models.sklearn_classifier_wrapper.sklearn_classifier_wrapper xailib.models.keras_classifier_wrapper.KerasClassifierWrapper xailib.models.pytorch_classifier_wrapper.PytorchClassifierWrapper

class xailib.models.bbox.AbstractBBox[source]

Bases: ABC

Abstract base class for black-box model wrappers.

This class defines the interface that all model wrappers must implement. Wrappers provide a consistent API for explainers to interact with different types of machine learning models.

All explainers in XAI-Lib expect models to be wrapped using a class that inherits from AbstractBBox.

Defined by subclasses. Common attributes include the wrapped model
and any preprocessing functions.

Example

>>> from xailib.models.sklearn_classifier_wrapper import sklearn_classifier_wrapper
>>> from sklearn.ensemble import RandomForestClassifier
>>> rf = RandomForestClassifier()
>>> rf.fit(X_train, y_train)
>>> bb = sklearn_classifier_wrapper(rf)
>>> predictions = bb.predict(X_test)
abstract predict(X)[source]

Make predictions for input instances.

Parameters:

X – Input features. The format depends on the model type: - For tabular models: numpy array of shape (n_samples, n_features) - For image models: numpy array of images - For text models: list of strings

Returns:

Predicted class labels for classification,

or predicted values for regression.

Return type:

numpy.ndarray

abstract predict_proba(X)[source]

Get prediction probabilities for input instances.

Parameters:

X – Input features in the same format as predict().

Returns:

Predicted class probabilities of shape

(n_samples, n_classes) for classification models.

Return type:

numpy.ndarray

Raises:

NotImplementedError – If the underlying model does not support probability predictions.

xailib.models.keras_classifier_wrapper module

Keras classifier wrapper for XAI-Lib.

This module provides a wrapper class for Keras/TensorFlow classifiers, allowing them to be used with XAI-Lib explainers.

Classes:

keras_classifier_wrapper: Wrapper for Keras classifiers.

Example

>>> from tensorflow import keras
>>> from xailib.models.keras_classifier_wrapper import keras_classifier_wrapper
>>>
>>> # Build and train your Keras model
>>> model = keras.Sequential([...])
>>> model.fit(X_train, y_train)
>>>
>>> # Wrap it for use with XAI-Lib
>>> bb = keras_classifier_wrapper(model)
>>>
>>> # Now use with any explainer
>>> from xailib.explainers.gradcam_explainer import GradCAMImageExplainer
>>> explainer = GradCAMImageExplainer(bb)
class xailib.models.keras_classifier_wrapper.keras_classifier_wrapper(classifier)[source]

Bases: AbstractBBox

Wrapper class for Keras/TensorFlow classifiers.

This class wraps Keras models to provide the standard interface expected by XAI-Lib explainers.

Parameters:

classifier – A trained Keras model.

bbox

The wrapped Keras model.

Example

>>> model = keras.Sequential([...])
>>> model.fit(X_train, y_train)
>>> wrapper = keras_classifier_wrapper(model)
>>> wrapper.predict(X_test[:5])
model()[source]

Get the underlying Keras model.

Returns:

The wrapped Keras model object.

predict(X)[source]

Make class predictions for input instances.

Parameters:

X – Input features as a numpy array.

Returns:

Predicted class labels.

Return type:

numpy.ndarray

predict_proba(X)[source]

Get prediction probabilities for input instances.

Parameters:

X – Input features as a numpy array.

Returns:

Predicted class probabilities.

Return type:

numpy.ndarray

xailib.models.keras_ts_classifier_wrapper module

Keras time series classifier wrapper for XAI-Lib.

This module provides a wrapper class for Keras time series classifiers, handling the specific input/output requirements of time series models.

Classes:

keras_classifier_wrapper: Wrapper for Keras time series classifiers.

Example

>>> from tensorflow import keras
>>> from xailib.models.keras_ts_classifier_wrapper import keras_classifier_wrapper
>>>
>>> # Build and train your Keras time series model
>>> model = keras.Sequential([
...     keras.layers.LSTM(64, input_shape=(timesteps, features)),
...     keras.layers.Dense(num_classes, activation='softmax')
... ])
>>> model.fit(X_train, y_train)
>>>
>>> # Wrap it for use with XAI-Lib
>>> bb = keras_classifier_wrapper(model)
class xailib.models.keras_ts_classifier_wrapper.keras_classifier_wrapper(classifier)[source]

Bases: AbstractBBox

Wrapper class for Keras time series classifiers.

This class wraps Keras models designed for time series classification. It handles the conversion of model outputs to class predictions and probability estimates.

Parameters:

classifier – A trained Keras time series model.

bbox

The wrapped Keras model.

Note

For time series models, inputs typically have shape (n_samples, n_timesteps, n_features).

model()[source]

Get the underlying Keras model.

Returns:

The wrapped Keras model object.

predict(X)[source]

Make class predictions for time series input instances.

For outputs with multiple classes, returns the argmax of the output.

Parameters:

X – Input time series as a numpy array with 3 dimensions (n_samples, n_timesteps, n_features).

Returns:

Predicted class labels as a 1D array.

Return type:

numpy.ndarray

predict_proba(X)[source]

Get prediction probabilities for time series input instances.

Parameters:

X – Input time series as a numpy array with 3 dimensions (n_samples, n_timesteps, n_features).

Returns:

Predicted class probabilities.

Return type:

numpy.ndarray

Note

Keras predict() already returns probabilities for softmax outputs.

xailib.models.pytorch_classifier_wrapper module

xailib.models.sklearn_classifier_wrapper module

Scikit-learn classifier wrapper for XAI-Lib.

This module provides a wrapper class for scikit-learn classifiers, allowing them to be used with XAI-Lib explainers.

Classes:

sklearn_classifier_wrapper: Wrapper for scikit-learn classifiers.

Example

>>> from sklearn.ensemble import RandomForestClassifier
>>> from xailib.models.sklearn_classifier_wrapper import sklearn_classifier_wrapper
>>>
>>> # Train your model
>>> rf = RandomForestClassifier()
>>> rf.fit(X_train, y_train)
>>>
>>> # Wrap it for use with XAI-Lib
>>> bb = sklearn_classifier_wrapper(rf)
>>>
>>> # Now use with any explainer
>>> from xailib.explainers.lime_explainer import LimeXAITabularExplainer
>>> explainer = LimeXAITabularExplainer(bb)
class xailib.models.sklearn_classifier_wrapper.sklearn_classifier_wrapper(classifier)[source]

Bases: AbstractBBox

Wrapper class for scikit-learn classifiers.

This class wraps scikit-learn compatible classifiers to provide the standard interface expected by XAI-Lib explainers.

Parameters:

classifier – A trained scikit-learn classifier with predict and predict_proba methods.

bbox

The wrapped scikit-learn classifier.

Example

>>> from sklearn.ensemble import GradientBoostingClassifier
>>> clf = GradientBoostingClassifier().fit(X_train, y_train)
>>> wrapper = sklearn_classifier_wrapper(clf)
>>> wrapper.predict(X_test[:5])
array([0, 1, 1, 0, 1])
model()[source]

Get the underlying scikit-learn model.

Returns:

The wrapped scikit-learn classifier object.

predict(X)[source]

Make class predictions for input instances.

Parameters:

X – Input features as a numpy array of shape (n_samples, n_features).

Returns:

Predicted class labels of shape (n_samples,).

Return type:

numpy.ndarray

predict_proba(X)[source]

Get prediction probabilities for input instances.

Parameters:

X – Input features as a numpy array of shape (n_samples, n_features).

Returns:

Predicted class probabilities of shape

(n_samples, n_classes).

Return type:

numpy.ndarray

xailib.models.sklearn_ts_classifier_wrapper module

Scikit-learn time series classifier wrapper for XAI-Lib.

This module provides a wrapper class for scikit-learn classifiers designed for time series data, handling the specific input shape requirements of time series models.

Classes:

sklearn_classifier_wrapper: Wrapper for scikit-learn time series classifiers.

Example

>>> from sklearn.ensemble import RandomForestClassifier
>>> from xailib.models.sklearn_ts_classifier_wrapper import sklearn_classifier_wrapper
>>>
>>> # Train your scikit-learn model on flattened time series
>>> rf = RandomForestClassifier()
>>> rf.fit(X_train_2d, y_train)
>>>
>>> # Wrap it for use with XAI-Lib (handles 3D to 2D conversion)
>>> bb = sklearn_classifier_wrapper(rf)
class xailib.models.sklearn_ts_classifier_wrapper.sklearn_classifier_wrapper(classifier)[source]

Bases: AbstractBBox

Wrapper class for scikit-learn time series classifiers.

This class wraps scikit-learn classifiers for time series data, handling the conversion from 3D time series format to the 2D format expected by scikit-learn.

Parameters:

classifier – A trained scikit-learn classifier.

bbox

The wrapped scikit-learn classifier.

Note

This wrapper converts 3D time series input (n_samples, n_timesteps, n_features) to 2D format (n_samples, n_timesteps) by taking the first feature dimension.

model()[source]

Get the underlying scikit-learn model.

Returns:

The wrapped scikit-learn classifier object.

predict(X)[source]

Make class predictions for time series input instances.

Converts 3D time series input to 2D format before prediction by selecting only the first feature column (index 0).

Parameters:

X – Input time series as a numpy array with 3 dimensions (n_samples, n_timesteps, n_features).

Returns:

Predicted class labels as a 1D array.

Return type:

numpy.ndarray

predict_proba(X)[source]

Get prediction probabilities for time series input instances.

Converts 3D time series input to 2D format before prediction by selecting only the first feature column (index 0).

Parameters:

X – Input time series as a numpy array with 3 dimensions (n_samples, n_timesteps, n_features).

Returns:

Predicted class probabilities.

Return type:

numpy.ndarray

Module contents

Model wrappers for XAI-Lib.

This subpackage provides wrapper classes for machine learning models from different frameworks (scikit-learn, Keras, PyTorch). These wrappers provide a unified interface for explainers to interact with various model types.

Available Wrappers

General Purpose:
Time Series:
Base Class:

Example

>>> from sklearn.ensemble import RandomForestClassifier
>>> from xailib.models.sklearn_classifier_wrapper import sklearn_classifier_wrapper
>>>
>>> rf = RandomForestClassifier().fit(X_train, y_train)
>>> bb = sklearn_classifier_wrapper(rf)
>>> predictions = bb.predict(X_test)