"""
This file deals with the implementation of custom types.
"""
import sys
import random
import numpy as np
from dataclasses import dataclass, field
from numpy.random import SeedSequence, BitGenerator, Generator
from typing import Union, List, Tuple, Annotated, Literal, TypeVar, Optional
from sklearn.base import BaseEstimator # type: ignore
from sklearn.model_selection._split import BaseCrossValidator, _RepeatedSplits
try:
from numpy.typing import ArrayLike
except ImportError:
ArrayLike = Union[np.ndarray, List[List[float]]]
if sys.version_info >= (3, 10):
from typing import TypeAlias
else:
from typing_extensions import TypeAlias
Estimator = TypeVar("Estimator", bound=BaseEstimator)
SeedType = Union[None, int, ArrayLike, SeedSequence, BitGenerator, Generator]
CVScheme: TypeAlias = TypeVar("CVScheme", BaseCrossValidator, _RepeatedSplits)
[docs]@dataclass
class CVModellingOutput:
"""This class stores the data generated by a cross-validation
process for a single estimator.
Arguments
---------
gts_train: ArrayLike
A (n_repetitions * n_outer_splits) list of arrays representing training ground-truth.
gts_val: ArrayLike
A (n_repetitions * n_outer_splits) list of arrays representing validation ground-truth.
gts_train_conc: ArrayLike
A list of (n_repetitions * n_outer_splits) data points representing pooled training ground-truth.
gts_val_conc: ArrayLike
A list of (n_repetitions * n_outer_splits) data points representing pooled validation ground-truth.
probas_train: ArrayLike
A (n_repetitions * n_outer_splits) list of arrays representing training predicted probabilities.
probas_val: ArrayLike
A (n_repetitions * n_outer_splits) list of arrays representing validation predicted probabilities.
probas_train_conc: ArrayLike
A list of (n_repetitions * n_outer_splits) data points representing pooled training predicted probabilities.
probas_val_conc: ArrayLike
A list of (n_repetitions * n_outer_splits) data points representing pooled validation predicted probabilities.
models: List[Estimator]
A list of (n_repetitions * n_outer_splits) fitted estimators.
errors: Optional[ArrayLike]
A (n_repetitions * n_outer_splits) list of validation prediction errors.
correct: Optional[ArrayLike]
A (n_repetitions * n_outer_splits) list of validation correct predictions.
features: Optional[ArrayLike]
A (n_repetitions * n_outer_splits) list of subsets of selected features.
"""
gts_train: ArrayLike
gts_val: ArrayLike
gts_train_conc: ArrayLike
gts_val_conc: ArrayLike
# predicted probabilities
probas_train: ArrayLike
probas_val: ArrayLike
probas_train_conc: ArrayLike
probas_val_conc: ArrayLike
# misc
models: List[Estimator]
errors: Optional[ArrayLike]
correct: Optional[ArrayLike]
features: Optional[ArrayLike]