Skip to content

Metrics

s3lst_ds.utilities.metrics

Metrics.

Functions:

Name Description
fancify

Replace scorer aliases used as keys in the issued dictionary scores by their fancy

get_scorer

Get a scorer from its alias.

get_scorer_names

Get the names of all available scorers.

Attributes:

Name Type Description
mae
mae_delta
mbe
r2
r2_oos
rmse
rmse_delta
rse

__all__ module-attribute

__all__ = [
    "fancify",
    "get_scorer",
    "get_scorer_names",
    "mae",
    "mae_delta",
    "mbe",
    "r2",
    "r2_oos",
    "rmse",
    "rmse_delta",
    "rse",
]

mae module-attribute

mae = Scorer(
    alias="mae",
    alias_fancy="$\\mathrm{MAE}$",
    func=mean_absolute_error,
    greater_is_better=False,
    dimensionless=False,
)

mae_delta module-attribute

mae_delta = Scorer(
    alias="mae_delta",
    alias_fancy="$\\mathrm{MAE}_{\\delta}$",
    func=mean_absolute_error_delta,
    greater_is_better=False,
    dimensionless=True,
)

mbe module-attribute

mbe = Scorer(
    alias="mbe",
    alias_fancy="$\\mathrm{MBE}$",
    func=mean_bias_error,
    greater_is_better=False,
    dimensionless=False,
)

r2 module-attribute

r2 = Scorer(
    alias="r2",
    alias_fancy="$R^2$",
    func=r2_score,
    greater_is_better=True,
    dimensionless=True,
)

r2_oos module-attribute

r2_oos = Scorer(
    alias="r2_oos",
    alias_fancy="$R^2_{\\mathrm{OOS}}$",
    func=r2_oos_score,
    greater_is_better=True,
    dimensionless=True,
)

rmse module-attribute

rmse = Scorer(
    alias="rmse",
    alias_fancy="$\\mathrm{RMSE}$",
    func=root_mean_squared_error,
    greater_is_better=False,
    dimensionless=False,
)

rmse_delta module-attribute

rmse_delta = Scorer(
    alias="rmse_delta",
    alias_fancy="$\\mathrm{RMSE}_{\\delta}$",
    func=root_mean_squared_error_delta,
    greater_is_better=False,
    dimensionless=True,
)

rse module-attribute

rse = Scorer(
    alias="rse",
    alias_fancy="$\\mathrm{RSE}$",
    func=residual_standard_error,
    greater_is_better=False,
    dimensionless=False,
)

fancify

fancify(scores: dict[str, Any]) -> dict[str, Any]

Replace scorer aliases used as keys in the issued dictionary scores by their fancy aliases.

Parameters:

Name Type Description Default
scores dict[str, Any]

A dictionary of scores keyed by scorer aliases.

required

Returns:

Name Type Description
scores dict[str, Any]

The issued dictionary with its keys replaced by scorer fancy aliases.

Source code in src/s3lst_ds/utilities/metrics/_scorer.py
def fancify(scores: dict[str, Any]) -> dict[str, Any]:
    """
    Replace scorer aliases used as keys in the issued dictionary `scores` by their fancy
    aliases.

    Parameters
    ----------
    scores : dict[str, Any]
        A dictionary of scores keyed by scorer aliases.

    Returns
    -------
    scores : dict[str, Any]
        The issued dictionary with its keys replaced by scorer fancy aliases.

    """

    scores = {get_scorer(alias).alias_fancy: value for alias, value in scores.items()}

    return scores

get_scorer

get_scorer(alias: str | None)

Get a scorer from its alias.

Function metrics.get_scorer_names() can be used to retrieve the names of all available scorers.

Parameters:

Name Type Description Default
alias str or None

Scoring method as string alias.

required

Returns:

Name Type Description
scorer callable

The scorer.

Notes

This function always returns a copy of the scorer object. Calling get_scorer twice for the same scorer results in two separate scorer objects.

Source code in src/s3lst_ds/utilities/metrics/_scorer.py
def get_scorer(alias: str | None):
    """
    Get a scorer from its alias.

    Function `metrics.get_scorer_names()` can be used to retrieve the names of all
    available scorers.

    Parameters
    ----------
    alias : str or None
        Scoring method as string alias.

    Returns
    -------
    scorer : callable
        The scorer.

    Notes
    -----
    This function always returns a copy of the scorer object. Calling `get_scorer` twice
    for the same scorer results in two separate scorer objects.
    """

    if isinstance(alias, str):
        try:
            scorer = copy.deepcopy(_SCORERS[alias])
        except KeyError:
            raise ValueError(
                f"Alias {alias!r} is not associated with any scorer. "
                "Use metrics.get_scorer_names() to get valid options."
            )

    else:
        raise TypeError(f"Expected a string, got {type(alias).__name__} instead.")

    return scorer

get_scorer_names

get_scorer_names()

Get the names of all available scorers.

These names can be passed to metrics.get_scorer() to retrieve the scorer object.

Returns:

Type Description
list of str

Names of all available scorers.

Source code in src/s3lst_ds/utilities/metrics/_scorer.py
def get_scorer_names():
    """Get the names of all available scorers.

    These names can be passed to `metrics.get_scorer()` to retrieve the scorer object.

    Returns
    -------
    list of str
        Names of all available scorers.

    """
    return sorted(_SCORERS.keys())