Skip to content

BaseValidator

Bases: BaseConfig

Base class for initializing classification, criterion, tuning, and HPO.

This class extends BaseConfig and validates classification types, evaluation criteria, and tuning methods.

Inherits
  • BaseLoader: Provides loading and saving capabilities for processed data.

Parameters:

Name Type Description Default
classification str

Type of classification, either 'binary' or 'multiclass'.

required
criterion str

Evaluation criterion (e.g., 'f1', 'macro_f1').

required
tuning Optional[str]

Tuning method, either 'holdout' or 'cv'. Defaults to None.

None
hpo Optional[str]

Hyperparameter optimization type, either 'rs' or 'hebo'. Defaults to None.

None

Attributes:

Name Type Description
classification str

Type of classification, either 'binary' or 'multiclass'.

criterion str

Evaluation criterion for model performance.

tuning Optional[str]

Tuning method ('holdout' or 'cv').

hpo Optional[str]

Type of hyperparameter optimization ('rs' or 'hebo').

Raises:

Type Description
ValueError

If the classification, criterion, or tuning method is invalid.

Example
validator = BaseValidator(classification="binary", criterion="f1")
print(validator.criterion)
Source code in periomod/base.py
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
class BaseValidator(BaseConfig):
    """Base class for initializing classification, criterion, tuning, and HPO.

    This class extends `BaseConfig` and validates classification types, evaluation
    criteria, and tuning methods.

    Inherits:
        - `BaseLoader`: Provides loading and saving capabilities for processed data.

    Args:
        classification (str): Type of classification, either 'binary' or 'multiclass'.
        criterion (str): Evaluation criterion (e.g., 'f1', 'macro_f1').
        tuning (Optional[str], optional): Tuning method, either 'holdout' or 'cv'.
            Defaults to None.
        hpo (Optional[str], optional): Hyperparameter optimization type, either 'rs' or
            'hebo'. Defaults to None.

    Attributes:
        classification (str): Type of classification, either 'binary' or 'multiclass'.
        criterion (str): Evaluation criterion for model performance.
        tuning (Optional[str]): Tuning method ('holdout' or 'cv').
        hpo (Optional[str]): Type of hyperparameter optimization ('rs' or 'hebo').

    Raises:
        ValueError: If the classification, criterion, or tuning method is invalid.

    Example:
        ```
        validator = BaseValidator(classification="binary", criterion="f1")
        print(validator.criterion)
        ```
    """

    def __init__(
        self,
        classification: str,
        criterion: str,
        tuning: Optional[str] = None,
        hpo: Optional[str] = None,
    ) -> None:
        """Initializes BaseValidator method for with validation functions for inputs."""
        super().__init__()
        self.classification = classification
        self.criterion = criterion
        self.hpo = hpo
        self.tuning = tuning
        self._validate_classification()
        self._validate_hpo()
        self._validate_criterion()
        self._validate_tuning()

    def _validate_classification(self) -> None:
        """Validates the classification type for the model.

        Raises:
            ValueError: If `self.classification` is not 'binary' or 'multiclass'.

        Expected classification types:
            - 'binary'
            - 'multiclass'
        """
        if self.classification.lower().strip() not in ["binary", "multiclass"]:
            raise ValueError(
                f"{self.classification} is an invalid classification type. "
                f"Choose 'binary' or 'multiclass'."
            )

    def _validate_hpo(self) -> None:
        """Validates the hyperparameter optimization (HPO) type.

        Raises:
            ValueError: If `self.hpo` is not None, 'rs', or 'hebo'.

        Supported HPO types:
            - None
            - 'rs' (Random Search)
            - 'hebo' (Heteroscedastic Bayesian Optimization)
        """
        if self.hpo not in [None, "rs", "hebo"]:
            raise ValueError(
                f"{self.hpo} is an unsupported HPO type. Choose 'rs' or 'hebo'."
            )

    def _validate_criterion(self) -> None:
        """Validates the evaluation criterion for model performance.

        Raises:
            ValueError: If `self.criterion` is not a supported evaluation metrics.

        Supported evaluation criteria:
            - 'f1'
            - 'macro_f1'
            - 'brier_score'
        """
        if self.criterion not in ["f1", "macro_f1", "brier_score"]:
            raise ValueError(
                "Unsupported criterion. Choose either 'f1', 'macro_f1', or "
                "'brier_score'."
            )

    def _validate_tuning(self) -> None:
        """Validates the tuning method for hyperparameter optimization.

        Raises:
            ValueError: If `self.tuning` is not None, 'holdout', or 'cv'.

        Supported tuning methods:
            - None
            - 'holdout'
            - 'cv' (Cross-Validation)
        """
        if self.tuning not in [None, "holdout", "cv"]:
            raise ValueError(
                "Unsupported tuning method. Choose either 'holdout' or 'cv'."
            )

__init__(classification, criterion, tuning=None, hpo=None)

Initializes BaseValidator method for with validation functions for inputs.

Source code in periomod/base.py
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
def __init__(
    self,
    classification: str,
    criterion: str,
    tuning: Optional[str] = None,
    hpo: Optional[str] = None,
) -> None:
    """Initializes BaseValidator method for with validation functions for inputs."""
    super().__init__()
    self.classification = classification
    self.criterion = criterion
    self.hpo = hpo
    self.tuning = tuning
    self._validate_classification()
    self._validate_hpo()
    self._validate_criterion()
    self._validate_tuning()