Repository: aeon-toolkit/aeon
Pull request #2183 (2024-10-11 15:42:18)

[ENH] Remove the return_X_y load option, improve coverage
in preparation for removing nested_univ all together, I have removed the option to return_X_y from the loaders. It is not a useful functionality imo, and was only ever used when set to True, which was in any case the default value. It makes more sense for tabular data to add as a column, and thats what used to happen with nested_univ, but now I think it is redundant. For numpy it was simply returning the X and y as a tuple. It will do this by default if you just go 

X = load_thing()

so 
X = load_thing(return_X_y=False)

is redundant.

Also changed load_solar. The load direct from website is broken (identified because the code is uncovered) and Im not willing to spend time working it out. Added a test for macroeconomic

review-notebook-app[bot]: Check out this pull request on&nbsp; <a href="https://app.reviewnb.com/aeon-toolkit/aeon/pull/2183"><img align="absmiddle"  alt="ReviewNB" height="28" class="BotMessageButtonImage" src="https://raw.githubusercontent.com/ReviewNB/support/master/images/button_reviewnb.png"/></a> 

 See visual diffs & provide feedback on Jupyter Notebooks. 

---

 <i>Powered by <a href='https://www.reviewnb.com/?utm_source=gh'>ReviewNB</a></i>
aeon-actions-bot[bot]: 
## Thank you for contributing to `aeon`

