feat: enhance training and experiment tracking functionality
- Updated `Activities` class to improve garbage collection handling. - Enhanced error messaging in `ExperimentTracking` for better clarity on update failures. - Refactored `Training` class to streamline exception handling and improve type hints. - Introduced new methods in `TrainModelParams` for better handling of experiment run IDs and model metadata. - Added functionality to extract model equations in `DataManagerRepository` for linear regression models.
This commit is contained in:
@@ -867,6 +867,13 @@ def test_linear_regression_model_get_regressor():
|
||||
# ============================================================================
|
||||
|
||||
|
||||
def test_data_preprocessor_parse_datetime_with_frontend_format():
|
||||
"""When date_format is set, _parse_datetime uses strftime mapping (covers format branch)."""
|
||||
preprocessor = DataPreprocessor(date_format='dd/MM/yyyy HH:mm:ss')
|
||||
ts = preprocessor._parse_datetime('15/01/2024 10:30:00')
|
||||
assert ts is not None
|
||||
|
||||
|
||||
@patch('model_manager.sientia.models.treat_nan')
|
||||
def test_data_preprocessor_treat_discontinuities_linear_interpolation(mock_treat_nan):
|
||||
"""Test treat_discontinuities with 'linear interpolation' treatment."""
|
||||
|
||||
@@ -4,7 +4,13 @@ from unittest.mock import MagicMock
|
||||
import pytest
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from model_manager.sientia import reports
|
||||
try:
|
||||
from model_manager.sientia import reports
|
||||
except ImportError as exc:
|
||||
pytest.skip(
|
||||
f'reports requires Evidently API matching production pin: {exc}',
|
||||
allow_module_level=True,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
from model_manager.sientia import utils
|
||||
|
||||
|
||||
def test_split_train_test_default(monkeypatch):
|
||||
captured_args = {}
|
||||
|
||||
def fake_train_test_split(*args, **kwargs):
|
||||
captured_args['args'] = args
|
||||
captured_args['kwargs'] = kwargs
|
||||
return ('X_train', 'X_test', 'y_train', 'y_test')
|
||||
|
||||
monkeypatch.setattr(utils, 'train_test_split', fake_train_test_split)
|
||||
|
||||
X = [1, 2, 3, 4]
|
||||
y = [0, 1, 0, 1]
|
||||
|
||||
result = utils.split_train_test(X, y)
|
||||
|
||||
assert captured_args['args'] == (X, y)
|
||||
assert captured_args['kwargs'] == {
|
||||
'test_size': None,
|
||||
'train_size': None,
|
||||
'random_state': None,
|
||||
'shuffle': True,
|
||||
'stratify': None,
|
||||
}
|
||||
assert result == ('X_train', 'X_test', 'y_train', 'y_test')
|
||||
|
||||
|
||||
def test_split_train_test_with_parameters(monkeypatch):
|
||||
captured_kwargs = {}
|
||||
|
||||
def fake_train_test_split(*args, **kwargs):
|
||||
captured_kwargs.update(kwargs)
|
||||
return ('train_X', 'test_X', 'train_y', 'test_y')
|
||||
|
||||
monkeypatch.setattr(utils, 'train_test_split', fake_train_test_split)
|
||||
|
||||
X = [[1], [2], [3], [4]]
|
||||
y = [0, 1, 0, 1]
|
||||
|
||||
result = utils.split_train_test(
|
||||
X,
|
||||
y,
|
||||
test_size=0.25,
|
||||
train_size=0.75,
|
||||
random_state=42,
|
||||
shuffle=False,
|
||||
stratify=y,
|
||||
)
|
||||
|
||||
assert captured_kwargs == {
|
||||
'test_size': 0.25,
|
||||
'train_size': 0.75,
|
||||
'random_state': 42,
|
||||
'shuffle': False,
|
||||
'stratify': y,
|
||||
}
|
||||
assert result == ('train_X', 'test_X', 'train_y', 'test_y')
|
||||
Reference in New Issue
Block a user