Source code for caliber.binary_classification.minimizing.linear_scaling.calibration.knee

from functools import partial
from typing import Optional

from caliber.binary_classification.metrics.knee_distance import knee_point_distance
from caliber.binary_classification.minimizing.linear_scaling.calibration.base import (
    CalibrationLinearScalingBinaryClassificationModel,
)
from caliber.binary_classification.minimizing.linear_scaling.mixins.fit.brute_fit import (
    LinearScalingBruteFitBinaryClassificationMixin,
)


[docs] class KneePointLinearScalingBinaryClassificationModel( LinearScalingBruteFitBinaryClassificationMixin, CalibrationLinearScalingBinaryClassificationModel, ): def __init__( self, minimize_options: Optional[dict] = None, lam: float = 0.01, has_intercept: bool = True, has_bivariate_slope: bool = False, n_thresholds: int = 100, ): super().__init__( loss_fn=partial(knee_point_distance, n_thresholds=n_thresholds), minimize_options=minimize_options, has_intercept=has_intercept, has_bivariate_slope=has_bivariate_slope, ) self._lam = lam