I have added the following labels to this PR based on the title: **[ $\\color{#FEF1BE}{\\textsf{enhancement}}$ ]**.


The [Checks](https://github.com/aeon-toolkit/aeon/pull/2183/checks) tab will show the status of our automated tests. You can click on individual test runs in the tab or "Details" in the panel below to see more information if there is a failure.

If our `pre-commit` code quality check fails, any trivial fixes will automatically be pushed to your PR unless it is a draft.

Don't hesitate to ask questions on the `aeon` [Slack](https://join.slack.com/t/aeon-toolkit/shared_invite/zt-22vwvut29-HDpCu~7VBUozyfL_8j3dLA) channel if you have any.

### PR CI actions

These checkboxes will add labels to enable/disable CI functionality for this PR. This may not take effect immediately, and a new commit may be required to run the new configuration.

- [ ] Run `pre-commit` checks for all files
- [ ] Run `mypy` typecheck tests
- [ ] Run all `pytest` tests and configurations
- [ ] Run all notebook example tests
- [ ] Run numba-disabled `codecov` tests
- [ ] Stop automatic `pre-commit` fixes (always disabled for drafts)
- [ ] Disable numba cache loading
- [ ] Push an empty commit to re-run CI checks
    

Patch:
diff --git a/aeon/classification/deep_learning/_fcn.py b/aeon/classification/deep_learning/_fcn.py
index ea14036b..5484f45b 100644
--- a/aeon/classification/deep_learning/_fcn.py
+++ b/aeon/classification/deep_learning/_fcn.py
@@ -99,8 +99,8 @@ class FCNClassifier(BaseDeepClassifier):
     --------
     >>> from aeon.classification.deep_learning import FCNClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> fcn = FCNClassifier(n_epochs=20, batch_size=4)  # doctest: +SKIP
     >>> fcn.fit(X_train, y_train)  # doctest: +SKIP
     FCNClassifier(...)
diff --git a/aeon/classification/deep_learning/_inception_time.py b/aeon/classification/deep_learning/_inception_time.py
index 90a9edd9..135ced4a 100644
--- a/aeon/classification/deep_learning/_inception_time.py
+++ b/aeon/classification/deep_learning/_inception_time.py
@@ -493,8 +493,8 @@ class IndividualInceptionClassifier(BaseDeepClassifier):
     --------
     >>> from aeon.classification.deep_learning import IndividualInceptionClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> inc = IndividualInceptionClassifier(n_epochs=20,batch_size=4)  # doctest: +SKIP
     >>> inc.fit(X_train, y_train)  # doctest: +SKIP
     IndividualInceptionClassifier(...)
diff --git a/aeon/classification/deep_learning/_lite_time.py b/aeon/classification/deep_learning/_lite_time.py
index e00abe79..43f58dfd 100644
--- a/aeon/classification/deep_learning/_lite_time.py
+++ b/aeon/classification/deep_learning/_lite_time.py
@@ -369,8 +369,8 @@ class IndividualLITEClassifier(BaseDeepClassifier):
     --------
     >>> from aeon.classification.deep_learning import IndividualLITEClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> lite = IndividualLITEClassifier(n_epochs=20,batch_size=4)  # doctest: +SKIP
     >>> lite.fit(X_train, y_train)  # doctest: +SKIP
     IndividualLITEClassifier(...)
diff --git a/aeon/classification/dictionary_based/_boss.py b/aeon/classification/dictionary_based/_boss.py
index fb37e098..da821b72 100644
--- a/aeon/classification/dictionary_based/_boss.py
+++ b/aeon/classification/dictionary_based/_boss.py
@@ -111,8 +111,8 @@ class BOSSEnsemble(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import BOSSEnsemble
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = BOSSEnsemble(max_ensemble_size=3)
     >>> clf.fit(X_train, y_train)
     BOSSEnsemble(...)
@@ -514,8 +514,8 @@ class IndividualBOSS(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import IndividualBOSS
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = IndividualBOSS()
     >>> clf.fit(X_train, y_train)
     IndividualBOSS(...)
diff --git a/aeon/classification/dictionary_based/_cboss.py b/aeon/classification/dictionary_based/_cboss.py
index 5815878a..a649741b 100644
--- a/aeon/classification/dictionary_based/_cboss.py
+++ b/aeon/classification/dictionary_based/_cboss.py
@@ -120,8 +120,8 @@ class ContractableBOSS(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import ContractableBOSS
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = ContractableBOSS(n_parameter_samples=10, max_ensemble_size=3)
     >>> clf.fit(X_train, y_train)
     ContractableBOSS(...)
diff --git a/aeon/classification/dictionary_based/_muse.py b/aeon/classification/dictionary_based/_muse.py
index 2052d875..df3b6d8b 100644
--- a/aeon/classification/dictionary_based/_muse.py
+++ b/aeon/classification/dictionary_based/_muse.py
@@ -122,8 +122,8 @@ class MUSE(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import MUSE
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = MUSE(window_inc=4, use_first_order_differences=False)
     >>> clf.fit(X_train, y_train)
     MUSE(...)
diff --git a/aeon/classification/dictionary_based/_redcomets.py b/aeon/classification/dictionary_based/_redcomets.py
index 4e782f2e..f8510945 100644
--- a/aeon/classification/dictionary_based/_redcomets.py
+++ b/aeon/classification/dictionary_based/_redcomets.py
@@ -81,8 +81,8 @@ class REDCOMETS(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import REDCOMETS
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = REDCOMETS()  # doctest: +SKIP
     >>> clf.fit(X_train, y_train)  # doctest: +SKIP
     REDCOMETS(...)
diff --git a/aeon/classification/dictionary_based/_tde.py b/aeon/classification/dictionary_based/_tde.py
index 2c706720..97a98ecb 100644
--- a/aeon/classification/dictionary_based/_tde.py
+++ b/aeon/classification/dictionary_based/_tde.py
@@ -661,8 +661,8 @@ class IndividualTDE(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import IndividualTDE
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = IndividualTDE()
     >>> clf.fit(X_train, y_train)
     IndividualTDE(...)
diff --git a/aeon/classification/dictionary_based/_weasel.py b/aeon/classification/dictionary_based/_weasel.py
index bb0ab99b..dee61e3b 100644
--- a/aeon/classification/dictionary_based/_weasel.py
+++ b/aeon/classification/dictionary_based/_weasel.py
@@ -123,8 +123,8 @@ class WEASEL(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import WEASEL
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = WEASEL(window_inc=4)
     >>> clf.fit(X_train, y_train)
     WEASEL(...)
diff --git a/aeon/classification/dictionary_based/_weasel_v2.py b/aeon/classification/dictionary_based/_weasel_v2.py
index 43eb7198..0dd7539b 100644
--- a/aeon/classification/dictionary_based/_weasel_v2.py
+++ b/aeon/classification/dictionary_based/_weasel_v2.py
@@ -117,8 +117,8 @@ class WEASEL_V2(BaseClassifier):
     --------
     >>> from aeon.classification.dictionary_based import WEASEL_V2
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = WEASEL_V2()
     >>> clf.fit(X_train, y_train)
     WEASEL_V2(...)
diff --git a/aeon/classification/early_classification/_probability_threshold.py b/aeon/classification/early_classification/_probability_threshold.py
index 054e59ba..f34d8cd1 100644
--- a/aeon/classification/early_classification/_probability_threshold.py
+++ b/aeon/classification/early_classification/_probability_threshold.py
@@ -83,8 +83,8 @@ class ProbabilityThresholdEarlyClassifier(BaseEarlyClassifier):
     ... )
     >>> from aeon.classification.interval_based import TimeSeriesForestClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = ProbabilityThresholdEarlyClassifier(
     ...     classification_points=[6, 16, 24],
     ...     estimator=TimeSeriesForestClassifier(n_estimators=5),
diff --git a/aeon/classification/early_classification/_teaser.py b/aeon/classification/early_classification/_teaser.py
index b4d51bf8..aded30f6 100644
--- a/aeon/classification/early_classification/_teaser.py
+++ b/aeon/classification/early_classification/_teaser.py
@@ -95,8 +95,8 @@ class TEASER(BaseEarlyClassifier):
     >>> from aeon.classification.early_classification import TEASER
     >>> from aeon.classification.interval_based import TimeSeriesForestClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = TEASER(
     ...     classification_points=[6, 16, 24],
     ...     estimator=TimeSeriesForestClassifier(n_estimators=5),
diff --git a/aeon/classification/feature_based/_summary.py b/aeon/classification/feature_based/_summary.py
index 4be24a0b..43e6b33d 100644
--- a/aeon/classification/feature_based/_summary.py
+++ b/aeon/classification/feature_based/_summary.py
@@ -61,8 +61,8 @@ class SummaryClassifier(BaseClassifier):
     >>> from aeon.classification.feature_based import SummaryClassifier
     >>> from sklearn.ensemble import RandomForestClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = SummaryClassifier(estimator=RandomForestClassifier(n_estimators=5))
     >>> clf.fit(X_train, y_train)
     SummaryClassifier(...)
diff --git a/aeon/classification/ordinal_classification/_ordinal_tde.py b/aeon/classification/ordinal_classification/_ordinal_tde.py
index 35e807fc..982aab1f 100644
--- a/aeon/classification/ordinal_classification/_ordinal_tde.py
+++ b/aeon/classification/ordinal_classification/_ordinal_tde.py
@@ -133,8 +133,8 @@ class OrdinalTDE(BaseClassifier):
     --------
     >>> from aeon.classification.ordinal_classification import OrdinalTDE
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = OrdinalTDE(
     ...     n_parameter_samples=10,
     ...     max_ensemble_size=3,
@@ -643,8 +643,8 @@ class IndividualOrdinalTDE(BaseClassifier):
     --------
     >>> from aeon.classification.ordinal_classification import IndividualOrdinalTDE
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = IndividualOrdinalTDE()
     >>> clf.fit(X_train, y_train)
     IndividualOrdinalTDE(...)
diff --git a/aeon/classification/shapelet_based/_rdst.py b/aeon/classification/shapelet_based/_rdst.py
index 166ca100..4288686f 100644
--- a/aeon/classification/shapelet_based/_rdst.py
+++ b/aeon/classification/shapelet_based/_rdst.py
@@ -117,8 +117,8 @@ class RDSTClassifier(BaseClassifier):
     --------
     >>> from aeon.classification.shapelet_based import RDSTClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = RDSTClassifier(
     ...     max_shapelets=10
     ... )
diff --git a/aeon/classification/shapelet_based/_stc.py b/aeon/classification/shapelet_based/_stc.py
index e3d8b3c6..3add6f52 100644
--- a/aeon/classification/shapelet_based/_stc.py
+++ b/aeon/classification/shapelet_based/_stc.py
@@ -110,8 +110,8 @@ class ShapeletTransformClassifier(BaseClassifier):
     >>> from aeon.classification.shapelet_based import ShapeletTransformClassifier
     >>> from aeon.classification.sklearn import RotationForestClassifier
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> clf = ShapeletTransformClassifier(
     ...     estimator=RotationForestClassifier(n_estimators=3),
     ...     n_shapelet_samples=100,
diff --git a/aeon/clustering/deep_learning/_ae_fcn.py b/aeon/clustering/deep_learning/_ae_fcn.py
index 56ab4cfe..50089a6b 100644
--- a/aeon/clustering/deep_learning/_ae_fcn.py
+++ b/aeon/clustering/deep_learning/_ae_fcn.py
@@ -108,8 +108,8 @@ class AEFCNClusterer(BaseDeepClusterer):
     --------
     >>> from aeon.clustering.deep_learning import AEFCNClusterer
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> aefcn = AEFCNClusterer(n_epochs=5,batch_size=4)  # doctest: +SKIP
     >>> aefcn.fit(X_train)  # doctest: +SKIP
     AEFCNClusterer(...)
diff --git a/aeon/datasets/_data_loaders.py b/aeon/datasets/_data_loaders.py
index c5af7189..30ed1274 100644
--- a/aeon/datasets/_data_loaders.py
+++ b/aeon/datasets/_data_loaders.py
@@ -297,7 +297,6 @@ def load_from_tsfile(
 def _load_saved_dataset(
     name,
     split=None,
-    return_X_y=True,
     return_type=None,
     local_module=MODULE,
     local_dirname=DIRNAME,
@@ -315,9 +314,6 @@ def _load_saved_dataset(
     split: None or {"TRAIN", "TEST"}, default=None
         Whether to load the train or test instances of the problem.
         By default it loads both train and test instances into a single data structure.
-    return_X_y: bool, default=True
-        If True, returns (time series, target) separately. If False it returns (X,
-        y) as a tuple.
     return_data_type : str, default = None
         "numpy3D"/"numpy3d"/"np3D": recommended for equal length series, "np-list"
         for unequal length series that cannot be stored in numpy arrays.
@@ -336,11 +332,14 @@ def _load_saved_dataset(
     Returns
     -------
     X: Data stored in specified `return_type`
-        The time series data for the problem, with n instances
-    y: 1D numpy array of length n, only returned if return_X_y if True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
-    meta: meta data dictionary, only returned if return_meta is True
+        The time series collection for the problem.
+    y: 1D numpy array of length len(X)
+     The class labels for each time series instance in X.
+
+    meta: dict
+        Dictionary of data characteristics, with keys
+        "problemname" (string), booleans: "timestamps", "missing", "univariate",
+        "equallength", "classlabel", "targetlabel" and list: "class_values",
 
     Raises
     ------
@@ -379,18 +378,10 @@ def _load_saved_dataset(
         raise ValueError("Invalid `split` value =", split)
     if return_type is not None:
         X = convert_collection(X, return_type)
-
-    if return_X_y:
-        if return_meta:
-            return X, y, meta_data
-        else:
-            return X, y
+    if return_meta:
+        return X, y, meta_data
     else:
-        combo = (X, y)
-        if return_meta:
-            return combo, meta_data
-        else:
-            return combo
+        return X, y
 
 
 def download_dataset(name, save_path=None):
@@ -492,7 +483,7 @@ def _download_and_extract(url, extract_path=None):
 
 
 def _load_tsc_dataset(
-    name, split, return_X_y=True, return_type=None, extract_path=None, return_meta=False
+    name, split, return_type=None, extract_path=None, return_meta=False
 ):
     """Load time series classification datasets (helper function).
 
@@ -502,9 +493,6 @@ def _load_tsc_dataset(
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem.
         By default it loads both train and test instances (in a single container).
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of a single
-        dataframe with columns for features and the target.
     return_data_type : str, optional, default = None
         "numpy3D"/"numpy3d"/"np3D": recommended for equal length series
         "numpy2D"/"numpy2d"/"np2d": can be used for univariate equal length series,
@@ -519,10 +507,9 @@ def _load_tsc_dataset(
     Returns
     -------
     X: Data stored in specified `return_type`
-        The time series data for the problem, with n instances
-    y: 1D numpy array of length n, only returned if return_X_y if True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+        The time series data for the problem, with n instances.
+    y: 1D numpy array of length len(X)
+        The class labels for each time series instance in X.
 
     Raises
     ------
@@ -565,7 +552,6 @@ def _load_tsc_dataset(
     return _load_saved_dataset(
         name,
         split=split,
-        return_X_y=return_X_y,
         return_type=return_type,
         local_module=local_module,
         local_dirname=local_dirname,
diff --git a/aeon/datasets/_single_problem_loaders.py b/aeon/datasets/_single_problem_loaders.py
index 0188e416..3d0a4837 100644
--- a/aeon/datasets/_single_problem_loaders.py
+++ b/aeon/datasets/_single_problem_loaders.py
@@ -26,8 +26,6 @@ __all__ = [
 ]
 
 import os
-from urllib.error import HTTPError, URLError
-from warnings import warn
 
 import numpy as np
 import pandas as pd
@@ -40,7 +38,7 @@ DIRNAME = "data"
 MODULE = os.path.dirname(__file__)
 
 
-def load_gunpoint(split=None, return_X_y=True, return_type="numpy3d"):
+def load_gunpoint(split=None, return_type="numpy3d"):
     """Load the GunPoint univariate time series classification problem.
 
     Parameters
@@ -48,9 +46,6 @@ def load_gunpoint(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure to use for time series, should be either "numpy2d" or "numpy3d".
 
@@ -65,9 +60,8 @@ def load_gunpoint(split=None, return_X_y=True, return_type="numpy3d"):
         150) (return_type="numpy2d"), where n_cases is either 150 (split="train" or
         "test") or 300.
     y: np.ndarray
-        1D array of length 150 or 300, only returned if return_X_y is True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+        1D array of length 150 or 300. The class labels for each time series instance
+        in X.
 
     Examples
     --------
@@ -83,10 +77,10 @@ def load_gunpoint(split=None, return_X_y=True, return_type="numpy3d"):
     Number of classes:  2
     Details: https://timeseriesclassification.com/description.php?Dataset=GunPoint
     """
-    return _load_tsc_dataset("GunPoint", split, return_X_y, return_type=return_type)
+    return _load_tsc_dataset("GunPoint", split, return_type=return_type)
 
 
-def load_osuleaf(split=None, return_X_y=True, return_type="numpy3d"):
+def load_osuleaf(split=None, return_type="numpy3d"):
     """Load the OSULeaf univariate time series classification problem.
 
     Parameters
@@ -94,9 +88,6 @@ def load_osuleaf(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure to use for time series, should be either "numpy2d" or "numpy3d".
 
@@ -111,9 +102,8 @@ def load_osuleaf(split=None, return_X_y=True, return_type="numpy3d"):
         427) (return_type="numpy2d"), where n_cases where n_cases is either 200
         (split = "train") 242 (split="test") or 442.
     y: np.ndarray
-        1D array of length 200, 242 or 542, only returned if return_X_y is True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+        1D array of length 200, 242 or 542. The class labels for each time series
+        instance in X.
 
     Examples
     --------
@@ -129,10 +119,10 @@ def load_osuleaf(split=None, return_X_y=True, return_type="numpy3d"):
     Number of classes:  6
     Details: https://www.timeseriesclassification.com/description.php?Dataset=OSULeaf
     """
-    return _load_tsc_dataset("OSULeaf", split, return_X_y, return_type=return_type)
+    return _load_tsc_dataset("OSULeaf", split, return_type=return_type)
 
 
-def load_italy_power_demand(split=None, return_X_y=True, return_type="numpy3d"):
+def load_italy_power_demand(split=None, return_type="numpy3d"):
     """Load ItalyPowerDemand univariate time series classification problem.
 
     Parameters
@@ -140,9 +130,6 @@ def load_italy_power_demand(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure to use for time series, should be either "numpy2d" or "numpy3d".
 
@@ -157,10 +144,8 @@ def load_italy_power_demand(split=None, return_X_y=True, return_type="numpy3d"):
         24) (return_type="numpy2d"), where n_cases where n_cases is either 67
         (split = "train") 1029 (split="test") or 1096.
     y: np.ndarray
-        1D array of length 67, 1029 or 1096, only returned if return_X_y is True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
-
+        1D array of length 67, 1029 or 1096. The class labels for each time series
+        instance in X.
 
     Examples
     --------
@@ -177,10 +162,10 @@ def load_italy_power_demand(split=None, return_X_y=True, return_type="numpy3d"):
     Details:https://timeseriesclassification.com/description.php?Dataset=ItalyPowerDemand
     """
     name = "ItalyPowerDemand"
-    return _load_tsc_dataset(name, split, return_X_y, return_type=return_type)
+    return _load_tsc_dataset(name, split, return_type=return_type)
 
 
-def load_unit_test(split=None, return_X_y=True, return_type="numpy3d"):
+def load_unit_test(split=None, return_type="numpy3d"):
     """
     Load UnitTest data.
 
@@ -193,9 +178,6 @@ def load_unit_test(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure containing series, should be either "numpy2d" or "numpy3d".
 
@@ -210,9 +192,8 @@ def load_unit_test(split=None, return_X_y=True, return_type="numpy3d"):
         24) (return_type="numpy2d), where n_cases where n_cases is either 20
         (split = "train") 22 (split="test") or 42.
     y: np.ndarray
-        1D array of length 20, 22 or 42, only returned if return_X_y is True
+        1D array of length 20, 22 or 42
         The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
 
     Examples
     --------
@@ -230,10 +211,10 @@ def load_unit_test(split=None, return_X_y=True, return_type="numpy3d"):
     Details: https://timeseriesclassification.com/description.php?Dataset=Chinatown
     for the full dataset
     """
-    return _load_saved_dataset("UnitTest", split, return_X_y, return_type)
+    return _load_saved_dataset("UnitTest", split, return_type)
 
 
-def load_arrow_head(split=None, return_X_y=True, return_type="numpy3d"):
+def load_arrow_head(split=None, return_type="numpy3d"):
     """
     Load the ArrowHead univariate time series classification problem.
 
@@ -242,9 +223,6 @@ def load_arrow_head(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure to use for time series, should be either "numpy2d" or "numpy3d".
 
@@ -259,9 +237,8 @@ def load_arrow_head(split=None, return_X_y=True, return_type="numpy3d"):
         251) (return_type="numpy2d"), where n_cases where n_cases is either 36
         (split = "train"), 175 (split="test") or 211.
     y: np.ndarray
-        1D array of length 36, 175 or 211, only returned if return_X_y is True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+        1D array of length 36, 175 or 211. The class labels for each time series
+        instance in X.
 
     Examples
     --------
@@ -277,12 +254,10 @@ def load_arrow_head(split=None, return_X_y=True, return_type="numpy3d"):
     Number of classes:  3
     Details: https://timeseriesclassification.com/description.php?Dataset=ArrowHead
     """
-    return _load_saved_dataset(
-        name="ArrowHead", split=split, return_X_y=return_X_y, return_type=return_type
-    )
+    return _load_saved_dataset(name="ArrowHead", split=split, return_type=return_type)
 
 
-def load_acsf1(split=None, return_X_y=True, return_type="numpy3d"):
+def load_acsf1(split=None, return_type="numpy3d"):
     """Load the ACSF1 univariate dataset on power consumption of typical appliances.
 
     Parameters
@@ -290,9 +265,6 @@ def load_acsf1(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure to use for time series, should be either "numpy2d" or "numpy3d".
 
@@ -307,9 +279,8 @@ def load_acsf1(split=None, return_X_y=True, return_type="numpy3d"):
         1460) (return_type="numpy2d"), where n_cases where n_cases is either 100
         (split = "train" or split="test") or 200.
     y: np.ndarray
-        1D array of length 100 or 200 only returned if return_X_y is True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+        1D array of length 100 or 200. The class labels for each time series instance
+        in X.
 
     Examples
     --------
@@ -325,10 +296,10 @@ def load_acsf1(split=None, return_X_y=True, return_type="numpy3d"):
     Number of classes:  10
     Details: https://www.timeseriesclassification.com/description.php?Dataset=ACSF1
     """
-    return _load_tsc_dataset("ACSF1", split, return_X_y, return_type=return_type)
+    return _load_tsc_dataset("ACSF1", split, return_type=return_type)
 
 
-def load_basic_motions(split=None, return_X_y=True, return_type="numpy3d"):
+def load_basic_motions(split=None, return_type="numpy3d"):
     """
     Load the BasicMotions time series classification problem.
 
@@ -339,9 +310,6 @@ def load_basic_motions(split=None, return_X_y=True, return_type="numpy3d"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
     return_type: string, default="numpy3d"
         Data structure to use for time series, should be "numpy3d" or "np-list".
 
@@ -355,9 +323,8 @@ def load_basic_motions(split=None, return_X_y=True, return_type="numpy3d"):
         shape (n_cases, 6, 100) (if return_type="numpy3d"), where n_cases where
         n_cases is either 40 (split = "train" or split="test") or 80.
     y: np.ndarray
-        1D array of length 40 or 80, only returned if return_X_y is True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+        1D array of length 40 or 80. The class labels for each time series instance
+        in X.
 
     Notes
     -----
@@ -375,11 +342,11 @@ def load_basic_motions(split=None, return_X_y=True, return_type="numpy3d"):
             f"numpy3d instead"
         )
     return _load_saved_dataset(
-        name="BasicMotions", split=split, return_X_y=return_X_y, return_type=return_type
+        name="BasicMotions", split=split, return_type=return_type
     )
 
 
-def load_plaid(split=None, return_X_y=True, return_type="np-list"):
+def load_plaid(split=None):
     """Load the PLAID univariate time series classification problem.
 
     Example of a univariate problem with unequal length time series.
@@ -389,22 +356,12 @@ def load_plaid(split=None, return_X_y=True, return_type="np-list"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of as single data
-        structure.
-    return_type: string, default="np-list"
-        Data structure to use for time series, should be "nested_univ" or "np-list".
-
-    Raises
-    ------
-    ValueError is raised if the data cannot be stored in the requested return_type.
 
     Returns
     -------
     X: list of 2D np.ndarray, one for each series.
-    y: 1D numpy array of length n, only returned if return_X_y if True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+    y: 1D numpy array of length len(X). The class labels for each time series
+    instance in X.
 
     Notes
     -----
@@ -420,10 +377,10 @@ def load_plaid(split=None, return_X_y=True, return_type="np-list"):
     >>> from aeon.datasets import load_plaid
     >>> X, y = load_plaid()
     """
-    return _load_tsc_dataset("PLAID", split, return_X_y, return_type=return_type)
+    return _load_tsc_dataset("PLAID", split, return_type="np-list")
 
 
-def load_japanese_vowels(split=None, return_X_y=True, return_type="np-list"):
+def load_japanese_vowels(split=None):
     """Load the JapaneseVowels time series classification problem.
 
     Example of a multivariate problem with unequal length series.
@@ -433,18 +390,12 @@ def load_japanese_vowels(split=None, return_X_y=True, return_type="np-list"):
     split: None or one of "TRAIN", "TEST", default=None
         Whether to load the train or test instances of the problem. By default it
         loads both train and test instances into a single array.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of a single
-        dataframe with columns for features and the target.
-    return_type: string, default="np-list"
-        Data structure to use for time series, should be "nested_univ" or "np-list".
 
     Returns
     -------
-    X: np.Pandas dataframe with 12 columns and a pd.Series in each cell
-    y: 1D numpy array of length n, only returned if return_X_y if True
-        The class labels for each time series instance in X
-        If return_X_y is False, y is appended to X instead.
+    X: list of 2D np.ndarray, one for each series.
+    y: 1D numpy array of length len(X). The class labels for each time series instance
+    in X.
 
     Examples
     --------
@@ -460,9 +411,102 @@ def load_japanese_vowels(split=None, return_X_y=True, return_type="np-list"):
     Number of classes:  9
     Details: https://timeseriesclassification.com/description.php?Dataset=JapaneseVowels
     """
-    return _load_tsc_dataset(
-        "JapaneseVowels", split, return_X_y, return_type=return_type
-    )
+    return _load_tsc_dataset("JapaneseVowels", split, return_type="np-list")
+
+
+def load_covid_3month(split=None, return_type="numpy3d"):
+    """Load dataset of last three months confirmed covid cases.
+
+    Parameters
+    ----------
+    split: None or str{"train", "test"}, default=None
+        Whether to load the train or test partition of the problem. By
+        default, it loads both.
+    return_type: string, default="numpy3d"
+        Data structure to use for time series, should be either "numpy2d" or "numpy3d".
+
+    Returns
+    -------
+    X: np.ndarray
+        The time series data.
+    y: np.ndarray
+        The regression values for each case in X.
+
+    Examples
+    --------
+    >>> from aeon.datasets import load_covid_3month
+    >>> X, y = load_covid_3month()
+
+    Notes
+    -----
+    Dimensionality:     univariate
+    Series length:      84
+    Train cases:        140
+    Test cases:         61
+    Number of classes:  -
+
+    The goal of this dataset is to predict COVID-19's death rate on 1st April 2020 for
+    each country using daily confirmed cases for the last three months. This dataset
+    contains 201 time series with no missing values, where each time series is
+    the daily confirmed cases for a country.
+    The data was obtained from WHO's COVID-19 database.
+    Please refer to https://covid19.who.int/ for more details
+
+    Dataset details: https://zenodo.org/record/3902690#.Yy1z_HZBxEY
+    =Covid3Month
+    """
+    name = "Covid3Month"
+    X, y = _load_tsc_dataset(name, split, return_type)
+    y = y.astype(float)
+    return X, y
+
+
+def load_cardano_sentiment(split=None, return_type="numpy3d"):
+    """Load dataset of historical sentiment data for Cardano cryptocurrency.
+
+    Parameters
+    ----------
+    split: None or str{"train", "test"}, default=None
+        Whether to load the train or test partition of the problem. By
+        default, it loads both.
+    return_type: string, default="numpy3d"
+        Data structure to use for time series, should be either "numpy2d" or "numpy3d".
+
+    Returns
+    -------
+    X: np.ndarray
+        The time series data.
+    y: np.ndarray
+        The regression values for each case in X.
+
+    Examples
+    --------
+    >>> from aeon.datasets import load_cardano_sentiment
+    >>> X, y = load_cardano_sentiment()
+
+    Notes
+    -----
+    Dimensionality:     multivariate
+    Series length:      24
+    Train cases:        74
+    Test cases:         33
+    Number of classes:  -
+
+    By combining historical sentiment data for Cardano cryptocurrency, extracted from
+    EODHistoricalData and made available on Kaggle, with historical price data for the
+    same cryptocurrency, extracted from CryptoDataDownload, we created the
+    CardanoSentiment dataset, with 107 instances. The predictors are hourly close price
+    (in USD) and traded volume during a day, resulting in 2-dimensional time series of
+    length 24. The response variable is the normalized sentiment score on the day
+    spanned by the timepoints.
+
+    EODHistoricalData: https://perma.cc/37GN-BMRL
+    CryptoDataDownload: https://perma.cc/4M79-7QY4
+    Dataset details: https://arxiv.org/pdf/2305.01429.pdf
+    """
+    X, y = _load_tsc_dataset("CardanoSentiment", split, return_type)
+    y = y.astype(float)
+    return X, y
 
 
 # forecasting data sets
@@ -920,13 +964,7 @@ def load_unit_test_tsf(return_type="tsf_default"):
     )
 
 
-def load_solar(
-    start="2021-05-01",
-    end="2021-09-01",
-    normalise=True,
-    return_full_df=False,
-    api_version="v4",
-):
+def load_solar():
     """Get national solar estimates for GB from Sheffield Solar PV_Live API.
 
     This function calls the Sheffield Solar PV_Live API to extract national solar data
@@ -937,19 +975,6 @@ def load_solar(
     The returned time series is half hourly. For more information please refer
     to [1, 2]_.
 
-    Parameters
-    ----------
-    start : string, default="2021-05-01"
-        The start date of the time-series in "YYYY-MM-DD" format
-    end : string, default="2021-09-01"
-        The end date of the time-series in "YYYY-MM-DD" format
-    normalise : boolean, default=True
-        Normalise the returned time-series by installed capacity?
-    return_full_df : boolean, default=False
-        Return a pd.DataFrame with power, capacity, and normalised estimates?
-    api_version : string or None, default="v4"
-        API version to call. If None then a stored sample of the data is loaded.
-
     Returns
     -------
     pd.Series
@@ -970,167 +995,4 @@ def load_solar(
     y = pd.read_csv(path, index_col=0, parse_dates=["datetime_gmt"], dtype={1: float})
     y = y.asfreq("30T")
     y = y.squeeze("columns")
-    if api_version is None:
-        return y
-
-    def _load_solar(
-        start="2021-05-01",
-        end="2021-09-01",
-        normalise=True,
-        return_full_df=False,
-        api_version="v4",
-    ):
-        """Private loader, for decoration with backoff."""
-        url = (
-            f"https://api0.solar.sheffield.ac.uk/pvlive/api/"
-            f"{api_version}/gsp/0?start={start}T00:00:00&end={end}"
-            f"extra_fields=capacity_mwp&data_format=csv"
-        )
-        df = (
-            pd.read_csv(
-                url, index_col=["gsp_id", "datetime_gmt"], parse_dates=["datetime_gmt"]
-            )
-            .droplevel(0)
-            .sort_index()
-        )
-        df = df.asfreq("30T")
-        df["generation_pu"] = df["generation_mw"] / df["capacity_mwp"]
-
-        if return_full_df:
-            df["generation_pu"] = df["generation_mw"] / df["capacity_mwp"]
-            return df
-        else:
-            if normalise:
-                return df["generation_pu"].rename("solar_gen")
-            else:
-                return df["generation_mw"].rename("solar_gen")
-
-    try:
-        return _load_solar(
-            start=start,
-            end=end,
-            normalise=normalise,
-            return_full_df=return_full_df,
-            api_version=api_version,
-        )
-    except (URLError, HTTPError):
-        warn(
-            """
-                    Error detected using API. Check connection, input arguments, and
-                    API status here https://www.solar.sheffield.ac.uk/pvlive/api/.
-                    Loading stored sample data instead.
-                    """
-        )
-        return y
-
-
-def load_covid_3month(split=None, return_X_y=True, return_type="numpy3d"):
-    """Load dataset of last three months confirmed covid cases.
-
-    Parameters
-    ----------
-    split: None or str{"train", "test"}, default=None
-        Whether to load the train or test partition of the problem. By
-        default, it loads both.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of a single
-        dataframe with columns for
-        features and the target.
-    return_type: string, default="numpy3d"
-        Data structure to use for time series, should be either "numpy2d" or "numpy3d".
-
-    Returns
-    -------
-    X: pd.DataFrame with m rows and c columns
-        The time series data for the problem with m cases and c dimensions
-    y: numpy array
-        The regression values for each case in X
-
-    Examples
-    --------
-    >>> from aeon.datasets import load_covid_3month
-    >>> X, y = load_covid_3month()
-
-    Notes
-    -----
-    Dimensionality:     univariate
-    Series length:      84
-    Train cases:        140
-    Test cases:         61
-    Number of classes:  -
-
-    The goal of this dataset is to predict COVID-19's death rate on 1st April 2020 for
-    each country using daily confirmed cases for the last three months. This dataset
-    contains 201 time series with no missing values, where each time series is
-    the daily confirmed cases for a country.
-    The data was obtained from WHO's COVID-19 database.
-    Please refer to https://covid19.who.int/ for more details
-
-    Dataset details: https://zenodo.org/record/3902690#.Yy1z_HZBxEY
-    =Covid3Month
-    """
-    name = "Covid3Month"
-    if return_X_y:
-        X, y = _load_tsc_dataset(name, split, return_X_y, return_type)
-        y = y.astype(float)
-        return X, y
-    else:
-        X = _load_tsc_dataset(name, split, return_X_y, return_type)
-        return X
-
-
-def load_cardano_sentiment(split=None, return_X_y=True, return_type="numpy3d"):
-    """Load dataset of historical sentiment data for Cardano cryptocurrency.
-
-    Parameters
-    ----------
-    split: None or str{"train", "test"}, default=None
-        Whether to load the train or test partition of the problem. By
-        default, it loads both.
-    return_X_y: bool, default=True
-        If True, returns (features, target) separately instead of a single
-        dataframe with columns for
-        features and the target.
-    return_type: string, default="numpy3d"
-        Data structure to use for time series, should be either "numpy2d" or "numpy3d".
-
-    Returns
-    -------
-    X: pd.DataFrame with m rows and c columns
-        The time series data for the problem with m cases and c dimensions
-    y: numpy array
-        The regression values for each case in X
-
-    Examples
-    --------
-    >>> from aeon.datasets import load_cardano_sentiment
-    >>> X, y = load_cardano_sentiment()
-
-    Notes
-    -----
-    Dimensionality:     multivariate
-    Series length:      24
-    Train cases:        74
-    Test cases:         33
-    Number of classes:  -
-
-    By combining historical sentiment data for Cardano cryptocurrency, extracted from
-    EODHistoricalData and made available on Kaggle, with historical price data for the
-    same cryptocurrency, extracted from CryptoDataDownload, we created the
-    CardanoSentiment dataset, with 107 instances. The predictors are hourly close price
-    (in USD) and traded volume during a day, resulting in 2-dimensional time series of
-    length 24. The response variable is the normalized sentiment score on the day
-    spanned by the timepoints.
-
-    EODHistoricalData: https://perma.cc/37GN-BMRL
-    CryptoDataDownload: https://perma.cc/4M79-7QY4
-    Dataset details: https://arxiv.org/pdf/2305.01429.pdf
-    """
-    name = "CardanoSentiment"
-    if return_X_y:
-        X, y = _load_tsc_dataset(name, split, return_X_y, return_type)
-        y = y.astype(float)
-        return X, y
-    else:
-        X = _load_tsc_dataset(name, split, return_X_y, return_type)
-        return X
+    return y
diff --git a/aeon/regression/deep_learning/_lite_time.py b/aeon/regression/deep_learning/_lite_time.py
index 0d010431..56e33849 100644
--- a/aeon/regression/deep_learning/_lite_time.py
+++ b/aeon/regression/deep_learning/_lite_time.py
@@ -353,8 +353,8 @@ class IndividualLITERegressor(BaseDeepRegressor):
     --------
     >>> from aeon.regression.deep_learning import IndividualLITERegressor
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
-    >>> X_test, y_test = load_unit_test(split="test", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
+    >>> X_test, y_test = load_unit_test(split="test")
     >>> lite = IndividualLITERegressor(n_epochs=20,batch_size=4)  # doctest: +SKIP
     >>> lite.fit(X_train, y_train)  # doctest: +SKIP
     IndividualLITERegressor(...)
diff --git a/aeon/regression/feature_based/_summary.py b/aeon/regression/feature_based/_summary.py
index 2b320961..4e2f89ee 100644
--- a/aeon/regression/feature_based/_summary.py
+++ b/aeon/regression/feature_based/_summary.py
@@ -55,8 +55,8 @@ class SummaryRegressor(BaseRegressor):
     >>> from aeon.regression.feature_based import SummaryRegressor
     >>> from sklearn.ensemble import RandomForestRegressor
     >>> from aeon.datasets import load_covid_3month
-    >>> X_train, y_train = load_covid_3month(split="train", return_X_y=True)
-    >>> X_test, y_test = load_covid_3month(split="test", return_X_y=True)
+    >>> X_train, y_train = load_covid_3month(split="train")
+    >>> X_test, y_test = load_covid_3month(split="test")
     >>> clf = SummaryRegressor(estimator=RandomForestRegressor(n_estimators=5))
     >>> clf.fit(X_train, y_train)
     SummaryRegressor(...)
diff --git a/aeon/regression/shapelet_based/_rdst.py b/aeon/regression/shapelet_based/_rdst.py
index 4bd5e53d..6f0a0b9b 100644
--- a/aeon/regression/shapelet_based/_rdst.py
+++ b/aeon/regression/shapelet_based/_rdst.py
@@ -98,8 +98,8 @@ class RDSTRegressor(BaseRegressor):
     --------
     >>> from aeon.regression.shapelet_based import RDSTRegressor
     >>> from aeon.datasets import load_covid_3month
-    >>> X_train, y_train = load_covid_3month(split="train", return_X_y=True)
-    >>> X_test, y_test = load_covid_3month(split="test", return_X_y=True)
+    >>> X_train, y_train = load_covid_3month(split="train")
+    >>> X_test, y_test = load_covid_3month(split="test")
     >>> clf = RDSTRegressor(
     ...     max_shapelets=10
     ... )
diff --git a/aeon/transformations/collection/feature_based/_tsfresh.py b/aeon/transformations/collection/feature_based/_tsfresh.py
index 8c6f5603..41657c0a 100644
--- a/aeon/transformations/collection/feature_based/_tsfresh.py
+++ b/aeon/transformations/collection/feature_based/_tsfresh.py
@@ -438,7 +438,7 @@ class TSFreshRelevantFeatureExtractor(_TSFreshFeatureExtractor):
     >>> from aeon.transformations.collection.feature_based import (
     ...     TSFreshRelevantFeatureExtractor
     ... )
-    >>> X, y = load_arrow_head(return_X_y=True)
+    >>> X, y = load_arrow_head()
     >>> X_train, X_test, y_train, y_test = train_test_split(X, y)
     >>> ts_eff = TSFreshRelevantFeatureExtractor(
     ...     default_fc_parameters="efficient", disable_progressbar=True
diff --git a/aeon/transformations/collection/shapelet_based/_dilated_shapelet_transform.py b/aeon/transformations/collection/shapelet_based/_dilated_shapelet_transform.py
index 48af1d3b..579fb93c 100644
--- a/aeon/transformations/collection/shapelet_based/_dilated_shapelet_transform.py
+++ b/aeon/transformations/collection/shapelet_based/_dilated_shapelet_transform.py
@@ -130,7 +130,7 @@ class RandomDilatedShapeletTransform(BaseCollectionTransformer):
     ...     RandomDilatedShapeletTransform
     ... )
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
     >>> t = RandomDilatedShapeletTransform(
     ...     max_shapelets=10
     ... )
diff --git a/aeon/transformations/collection/shapelet_based/_shapelet_transform.py b/aeon/transformations/collection/shapelet_based/_shapelet_transform.py
index 0a7a850d..34c47850 100644
--- a/aeon/transformations/collection/shapelet_based/_shapelet_transform.py
+++ b/aeon/transformations/collection/shapelet_based/_shapelet_transform.py
@@ -129,7 +129,7 @@ class RandomShapeletTransform(BaseCollectionTransformer):
     ...     RandomShapeletTransform
     ... )
     >>> from aeon.datasets import load_unit_test
-    >>> X_train, y_train = load_unit_test(split="train", return_X_y=True)
+    >>> X_train, y_train = load_unit_test(split="train")
     >>> t = RandomShapeletTransform(
     ...     n_shapelet_samples=500,
     ...     max_shapelets=10,
diff --git a/examples/classification/distance_based.ipynb b/examples/classification/distance_based.ipynb
index ac3ac857..6033bc80 100644
--- a/examples/classification/distance_based.ipynb
+++ b/examples/classification/distance_based.ipynb
@@ -107,8 +107,8 @@
     }
    ],
    "source": [
-    "X_train, y_train = load_italy_power_demand(split=\"train\", return_X_y=True)\n",
-    "X_test, y_test = load_italy_power_demand(split=\"test\", return_X_y=True)\n",
+    "X_train, y_train = load_italy_power_demand(split=\"train\")\n",
+    "X_test, y_test = load_italy_power_demand(split=\"test\")\n",
     "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)"
    ]
   },
diff --git a/examples/classification/interval_based.ipynb b/examples/classification/interval_based.ipynb
index af8effec..e7ec024a 100644
--- a/examples/classification/interval_based.ipynb
+++ b/examples/classification/interval_based.ipynb
@@ -104,15 +104,15 @@
     }
    ],
    "source": [
-    "X_train, y_train = load_italy_power_demand(split=\"train\", return_X_y=True)\n",
-    "X_test, y_test = load_italy_power_demand(split=\"test\", return_X_y=True)\n",
+    "X_train, y_train = load_italy_power_demand(split=\"train\")\n",
+    "X_test, y_test = load_italy_power_demand(split=\"test\")\n",
     "X_test = X_test[:50]\n",
     "y_test = y_test[:50]\n",
     "\n",
     "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)\n",
     "\n",
-    "X_train_mv, y_train_mv = load_basic_motions(split=\"train\", return_X_y=True)\n",
-    "X_test_mv, y_test_mv = load_basic_motions(split=\"test\", return_X_y=True)\n",
+    "X_train_mv, y_train_mv = load_basic_motions(split=\"train\")\n",
+    "X_test_mv, y_test_mv = load_basic_motions(split=\"test\")\n",
     "\n",
     "X_train_mv = X_train_mv[:50]\n",
     "y_train_mv = y_train_mv[:50]\n",
diff --git a/examples/transformations/feature_extraction_with_tsfresh.ipynb b/examples/transformations/feature_extraction_with_tsfresh.ipynb
deleted file mode 100644
index fc7404b2..00000000
--- a/examples/transformations/feature_extraction_with_tsfresh.ipynb
+++ /dev/null
@@ -1,1250 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Feature extraction with tsfresh transformer\n",
-    "\n",
-    "In this tutorial, we show how you can use aeon with [tsfresh](https://tsfresh.readthedocs.io) to first extract features from time series, so that we can then use any scikit-learn estimator.\n",
-    "\n",
-    "## Preliminaries\n",
-    "You have to install tsfresh if you haven't already. To install it, uncomment the cell below:"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:39.713903Z",
-     "iopub.status.busy": "2020-12-19T14:30:39.713342Z",
-     "iopub.status.idle": "2020-12-19T14:30:39.715128Z",
-     "shell.execute_reply": "2020-12-19T14:30:39.715641Z"
-    }
-   },
-   "outputs": [],
-   "source": [
-    "# !pip install --upgrade tsfresh"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:39.719083Z",
-     "iopub.status.busy": "2020-12-19T14:30:39.718586Z",
-     "iopub.status.idle": "2020-12-19T14:30:40.743724Z",
-     "shell.execute_reply": "2020-12-19T14:30:40.744213Z"
-    }
-   },
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "from sklearn.ensemble import RandomForestClassifier\n",
-    "from sklearn.model_selection import train_test_split\n",
-    "from sklearn.pipeline import make_pipeline\n",
-    "\n",
-    "from aeon.datasets import load_arrow_head, load_basic_motions\n",
-    "from aeon.transformations.collection.feature_based import TSFreshFeatureExtractor"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Univariate time series classification data\n",
-    "\n",
-    "For more details on the data set, see the [univariate time series classification notebook](https://github.com/aeon-toolkit/aeon/blob/main/examples/02_classification_univariate.ipynb)."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:40.748159Z",
-     "iopub.status.busy": "2020-12-19T14:30:40.747656Z",
-     "iopub.status.idle": "2020-12-19T14:30:40.795200Z",
-     "shell.execute_reply": "2020-12-19T14:30:40.795889Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "(158, 1) (158,) (53, 1) (53,)\n"
-     ]
-    }
-   ],
-   "source": [
-    "X, y = load_arrow_head(return_X_y=True, return_type=\"nested_univ\")\n",
-    "X_train, X_test, y_train, y_test = train_test_split(X, y)\n",
-    "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:40.808841Z",
-     "iopub.status.busy": "2020-12-19T14:30:40.808198Z",
-     "iopub.status.idle": "2020-12-19T14:30:40.816155Z",
-     "shell.execute_reply": "2020-12-19T14:30:40.816682Z"
-    },
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>dim_0</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>69</th>\n",
-       "      <td>0     -1.7998\n",
-       "1     -1.7987\n",
-       "2     -1.7942\n",
-       "3   ...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>103</th>\n",
-       "      <td>0     -1.8091\n",
-       "1     -1.8067\n",
-       "2     -1.7866\n",
-       "3   ...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>34</th>\n",
-       "      <td>0     -2.0417\n",
-       "1     -2.0572\n",
-       "2     -2.0522\n",
-       "3   ...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>14</th>\n",
-       "      <td>0     -2.1888\n",
-       "1     -2.1855\n",
-       "2     -2.1765\n",
-       "3   ...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>121</th>\n",
-       "      <td>0     -1.9586\n",
-       "1     -1.9371\n",
-       "2     -1.8798\n",
-       "3   ...</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "                                                 dim_0\n",
-       "69   0     -1.7998\n",
-       "1     -1.7987\n",
-       "2     -1.7942\n",
-       "3   ...\n",
-       "103  0     -1.8091\n",
-       "1     -1.8067\n",
-       "2     -1.7866\n",
-       "3   ...\n",
-       "34   0     -2.0417\n",
-       "1     -2.0572\n",
-       "2     -2.0522\n",
-       "3   ...\n",
-       "14   0     -2.1888\n",
-       "1     -2.1855\n",
-       "2     -2.1765\n",
-       "3   ...\n",
-       "121  0     -1.9586\n",
-       "1     -1.9371\n",
-       "2     -1.8798\n",
-       "3   ..."
-      ]
-     },
-     "execution_count": 4,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "X_train.head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:40.820002Z",
-     "iopub.status.busy": "2020-12-19T14:30:40.819515Z",
-     "iopub.status.idle": "2020-12-19T14:30:40.821979Z",
-     "shell.execute_reply": "2020-12-19T14:30:40.822517Z"
-    }
-   },
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "array(['0', '1', '2'], dtype=object)"
-      ]
-     },
-     "execution_count": 5,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "#  binary classification task\n",
-    "np.unique(y_train)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Using tsfresh to extract features"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 6,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:40.829452Z",
-     "iopub.status.busy": "2020-12-19T14:30:40.828907Z",
-     "iopub.status.idle": "2020-12-19T14:30:53.049755Z",
-     "shell.execute_reply": "2020-12-19T14:30:53.050249Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/Users/mloning/Documents/Research/software/aeon/aeon/aeon/transformations/panel/tsfresh.py:164: UserWarning: tsfresh requires a unique index, but found non-unique. To avoid this warning, please make sure the index of X contains only unique values.\n",
-      "  \"tsfresh requires a unique index, but found \"\n",
-      "Feature Extraction: 100%|██████████| 5/5 [00:10<00:00,  2.05s/it]\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>dim_0__variance_larger_than_standard_deviation</th>\n",
-       "      <th>dim_0__has_duplicate_max</th>\n",
-       "      <th>dim_0__has_duplicate_min</th>\n",
-       "      <th>dim_0__has_duplicate</th>\n",
-       "      <th>dim_0__sum_values</th>\n",
-       "      <th>dim_0__abs_energy</th>\n",
-       "      <th>dim_0__mean_abs_change</th>\n",
-       "      <th>dim_0__mean_change</th>\n",
-       "      <th>dim_0__mean_second_derivative_central</th>\n",
-       "      <th>dim_0__median</th>\n",
-       "      <th>...</th>\n",
-       "      <th>dim_0__fourier_entropy__bins_2</th>\n",
-       "      <th>dim_0__fourier_entropy__bins_3</th>\n",
-       "      <th>dim_0__fourier_entropy__bins_5</th>\n",
-       "      <th>dim_0__fourier_entropy__bins_10</th>\n",
-       "      <th>dim_0__fourier_entropy__bins_100</th>\n",
-       "      <th>dim_0__permutation_entropy__dimension_3__tau_1</th>\n",
-       "      <th>dim_0__permutation_entropy__dimension_4__tau_1</th>\n",
-       "      <th>dim_0__permutation_entropy__dimension_5__tau_1</th>\n",
-       "      <th>dim_0__permutation_entropy__dimension_6__tau_1</th>\n",
-       "      <th>dim_0__permutation_entropy__dimension_7__tau_1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>-0.000080</td>\n",
-       "      <td>249.998516</td>\n",
-       "      <td>0.052357</td>\n",
-       "      <td>-0.000001</td>\n",
-       "      <td>-0.000005</td>\n",
-       "      <td>-0.024066</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.046288</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.250609</td>\n",
-       "      <td>1.323194</td>\n",
-       "      <td>1.819631</td>\n",
-       "      <td>2.183824</td>\n",
-       "      <td>2.463220</td>\n",
-       "      <td>2.707387</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>-0.000525</td>\n",
-       "      <td>250.000756</td>\n",
-       "      <td>0.049118</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>-0.000006</td>\n",
-       "      <td>-0.031622</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.046288</td>\n",
-       "      <td>0.046288</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.184769</td>\n",
-       "      <td>1.213529</td>\n",
-       "      <td>1.668744</td>\n",
-       "      <td>2.081159</td>\n",
-       "      <td>2.418614</td>\n",
-       "      <td>2.707518</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>-0.000034</td>\n",
-       "      <td>249.998998</td>\n",
-       "      <td>0.069971</td>\n",
-       "      <td>0.000084</td>\n",
-       "      <td>0.000025</td>\n",
-       "      <td>0.018880</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.081510</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.138673</td>\n",
-       "      <td>0.311663</td>\n",
-       "      <td>1.116706</td>\n",
-       "      <td>1.545256</td>\n",
-       "      <td>1.889777</td>\n",
-       "      <td>2.155644</td>\n",
-       "      <td>2.374722</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>0.000202</td>\n",
-       "      <td>249.999702</td>\n",
-       "      <td>0.067601</td>\n",
-       "      <td>-0.000002</td>\n",
-       "      <td>-0.000010</td>\n",
-       "      <td>0.384770</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.046288</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.204643</td>\n",
-       "      <td>0.414263</td>\n",
-       "      <td>1.323315</td>\n",
-       "      <td>1.915330</td>\n",
-       "      <td>2.406197</td>\n",
-       "      <td>2.794719</td>\n",
-       "      <td>3.117007</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>-0.000146</td>\n",
-       "      <td>249.998674</td>\n",
-       "      <td>0.050355</td>\n",
-       "      <td>-0.000004</td>\n",
-       "      <td>-0.000046</td>\n",
-       "      <td>-0.045353</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.046288</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.092513</td>\n",
-       "      <td>0.230801</td>\n",
-       "      <td>1.173933</td>\n",
-       "      <td>1.628543</td>\n",
-       "      <td>2.003443</td>\n",
-       "      <td>2.303091</td>\n",
-       "      <td>2.559695</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "<p>5 rows × 773 columns</p>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "   dim_0__variance_larger_than_standard_deviation  dim_0__has_duplicate_max  \\\n",
-       "0                                             0.0                       0.0   \n",
-       "1                                             0.0                       0.0   \n",
-       "2                                             0.0                       0.0   \n",
-       "3                                             0.0                       0.0   \n",
-       "4                                             0.0                       0.0   \n",
-       "\n",
-       "   dim_0__has_duplicate_min  dim_0__has_duplicate  dim_0__sum_values  \\\n",
-       "0                       0.0                   1.0          -0.000080   \n",
-       "1                       1.0                   1.0          -0.000525   \n",
-       "2                       0.0                   1.0          -0.000034   \n",
-       "3                       0.0                   1.0           0.000202   \n",
-       "4                       0.0                   1.0          -0.000146   \n",
-       "\n",
-       "   dim_0__abs_energy  dim_0__mean_abs_change  dim_0__mean_change  \\\n",
-       "0         249.998516                0.052357           -0.000001   \n",
-       "1         250.000756                0.049118            0.000000   \n",
-       "2         249.998998                0.069971            0.000084   \n",
-       "3         249.999702                0.067601           -0.000002   \n",
-       "4         249.998674                0.050355           -0.000004   \n",
-       "\n",
-       "   dim_0__mean_second_derivative_central  dim_0__median  ...  \\\n",
-       "0                              -0.000005      -0.024066  ...   \n",
-       "1                              -0.000006      -0.031622  ...   \n",
-       "2                               0.000025       0.018880  ...   \n",
-       "3                              -0.000010       0.384770  ...   \n",
-       "4                              -0.000046      -0.045353  ...   \n",
-       "\n",
-       "   dim_0__fourier_entropy__bins_2  dim_0__fourier_entropy__bins_3  \\\n",
-       "0                        0.046288                        0.092513   \n",
-       "1                        0.046288                        0.046288   \n",
-       "2                        0.081510                        0.092513   \n",
-       "3                        0.046288                        0.092513   \n",
-       "4                        0.046288                        0.092513   \n",
-       "\n",
-       "   dim_0__fourier_entropy__bins_5  dim_0__fourier_entropy__bins_10  \\\n",
-       "0                        0.092513                         0.092513   \n",
-       "1                        0.092513                         0.092513   \n",
-       "2                        0.092513                         0.138673   \n",
-       "3                        0.092513                         0.204643   \n",
-       "4                        0.092513                         0.092513   \n",
-       "\n",
-       "   dim_0__fourier_entropy__bins_100  \\\n",
-       "0                          0.250609   \n",
-       "1                          0.184769   \n",
-       "2                          0.311663   \n",
-       "3                          0.414263   \n",
-       "4                          0.230801   \n",
-       "\n",
-       "   dim_0__permutation_entropy__dimension_3__tau_1  \\\n",
-       "0                                        1.323194   \n",
-       "1                                        1.213529   \n",
-       "2                                        1.116706   \n",
-       "3                                        1.323315   \n",
-       "4                                        1.173933   \n",
-       "\n",
-       "   dim_0__permutation_entropy__dimension_4__tau_1  \\\n",
-       "0                                        1.819631   \n",
-       "1                                        1.668744   \n",
-       "2                                        1.545256   \n",
-       "3                                        1.915330   \n",
-       "4                                        1.628543   \n",
-       "\n",
-       "   dim_0__permutation_entropy__dimension_5__tau_1  \\\n",
-       "0                                        2.183824   \n",
-       "1                                        2.081159   \n",
-       "2                                        1.889777   \n",
-       "3                                        2.406197   \n",
-       "4                                        2.003443   \n",
-       "\n",
-       "   dim_0__permutation_entropy__dimension_6__tau_1  \\\n",
-       "0                                        2.463220   \n",
-       "1                                        2.418614   \n",
-       "2                                        2.155644   \n",
-       "3                                        2.794719   \n",
-       "4                                        2.303091   \n",
-       "\n",
-       "   dim_0__permutation_entropy__dimension_7__tau_1  \n",
-       "0                                        2.707387  \n",
-       "1                                        2.707518  \n",
-       "2                                        2.374722  \n",
-       "3                                        3.117007  \n",
-       "4                                        2.559695  \n",
-       "\n",
-       "[5 rows x 773 columns]"
-      ]
-     },
-     "execution_count": 6,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# tf = TsFreshTransformer()\n",
-    "t = TSFreshFeatureExtractor(default_fc_parameters=\"efficient\", show_warnings=False)\n",
-    "Xt = t.fit_transform(X_train)\n",
-    "Xt.head()"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Using tsfresh with aeon"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 7,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:30:53.062147Z",
-     "iopub.status.busy": "2020-12-19T14:30:53.061631Z",
-     "iopub.status.idle": "2020-12-19T14:31:09.307275Z",
-     "shell.execute_reply": "2020-12-19T14:31:09.307781Z"
-    }
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/Users/mloning/Documents/Research/software/aeon/aeon/aeon/transformations/panel/tsfresh.py:164: UserWarning: tsfresh requires a unique index, but found non-unique. To avoid this warning, please make sure the index of X contains only unique values.\n",
-      "  \"tsfresh requires a unique index, but found \"\n",
-      "Feature Extraction: 100%|██████████| 5/5 [00:11<00:00,  2.21s/it]\n",
-      "/Users/mloning/Documents/Research/software/aeon/aeon/aeon/transformations/panel/tsfresh.py:164: UserWarning: tsfresh requires a unique index, but found non-unique. To avoid this warning, please make sure the index of X contains only unique values.\n",
-      "  \"tsfresh requires a unique index, but found \"\n",
-      "Feature Extraction: 100%|██████████| 5/5 [00:03<00:00,  1.45it/s]\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": [
-       "0.8490566037735849"
-      ]
-     },
-     "execution_count": 7,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "classifier = make_pipeline(\n",
-    "    TSFreshFeatureExtractor(default_fc_parameters=\"efficient\", show_warnings=False),\n",
-    "    RandomForestClassifier(),\n",
-    ")\n",
-    "classifier.fit(X_train, y_train)\n",
-    "classifier.score(X_test, y_test)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Multivariate time series classification data"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:31:09.311742Z",
-     "iopub.status.busy": "2020-12-19T14:31:09.311092Z",
-     "iopub.status.idle": "2020-12-19T14:31:09.380791Z",
-     "shell.execute_reply": "2020-12-19T14:31:09.381304Z"
-    },
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "(60, 6) (60,) (20, 6) (20,)\n"
-     ]
-    }
-   ],
-   "source": [
-    "X, y = load_basic_motions(return_X_y=True, return_type=\"nested_univ\")\n",
-    "X_train, X_test, y_train, y_test = train_test_split(X, y)\n",
-    "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:31:09.425476Z",
-     "iopub.status.busy": "2020-12-19T14:31:09.424972Z",
-     "iopub.status.idle": "2020-12-19T14:31:09.427185Z",
-     "shell.execute_reply": "2020-12-19T14:31:09.427741Z"
-    },
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>dim_0</th>\n",
-       "      <th>dim_1</th>\n",
-       "      <th>dim_2</th>\n",
-       "      <th>dim_3</th>\n",
-       "      <th>dim_4</th>\n",
-       "      <th>dim_5</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>20</th>\n",
-       "      <td>0    -0.294498\n",
-       "1    -0.294498\n",
-       "2    -0.050044\n",
-       "3...</td>\n",
-       "      <td>0     0.540218\n",
-       "1     0.540218\n",
-       "2    -0.515245\n",
-       "3...</td>\n",
-       "      <td>0     0.218114\n",
-       "1     0.218114\n",
-       "2    -0.301108\n",
-       "3...</td>\n",
-       "      <td>0    -0.045277\n",
-       "1    -0.045277\n",
-       "2     0.103872\n",
-       "3...</td>\n",
-       "      <td>0    -0.002663\n",
-       "1    -0.002663\n",
-       "2    -0.183773\n",
-       "3...</td>\n",
-       "      <td>0     0.031960\n",
-       "1     0.031960\n",
-       "2     0.037287\n",
-       "3...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>26</th>\n",
-       "      <td>0    -0.761604\n",
-       "1    -0.761604\n",
-       "2     0.121078\n",
-       "3...</td>\n",
-       "      <td>0     0.260125\n",
-       "1     0.260125\n",
-       "2    -1.423255\n",
-       "3...</td>\n",
-       "      <td>0    -0.064487\n",
-       "1    -0.064487\n",
-       "2     0.075600\n",
-       "3...</td>\n",
-       "      <td>0     0.069248\n",
-       "1     0.069248\n",
-       "2    -0.282318\n",
-       "3...</td>\n",
-       "      <td>0     0.242367\n",
-       "1     0.242367\n",
-       "2    -0.332922\n",
-       "3...</td>\n",
-       "      <td>0    -0.007990\n",
-       "1    -0.007990\n",
-       "2     0.239704\n",
-       "3...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>7</th>\n",
-       "      <td>0    -0.352746\n",
-       "1    -0.352746\n",
-       "2    -1.354561\n",
-       "3...</td>\n",
-       "      <td>0     0.316845\n",
-       "1     0.316845\n",
-       "2     0.490525\n",
-       "3...</td>\n",
-       "      <td>0    -0.473779\n",
-       "1    -0.473779\n",
-       "2     1.454261\n",
-       "3...</td>\n",
-       "      <td>0    -0.327595\n",
-       "1    -0.327595\n",
-       "2    -0.269001\n",
-       "3...</td>\n",
-       "      <td>0     0.106535\n",
-       "1     0.106535\n",
-       "2     0.021307\n",
-       "3...</td>\n",
-       "      <td>0     0.197090\n",
-       "1     0.197090\n",
-       "2     0.460763\n",
-       "3...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>0    -0.342233\n",
-       "1    -0.342233\n",
-       "2    -0.298542\n",
-       "3...</td>\n",
-       "      <td>0     0.327415\n",
-       "1     0.327415\n",
-       "2    -0.527154\n",
-       "3...</td>\n",
-       "      <td>0     0.157229\n",
-       "1     0.157229\n",
-       "2     0.248585\n",
-       "3...</td>\n",
-       "      <td>0     0.394179\n",
-       "1     0.394179\n",
-       "2    -0.037287\n",
-       "3...</td>\n",
-       "      <td>0     0.074574\n",
-       "1     0.074574\n",
-       "2    -0.087891\n",
-       "3...</td>\n",
-       "      <td>0    -0.037287\n",
-       "1    -0.037287\n",
-       "2    -0.050604\n",
-       "3...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>10</th>\n",
-       "      <td>0      0.206148\n",
-       "1      0.206148\n",
-       "2      6.53436...</td>\n",
-       "      <td>0    -0.658294\n",
-       "1    -0.658294\n",
-       "2     4.597327\n",
-       "3...</td>\n",
-       "      <td>0     0.469612\n",
-       "1     0.469612\n",
-       "2    -2.723661\n",
-       "3...</td>\n",
-       "      <td>0    -0.106535\n",
-       "1    -0.106535\n",
-       "2    -0.439456\n",
-       "3...</td>\n",
-       "      <td>0     0.306288\n",
-       "1     0.306288\n",
-       "2     1.717875\n",
-       "3...</td>\n",
-       "      <td>0     0.950824\n",
-       "1     0.950824\n",
-       "2    -1.041379\n",
-       "3...</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "                                                dim_0  \\\n",
-       "20  0    -0.294498\n",
-       "1    -0.294498\n",
-       "2    -0.050044\n",
-       "3...   \n",
-       "26  0    -0.761604\n",
-       "1    -0.761604\n",
-       "2     0.121078\n",
-       "3...   \n",
-       "7   0    -0.352746\n",
-       "1    -0.352746\n",
-       "2    -1.354561\n",
-       "3...   \n",
-       "8   0    -0.342233\n",
-       "1    -0.342233\n",
-       "2    -0.298542\n",
-       "3...   \n",
-       "10  0      0.206148\n",
-       "1      0.206148\n",
-       "2      6.53436...   \n",
-       "\n",
-       "                                                dim_1  \\\n",
-       "20  0     0.540218\n",
-       "1     0.540218\n",
-       "2    -0.515245\n",
-       "3...   \n",
-       "26  0     0.260125\n",
-       "1     0.260125\n",
-       "2    -1.423255\n",
-       "3...   \n",
-       "7   0     0.316845\n",
-       "1     0.316845\n",
-       "2     0.490525\n",
-       "3...   \n",
-       "8   0     0.327415\n",
-       "1     0.327415\n",
-       "2    -0.527154\n",
-       "3...   \n",
-       "10  0    -0.658294\n",
-       "1    -0.658294\n",
-       "2     4.597327\n",
-       "3...   \n",
-       "\n",
-       "                                                dim_2  \\\n",
-       "20  0     0.218114\n",
-       "1     0.218114\n",
-       "2    -0.301108\n",
-       "3...   \n",
-       "26  0    -0.064487\n",
-       "1    -0.064487\n",
-       "2     0.075600\n",
-       "3...   \n",
-       "7   0    -0.473779\n",
-       "1    -0.473779\n",
-       "2     1.454261\n",
-       "3...   \n",
-       "8   0     0.157229\n",
-       "1     0.157229\n",
-       "2     0.248585\n",
-       "3...   \n",
-       "10  0     0.469612\n",
-       "1     0.469612\n",
-       "2    -2.723661\n",
-       "3...   \n",
-       "\n",
-       "                                                dim_3  \\\n",
-       "20  0    -0.045277\n",
-       "1    -0.045277\n",
-       "2     0.103872\n",
-       "3...   \n",
-       "26  0     0.069248\n",
-       "1     0.069248\n",
-       "2    -0.282318\n",
-       "3...   \n",
-       "7   0    -0.327595\n",
-       "1    -0.327595\n",
-       "2    -0.269001\n",
-       "3...   \n",
-       "8   0     0.394179\n",
-       "1     0.394179\n",
-       "2    -0.037287\n",
-       "3...   \n",
-       "10  0    -0.106535\n",
-       "1    -0.106535\n",
-       "2    -0.439456\n",
-       "3...   \n",
-       "\n",
-       "                                                dim_4  \\\n",
-       "20  0    -0.002663\n",
-       "1    -0.002663\n",
-       "2    -0.183773\n",
-       "3...   \n",
-       "26  0     0.242367\n",
-       "1     0.242367\n",
-       "2    -0.332922\n",
-       "3...   \n",
-       "7   0     0.106535\n",
-       "1     0.106535\n",
-       "2     0.021307\n",
-       "3...   \n",
-       "8   0     0.074574\n",
-       "1     0.074574\n",
-       "2    -0.087891\n",
-       "3...   \n",
-       "10  0     0.306288\n",
-       "1     0.306288\n",
-       "2     1.717875\n",
-       "3...   \n",
-       "\n",
-       "                                                dim_5  \n",
-       "20  0     0.031960\n",
-       "1     0.031960\n",
-       "2     0.037287\n",
-       "3...  \n",
-       "26  0    -0.007990\n",
-       "1    -0.007990\n",
-       "2     0.239704\n",
-       "3...  \n",
-       "7   0     0.197090\n",
-       "1     0.197090\n",
-       "2     0.460763\n",
-       "3...  \n",
-       "8   0    -0.037287\n",
-       "1    -0.037287\n",
-       "2    -0.050604\n",
-       "3...  \n",
-       "10  0     0.950824\n",
-       "1     0.950824\n",
-       "2    -1.041379\n",
-       "3...  "
-      ]
-     },
-     "execution_count": 9,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "#  multivariate input data\n",
-    "X_train.head()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 10,
-   "metadata": {
-    "execution": {
-     "iopub.execute_input": "2020-12-19T14:31:09.516548Z",
-     "iopub.status.busy": "2020-12-19T14:31:09.515810Z",
-     "iopub.status.idle": "2020-12-19T14:31:32.787406Z",
-     "shell.execute_reply": "2020-12-19T14:31:32.788316Z"
-    },
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/Users/mloning/Documents/Research/software/aeon/aeon/aeon/transformations/panel/tsfresh.py:164: UserWarning: tsfresh requires a unique index, but found non-unique. To avoid this warning, please make sure the index of X contains only unique values.\n",
-      "  \"tsfresh requires a unique index, but found \"\n",
-      "Feature Extraction: 100%|██████████| 5/5 [00:18<00:00,  3.69s/it]\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>dim_0__variance_larger_than_standard_deviation</th>\n",
-       "      <th>dim_0__has_duplicate_max</th>\n",
-       "      <th>dim_0__has_duplicate_min</th>\n",
-       "      <th>dim_0__has_duplicate</th>\n",
-       "      <th>dim_0__sum_values</th>\n",
-       "      <th>dim_0__abs_energy</th>\n",
-       "      <th>dim_0__mean_abs_change</th>\n",
-       "      <th>dim_0__mean_change</th>\n",
-       "      <th>dim_0__mean_second_derivative_central</th>\n",
-       "      <th>dim_0__median</th>\n",
-       "      <th>...</th>\n",
-       "      <th>dim_5__fourier_entropy__bins_2</th>\n",
-       "      <th>dim_5__fourier_entropy__bins_3</th>\n",
-       "      <th>dim_5__fourier_entropy__bins_5</th>\n",
-       "      <th>dim_5__fourier_entropy__bins_10</th>\n",
-       "      <th>dim_5__fourier_entropy__bins_100</th>\n",
-       "      <th>dim_5__permutation_entropy__dimension_3__tau_1</th>\n",
-       "      <th>dim_5__permutation_entropy__dimension_4__tau_1</th>\n",
-       "      <th>dim_5__permutation_entropy__dimension_5__tau_1</th>\n",
-       "      <th>dim_5__permutation_entropy__dimension_6__tau_1</th>\n",
-       "      <th>dim_5__permutation_entropy__dimension_7__tau_1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>33.334188</td>\n",
-       "      <td>110.735119</td>\n",
-       "      <td>0.822452</td>\n",
-       "      <td>0.000639</td>\n",
-       "      <td>0.001751</td>\n",
-       "      <td>0.164096</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.192626</td>\n",
-       "      <td>0.545824</td>\n",
-       "      <td>1.279774</td>\n",
-       "      <td>1.910772</td>\n",
-       "      <td>2.565051</td>\n",
-       "      <td>3.096812</td>\n",
-       "      <td>3.567632</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>1.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>73.888480</td>\n",
-       "      <td>220.949429</td>\n",
-       "      <td>0.964075</td>\n",
-       "      <td>-0.002087</td>\n",
-       "      <td>-0.003908</td>\n",
-       "      <td>0.613719</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.096509</td>\n",
-       "      <td>0.096509</td>\n",
-       "      <td>0.261160</td>\n",
-       "      <td>0.261160</td>\n",
-       "      <td>0.451359</td>\n",
-       "      <td>1.313299</td>\n",
-       "      <td>1.987599</td>\n",
-       "      <td>2.593635</td>\n",
-       "      <td>3.173890</td>\n",
-       "      <td>3.696247</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>-17.428760</td>\n",
-       "      <td>7.940863</td>\n",
-       "      <td>0.170422</td>\n",
-       "      <td>0.002326</td>\n",
-       "      <td>-0.000244</td>\n",
-       "      <td>-0.152038</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.223718</td>\n",
-       "      <td>0.261160</td>\n",
-       "      <td>0.356468</td>\n",
-       "      <td>0.545824</td>\n",
-       "      <td>1.821690</td>\n",
-       "      <td>1.438857</td>\n",
-       "      <td>2.291659</td>\n",
-       "      <td>3.140440</td>\n",
-       "      <td>3.819994</td>\n",
-       "      <td>4.207710</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>-18.154841</td>\n",
-       "      <td>5.568890</td>\n",
-       "      <td>0.135705</td>\n",
-       "      <td>0.001051</td>\n",
-       "      <td>0.000688</td>\n",
-       "      <td>-0.196623</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.399949</td>\n",
-       "      <td>0.705356</td>\n",
-       "      <td>1.127853</td>\n",
-       "      <td>1.742820</td>\n",
-       "      <td>3.274497</td>\n",
-       "      <td>1.683010</td>\n",
-       "      <td>2.766048</td>\n",
-       "      <td>3.748502</td>\n",
-       "      <td>4.303872</td>\n",
-       "      <td>4.449241</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>1.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>1.0</td>\n",
-       "      <td>395.985445</td>\n",
-       "      <td>11192.658970</td>\n",
-       "      <td>6.583700</td>\n",
-       "      <td>0.099344</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>8.608970</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.165443</td>\n",
-       "      <td>0.706253</td>\n",
-       "      <td>1.483926</td>\n",
-       "      <td>2.279149</td>\n",
-       "      <td>3.014130</td>\n",
-       "      <td>3.525453</td>\n",
-       "      <td>3.919983</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "<p>5 rows × 4638 columns</p>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "   dim_0__variance_larger_than_standard_deviation  dim_0__has_duplicate_max  \\\n",
-       "0                                             0.0                       0.0   \n",
-       "1                                             1.0                       0.0   \n",
-       "2                                             0.0                       0.0   \n",
-       "3                                             0.0                       0.0   \n",
-       "4                                             1.0                       0.0   \n",
-       "\n",
-       "   dim_0__has_duplicate_min  dim_0__has_duplicate  dim_0__sum_values  \\\n",
-       "0                       0.0                   1.0          33.334188   \n",
-       "1                       0.0                   1.0          73.888480   \n",
-       "2                       0.0                   1.0         -17.428760   \n",
-       "3                       0.0                   1.0         -18.154841   \n",
-       "4                       0.0                   1.0         395.985445   \n",
-       "\n",
-       "   dim_0__abs_energy  dim_0__mean_abs_change  dim_0__mean_change  \\\n",
-       "0         110.735119                0.822452            0.000639   \n",
-       "1         220.949429                0.964075           -0.002087   \n",
-       "2           7.940863                0.170422            0.002326   \n",
-       "3           5.568890                0.135705            0.001051   \n",
-       "4       11192.658970                6.583700            0.099344   \n",
-       "\n",
-       "   dim_0__mean_second_derivative_central  dim_0__median  ...  \\\n",
-       "0                               0.001751       0.164096  ...   \n",
-       "1                              -0.003908       0.613719  ...   \n",
-       "2                              -0.000244      -0.152038  ...   \n",
-       "3                               0.000688      -0.196623  ...   \n",
-       "4                               0.000000       8.608970  ...   \n",
-       "\n",
-       "   dim_5__fourier_entropy__bins_2  dim_5__fourier_entropy__bins_3  \\\n",
-       "0                        0.165443                        0.165443   \n",
-       "1                        0.096509                        0.096509   \n",
-       "2                        0.223718                        0.261160   \n",
-       "3                        0.399949                        0.705356   \n",
-       "4                        0.165443                        0.165443   \n",
-       "\n",
-       "   dim_5__fourier_entropy__bins_5  dim_5__fourier_entropy__bins_10  \\\n",
-       "0                        0.165443                         0.192626   \n",
-       "1                        0.261160                         0.261160   \n",
-       "2                        0.356468                         0.545824   \n",
-       "3                        1.127853                         1.742820   \n",
-       "4                        0.165443                         0.165443   \n",
-       "\n",
-       "   dim_5__fourier_entropy__bins_100  \\\n",
-       "0                          0.545824   \n",
-       "1                          0.451359   \n",
-       "2                          1.821690   \n",
-       "3                          3.274497   \n",
-       "4                          0.706253   \n",
-       "\n",
-       "   dim_5__permutation_entropy__dimension_3__tau_1  \\\n",
-       "0                                        1.279774   \n",
-       "1                                        1.313299   \n",
-       "2                                        1.438857   \n",
-       "3                                        1.683010   \n",
-       "4                                        1.483926   \n",
-       "\n",
-       "   dim_5__permutation_entropy__dimension_4__tau_1  \\\n",
-       "0                                        1.910772   \n",
-       "1                                        1.987599   \n",
-       "2                                        2.291659   \n",
-       "3                                        2.766048   \n",
-       "4                                        2.279149   \n",
-       "\n",
-       "   dim_5__permutation_entropy__dimension_5__tau_1  \\\n",
-       "0                                        2.565051   \n",
-       "1                                        2.593635   \n",
-       "2                                        3.140440   \n",
-       "3                                        3.748502   \n",
-       "4                                        3.014130   \n",
-       "\n",
-       "   dim_5__permutation_entropy__dimension_6__tau_1  \\\n",
-       "0                                        3.096812   \n",
-       "1                                        3.173890   \n",
-       "2                                        3.819994   \n",
-       "3                                        4.303872   \n",
-       "4                                        3.525453   \n",
-       "\n",
-       "   dim_5__permutation_entropy__dimension_7__tau_1  \n",
-       "0                                        3.567632  \n",
-       "1                                        3.696247  \n",
-       "2                                        4.207710  \n",
-       "3                                        4.449241  \n",
-       "4                                        3.919983  \n",
-       "\n",
-       "[5 rows x 4638 columns]"
-      ]
-     },
-     "execution_count": 10,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "t = TSFreshFeatureExtractor(default_fc_parameters=\"efficient\", show_warnings=False)\n",
-    "Xt = t.fit_transform(X_train)\n",
-    "Xt.head()"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3",
-   "language": "python",
-   "name": "python3"
-  },
-  "language_info": {
-   "codemirror_mode": {
-    "name": "ipython",
-    "version": 3
-   },
-   "file_extension": ".py",
-   "mimetype": "text/x-python",
-   "name": "python",
-   "nbconvert_exporter": "python",
-   "pygments_lexer": "ipython3",
-   "version": "3.7.8"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/examples/transformations/rocket.ipynb b/examples/transformations/rocket.ipynb
index 933e0d4f..fc2c2271 100644
--- a/examples/transformations/rocket.ipynb
+++ b/examples/transformations/rocket.ipynb
@@ -462,7 +462,7 @@
     }
    ],
    "source": [
-    "X_test, y_test = load_arrow_head(split=\"test\", return_X_y=True)\n",
+    "X_test, y_test = load_arrow_head(split=\"test\")\n",
     "\n",
     "rocket_pipeline.score(X_test, y_test)"
    ]
diff --git a/examples/transformations/tsfresh.ipynb b/examples/transformations/tsfresh.ipynb
new file mode 100644
index 00000000..87371881
--- /dev/null
+++ b/examples/transformations/tsfresh.ipynb
@@ -0,0 +1,332 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Feature extraction with tsfresh transformer\n",
+    "\n",
+    "In this tutorial, we show how you can use aeon with [tsfresh](https://tsfresh.readthedocs.io) to first extract features from time series, so that we can then use any scikit-learn estimator.\n",
+    "\n",
+    "## Preliminaries\n",
+    "You have to install tsfresh if you haven't already. To install it, uncomment the cell below:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:39.713903Z",
+     "iopub.status.busy": "2020-12-19T14:30:39.713342Z",
+     "iopub.status.idle": "2020-12-19T14:30:39.715128Z",
+     "shell.execute_reply": "2020-12-19T14:30:39.715641Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "# !pip install --upgrade tsfresh"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:39.719083Z",
+     "iopub.status.busy": "2020-12-19T14:30:39.718586Z",
+     "iopub.status.idle": "2020-12-19T14:30:40.743724Z",
+     "shell.execute_reply": "2020-12-19T14:30:40.744213Z"
+    }
+   },
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "from sklearn.ensemble import RandomForestClassifier\n",
+    "from sklearn.model_selection import train_test_split\n",
+    "from sklearn.pipeline import make_pipeline\n",
+    "\n",
+    "from aeon.datasets import load_arrow_head, load_basic_motions\n",
+    "from aeon.transformations.collection.feature_based import TSFreshFeatureExtractor"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Univariate time series classification data\n",
+    "\n",
+    "For more details on the data set, see the [univariate time series classification\n",
+    "notebook](https://github.com/aeon-toolkit/aeon/blob/main/examples/datasets/provided_data.ipynb)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:40.748159Z",
+     "iopub.status.busy": "2020-12-19T14:30:40.747656Z",
+     "iopub.status.idle": "2020-12-19T14:30:40.795200Z",
+     "shell.execute_reply": "2020-12-19T14:30:40.795889Z"
+    }
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(158, 1, 251) (158,) (53, 1, 251) (53,)\n"
+     ]
+    }
+   ],
+   "source": [
+    "X, y = load_arrow_head()\n",
+    "X_train, X_test, y_train, y_test = train_test_split(X, y)\n",
+    "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:40.808841Z",
+     "iopub.status.busy": "2020-12-19T14:30:40.808198Z",
+     "iopub.status.idle": "2020-12-19T14:30:40.816155Z",
+     "shell.execute_reply": "2020-12-19T14:30:40.816682Z"
+    },
+    "jupyter": {
+     "outputs_hidden": false
+    }
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": "array([[-2.0000055 , -2.0028617 , -1.9696021 , -1.9355154 , -1.8781111 ,\n        -1.8344882 , -1.792426  , -1.7608833 , -1.7244086 , -1.6822684 ,\n        -1.6168887 , -1.5276295 , -1.4674783 , -1.3656082 , -1.2734461 ,\n        -1.1766173 , -1.142312  , -1.0500718 , -0.95069897, -0.8368424 ,\n        -0.69139629, -0.56364906, -0.4466866 , -0.33268956, -0.22067468,\n        -0.06692539,  0.06797007,  0.14719364,  0.2445016 ,  0.35250536,\n         0.46878109,  0.5603892 ,  0.59047574,  0.63178718,  0.66661683,\n         0.74868565,  0.84285494,  0.87039746,  0.90287039,  0.93092796,\n         0.99071397,  1.0535122 ,  1.1475941 ,  1.1638321 ,  1.1692308 ,\n         1.1668725 ,  1.164625  ,  1.1624899 ,  1.1431085 ,  1.1547923 ,\n         1.1956449 ,  1.2304043 ,  1.2479846 ,  1.2285376 ,  1.2267756 ,\n         1.2251212 ,  1.2056196 ,  1.2235791 ,  1.2221495 ,  1.2403447 ,\n         1.2391429 ,  1.2575582 ,  1.2001508 ,  1.2001508 ,  1.218566  ,\n         1.2176124 ,  1.2362306 ,  1.1787482 ,  1.1593668 ,  1.0805491 ,\n         1.0542926 ,  1.0075607 ,  0.95882789,  0.9213793 ,  0.89896696,\n         0.85385041,  0.81313986,  0.74174968,  0.66593947,  0.62038435,\n         0.55619235,  0.50268366,  0.41259104,  0.3364718 ,  0.25970641,\n         0.16291661,  0.10426839,  0.06330343,  0.00508753,  0.0085836 ,\n        -0.04705706, -0.10107455, -0.14945774, -0.19579635, -0.26292413,\n        -0.2856174 , -0.29779124, -0.31744106, -0.33528041, -0.3926535 ,\n        -0.39505706, -0.44994857, -0.47868194, -0.57271701, -0.62053833,\n        -0.70815872, -0.79545136, -0.86421792, -0.95102673, -1.0018603 ,\n        -1.0300318 , -1.0393495 , -1.0501186 , -1.0533962 , -1.063463  ,\n        -1.0466382 , -1.0277063 , -1.0065113 , -1.0135347 , -0.98881244,\n        -0.94796766, -0.91600354, -0.88324344, -0.88458568, -0.84857923,\n        -0.8489382 , -0.83033408, -0.79087837, -0.79000435, -0.80628295,\n        -0.78285613, -0.81926838, -0.81642782, -0.79154949, -0.82341997,\n        -0.85302736, -0.84865726, -0.87512755, -0.90788765, -0.92912943,\n        -0.94835785, -0.94000785, -0.96176467, -0.9526343 , -0.94820177,\n        -0.89277961, -0.82535529, -0.7377349 , -0.66985797, -0.60106019,\n        -0.51425139, -0.42455519, -0.39649294, -0.34636172, -0.29081469,\n        -0.26030207, -0.20150869, -0.16227148, -0.14077998, -0.09796866,\n        -0.03126229,  0.01540407,  0.01136174,  0.02495585,  0.0559367 ,\n         0.1104271 ,  0.1645117 ,  0.24099928,  0.27971363,  0.33703991,\n         0.41399259,  0.49048017,  0.50576614,  0.55802467,  0.63020146,\n         0.65942335,  0.72037836,  0.79631344,  0.85908828,  0.90845318,\n         0.97286213,  1.0140706 ,  1.0706383 ,  1.100536  ,  1.1442104 ,\n         1.1709133 ,  1.2147281 ,  1.2533582 ,  1.2537703 ,  1.2537703 ,\n         1.2542993 ,  1.2737478 ,  1.2549439 ,  1.2362306 ,  1.2744158 ,\n         1.2751931 ,  1.2751931 ,  1.2760765 ,  1.2391429 ,  1.2208353 ,\n         1.2586507 ,  1.2586507 ,  1.2403447 ,  1.2040698 ,  1.2235791 ,\n         1.2430807 ,  1.2625713 ,  1.2820432 ,  1.2406288 ,  1.1634139 ,\n         1.1694883 ,  1.1116548 ,  1.0606745 ,  0.98623774,  0.96421091,\n         0.9221425 ,  0.85949564,  0.80150604,  0.74390039,  0.66093571,\n         0.57168121,  0.51305951,  0.39334858,  0.32037268,  0.2055781 ,\n         0.17230764,  0.06186754, -0.03675613, -0.16904513, -0.29605881,\n        -0.40484295, -0.54022223, -0.65384469, -0.7844793 , -0.90080186,\n        -1.0169995 , -1.0964104 , -1.1935202 , -1.3015239 , -1.3991799 ,\n        -1.4724727 , -1.5217767 , -1.6002823 , -1.6540813 , -1.7178379 ,\n        -1.775726  , -1.8032732 , -1.8547935 , -1.9019593 , -1.9617516 ,\n        -1.9831338 ]])"
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "X_train[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:40.820002Z",
+     "iopub.status.busy": "2020-12-19T14:30:40.819515Z",
+     "iopub.status.idle": "2020-12-19T14:30:40.821979Z",
+     "shell.execute_reply": "2020-12-19T14:30:40.822517Z"
+    }
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": "array(['0', '1', '2'], dtype='<U1')"
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#  binary classification task\n",
+    "np.unique(y_train)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Using tsfresh to extract features"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:40.829452Z",
+     "iopub.status.busy": "2020-12-19T14:30:40.828907Z",
+     "iopub.status.idle": "2020-12-19T14:30:53.049755Z",
+     "shell.execute_reply": "2020-12-19T14:30:53.050249Z"
+    }
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": "   dim_0__variance_larger_than_standard_deviation  dim_0__has_duplicate_max  \\\n0                                             0.0                       0.0   \n1                                             0.0                       0.0   \n2                                             0.0                       0.0   \n3                                             0.0                       0.0   \n4                                             0.0                       0.0   \n\n   dim_0__has_duplicate_min  dim_0__has_duplicate  dim_0__sum_values  \\\n0                       0.0                   1.0      -2.488000e-07   \n1                       0.0                   0.0       1.976000e-07   \n2                       0.0                   1.0      -4.260000e-08   \n3                       0.0                   1.0      -1.640000e-07   \n4                       0.0                   1.0       1.233000e-07   \n\n   dim_0__abs_energy  dim_0__mean_abs_change  dim_0__mean_change  \\\n0         250.000002                0.048888        6.748680e-05   \n1         250.000000                0.060783       -7.524680e-05   \n2         250.000000                0.063979        7.556000e-07   \n3         250.000001                0.048317        1.143280e-05   \n4         250.000000                0.050355       -3.903200e-06   \n\n   dim_0__mean_second_derivative_central  dim_0__median  ...  \\\n0                              -0.000037       0.024956  ...   \n1                              -0.000047      -0.168810  ...   \n2                               0.000028       0.124552  ...   \n3                              -0.000049       0.032475  ...   \n4                              -0.000046      -0.045353  ...   \n\n   dim_0__fourier_entropy__bins_5  dim_0__fourier_entropy__bins_10  \\\n0                        0.092513                         0.092513   \n1                        0.127671                         0.184769   \n2                        0.173767                         0.173767   \n3                        0.092513                         0.138673   \n4                        0.092513                         0.092513   \n\n   dim_0__fourier_entropy__bins_100  \\\n0                          0.184769   \n1                          0.311663   \n2                          0.357496   \n3                          0.184769   \n4                          0.230801   \n\n   dim_0__permutation_entropy__dimension_3__tau_1  \\\n0                                        1.279366   \n1                                        1.081358   \n2                                        1.156286   \n3                                        1.172630   \n4                                        1.173933   \n\n   dim_0__permutation_entropy__dimension_4__tau_1  \\\n0                                        1.808891   \n1                                        1.509147   \n2                                        1.572548   \n3                                        1.581270   \n4                                        1.628543   \n\n   dim_0__permutation_entropy__dimension_5__tau_1  \\\n0                                        2.243079   \n1                                        1.881491   \n2                                        1.949349   \n3                                        1.902762   \n4                                        2.003443   \n\n   dim_0__permutation_entropy__dimension_6__tau_1  \\\n0                                        2.592453   \n1                                        2.217191   \n2                                        2.284694   \n3                                        2.128414   \n4                                        2.303091   \n\n   dim_0__permutation_entropy__dimension_7__tau_1  \\\n0                                        2.796296   \n1                                        2.492175   \n2                                        2.576462   \n3                                        2.328659   \n4                                        2.559695   \n\n   dim_0__query_similarity_count__query_None__threshold_0.0  \\\n0                                                0.0          \n1                                                0.0          \n2                                                0.0          \n3                                                0.0          \n4                                                0.0          \n\n   dim_0__mean_n_absolute_max__number_of_maxima_7  \n0                                        1.964976  \n1                                        1.994372  \n2                                        2.003842  \n3                                        1.742132  \n4                                        1.936930  \n\n[5 rows x 777 columns]",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>dim_0__variance_larger_than_standard_deviation</th>\n      <th>dim_0__has_duplicate_max</th>\n      <th>dim_0__has_duplicate_min</th>\n      <th>dim_0__has_duplicate</th>\n      <th>dim_0__sum_values</th>\n      <th>dim_0__abs_energy</th>\n      <th>dim_0__mean_abs_change</th>\n      <th>dim_0__mean_change</th>\n      <th>dim_0__mean_second_derivative_central</th>\n      <th>dim_0__median</th>\n      <th>...</th>\n      <th>dim_0__fourier_entropy__bins_5</th>\n      <th>dim_0__fourier_entropy__bins_10</th>\n      <th>dim_0__fourier_entropy__bins_100</th>\n      <th>dim_0__permutation_entropy__dimension_3__tau_1</th>\n      <th>dim_0__permutation_entropy__dimension_4__tau_1</th>\n      <th>dim_0__permutation_entropy__dimension_5__tau_1</th>\n      <th>dim_0__permutation_entropy__dimension_6__tau_1</th>\n      <th>dim_0__permutation_entropy__dimension_7__tau_1</th>\n      <th>dim_0__query_similarity_count__query_None__threshold_0.0</th>\n      <th>dim_0__mean_n_absolute_max__number_of_maxima_7</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>-2.488000e-07</td>\n      <td>250.000002</td>\n      <td>0.048888</td>\n      <td>6.748680e-05</td>\n      <td>-0.000037</td>\n      <td>0.024956</td>\n      <td>...</td>\n      <td>0.092513</td>\n      <td>0.092513</td>\n      <td>0.184769</td>\n      <td>1.279366</td>\n      <td>1.808891</td>\n      <td>2.243079</td>\n      <td>2.592453</td>\n      <td>2.796296</td>\n      <td>0.0</td>\n      <td>1.964976</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.976000e-07</td>\n      <td>250.000000</td>\n      <td>0.060783</td>\n      <td>-7.524680e-05</td>\n      <td>-0.000047</td>\n      <td>-0.168810</td>\n      <td>...</td>\n      <td>0.127671</td>\n      <td>0.184769</td>\n      <td>0.311663</td>\n      <td>1.081358</td>\n      <td>1.509147</td>\n      <td>1.881491</td>\n      <td>2.217191</td>\n      <td>2.492175</td>\n      <td>0.0</td>\n      <td>1.994372</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>-4.260000e-08</td>\n      <td>250.000000</td>\n      <td>0.063979</td>\n      <td>7.556000e-07</td>\n      <td>0.000028</td>\n      <td>0.124552</td>\n      <td>...</td>\n      <td>0.173767</td>\n      <td>0.173767</td>\n      <td>0.357496</td>\n      <td>1.156286</td>\n      <td>1.572548</td>\n      <td>1.949349</td>\n      <td>2.284694</td>\n      <td>2.576462</td>\n      <td>0.0</td>\n      <td>2.003842</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>-1.640000e-07</td>\n      <td>250.000001</td>\n      <td>0.048317</td>\n      <td>1.143280e-05</td>\n      <td>-0.000049</td>\n      <td>0.032475</td>\n      <td>...</td>\n      <td>0.092513</td>\n      <td>0.138673</td>\n      <td>0.184769</td>\n      <td>1.172630</td>\n      <td>1.581270</td>\n      <td>1.902762</td>\n      <td>2.128414</td>\n      <td>2.328659</td>\n      <td>0.0</td>\n      <td>1.742132</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>0.0</td>\n      <td>1.0</td>\n      <td>1.233000e-07</td>\n      <td>250.000000</td>\n      <td>0.050355</td>\n      <td>-3.903200e-06</td>\n      <td>-0.000046</td>\n      <td>-0.045353</td>\n      <td>...</td>\n      <td>0.092513</td>\n      <td>0.092513</td>\n      <td>0.230801</td>\n      <td>1.173933</td>\n      <td>1.628543</td>\n      <td>2.003443</td>\n      <td>2.303091</td>\n      <td>2.559695</td>\n      <td>0.0</td>\n      <td>1.936930</td>\n    </tr>\n  </tbody>\n</table>\n<p>5 rows × 777 columns</p>\n</div>"
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# tf = TsFreshTransformer()\n",
+    "t = TSFreshFeatureExtractor(default_fc_parameters=\"efficient\", show_warnings=False)\n",
+    "Xt = t.fit_transform(X_train)\n",
+    "Xt.head()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Using tsfresh with aeon"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:30:53.062147Z",
+     "iopub.status.busy": "2020-12-19T14:30:53.061631Z",
+     "iopub.status.idle": "2020-12-19T14:31:09.307275Z",
+     "shell.execute_reply": "2020-12-19T14:31:09.307781Z"
+    }
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": "0.7735849056603774"
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "classifier = make_pipeline(\n",
+    "    TSFreshFeatureExtractor(default_fc_parameters=\"efficient\", show_warnings=False),\n",
+    "    RandomForestClassifier(),\n",
+    ")\n",
+    "classifier.fit(X_train, y_train)\n",
+    "classifier.score(X_test, y_test)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Multivariate time series classification data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:31:09.311742Z",
+     "iopub.status.busy": "2020-12-19T14:31:09.311092Z",
+     "iopub.status.idle": "2020-12-19T14:31:09.380791Z",
+     "shell.execute_reply": "2020-12-19T14:31:09.381304Z"
+    },
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(60, 6, 100) (60,) (20, 6, 100) (20,)\n"
+     ]
+    }
+   ],
+   "source": [
+    "X, y = load_basic_motions()\n",
+    "X_train, X_test, y_train, y_test = train_test_split(X, y)\n",
+    "print(X_train.shape, y_train.shape, X_test.shape, y_test.shape)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:31:09.425476Z",
+     "iopub.status.busy": "2020-12-19T14:31:09.424972Z",
+     "iopub.status.idle": "2020-12-19T14:31:09.427185Z",
+     "shell.execute_reply": "2020-12-19T14:31:09.427741Z"
+    },
+    "jupyter": {
+     "outputs_hidden": false
+    }
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": "array([[-1.088052e+00, -1.088052e+00, -6.836200e-01, -6.836200e-01,\n         1.732735e+00, -3.606030e-01, -1.078340e-01, -1.078340e-01,\n        -2.353600e-01,  9.832000e-02,  1.981450e-01,  2.754690e-01,\n        -1.713190e-01, -2.036300e-01, -7.130000e-03,  1.647850e-01,\n        -9.274400e-02, -2.564580e-01,  4.896200e-02, -1.463250e-01,\n         2.093100e-02, -5.958200e-02, -4.558400e-01,  1.189300e-02,\n        -2.628800e-01, -4.755600e-02,  8.333500e-02, -5.470400e-02,\n        -1.982560e-01, -9.925700e-02, -2.043750e-01, -2.306840e-01,\n        -2.306840e-01, -2.338050e-01, -9.477400e-02, -4.888900e-02,\n        -2.203990e-01, -7.340000e-02, -1.524500e-02, -2.884580e-01,\n        -3.128810e-01, -2.810570e-01, -2.802950e-01, -1.695040e-01,\n        -1.150830e-01, -6.590400e-02, -1.720640e-01, -9.110700e-02,\n        -1.116130e-01, -1.789600e-01, -4.327960e-01, -1.822240e-01,\n        -1.436930e-01, -1.119100e-02, -3.135700e-02, -1.384120e-01,\n        -2.509120e-01, -6.461700e-02,  5.924200e-02, -2.357460e-01,\n        -1.844410e-01,  3.811600e-02, -9.640500e-02, -1.568010e-01,\n        -2.474800e-01, -1.770160e-01, -1.770160e-01, -2.050140e-01,\n        -2.612780e-01, -1.411640e-01, -1.411640e-01, -4.021200e-02,\n        -4.229640e-01, -1.651520e-01, -1.981070e-01, -2.026840e-01,\n        -2.550190e-01, -6.287600e-02, -2.054840e-01, -1.956590e-01,\n        -1.535760e-01, -2.818000e-01, -1.161730e-01, -1.580500e-01,\n        -2.141600e-01, -1.957430e-01, -9.852900e-02, -2.415660e-01,\n        -3.041500e-01, -2.808460e-01, -2.232750e-01, -1.754460e-01,\n        -1.848120e-01,  1.131600e-02, -9.377400e-02, -1.354750e-01,\n        -1.771720e-01, -2.637010e-01, -2.192590e-01, -2.192590e-01],\n       [ 1.838320e-01,  1.838320e-01, -2.909047e+00, -2.909047e+00,\n         1.717920e-01,  1.575648e+00,  2.256994e+00,  2.256994e+00,\n         2.034762e+00,  1.259072e+00, -6.049350e-01, -1.651274e+00,\n        -2.394820e+00, -1.808752e+00, -6.906130e-01,  4.368730e-01,\n         1.719724e+00,  2.074830e+00,  1.716580e+00, -6.784000e-03,\n        -8.104780e-01, -1.637586e+00, -1.454906e+00, -2.645700e-01,\n         4.372900e-01,  1.375574e+00,  1.386308e+00,  1.164648e+00,\n         3.113960e-01, -4.974080e-01, -8.547420e-01, -8.045160e-01,\n        -8.045160e-01, -3.098690e-01,  7.141700e-02,  6.998610e-01,\n         1.028562e+00,  9.360660e-01,  4.732200e-01, -5.898000e-03,\n        -2.648650e-01, -7.108200e-01, -6.676640e-01, -2.454760e-01,\n         5.014630e-01,  9.408900e-01,  1.036927e+00,  8.530670e-01,\n         2.702270e-01, -1.074800e-01, -6.145840e-01, -7.836460e-01,\n        -6.232290e-01,  4.822000e-03,  5.085820e-01,  1.028448e+00,\n         1.123530e+00,  8.687340e-01,  6.691650e-01,  1.531000e-03,\n        -6.691350e-01, -9.760010e-01, -4.854330e-01, -2.738400e-01,\n         2.898070e-01,  8.582290e-01,  8.582290e-01,  9.891970e-01,\n         6.978650e-01,  2.506150e-01,  2.506150e-01, -1.211627e+00,\n        -5.625170e-01,  9.551700e-02,  3.716220e-01,  5.738080e-01,\n         8.157620e-01,  8.500400e-02,  4.475100e-02, -3.916000e-03,\n        -1.718800e-01,  3.744100e-02,  1.191130e-01,  8.158300e-02,\n         2.417600e-01,  2.183290e-01,  2.874620e-01,  8.880900e-02,\n         6.564100e-02, -6.917900e-02,  5.490200e-02, -2.370000e-02,\n         1.539520e-01,  2.759390e-01,  1.166160e-01,  1.143510e-01,\n         1.788460e-01,  1.790000e-02,  5.191000e-03,  5.191000e-03],\n       [-2.608710e-01, -2.608710e-01,  1.507042e+00,  1.507042e+00,\n         3.461950e-01,  5.250800e-02, -4.342500e-02, -4.342500e-02,\n        -9.566450e-01, -3.543220e-01,  1.633820e-01,  3.782520e-01,\n         4.623400e-01,  3.425440e-01, -1.080560e-01,  3.560900e-02,\n        -2.715400e-02, -1.368200e-02, -1.813900e-02,  1.728170e-01,\n         5.691560e-01,  3.761280e-01, -1.431900e-02, -4.044000e-03,\n        -2.704710e-01,  2.507100e-02,  9.457500e-02,  1.226290e-01,\n         1.087300e-01,  2.248810e-01,  1.551270e-01,  4.783200e-02,\n         4.783200e-02,  3.815800e-02,  4.856000e-03, -1.603460e-01,\n        -1.942740e-01,  1.068410e-01,  2.460110e-01,  2.594480e-01,\n        -9.750000e-03, -1.520900e-02,  4.914500e-02,  4.409800e-02,\n        -1.142420e-01, -1.140900e-01, -1.617490e-01,  1.068050e-01,\n        -4.277000e-03,  1.430240e-01,  2.013110e-01,  2.675850e-01,\n         1.165270e-01,  1.382980e-01, -1.152810e-01, -3.981090e-01,\n        -4.084630e-01, -2.343370e-01, -1.150170e-01, -2.850100e-02,\n         2.050140e-01,  6.777590e-01,  7.375950e-01, -3.207200e-02,\n        -2.841290e-01, -3.319720e-01, -3.319720e-01, -1.933580e-01,\n         1.590330e-01,  4.876070e-01,  4.876070e-01, -1.604310e-01,\n        -1.714850e-01, -1.569000e-03, -1.546810e-01, -2.707560e-01,\n         8.165200e-02, -8.854100e-02,  1.799760e-01,  2.039540e-01,\n         5.617600e-02,  1.003720e-01, -4.989500e-02, -3.483800e-02,\n         6.254400e-02,  1.207090e-01,  1.044410e-01, -2.820600e-02,\n         6.144600e-02,  2.946700e-02,  2.420900e-02,  3.410000e-04,\n         1.357990e-01,  1.969040e-01, -1.037500e-02, -4.594700e-02,\n        -2.085200e-02, -3.437200e-02, -2.651600e-02, -2.651600e-02],\n       [-2.849810e-01, -2.849810e-01,  4.154860e-01,  4.154860e-01,\n         4.820700e-01,  9.321800e-02,  6.392100e-02,  6.392100e-02,\n        -2.237230e-01,  1.704560e-01, -7.990100e-02, -1.091980e-01,\n        -1.358320e-01, -9.055500e-02, -9.588100e-02,  2.503570e-01,\n         6.658400e-02, -9.588100e-02, -1.598020e-01, -2.024160e-01,\n         1.384950e-01, -2.476940e-01, -1.518120e-01,  2.290500e-01,\n        -5.326700e-02,  1.091980e-01,  1.704560e-01, -1.864400e-02,\n         2.130700e-02,  6.658400e-02, -3.995100e-02, -1.598000e-02,\n        -1.598000e-02,  9.055500e-02,  2.104060e-01,  9.854500e-02,\n        -5.327000e-03,  4.794100e-02, -1.331700e-02, -1.278420e-01,\n        -2.210600e-01, -5.327000e-03,  1.012080e-01,  8.256500e-02,\n         1.384950e-01,  8.256500e-02, -2.929700e-02, -6.392100e-02,\n        -2.397040e-01, -1.890990e-01, -9.321800e-02, -1.065300e-02,\n         1.864400e-02,  9.854500e-02,  6.924800e-02,  1.012080e-01,\n         8.789100e-02, -4.261400e-02, -5.353380e-01, -6.551900e-01,\n         1.038720e-01,  1.190528e+00,  3.995100e-02, -1.571390e-01,\n        -3.728700e-02,  1.491490e-01,  1.491490e-01, -2.663000e-03,\n        -1.997530e-01, -6.099120e-01, -6.099120e-01, -1.360983e+00,\n         1.012080e-01,  3.648820e-01,  1.864360e-01, -3.089510e-01,\n         2.077430e-01,  1.118620e-01, -2.929700e-02, -1.251790e-01,\n        -9.854500e-02, -1.198520e-01,  1.278420e-01,  2.397000e-02,\n         3.196000e-02,  6.392100e-02,  7.990000e-03,  5.327000e-03,\n        -6.924800e-02, -4.794100e-02, -5.327000e-03,  1.704560e-01,\n         5.113680e-01,  6.525260e-01,  1.837730e-01, -2.397000e-02,\n         7.990000e-03, -7.990000e-03, -1.598000e-02, -1.598000e-02],\n       [ 4.873970e-01,  4.873970e-01,  1.331700e-02,  1.331700e-02,\n         2.024160e-01, -1.065300e-02,  3.728700e-02,  3.728700e-02,\n        -1.997530e-01, -3.702090e-01, -1.251790e-01, -1.012080e-01,\n        -6.658400e-02,  1.411590e-01,  5.859400e-02, -7.191100e-02,\n        -5.593100e-02, -4.527700e-02, -9.321800e-02, -1.837730e-01,\n        -1.225150e-01,  7.990100e-02,  1.305050e-01,  1.598000e-02,\n         5.859400e-02, -7.990100e-02, -3.995100e-02, -7.990000e-03,\n         0.000000e+00,  0.000000e+00,  5.326700e-02,  1.864400e-02,\n         1.864400e-02,  1.065300e-02,  0.000000e+00,  1.065300e-02,\n        -1.331700e-02, -8.522800e-02, -4.261400e-02,  7.191100e-02,\n         1.251790e-01,  4.794100e-02,  2.663000e-03,  2.663000e-03,\n        -3.196000e-02, -5.060400e-02, -6.924800e-02, -3.995100e-02,\n        -2.663000e-03,  2.397000e-02,  3.995100e-02,  7.457400e-02,\n         9.321800e-02,  8.789100e-02,  1.198520e-01,  8.256500e-02,\n        -5.593100e-02, -1.118620e-01, -1.331690e-01, -1.198520e-01,\n        -1.225150e-01, -1.731190e-01,  7.457400e-02,  2.290500e-01,\n         1.731190e-01,  1.305050e-01,  1.305050e-01, -6.125800e-02,\n        -1.331690e-01, -9.588100e-02, -9.588100e-02,  6.125800e-02,\n         1.145250e-01,  4.794100e-02,  5.060400e-02, -5.060400e-02,\n        -7.191100e-02, -4.794100e-02, -7.457400e-02,  2.663400e-02,\n         2.130700e-02,  2.130700e-02,  0.000000e+00, -3.196000e-02,\n        -1.864400e-02, -3.196000e-02,  5.327000e-03,  0.000000e+00,\n         2.397000e-02, -7.990000e-03, -4.261400e-02, -3.995100e-02,\n        -5.593100e-02, -2.397000e-02, -1.598000e-02,  1.065300e-02,\n         1.331700e-02,  2.663400e-02,  1.065300e-02,  1.065300e-02],\n       [ 1.081329e+00,  1.081329e+00,  8.203190e-01,  8.203190e-01,\n         1.603350e+00,  1.395607e+00,  6.578530e-01,  6.578530e-01,\n        -1.944260e-01, -8.309720e-01, -1.187864e+00, -1.094646e+00,\n        -3.382480e-01,  2.050800e-01,  7.350910e-01,  8.975570e-01,\n         6.125760e-01,  1.384950e-01, -4.048330e-01, -8.869030e-01,\n        -9.028830e-01, -4.128230e-01,  3.995100e-02,  5.060410e-01,\n         6.445360e-01,  4.367930e-01,  4.794100e-02, -2.050800e-01,\n        -5.539820e-01, -6.019220e-01, -3.116150e-01,  1.065300e-02,\n         1.065300e-02,  2.317130e-01,  3.355850e-01,  4.021690e-01,\n         2.370400e-01, -1.491490e-01, -3.302580e-01, -3.728720e-01,\n        -3.542290e-01, -2.130700e-01,  1.065300e-02,  3.036240e-01,\n         3.648820e-01,  2.769910e-01,  7.191100e-02, -2.583470e-01,\n        -3.808620e-01, -3.968430e-01, -3.036240e-01, -1.305050e-01,\n         2.104060e-01,  4.181500e-01,  4.074960e-01,  2.956340e-01,\n        -5.593100e-02, -2.716640e-01, -2.769910e-01, -3.302580e-01,\n        -5.166940e-01, -4.980510e-01,  5.327000e-03,  3.648820e-01,\n         4.181500e-01,  3.036240e-01,  3.036240e-01, -1.571390e-01,\n        -2.956340e-01, -3.062880e-01, -3.062880e-01,  7.990000e-03,\n         2.130700e-02,  3.728700e-02,  1.438220e-01,  1.917630e-01,\n        -1.331700e-02, -1.331690e-01, -1.544760e-01, -1.384950e-01,\n        -9.055500e-02, -2.929700e-02, -3.196000e-02, -5.327000e-03,\n        -7.990000e-03, -4.527700e-02, -7.457400e-02, -9.055500e-02,\n        -8.789100e-02, -3.728700e-02, -3.462400e-02, -4.261400e-02,\n        -6.658400e-02, -1.198520e-01, -6.392100e-02, -2.663400e-02,\n        -6.125800e-02, -7.457400e-02, -4.261400e-02, -4.261400e-02]])"
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#  multivariate input data\n",
+    "X_train[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "execution": {
+     "iopub.execute_input": "2020-12-19T14:31:09.516548Z",
+     "iopub.status.busy": "2020-12-19T14:31:09.515810Z",
+     "iopub.status.idle": "2020-12-19T14:31:32.787406Z",
+     "shell.execute_reply": "2020-12-19T14:31:32.788316Z"
+    },
+    "scrolled": true,
+    "pycharm": {
+     "is_executing": true
+    }
+   },
+   "outputs": [],
+   "source": [
+    "t = TSFreshFeatureExtractor(default_fc_parameters=\"efficient\", show_warnings=False)\n",
+    "Xt = t.fit_transform(X_train)\n",
+    "Xt.head()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "outputs": [],
+   "source": [],
+   "metadata": {
+    "collapsed": false
+   }
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.7.8"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}


Test patch:
diff --git a/aeon/datasets/tests/test_data_loaders.py b/aeon/datasets/tests/test_data_loaders.py
index e227a14f..3c9803dc 100644
--- a/aeon/datasets/tests/test_data_loaders.py
+++ b/aeon/datasets/tests/test_data_loaders.py
@@ -293,24 +293,14 @@ def test__load_data():
     PR_TESTING,
     reason="Only run on overnights because of intermittent fail for read/write",
 )
-@pytest.mark.parametrize("return_X_y", [True, False])
-@pytest.mark.parametrize("return_type", ["nested_univ", "numpy3D", "numpy2D"])
-def test_load_provided_dataset(return_X_y, return_type):
+@pytest.mark.parametrize("return_type", ["numpy3D", "numpy2D"])
+def test_load_provided_dataset(return_type):
     """Test function to check for proper loading.
 
-    Check all possibilities of return_X_y and return_type.
+    Check all possibilities of  return_type.
     """
-    if return_X_y:
-        X, y = _load_saved_dataset("UnitTest", "TRAIN", return_X_y, return_type)
-        assert isinstance(y, np.ndarray)
-    else:
-        X = _load_saved_dataset("UnitTest", "TRAIN", return_X_y, return_type)
-    if not return_X_y:
-        assert isinstance(X, tuple)
-        X = X[0]
-    if return_type == "nested_univ":
-        assert isinstance(X, pd.DataFrame)
-    elif return_type == "numpy3D":
+    X, y = _load_saved_dataset("UnitTest", "TRAIN", return_type)
+    if return_type == "numpy3D":
         assert isinstance(X, np.ndarray) and X.ndim == 3
     elif return_type == "numpy2D":
         assert isinstance(X, np.ndarray) and X.ndim == 2
diff --git a/aeon/datasets/tests/test_dataset_collections.py b/aeon/datasets/tests/test_dataset_collections.py
index 883f53f2..624870ab 100644
--- a/aeon/datasets/tests/test_dataset_collections.py
+++ b/aeon/datasets/tests/test_dataset_collections.py
@@ -49,6 +49,13 @@ def test_list_available_tser_datasets():
     """Test recovering lists of available data sets."""
     res = get_available_tser_datasets()
     assert len(res) == 63
+    res = get_available_tser_datasets(return_list=False)
+    assert isinstance(res, set)
+    res = get_available_tser_datasets(name="tser_monash")
+    assert len(res) == 18
+    res = get_available_tser_datasets(return_list=False, name="tser_monash")
+    assert isinstance(res, dict)
+    assert len(res) == 18
     res = get_available_tser_datasets("FOO")
     assert not res
     res = get_available_tser_datasets("Covid3Month")
diff --git a/aeon/datasets/tests/test_single_problem_loaders.py b/aeon/datasets/tests/test_single_problem_loaders.py
index 8ffda37f..9436c379 100644
--- a/aeon/datasets/tests/test_single_problem_loaders.py
+++ b/aeon/datasets/tests/test_single_problem_loaders.py
@@ -15,12 +15,14 @@ from aeon.datasets import (  # Univariate; Unequal length; Multivariate
     load_from_tsf_file,
     load_italy_power_demand,
     load_japanese_vowels,
+    load_macroeconomic,
     load_osuleaf,
     load_plaid,
     load_solar,
     load_unit_test,
     load_unit_test_tsf,
 )
+from aeon.utils.validation._dependencies import _check_soft_dependencies
 
 UNIVARIATE_PROBLEMS = [
     load_acsf1,
@@ -47,8 +49,6 @@ def test_load_dataframe(loader):
     assert isinstance(X[0], np.ndarray)
     assert isinstance(y, np.ndarray)
     assert y.ndim == 1
-    X = loader(return_X_y=False)
-    assert isinstance(X, tuple)
 
 
 @pytest.mark.parametrize("loader", UNIVARIATE_PROBLEMS + MULTIVARIATE_PROBLEMS)
@@ -100,16 +100,20 @@ def test_basic_load_tsf_to_dataframe():
 
 def test_load_solar():
     """Test function to load solar data."""
-    solar = load_solar(api_version=None)
+    solar = load_solar()
     assert type(solar) is pd.Series
     assert solar.shape == (289,)
-    solar = load_solar(api_version="WRONG")
-    assert type(solar) is pd.Series
-    assert solar.shape == (289,)
-    solar = load_solar(api_version=None, return_full_df=True)
-    assert solar.name == "solar_gen"
-    solar = load_solar(api_version=None, normalise=False)
-    assert solar.name == "solar_gen"
+
+
+@pytest.mark.skipif(
+    not _check_soft_dependencies("statsmodels", severity="none"),
+    reason="skip test if required soft dependency statsmodels not available",
+)
+def test_load_macroeconomic():
+    """Test load macroeconomic."""
+    y = load_macroeconomic()
+    assert isinstance(y, pd.DataFrame)
+    assert y.shape == (203, 12)
 
 
 def test_load_covid_3month():
@@ -119,5 +123,3 @@ def test_load_covid_3month():
     assert len(X) == len(y)
     assert X.shape == (201, 1, 84)
     assert isinstance(y, np.ndarray)
-    X = load_covid_3month(return_X_y=False)
-    assert isinstance(X, tuple)
diff --git a/aeon/datasets/tests/test_tsad_datasets.py b/aeon/datasets/tests/test_tsad_datasets.py
new file mode 100644
index 00000000..78f85f09
--- /dev/null
+++ b/aeon/datasets/tests/test_tsad_datasets.py
@@ -0,0 +1,33 @@
+"""Test functions in tsad_datasets.py."""
+
+import pytest
+
+from aeon.datasets.tsad_datasets import (
+    multivariate,
+    supervised,
+    tsad_collections,
+    tsad_datasets,
+    univariate,
+    unsupervised,
+)
+from aeon.testing.testing_config import PR_TESTING
+
+
+@pytest.mark.skipif(
+    PR_TESTING,
+    reason="Only run on overnights because of read from internet.",
+)
+def test_helper_functions():
+    """Test helper functions."""
+    d = tsad_collections()
+    assert isinstance(d, dict)
+    d = tsad_datasets()
+    assert isinstance(d, list)
+    d = univariate()
+    assert isinstance(d, list)
+    d = multivariate()
+    assert isinstance(d, list)
+    d = unsupervised()
+    assert isinstance(d, list)
+    d = supervised()
+    assert isinstance(d, list)