from dataclasses import dataclass import pandas as pd from sientia.linear_models import LinearRegressionModel from sientia.preprocessing import DataPreprocessor from model_manager.utils.models.train_model_params import TrainModelParams @dataclass class TrainModelResult: """ A data container for storing the results of a machine learning training process. This dataclass encapsulates all outputs from the training pipeline, including the trained model, datasets, evaluation metrics, and paths to generated artifacts. It is used to pass results between activities in the training workflow. Attributes: params (TrainModelParams): The parameters used to train the model. process_data (DataPreprocessor): The data preprocessor object used to process the input data. x_train (pd.DataFrame): The training dataset features. x_test (pd.DataFrame): The testing dataset features. y_train (pd.DataFrame): The training dataset target values. y_test (pd.DataFrame): The testing dataset target values. regr (LinearRegressionModel): The trained linear regression model. scaler_dict (dict): A dictionary containing the scalers used to scale the features and target values. y_pred (pd.Series | None): The predicted target values for the testing dataset. Default is None. mse_val (float | None): The Mean Squared Error (MSE) of the predictions. Default is None. mae_val (float | None): The Mean Absolute Error (MAE) of the predictions. Default is None. r2_val (float | None): The R-squared (R²) value of the predictions. Default is None. run_name (str | None): The name of the MLFlow run. Default is None. report_path (str | None): The path to the generated HTML report file. Default is None. train_data_path (str | None): The path to the training dataset CSV file. Default is None. test_data_path (str | None): The path to the testing dataset CSV file. Default is None. run_dir (str | None): The path to the run directory containing all artifacts. Default is None. """ params: TrainModelParams process_data: DataPreprocessor x_train: pd.DataFrame x_test: pd.DataFrame y_train: pd.DataFrame y_test: pd.DataFrame regr: LinearRegressionModel scaler_dict: dict y_pred: pd.Series | None = None mse_val: float | None = None mae_val: float | None = None r2_val: float | None = None run_name: str | None = None report_path: str | None = None train_data_path: str | None = None test_data_path: str | None = None run_dir: str | None = None