What a train/validation split found: the winning model, and one metric per param map.
validation_metrics is a single score per param map rather than a mean over folds, which is
the only real difference from Latu.ML.CrossValidatorModel — there is nothing to average, so
there is no standard deviation either.
best_model is refit on the whole frame, and sub_models is nil unless the search was
asked to collect_sub_models: true. Latu.ML.delete/1 releases everything this holds.
Summary
Types
@type t() :: %Latu.ML.TrainValidationSplitModel{ best_model: Latu.ML.CrossValidatorModel.fitted(), session: Latu.Session.t(), sub_models: [Latu.ML.CrossValidatorModel.fitted()] | nil, uid: String.t(), validation_metrics: [float()], validator: Latu.ML.TrainValidationSplit.t() }