Source code for contextualized.easy.ContextualizedClassifier
"""
sklearn-like interface to Contextualized Classifiers.
"""
import numpy as np
from contextualized.functions import LINK_FUNCTIONS
from contextualized.easy import ContextualizedRegressor
from contextualized.regression import LOSSES
[docs]class ContextualizedClassifier(ContextualizedRegressor):
"""
Contextualized Logistic Regression reveals context-dependent decisions and decision boundaries.
Implemented as a ContextualizedRegressor with logistic link function and binary cross-entropy loss.
Args:
n_bootstraps (int, optional): Number of bootstraps to use. Defaults to 1.
num_archetypes (int, optional): Number of archetypes to use. Defaults to 0, which used the NaiveMetaModel. If > 0, uses archetypes in the ContextualizedMetaModel.
encoder_type (str, optional): Type of encoder to use ("mlp", "ngam", "linear"). Defaults to "mlp".
alpha (float, optional): Regularization strength. Defaults to 0.0.
mu_ratio (float, optional): Float in range (0.0, 1.0), governs how much the regularization applies to context-specific parameters or context-specific offsets. Defaults to 0.0.
l1_ratio (float, optional): Float in range (0.0, 1.0), governs how much the regularization penalizes l1 vs l2 parameter norms. Defaults to 0.0.
"""
def __init__(self, **kwargs):
kwargs["link_fn"] = LINK_FUNCTIONS["logistic"]
kwargs["loss_fn"] = LOSSES["bceloss"]
super().__init__(**kwargs)
[docs] def predict(self, C, X, individual_preds=False, **kwargs):
"""Predict binary outcomes from context C and predictors X.
Args:
C (np.ndarray): Context array of shape (n_samples, n_context_features)
X (np.ndarray): Predictor array of shape (N, n_features)
individual_preds (bool, optional): Whether to return individual predictions for each model. Defaults to False.
Returns:
Union[np.ndarray, List[np.ndarray]]: The binary outcomes predicted by the context-specific models (n_samples, y_dim). Returned as lists of individual bootstraps if individual_preds is True.
"""
return np.round(super().predict(C, X, individual_preds, **kwargs))
[docs] def predict_proba(self, C, X, **kwargs):
"""
Predict probabilities of outcomes from context C and predictors X.
Args:
C (np.ndarray): Context array of shape (n_samples, n_context_features)
X (np.ndarray): Predictor array of shape (N, n_features)
individual_preds (bool, optional): Whether to return individual predictions for each model. Defaults to False.
Returns:
Union[np.ndarray, List[np.ndarray]]: The outcome probabilities predicted by the context-specific models (n_samples, y_dim, 2). Returned as lists of individual bootstraps if individual_preds is True.
"""
# Returns a np array of shape N samples, K outcomes, 2.
probs = super().predict(C, X, **kwargs)
return np.array([1 - probs, probs]).T.swapaxes(0, 1)