Scorecard

class optbinning.scorecard.Scorecard(binning_process: BinningProcess, estimator: object, scaling_method: str | None = None, scaling_method_params: dict | None = None, intercept_based: bool = False, reverse_scorecard: bool = False, rounding: bool = False, verbose: bool = False)

Bases: Base, BaseEstimator

Scorecard development given a binary or continuous target dtype.

Parameters:
  • binning_process (object) – A BinningProcess instance.

  • estimator (object) – A supervised learning estimator with a fit and predict method that provides information about feature coefficients through a coef_ attribute. For binary classification, the estimator must include a predict_proba method.

  • scaling_method (str or None (default=None)) – The scaling method to control the range of the scores. Supported methods are “pdo_odds” and “min_max”. Method “pdo_odds” is only applicable for binary classification. If None, no scaling is applied.

  • scaling_method_params (dict or None (default=None)) – Dictionary with scaling method parameters. If scaling_method="pdo_odds" parameters required are: “pdo”, “odds”, and “scorecard_points”. If scaling_method="min_max" parameters required are “min” and “max”. If scaling_method=None, this parameter is not used.

  • intercept_based (bool (default=False)) – Build a intercept-based scorecard. A intercept-based scorecard modifies the original scorecard by setting the smallest point for each variable to zero and updating the intercept accordingly.

  • reverse_scorecard (bool (default=False)) – Whether to change the sense of the relationship between predictions and scorecard points to ascending/descending.

  • rounding (bool (default=False)) – Whether to round scorecard points. If scaling_method="min_max" a mixed-integer programming problem is solved to guarantee the minimum/maximum score after rounding. Otherwise, the scorecard points are round to the nearest integer.

  • verbose (bool (default=False)) – Enable verbose output.

binning_process_

The external binning process.

Type:

object

estimator_

The external estimator fit on the reduced dataset.

Type:

object

intercept_

The intercept if intercept_based=True.

Type:

float

decision_function(X: DataFrame) → ndarray

Predict confidence scores for samples. The confidence score for a sample is proportional to the signed distance of that sample to the hyperplane.

Parameters:

X (pandas.DataFrame (n_samples, n_features)) – The data matrix for which we want to get the confidence scores.

Returns:

scores – Confidence scores per (n_samples, n_classes) combination.

Return type:

array of shape (n_samples, n_classes)

fit(X: DataFrame, y: list | NDArray, sample_weight: list | NDArray | None = None, metric_special: float | str = 0, metric_missing: float | str = 0, show_digits: int = 2, check_input: bool = False) → Self

Fit scorecard.

Parameters:
  • X (pandas.DataFrame (n_samples, n_features)) – Training vector, where n_samples is the number of samples.

  • y (array-like of shape (n_samples,)) – Target vector relative to x.

  • sample_weight (array-like of shape (n_samples,) (default=None)) – Array of weights that are assigned to individual samples. If not provided, then each sample is given unit weight. This option is only available for a binary target.

  • metric_special (float or str (default=0)) – The metric value to transform special codes in the input vector. Supported metrics are “empirical” to use the empirical WoE or event rate, and any numerical value.

  • metric_missing (float or str (default=0)) – The metric value to transform missing values in the input vector. Supported metrics are “empirical” to use the empirical WoE or event rate and any numerical value.

  • check_input (bool (default=False)) – Whether to check input arrays.

  • show_digits (int, optional (default=2)) – The number of significant digits of the bin column.

Returns:

self – Fitted scorecard.

Return type:

Scorecard

information(print_level: int = 1) → None

Print overview information about the options settings and statistics.

Parameters:

print_level (int (default=1)) – Level of details.

classmethod load(path: str) → Scorecard

Load scorecard from pickle file.

Parameters:

path (str) – Pickle file path.

Example

>>> from optbinning import Scorecard
>>> scorecard = Scorecard.load("my_scorecard.pkl")
predict(X: DataFrame) → ndarray

Predict using the fitted underlying estimator and the reduced dataset.

Parameters:

