diff --git a/aeon/classification/convolution_based/tests/test_hydra.py b/aeon/classification/convolution_based/tests/test_hydra.py new file mode 100644 index 0000000000..39e9f9df6e --- /dev/null +++ b/aeon/classification/convolution_based/tests/test_hydra.py @@ -0,0 +1,52 @@ +"""Hydra classifier test code.""" + +import numpy as np +import pytest + +from aeon.classification.convolution_based import HydraClassifier +from aeon.datasets import load_basic_motions, load_unit_test +from aeon.utils.validation._dependencies import _check_soft_dependencies + + +@pytest.mark.skipif( + not _check_soft_dependencies(["torch"], severity="none"), + reason="pytorch soft dependency not found.", +) +def test_hydra_univariate(): + """Test of Hydra classifier on univariate.""" + X_train, y_train = load_unit_test(split="train") + X_test, y_test = load_unit_test(split="test") + + clf = HydraClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) + + +@pytest.mark.skipif( + not _check_soft_dependencies(["torch"], severity="none"), + reason="pytorch soft dependency not found.", +) +def test_hydra_multivariate(): + """Test of Hydra classifier on multivariate.""" + X_train, y_train = load_basic_motions(split="train") + X_test, y_test = load_basic_motions(split="test") + + clf = HydraClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) diff --git a/aeon/classification/convolution_based/tests/test_minirocket.py b/aeon/classification/convolution_based/tests/test_minirocket.py new file mode 100644 index 0000000000..ad4a15d695 --- /dev/null +++ b/aeon/classification/convolution_based/tests/test_minirocket.py @@ -0,0 +1,42 @@ +"""MiniRocket classifier test code.""" + +import numpy as np + +from aeon.classification.convolution_based import MiniRocketClassifier +from aeon.datasets import load_basic_motions, load_unit_test + + +def test_minirocket_univariate(): + """Test of MiniRocket classifier on univariate.""" + X_train, y_train = load_unit_test(split="train") + X_test, y_test = load_unit_test(split="test") + + clf = MiniRocketClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) + + +def test_minirocket_multivariate(): + """Test of MiniRocket classifier on multivariate.""" + X_train, y_train = load_basic_motions(split="train") + X_test, y_test = load_basic_motions(split="test") + + clf = MiniRocketClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) diff --git a/aeon/classification/convolution_based/tests/test_mr_hydra.py b/aeon/classification/convolution_based/tests/test_mr_hydra.py new file mode 100644 index 0000000000..4b3ed47fa8 --- /dev/null +++ b/aeon/classification/convolution_based/tests/test_mr_hydra.py @@ -0,0 +1,52 @@ +"""MultiRocketHydra classifier test code.""" + +import numpy as np +import pytest + +from aeon.classification.convolution_based import MultiRocketHydraClassifier +from aeon.datasets import load_basic_motions, load_unit_test +from aeon.utils.validation._dependencies import _check_soft_dependencies + + +@pytest.mark.skipif( + not _check_soft_dependencies(["torch"], severity="none"), + reason="pytorch soft dependency not found.", +) +def test_mr_hydra_univariate(): + """Test of MultiRocketHydra classifier on univariate.""" + X_train, y_train = load_unit_test(split="train") + X_test, y_test = load_unit_test(split="test") + + clf = MultiRocketHydraClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) + + +@pytest.mark.skipif( + not _check_soft_dependencies(["torch"], severity="none"), + reason="pytorch soft dependency not found.", +) +def test_mr_hydra_multivariate(): + """Test of MultiRocketHydra classifier on multivariate.""" + X_train, y_train = load_basic_motions(split="train") + X_test, y_test = load_basic_motions(split="test") + + clf = MultiRocketHydraClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) diff --git a/aeon/classification/convolution_based/tests/test_multirocket.py b/aeon/classification/convolution_based/tests/test_multirocket.py new file mode 100644 index 0000000000..fafd4a2289 --- /dev/null +++ b/aeon/classification/convolution_based/tests/test_multirocket.py @@ -0,0 +1,42 @@ +"""MultiRocket classifier test code.""" + +import numpy as np + +from aeon.classification.convolution_based import MultiRocketClassifier +from aeon.datasets import load_basic_motions, load_unit_test + + +def test_multirocket_univariate(): + """Test of MultiRocket classifier on univariate.""" + X_train, y_train = load_unit_test(split="train") + X_test, y_test = load_unit_test(split="test") + + clf = MultiRocketClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) + + +def test_multirocket_multivariate(): + """Test of MultiRocket classifier on multivariate.""" + X_train, y_train = load_basic_motions(split="train") + X_test, y_test = load_basic_motions(split="test") + + clf = MultiRocketClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) diff --git a/aeon/classification/convolution_based/tests/test_rocket.py b/aeon/classification/convolution_based/tests/test_rocket.py new file mode 100644 index 0000000000..f8c7b149ab --- /dev/null +++ b/aeon/classification/convolution_based/tests/test_rocket.py @@ -0,0 +1,42 @@ +"""RandOm Convolutional KErnel Transform (Rocket) classifier test code.""" + +import numpy as np + +from aeon.classification.convolution_based import RocketClassifier +from aeon.datasets import load_basic_motions, load_unit_test + + +def test_rocket_univariate(): + """Test of Rocket on univariate.""" + X_train, y_train = load_unit_test(split="train") + X_test, y_test = load_unit_test(split="test") + + clf = RocketClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1) + + +def test_rocket_multivariate(): + """Test of Rocket on multivariate.""" + X_train, y_train = load_basic_motions(split="train") + X_test, y_test = load_basic_motions(split="test") + + clf = RocketClassifier(random_state=0) + + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + y_proba = clf.predict_proba(X_test) + + assert clf.is_fitted + assert y_pred.shape == (X_test.shape[0],) + assert set(y_pred).issubset(set(y_train)) + assert y_proba.shape == (X_test.shape[0], len(np.unique(y_train))) + assert np.all(y_proba >= 0) and np.all(y_proba <= 1)