예제 #1
0
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
예제 #2
0
def test_bad_polynomial_inputs():
    with pytest.raises(ValueError):
        Polynomial(degree=0)
예제 #3
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",
예제 #4
0
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)

예제 #5
0
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()