X (pandas.DataFrame (n_samples, n_features)) – Training vector, where n_samples is the number of samples.

Returns:

pred – The predicted target values.

Return type:

array of shape (n_samples)

predict_proba(X: DataFrame) → ndarray

Predict class probabilities using the fitted underlying estimator and the reduced dataset.

Parameters:

X (pandas.DataFrame (n_samples, n_features)) – Training vector, where n_samples is the number of samples.

Returns:

p – The class probabilities of the input samples.

Return type:

array of shape (n_samples, n_classes)

save(path: str) → None

Save scorecard to pickle file.

Parameters:

path (str) – Pickle file path.

score(X: DataFrame) → ndarray

Score of the dataset.

Parameters:

X (pandas.DataFrame (n_samples, n_features)) – Training vector, where n_samples is the number of samples.

Returns:

score – The score of the input samples.

Return type:

array of shape (n_samples)

table(style: str = 'summary') → DataFrame

Scorecard table.

Parameters:

style (str, optional (default="summary")) – Scorecard’s style. Supported styles are “summary” and “detailed”. Summary only includes columns variable, bin description and points. Detailed contained additional columns with bin information and estimator coefficients.

Returns:

table – The scorecard table.

Return type:

pandas.DataFrame

transform(X: DataFrame) → DataFrame

Transform the dataset in to scores.

Parameters:

X (pandas.DataFrame (n_samples, n_features)) – Training vector, where n_samples is the number of samples.

Returns:

  • score (dataframe of shape (n_samples, n_features)) – The score of the input samples.

  • ```python

  • import pandas as pd

  • from optbinning import Scorecard, BinningProcess

  • from sklearn.datasets import load_breast_cancer

  • data = load_breast_cancer()

  • X_train = pd.DataFrame( – data=data.data, columns=data.feature_names

  • )

  • y_train = data.target

model = Scorecard(

binning_process=BinningProcess(variable_names=data.feature_names), estimator=LogisticRegression(random_state=34), rounding=True, scaling_method=”min_max”, scaling_method_params={“min”: 0, “max”: 250}

) model.fit(X_train, y_train)

print(model.transform(X_train.head())) ```

Monitoring

class optbinning.scorecard.ScorecardMonitoring(scorecard: Scorecard, psi_method: str = 'cart', psi_n_bins: int = 20, psi_min_bin_size: float = 0.05, show_digits: int = 2, verbose: bool = False)

Bases: BaseEstimator

Scorecard monitoring.

Parameters:
  • scorecard (object) – A Scorecard fitted instance.

  • psi_method (str, optional (default="cart")) – The binning method to compute the Population Stability Index (PSI). Supported methods are “cart” for a CART decision tree, “quantile” to generate prebins with approximately same frequency and “uniform” to generate prebins with equal width. Method “cart” uses sklearn.tree.DecistionTreeClassifier.

  • psi_n_bins (int (default=20)) – The maximum number of bins to compute PSI.

  • psi_min_bin_size (float (default=0.05)) – The fraction of mininum number of records for PSI bin.

  • show_digits (int, optional (default=2)) – The number of significant digits of the bin column.

  • verbose (bool (default=False)) – Enable verbose output.

fit(X_actual: DataFrame, y_actual: list | NDArray, X_expected: DataFrame, y_expected: list | NDArray) → Self

Fit monitoring with actual and expected data.

Parameters:
  • X_actual (pandas.DataFrame) – New/actual/test data input samples.

  • y_actual (array-like of shape (n_samples,)) – Target vector relative to X actual.

  • X_expected (pandas.DataFrame) – Trainning data used for fitting the scorecard.

  • y_expected (array-like of shape (n_samples,)) – Target vector relative to X expected.

Returns:

self – Fitted monitoring.

Return type:

ScorecardMonitoring

information(print_level: int = 1) → None

Print overview information about the options settings and statistics.

Parameters:

print_level (int (default=1)) – Level of details.

psi_plot(savefig: str | None = None) → None

Plot Population Stability Index (PSI).

