def test_polynomial_feature_names(data_small): x = data_small model = Polynomial(degree=2).fit(x) expected_default_names = ["1", "x0", "x1", "x0^2", "x0 x1", "x1^2"] assert model.get_feature_names() == expected_default_names custom_names = ["x", "y"] expected_custom_names = ["1", "x", "y", "x^2", "x y", "y^2"] assert model.get_feature_names( input_features=custom_names) == expected_custom_names
def test_bad_polynomial_inputs(): with pytest.raises(ValueError): Polynomial(degree=0)
assert model.score(x[::2], y=x[1::2]) > 0.8 def test_score_complex_data(data_random_complex): x = data_random_complex model = Koopman().fit(x) with pytest.raises(ValueError): model.score(x, cast_as_real=False) @pytest.mark.parametrize( "observables", [ Identity(), Polynomial(), TimeDelay(), pytest.lazy_fixture("data_custom_observables"), ], ) def test_observables_integration(data_random, observables): x = data_random model = Koopman(observables=observables).fit(x) check_is_fitted(model) y = model.predict(x) assert y.shape[1] == x.shape[1] @pytest.mark.parametrize( "observables",
from numpy import stack from numpy.testing import assert_allclose from sklearn.exceptions import NotFittedError from sklearn.utils.validation import check_is_fitted from pykoopman.observables import Identity from pykoopman.observables import Polynomial @pytest.fixture def data_small(): t = linspace(0, 5, 10) return stack((t, t**2), axis=1) @pytest.mark.parametrize("observables", [Identity(), Polynomial()]) def test_if_fitted(observables, data_random): x = data_random with pytest.raises(NotFittedError): observables.transform(x) with pytest.raises(NotFittedError): observables.inverse(x) with pytest.raises(NotFittedError): observables.get_feature_names() observables.fit(x) check_is_fitted(observables)
from pykoopman.observables import Identity from pykoopman.observables import Polynomial from pykoopman.observables import TimeDelay @pytest.fixture def data_small(): t = linspace(0, 5, 10) return stack((t, t**2), axis=1) @pytest.mark.parametrize( "observables", [ Identity(), Polynomial(), TimeDelay(), pytest.lazy_fixture("data_custom_observables"), ], ) def test_if_fitted(observables, data_random): x = data_random with pytest.raises(NotFittedError): observables.transform(x) with pytest.raises(NotFittedError): observables.inverse(x) with pytest.raises(NotFittedError): observables.get_feature_names()