Skip to content

pydvl.valuation.scorers.skorch

SkorchSupervisedScorer

SkorchSupervisedScorer(
    scoring: str
    | SupervisedScorerCallable[SupervisedModelT, ArrayT]
    | SupervisedModelT,
    test_data: Dataset,
    default: float,
    range: tuple[float, float] = (-float("inf"), float("inf")),
    name: str | None = None,
)

Bases: SupervisedScorer[SkorchSupervisedModel, Tensor]

Scorer for Skorch models.

Because skorch models scorer() requires a numpy array to test against, this class moves tensors to cpu before scoring.

Source code in src/pydvl/valuation/scorers/supervised.py
def __init__(
    self,
    scoring: str
    | SupervisedScorerCallable[SupervisedModelT, ArrayT]
    | SupervisedModelT,
    test_data: Dataset,
    default: float,
    range: tuple[float, float] = (-float("inf"), float("inf")),
    name: str | None = None,
):
    super().__init__()
    if isinstance(scoring, SupervisedModel):
        from sklearn.metrics import check_scoring

        self._scorer = check_scoring(scoring)
        if name is None:
            name = f"Default scorer for {scoring.__class__.__name__}"
    elif isinstance(scoring, str):
        self._scorer = get_scorer(scoring)
        if name is None:
            name = scoring
    else:
        self._scorer = scoring
        if name is None:
            name = getattr(scoring, "__name__", "scorer")
    self.test_data = test_data
    self.default = default
    # TODO: auto-fill from known scorers ?
    self.range = range
    self.name = name