Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:SeldonIO Seldon core Alibi Explainer Training

From Leeroopedia
Field Value
Type API Doc
Overview Concrete tools for training model explainers provided by the alibi library.
Domains Explainability, MLOps
Workflow Model_Explainability
Related Principle SeldonIO_Seldon_core_Explainer_Model_Training
Source samples/scripts/explainers/make_test_models.py:L147-265, samples/scripts/models/income/train.py:L70-103
Last Updated 2026-02-13 00:00 GMT

Code Reference

AnchorTabular for Income Classification

Source: samples/scripts/explainers/make_test_models.py:L163-228

def make_anchor_tabular_income(dirname=None):
    np.random.seed(0)
    adult = fetch_adult()
    data = adult.data
    target = adult.target
    feature_names = adult.feature_names
    category_map = adult.category_map

    # Build classifier pipeline
    ordinal_features = [x for x in range(len(feature_names)) if x not in list(category_map.keys())]
    ordinal_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='median')), ('scaler', StandardScaler())])
    categorical_features = list(category_map.keys())
    categorical_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='median')), ('onehot', OneHotEncoder(handle_unknown='ignore'))])
    preprocessor = ColumnTransformer(transformers=[('num', ordinal_transformer, ordinal_features), ('cat', categorical_transformer, categorical_features)])
    clf = RandomForestClassifier(n_estimators=50)
    model_pipeline = Pipeline(steps=[('preprocess', preprocessor), ('classifier', clf)])
    model_pipeline.fit(X_train, Y_train)

    explainer = AnchorTabular(model_pipeline.predict, feature_names, categorical_names=category_map, seed=1)
    explainer.fit(X_train, disc_perc=[25, 50, 75])

    if dirname is not None:
        explainer.save(dirname)
    return explainer

AnchorText for Movie Sentiment

Source: samples/scripts/explainers/make_test_models.py:L231-265

def make_anchor_text_moviesentiment(dirname=None):
    movies = fetch_movie_sentiment()
    data = movies.data
    labels = movies.target
    train, _, train_labels, test_labels = train_test_split(data, labels, test_size=.2, random_state=42)

    vectorizer = CountVectorizer(min_df=1)
    vectorizer.fit(train)
    clf = LogisticRegression(solver='liblinear')
    clf.fit(vectorizer.transform(train), train_labels)
    predict_fn = lambda x: clf.predict(vectorizer.transform(x))

    nlp = spacy.load('en_core_web_md')
    explainer = AnchorText(predictor=predict_fn, sampling_strategy='unknown', nlp=nlp)

    if dirname is not None:
        explainer.save(dirname)
    return explainer

KernelShap for Wine Classification

Source: samples/scripts/explainers/make_test_models.py:L44-78

def make_kernel_shap(dirname=None):
    np.random.seed(0)
    wine = load_wine()
    X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.2, random_state=0)
    scaler = StandardScaler().fit(X_train)
    X_train_norm = scaler.transform(X_train)
    classifier = SVC(kernel='rbf', C=1, gamma=0.1, decision_function_shape='ovr', random_state=0)
    classifier.fit(X_train_norm, y_train)

    svm_explainer = KernelShap(classifier.decision_function)
    svm_explainer.fit(X_train_norm)

    if dirname is not None:
        svm_explainer.save(dirname)
    return svm_explainer

Key Parameters

Constructor Parameters Description
AnchorTabular predictor_fn, feature_names, categorical_names, seed Tabular anchor explainer; predictor_fn is the model's predict function, categorical_names maps column indices to category names
AnchorTabular.fit X_train, disc_perc Fits discretization bins; disc_perc sets percentile boundaries (e.g., [25, 50, 75])
AnchorText predictor, sampling_strategy, nlp Text anchor explainer; sampling_strategy controls word replacement ('unknown' replaces with UNK tokens); nlp is a spaCy model
KernelShap predictor_fn SHAP explainer; predictor_fn is the model's decision function or predict method
KernelShap.fit X_train Fits background distribution for marginal expectations

I/O Contract

Inputs

  • Trained classifier: A model with a predict or decision_function method (or equivalent callable)
  • Training data: NumPy array of training features (X_train) for AnchorTabular and KernelShap; list of text strings for AnchorText
  • Feature metadata: Feature names list, category map for categorical features (AnchorTabular); spaCy NLP model (AnchorText)

Outputs

  • Serialized explainer artifacts: Written via explainer.save(dirname) to a directory, producing files that can be uploaded to GCS and served by MLServer's Alibi-Explain runtime

External Dependencies

  • alibi (AnchorTabular, AnchorText, KernelShap)
  • sklearn (Pipeline, StandardScaler, RandomForestClassifier, SVC, etc.)
  • spacy (en_core_web_md model for AnchorText)
  • numpy

Usage Examples

Training and Saving an AnchorTabular Explainer

from alibi.explainers import AnchorTabular
import numpy as np

# Assuming model_pipeline is already trained
explainer = AnchorTabular(model_pipeline.predict, feature_names, categorical_names=category_map, seed=1)
explainer.fit(X_train, disc_perc=[25, 50, 75])
explainer.save("/path/to/anchor-explainer")

Training and Saving a KernelShap Explainer

from alibi.explainers import KernelShap

svm_explainer = KernelShap(classifier.decision_function)
svm_explainer.fit(X_train_norm)
svm_explainer.save("/path/to/shap-explainer")

Knowledge Sources

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment