Source code for xailib.models.bbox

"""
Abstract base class for black-box model wrappers.

This module defines the :class:`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:
    :class:`xailib.models.sklearn_classifier_wrapper.sklearn_classifier_wrapper`
    :class:`xailib.models.keras_classifier_wrapper.KerasClassifierWrapper`
    :class:`xailib.models.pytorch_classifier_wrapper.PytorchClassifierWrapper`
"""

from abc import ABC, abstractmethod


[docs] class AbstractBBox(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. Attributes: 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) """ def __init__(self): """Initialize the AbstractBBox base class.""" pass
[docs] @abstractmethod def predict(self, X): """ Make predictions for input instances. Args: 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: numpy.ndarray: Predicted class labels for classification, or predicted values for regression. """ pass
[docs] @abstractmethod def predict_proba(self, X): """ Get prediction probabilities for input instances. Args: X: Input features in the same format as :meth:`predict`. Returns: numpy.ndarray: Predicted class probabilities of shape (n_samples, n_classes) for classification models. Raises: NotImplementedError: If the underlying model does not support probability predictions. """ pass