Parameters:

savefig (str or None (default=None)) – Path to save the plot figure.

property psi_splits: ndarray

List of splits points used to compute system PSI.

Returns:

splits

Return type:

numpy.ndarray

psi_table() → DataFrame

System Population Stability Index (PSI) table.

Returns:

psi_table

Return type:

pandas.DataFrame

psi_variable_table(name: str | None = None, style: str = 'summary') → DataFrame

Population Stability Index (PSI) at variable level.

Parameters:
  • name (str or None (default=None)) – The variable name. If name is None, a table with all variables is returned.

  • style (str, optional (default="summary")) – Supported styles are “summary” and “detailed”. Summary only includes the total PSI for each variable. Detailed includes the PSI for each variable at bin level.

Returns:

psi_table

Return type:

pandas.DataFrame

system_stability_report() → None

Print overview information and statistics about system stability. It includes qualitative suggestions regarding the necessity of scorecard updates.

tests_table() → DataFrame

Compute statistical tests to determine if event rate (Chi-square test - binary target) or mean (Student’s t-test - continuous target) are significantly different. Null hypothesis (actual == expected).

Returns:

tests_table

Return type:

pandas.DataFrame

Plot functions

optbinning.scorecard.plot_auc_roc(y: list | NDArray, y_pred: list | NDArray, title: str | None = None, xlabel: str | None = None, ylabel: str | None = None, savefig: bool = False, fname: str | None = None, **kwargs: object) → None

Plot Area Under the Receiver Operating Characteristic Curve (AUC ROC).

Parameters:
  • y (array-like, shape = (n_samples,)) – Array with the target labels.

  • y_pred (array-like, shape = (n_samples,)) – Array with predicted probabilities.

  • title (str or None, optional (default=None)) – Title for the plot.

  • xlabel (str or None, optional (default=None)) – Label for the x-axis.

  • ylabel (str or None, optional (default=None)) – Label for the y-axis.

  • savefig (bool (default=False)) – Whether to save the figure.

  • fname (str or None, optional (default=None)) – Name for the figure file.

  • **kwargs (keyword arguments) – Keyword arguments for matplotlib.pyplot.savefig().

optbinning.scorecard.plot_cap(y: list | NDArray, y_pred: list | NDArray, title: str | None = None, xlabel: str | None = None, ylabel: str | None = None, savefig: bool = False, fname: str | None = None, **kwargs: object) → None

Plot Cumulative Accuracy Profile (CAP).

Parameters:
  • y (array-like, shape = (n_samples,)) – Array with the target labels.

  • y_pred (array-like, shape = (n_samples,)) – Array with predicted probabilities.

  • title (str or None, optional (default=None)) – Title for the plot.

  • xlabel (str or None, optional (default=None)) – Label for the x-axis.

  • ylabel (str or None, optional (default=None)) – Label for the y-axis.

  • savefig (bool (default=False)) – Whether to save the figure.

  • fname (str or None, optional (default=None)) – Name for the figure file.

  • **kwargs (keyword arguments) – Keyword arguments for matplotlib.pyplot.savefig().

optbinning.scorecard.plot_ks(y: list | NDArray, y_pred: list | NDArray, title: str | None = None, xlabel: str | None = None, ylabel: str | None = None, savefig: bool = False, fname: str | None = None, **kwargs: object) → None

Plot Kolmogorov-Smirnov (KS).

Parameters:
  • y (array-like, shape = (n_samples,)) – Array with the target labels.

  • y_pred (array-like, shape = (n_samples,)) – Array with predicted probabilities.

  • title (str or None, optional (default=None)) – Title for the plot.

  • xlabel (str or None, optional (default=None)) – Label for the x-axis.

  • ylabel (str or None, optional (default=None)) – Label for the y-axis.

  • savefig (bool (default=False)) – Whether to save the figure.

  • fname (str or None, optional (default=None)) – Name for the figure file.

  • **kwargs (keyword arguments) – Keyword arguments for matplotlib.pyplot.savefig().