crossval

class VectorModelCrossValidationData(trained_models: Optional[List[sensai.evaluation.crossval.TModel]], eval_data_list: List[sensai.evaluation.crossval.TEvalData], predicted_var_names: List[str], test_indices_list=None)[source]

Bases: abc.ABC, Generic[sensai.evaluation.crossval.TModel, sensai.evaluation.crossval.TEvalData, sensai.evaluation.crossval.TEvalStats, sensai.evaluation.crossval.TEvalStatsCollection]

__init__(trained_models: Optional[List[sensai.evaluation.crossval.TModel]], eval_data_list: List[sensai.evaluation.crossval.TEvalData], predicted_var_names: List[str], test_indices_list=None)
property model_name
get_eval_stats_collection(predicted_var_name=None) sensai.evaluation.crossval.TEvalStatsCollection
iter_input_output_ground_truth_tuples(predicted_var_name=None) Generator[Tuple[sensai.util.typing.PandasNamedTuple, Any, Any], None, None]
track_metrics(tracking_context: sensai.tracking.tracking_base.TrackingContext)
class CrossValidationSplitter[source]

Bases: abc.ABC

Defines a mechanism with which to generate data splits for cross-validation

abstract create_folds(data: sensai.data.InputOutputData, num_folds: int) List[Tuple[Sequence[int], Sequence[int]]]
Parameters
  • data – the data from which to obtain the folds

  • num_folds – the number of splits/folds

Returns

a list containing numFolds tuples (t, e) where t and e are sequences of data point indices to use for training and evaluation respectively

class CrossValidationSplitterDefault(shuffle=True, random_seed=42)[source]

Bases: sensai.evaluation.crossval.CrossValidationSplitter

__init__(shuffle=True, random_seed=42)
create_folds(data: sensai.data.InputOutputData, num_splits: int) List[Tuple[Sequence[int], Sequence[int]]]
Parameters
  • data – the data from which to obtain the folds

  • num_folds – the number of splits/folds

Returns

a list containing numFolds tuples (t, e) where t and e are sequences of data point indices to use for training and evaluation respectively

class CrossValidationSplitterNested(test_fraction: float)[source]

Bases: sensai.evaluation.crossval.CrossValidationSplitter

A data splitter for nested cross-validation (which is useful, in particular, for time series prediction problems)

__init__(test_fraction: float)
create_folds(data: sensai.data.InputOutputData, num_folds: int) List[Tuple[Sequence[int], Sequence[int]]]
Parameters
  • data – the data from which to obtain the folds

  • num_folds – the number of splits/folds

Returns

a list containing numFolds tuples (t, e) where t and e are sequences of data point indices to use for training and evaluation respectively

class VectorModelCrossValidatorParams(folds: int = 5, splitter: Optional[sensai.evaluation.crossval.CrossValidationSplitter] = None, return_trained_models=False, evaluator_params: Optional[Union[sensai.evaluation.evaluator.RegressionEvaluatorParams, sensai.evaluation.evaluator.ClassificationEvaluatorParams]] = None, default_splitter_random_seed=42, default_splitter_shuffle=True)[source]

Bases: object

__init__(folds: int = 5, splitter: Optional[sensai.evaluation.crossval.CrossValidationSplitter] = None, return_trained_models=False, evaluator_params: Optional[Union[sensai.evaluation.evaluator.RegressionEvaluatorParams, sensai.evaluation.evaluator.ClassificationEvaluatorParams]] = None, default_splitter_random_seed=42, default_splitter_shuffle=True)
Parameters
  • folds – the number of folds

  • splitter – the splitter to use in order to generate the folds; if None, use default split (using parameters for random seed and shuffling below)

  • return_trained_models – whether to create a copy of the model for each fold and return each of the models (requires that models can be deep-copied); if False, the model that is passed to evalModel is fitted several times

  • evaluator_params – the model evaluator parameters

  • default_splitter_random_seed – [if splitter is None] the random seed to use for splits

  • default_splitter_shuffle – [if splitter is None] whether to shuffle the data (using randomSeed) before creating the folds

class VectorModelCrossValidator(data: sensai.data.InputOutputData, params: sensai.evaluation.crossval.VectorModelCrossValidatorParams)[source]

Bases: sensai.evaluation.evaluator.MetricsDictProvider, Generic[sensai.evaluation.crossval.TCrossValData], abc.ABC

__init__(data: sensai.data.InputOutputData, params: sensai.evaluation.crossval.VectorModelCrossValidatorParams)
Parameters
  • data – the data set

  • params – parameters

static for_model(model: sensai.vector_model.VectorModel, data: sensai.data.InputOutputData, params: sensai.evaluation.crossval.VectorModelCrossValidatorParams) Union[sensai.evaluation.crossval.VectorClassificationModelCrossValidator, sensai.evaluation.crossval.VectorRegressionModelCrossValidator]
eval_model(model: sensai.vector_model.VectorModel, track: bool = True)
Parameters
  • model – the model to evaluate

  • track – whether tracking shall be enabled for the case where a tracked experiment is set on this object

Returns

cross-validation results

create_metrics_dict_provider(predicted_var_name: Optional[str]) sensai.evaluation.evaluator.MetricsDictProvider

Creates a metrics dictionary provider, e.g. for use in hyperparameter optimisation

Parameters

predicted_var_name – the name of the predicted variable for which to obtain evaluation metrics; may be None only if the model outputs but a single predicted variable

Returns

a metrics dictionary provider instance for the given variable

class VectorRegressionModelCrossValidationData(trained_models: Optional[List[sensai.evaluation.crossval.TModel]], eval_data_list: List[sensai.evaluation.crossval.TEvalData], predicted_var_names: List[str], test_indices_list=None)[source]

Bases: sensai.evaluation.crossval.VectorModelCrossValidationData[sensai.vector_model.VectorRegressionModel, sensai.evaluation.evaluator.VectorRegressionModelEvaluationData, sensai.evaluation.eval_stats.eval_stats_regression.RegressionEvalStats, sensai.evaluation.eval_stats.eval_stats_regression.RegressionEvalStatsCollection]

class VectorRegressionModelCrossValidator(data: sensai.data.InputOutputData, params: sensai.evaluation.crossval.VectorModelCrossValidatorParams)[source]

Bases: sensai.evaluation.crossval.VectorModelCrossValidator[sensai.evaluation.crossval.VectorRegressionModelCrossValidationData]

class VectorClassificationModelCrossValidationData(trained_models: Optional[List[sensai.evaluation.crossval.TModel]], eval_data_list: List[sensai.evaluation.crossval.TEvalData], predicted_var_names: List[str], test_indices_list=None)[source]

Bases: sensai.evaluation.crossval.VectorModelCrossValidationData[sensai.vector_model.VectorClassificationModel, sensai.evaluation.evaluator.VectorClassificationModelEvaluationData, sensai.evaluation.eval_stats.eval_stats_classification.ClassificationEvalStats, sensai.evaluation.eval_stats.eval_stats_classification.ClassificationEvalStatsCollection]

class VectorClassificationModelCrossValidator(data: sensai.data.InputOutputData, params: sensai.evaluation.crossval.VectorModelCrossValidatorParams)[source]

Bases: sensai.evaluation.crossval.VectorModelCrossValidator[sensai.evaluation.crossval.VectorClassificationModelCrossValidationData]