from typing import Optional, Union
import numpy as np
from ..utils import check_array
[docs]class ResultData:
"""Stores the results of a experiment.
ResultData objects only contain data and are usually stored as pickle files.
Attributes
----------
targets: Union[np.ndarray, list]
Numpy array of target values for the test set.
predictions: Union[np.ndarray, list]
Numpy array of predicted values for the test set.
train_targets: Optional[Union[np.ndarray, list]], optional, default=None
Numpy array of target values for the training set.
train_predictions: Optional[Union[np.ndarray, list]], optional, default=None
Numpy array of predicted values for the training set.
val_targets: Optional[Union[np.ndarray, list]], optional, default=None
Numpy array of target values for the validation set.
val_predictions: Optional[Union[np.ndarray, list]], optional, default=None
Numpy array of predicted values for the validation set.
time: float, optional, default=None
Time taken to run the experiment.
train_history: Optional[Union[np.ndarray, list]], optional, default=None
Training history of the model, represented as the value of the error on each
iteration.
val_history: Optional[Union[np.ndarray, list]], optional, default=None
Validation history of the model, represented as the value of the error on each
iteration.
best_params: Optional[dict], optional, default=None
Dictionary of the best parameters found during the experiment.
Can be used in case that the experiment employes a cross-validation process.
best_model: Optional[object], optional, default=None
Best model found during the experiment.
"""
def __init__(
self,
*,
targets: Union[np.ndarray, list],
predictions: Union[np.ndarray, list],
train_targets: Optional[Union[np.ndarray, list]] = None,
train_predictions: Optional[Union[np.ndarray, list]] = None,
val_targets: Optional[Union[np.ndarray, list]] = None,
val_predictions: Optional[Union[np.ndarray, list]] = None,
time: Optional[float] = None,
train_history: Optional[Union[np.ndarray, list]] = None,
val_history: Optional[Union[np.ndarray, list]] = None,
best_params: Optional[dict] = None,
best_model: Optional[object] = None,
):
targets = check_array(targets)
predictions = check_array(predictions)
train_targets = check_array(train_targets, allow_none=True)
train_predictions = check_array(train_predictions, allow_none=True)
val_targets = check_array(val_targets, allow_none=True)
val_predictions = check_array(val_predictions, allow_none=True)
train_history = check_array(train_history, allow_none=True)
val_history = check_array(val_history, allow_none=True)
if not isinstance(time, (float, int)) and time is not None:
raise TypeError("time must be a float")
if best_params is not None and not isinstance(best_params, dict):
raise TypeError("best_params must be a dictionary")
self.targets = targets
self.predictions = predictions
self.train_targets = train_targets
self.train_predictions = train_predictions
self.val_targets = val_targets
self.val_predictions = val_predictions
self.time = time
self.train_history = train_history
self.val_history = val_history
self.best_params = best_params
self.best_model = best_model
def __eq__(self, other: "ResultData"):
return (
np.all(self.targets == other.targets)
and np.all(self.predictions == other.predictions)
and np.all(self.train_targets == other.train_targets)
and np.all(self.train_predictions == other.train_predictions)
and np.all(self.val_targets == other.val_targets)
and np.all(self.val_predictions == other.val_predictions)
and self.time == other.time
and np.all(self.train_history == other.train_history)
and np.all(self.val_history == other.val_history)
and self.best_params == other.best_params
and self.best_model == other.best_model
)