/
oop_nust_misis
/
LinearRegresion-sofaming
Обзор
Документация
Войти
/
oop_nust_misis
/
LinearRegresion-sofaming
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
tests/test_model.py
53 строки
2 KB
OOP Nust MISIS
Initial commit
08 дек 2025, 02:05
08 дек 2025, 02:05
90397af
Код
Авторство
О чём код?
import numpy as np import pytest from linreg_lab.model import MyLinearRegression from sklearn.linear_model import LinearRegression as SklearnLR @pytest.fixture def synthetic_data(): # y = 3*x1 + 5*x2 + 10 np.random.seed(42) X = np.random.rand(100, 2) true_weights = np.array([3, 5]) bias = 10 y = X @ true_weights + bias + np.random.randn(100) * 0.01 # маленький шум return X, y def test_ols_correctness(synthetic_data): X, y = synthetic_data # Наша модель my_model = MyLinearRegression(method='ols') my_model.fit(X, y) my_preds = my_model.predict(X) # Sklearn (эталон) sk_model = SklearnLR() sk_model.fit(X, y) sk_preds = sk_model.predict(X) # Проверяем, что предсказания почти идентичны np.testing.assert_allclose(my_preds, sk_preds, rtol=1e-5) def test_gd_convergence(synthetic_data): X, y = synthetic_data # Для GD важно, чтобы данные были около 0, но на rand(0,1) тоже сойдется # Увеличим итерации для точности model = MyLinearRegression(method='gd', lr=0.1, n_iters=2000) model.fit(X, y) assert len(model.loss_history) == 2000 # Ошибка в конце должна быть меньше, чем в начале assert model.loss_history[-1] < model.loss_history[0] # Проверяем качество (MSE должно быть низким на простой задаче) mse = model.loss_history[-1] assert mse < 0.1 def test_error_handling(): with pytest.raises(ValueError): MyLinearRegression(method='magic_method') model = MyLinearRegression() with pytest.raises(RuntimeError): model.predict([[1, 2]])