SIENTIAPDE-1255: Integrate sientia-mlops-library into model-manager, adding model serving, reporting, and updated model definitions.

This commit is contained in:
Bruno Domingues
2025-10-20 16:55:52 -03:00
parent 9e31ab679b
commit 56a21a16da
12 changed files with 998 additions and 22 deletions

View File

@@ -15,10 +15,10 @@ from os import makedirs, path
import numpy as np
import pandas as pd
from sientia.ModelServing import ModelServing # type: ignore[import-untyped]
from sientia.reports import Reports # type: ignore[import-untyped]
from sientia_do.observability.logger import Logger
from model_manager.sientia.model_serving import ModelServing # type: ignore[import-untyped]
from model_manager.sientia.reports import Reports # type: ignore[import-untyped]
from model_manager.utils.models.train_model_result import TrainModelResult

View File

@@ -10,14 +10,13 @@ from io import BytesIO
import numpy as np
import pandas as pd
from sientia.linear_models import LinearRegressionModel
from sientia.metrics import mae, mse, r2
from sientia.preprocessing import DataPreprocessor
from sientia.utils import split_train_test
from sientia_do.observability.logger import Logger
from sientia_do.operations.df_preprocessor import load_data
from sientia_do.operations.normalization import MinMaxScaler, Z_Scaler
from model_manager.sientia.metrics import mae, mse, r2
from model_manager.sientia.models import DataPreprocessor, LinearRegressionModel
from model_manager.sientia.utils import split_train_test
from model_manager.utils.models.train_model_params import TrainModelParams
from model_manager.utils.models.train_model_result import TrainModelResult
@@ -174,7 +173,7 @@ class TrainingRepository:
and metrics (mse_val, mae_val, r2_val)
"""
# Make predictions on test set
tmr.y_pred = tmr.regr.predict(tmr.x_test)
y_pred_array = tmr.regr.predict(tmr.x_test)
# Denormalize data if scaler was used
if params.use_scaler:
@@ -188,10 +187,10 @@ class TrainingRepository:
# Denormalize target variable
tmr.y_train = scaler.denormalize_single_input(tmr.y_train, params.target_variable)
tmr.y_test = scaler.denormalize_single_input(tmr.y_test, params.target_variable)
tmr.y_pred = scaler.denormalize_predictions(tmr.y_pred, params.target_variable)
y_pred_array = scaler.denormalize_predictions(y_pred_array, params.target_variable)
# Add index to predictions
tmr.y_pred = pd.Series(tmr.y_pred, index=tmr.y_test.index)
tmr.y_pred = pd.Series(y_pred_array, index=tmr.y_test.index)
tmr.y_pred.name = f'{params.target_variable}_pred'
# Reorder all data by index
@@ -202,6 +201,7 @@ class TrainingRepository:
tmr.y_pred = tmr.y_pred.sort_index()
# Calculate evaluation metrics
assert tmr.y_pred is not None, 'y_pred should be set at this point'
tmr.mse_val = round(
mse(tmr.y_test.astype(np.float64), tmr.y_pred.astype(np.float64)),
2,