aeon-toolkit / aeon

A toolkit for machine learning from time series
https://aeon-toolkit.org/
BSD 3-Clause "New" or "Revised" License
979 stars 116 forks source link

[BUG] CollectionTransformerPipeline fit_transform doesnt fit #1748

Closed TonyBagnall closed 2 months ago

TonyBagnall commented 3 months ago

Describe the bug

CollectionTransformerPipeline extends BaseCollectionPipeline. This base class seems to lack a call to fit in the internal _fit_transform function

    def _fit_transform(self, X, y=None) -> np.ndarray:
        """Fit and transform sequences in X.

        Parameters
        ----------
        X : data of type self.get_tag("X_inner_type")

        Returns
        -------
        Xt : transformed data
        """
        # transform
        Xt = X
        for i in range(len(self.steps_)):
            Xt = self.steps_[i][1].fit_transform(X=Xt)
        return Xt

Steps/Code to reproduce the bug

from aeon.testing.data_generation import make_example_3d_numpy
from aeon.transformations.collection.compose import CollectionTransformerPipeline
X,y = make_example_3d_numpy(n_timepoints=30)
t = CollectionTransformerPipeline.create_test_instance()
t.fit_transform(X,y)
t.fit(X)

Expected results

fits correctly

Actual results

C:\Code\aeon\venv\Scripts\python.exe C:\Code\aeon\aeon\local\transform_debug.py 
C:\Code\aeon\venv\lib\site-packages\dask\dataframe\_pyarrow_compat.py:17: FutureWarning: Minimal version of pyarrow will soon be increased to 14.0.1. You are using 11.0.0. Please consider upgrading.
  warnings.warn(
Traceback (most recent call last):
  File "C:\Code\aeon\aeon\local\transform_debug.py", line 33, in <module>
    t.fit_transform(X,y)
  File "C:\Code\aeon\aeon\transformations\collection\base.py", line 208, in fit_transform
    Xt = self._fit_transform(X=X_inner, y=y_inner)
  File "C:\Code\aeon\aeon\base\estimator\compose\collection_pipeline.py", line 236, in _fit_transform
    for i in range(len(self.steps_)):
AttributeError: 'CollectionTransformerPipeline' object has no attribute 'steps_'

Versions

No response