Changelog#

The format is based on Keep a Changelog, and we adhere to Semantic Versioning.

The source code for all releases is available on GitHub.

Note

To stay up-to-date with sktime releases, subscribe to sktime here or follow us on LinkedIn.

For our long-term plan, see our Roadmap.

Version 0.37.1 - 2025-06-22#

Highlights#

Dependency changes#

  • optuna (tuning soft dependency) bounds have been updated to <4.5

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Data types, checks, conversions#

Documentation build#

Forecasting#

MLOps & Deployment#

Time series anomalies, changepoints, segmentation#

Time series classification#

Time series distances and kernels#

Time series regression#

Transformations#

Test Framework#

Documentation#

Maintenance#

Fixes#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Forecasting#

Time series alignment#

Time series classification#

Transformations#

Test framework#

Contributors#

:user:`amanmogal`, :user:`andoriyaprashant`, :user:`Ankit-1204`, :user:`benHeid`, :user:`felipeangelimvieira`, :user:`fkiraly`, :user:`gbilleyPeco`, :user:`HarshvirSandhu`, :user:`jgyasu`, :user:`jobs-git`, :user:`julian-fong`, :user:`ksharma6`, :user:`marrov`, :user:`mateuszkasprowicz`, :user:`mohamed-halemo`, :user:`nahcol10`, :user:`nmwitzig`, :user:`OmBiradar`, :user:`pcpp94`, :user:`piyushbiraje`, :user:`Prahitha`, :user:`Pranavsingh431`, :user:`RobKuebler`, :user:`szepeviktor`, :user:`Tveten`, :user:`vedantag17`, :user:`yury-fedotov`

Version 0.37.0 - 2025-04-12#

Maintenance release with scheduled deprecations and change actions.

For the last non-maintenance content update, see 0.36.1.

Dependency changes#

  • keras-self-attention (deep learning soft dependency) is no longer a soft dependency. The package has been abandoned and is now vendored in sktime.

Core interface changes#

Forecasting and transformation pipelines can now be built with an scikit-learn estimator directly, without needing to wrap in TabularToSeriesAdaptor.

The behaviour is the same as before, but the TabularToSeriesAdaptor is now optional.

Deprecations and removals#

Forecasting#

  • deprecated: the handles-missing-data tag is deprecated and renamed to capability:missing_values, to be consistent with other estimator types. The old tag name handles-missing-data can be used until 1.0.0, when it will be removed, but will raise a deprecation warning.

  • removed: the deprecated HierarchyEnsembleForecaster.fitted_list parameter has been removed. Users should use get_fitted_params or forecasters_ instead.

Time Series Anomalies, Changepoints, Segmentation#

  • removed: the deprecated annotation module has been removed. Users should replace imports from sktime.annotation with imports from sktime.detection.

  • removed: the deprecated Y argument in detector methods has been removed. Instead, users should use the y argument.

Enhancements#

BaseObject and base framework#

Data types, checks, conversions#

Forecasting#

Transformations#

Maintenance#

Fixes#

  • [BUG] fix scitype return in case coerce_to_list=False and force_single_scitype=False if two or more types are detected (:pr:`8133`) :user:`fkiraly`

  • [BUG] Stop Importing Modules if Raised an Exception in _safe_import (:pr:`8182`) :user:`jgyasu`

Contributors#

:user:`fkiraly`, :user:`jgyasu`

Version 0.36.1 - 2025-04-04#

Highlights#

Dependency changes#

  • tensorflow (deep learning soft dependency) bounds have been updated to <2.20

  • dask (data container and parallelization back-end soft dependency) bounds have been updated to <2025.2.1,>2024.8.2

  • ray is now a soft dependency (parallelization back-end)

Core interface changes#

  • all native parallelization locations now accept "ray" as a parallelization backend, for example

    forecasting parameter tuning, or hierarchical parallelization via set_config

  • ForecastingBenchmark has been reworked:

    • accepts sktime-in-memory data formats and dataset loaders

    • provides different handlers for benchmarking outputs, including json, csv, and parquet.

    • supports global forecasters

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Forecasting#

Parameter estimation#

Test Framework#

Time Series Anomalies, Changepoints, Segmentation#

Transformations#

Documentation#

Maintenance#

Fixes#

BaseObject and base framework#

Data sets and data loaders#

Data Types, Checks, Conversions#

Forecasting#

Parameter estimation#

Test Framework#

Time Series Anomalies, Changepoints, Segmentation#

Time Series Classification#

Time Series Clustering#

Time Series Regression#

Transformations#

On-board library: vmdpy#

Contributors#

:user:`amitsubhashchejara`, :user:`Ankit-1204`, :user:`benHeid`, :user:`Bergschaf`, :user:`celestinoxp`, :user:`danferns`, :user:`ericjb`, :user:`felipeangelimvieira`, :user:`fkiraly`, :user:`geetu040`, :user:`haroon0x`, :user:`hazrulakmal`, :user:`itsbharatj`, :user:`jgyasu`, :user:`LHoelper`, :user:`LorchZachery`, :user:`oseiskar`, :user:`phoeenniixx`, :user:`PranavBhatP`, :user:`Reckadon`, :user:`satvshr`, :user:`Sohaib-Ahmed21`, :user:`Spinachboul`, :user:`tapyu`, :user:`TomatoChocolate12`, :user:`Utkarsh-Aggarwal`, :user:`vedantag17`, :user:`wilsbj`, :user:`XinyuWuu`, :user:`yarnabrina`

Version 0.36.0 - 2025-02-03#

Maintenance release with scheduled updates to version bounds.

For the last non-maintenance content update, see 0.35.1.

Dependency changes#

  • numpy (core dependency) bounds have been updated to <2.3.0

  • scikit-learn (core dependency) bounds have been updated to <1.7.0

Contents#

Version 0.35.1 - 2025-02-02#

Highlights#

Dependency changes#

  • skpro (probability distributions soft dependency) bounds have been updated to >=2,<2.10.0

  • numba (computation soft dependency) bounds have been updated to <0.62

  • optuna (hyperparameter optimization soft dependency) bounds have been updated to <4.3

  • pykan (forecasting soft dependency) bounds have been updated to >=0.2.1,<0.2.9

  • dask (data container and parallelization back-end soft dependency) bounds have been updated to <2025.1.1

Core interface changes#

Data sets and data loaders#

  • a unified API has been introduced for data sets and data loaders,

following the scikit-base pattern. A unified load method is now available for all data loaders, with further unified API points such as keys and tags for retrieval. For further details, see Datasets reference.

Forecasting#

  • All Forecasting metrics can now be constructed with a by_index=True argument.

This will result in a direct call returning the metric per time index. This is equivalent to a call of the evaluate_by_index method. by_index=False is the default, and dispatches, as currently, to the evaluate method of the metric.

Deprecations and removals#

In HierarchyEnsembleForecaster, the fitted_list attribute is deprecated. To access the fitted estimators, users should use instead either the get_fitted_params method, or the attribute forecasters_. Given a fitted instance f, a deprecated read call to f.fitted_list can be replaced by f.get_fitted_params()['forecasters'] or f.forecasters_.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Parameter estimation and hypothesis testing#

Registry and search#

Time series anomalies, changepoints, segmentation#

Time series classification#

Time series clustering#

Transformations#

Test framework#

Documentation#

Maintenance#

Fixes#

BaseObject and base framework#

Forecasting#

Neural networks#

Registry and search#

Time series anomalies, changepoints, segmentation#

Time series classification#

Transformations#

Contributors#

:user:`Abelarm`, :user:`abhishek-iitmadras`, :user:`Adarsh2345`, :user:`Alex-JG3`, :user:`Ankit-1204`, :user:`b9junkers`, :user:`benHeid`, :user:`cheachu`, :user:`Dehelaan`, :user:`felipeangelimvieira`, :user:`fkiraly`, :user:`fnhirwa`, :user:`gavinkatz001`, :user:`gbilleyPeco`, :user:`geetu040`, :user:`HarshvirSandhu`, :user:`jgyasu`, :user:`keitaVigano`, :user:`KrishBakshi`, :user:`ksharma6`, :user:`lenaklosik`, :user:`marcosfelt`, :user:`marrov`, :user:`mateuszkasprowicz`, :user:`phoeenniixx`, :user:`PranavBhatP`, :user:`RHYTHM2405`, :user:`RUPESH-KUMAR01`, :user:`SABARNO-PRAMANICK`, :user:`Salzemann`, :user:`sanskarmodi8`, :user:`satvshr`, :user:`seigpe`, :user:`skinan`, :user:`Spinachboul`, :user:`tanvincible`, :user:`VjayRam`, :user:`y-mx`, :user:`yarnabrina`

Version 0.35.0 - 2024-12-09#

Maintenance release with scheduled deprecations and change actions.

For the last non-maintenance content update, see 0.34.1.

Dependency changes#

  • scikit-base bounds have been updated to >=0.6.1,<0.13.0

  • skpro (probability distributions soft dependency) bounds have been updated to >=2,<2.9.0

Deprecations and removals#

  • From sktime 0.38.0, forecasters’ predict_proba will require skpro to be present in the python environment, for distribution objects to represent distributional forecasts. Since sktime 0.35.0, an error is raised upon call of forecaster predict_proba if skpro is not present in the environment. Users of forecasters’ predict_proba should ensure that skpro is installed in the environment.

  • The probability distributions module sktime.proba deprecated and will be fully replaced by skpro in sktime 0.38.0. Until sktime 0.38.0, imports from sktime.proba will continue working, defaulting to sktime.proba if skpro is not present, otherwise redirecting imports to skpro objects. Since sktime 0.35.0, an error is raised if skpro is not present in the environment, otherwise imports are redirected to skpro. Direct or indirect users of sktime.proba should ensure skpro is installed in the environment. Direct users of the sktime.proba module should, in addition, replace any imports from sktime.proba with imports from skpro.distributions.

  • in neuralforecast facing estimator interfaces, the default for the broadcasting parameter has been consistently changed to False.

Maintenance#

Contributors#

:user:`fkiraly`, :user:`fnhirwa`, :user:`yarnabrina`

Version 0.34.1 - 2024-11-29#

Highlights#

Dependency changes#

  • dask (data container and parallelization back-end soft dependency) bounds have been updated to <2024.11.3

Core interface changes#

Forecasting#

Forecasting metrics now allow a callable to be passed as sample_weight for dynamic weight generation. The precise contract the callables need to satisfy is documented in the docstrings.

Time series anomalies, changepoints, segmentation#

The core API for time series detectors has changed, and has been homogenized with the API of skchange.

The changes are in parts breaking, and require adjustments in the user code. The changes were necessary to ensure a consistent API for time series detectors.

  • BaseDetector.predict now returns a pd.DataFrame. This DataFrame always has a RangeIndex, with individual rows corresponding to individual events. The DataFrame has at least a column "ilocs", which contains the integer indices of the detected events, in reference to the argument X passed to predict. The format, for an entry, can be a single integer or a left-closed pd.Interval of integers, indicating either a single point or a segment of points.

  • an additional column "labels" may be present in cases of labelled events.

  • BaseDetector.predict_points and predict_segments now also return pd.DataFrame, following the same format as predict, with the difference that predict_points coerces detected events to points, taking start and end points of segments as separate points. predict_segments coerces detected events to segments, possibly single-index segments.

  • BaseDetector.transform now always returns a pd.DataFrame with, which has at least a column "transform" containing the transformed series.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Forecasting#

Time series anomalies, changepoints, segmentation#

Time series classification#

Time series clustering#

Time series regression#

Transformations#

Test framework#

Documentation#

Maintenance#

Fixes#

Forecasting#

Time series anomalies, changepoints, segmentation#

Time series classification#

Time series clustering#

Time series regression#

Test framework#

Contributors#

:user:`Akhsuna07`, :user:`Alex-JG3`, :user:`alyssadsouza`, :user:`Dehelaan`, :user:`ericjb`, :user:`fkiraly`, :user:`gavinkatz001`, :user:`geetu040`, :user:`hudsonhoch`, :user:`jgyfutub`, :user:`julian-fong`, :user:`jusssch`, :user:`keitaVigano`, :user:`liya-zhu`, :user:`manolotis`, :user:`MarkusSagen`, :user:`medha-14`, :user:`mjste`, :user:`pranavvp16`, :user:`sanskarmodi8`, :user:`ShivamJ07`, :user:`Sohaib-Ahmed21`, :user:`SSROCKS30`, :user:`tajir0`, :user:`talat-khattatov`, :user:`vagechirkov`, :user:`VectorNd`, :user:`yarnabrina`

Version 0.34.0 - 2024-10-19#

Maintenance release:

  • full support for python 3.13

  • scheduled deprecations and change actions.

For last non-maintenance content updates, see 0.33.2.

Dependency changes#

  • numpy bounds have been updated to >=1.21,<2.2

  • scikit-base bounds have been updated to >=0.6.1,<0.12.0

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.59

Deprecations and removals#

  • The annotation module will be renamed to detection, starting with 0.34.0. Until a future release not earlier than 0.37.0 or 1.0.0, the module will be available under both names to ensure downwards compatibility of imports.

  • The annotation soft dependency set will be renamed to detection. The annotation soft dependency set will be available until a future release not earlier than 0.37.0 or 1.0.0, to ensure downwards compatibility of imports.

Maintenance#

Documentation#

Version 0.33.2 - 2024-10-17#

Highlights#

Dependency changes#

  • skpro (forecasting soft dependency) bounds have been updated to >=2,<2.8.0

  • u8darts (forecasting soft dependency) bounds have been updated to >=0.29.0,<0.32.0

  • dask (data container and parallelization back-end soft dependency) bounds have been updated to <2024.10.1

Core interface changes#

Performance metrics for probabilistic forecasting, for interval and quantile returns, can now optionally be constructed with an alpha (quantile forecasts) or coverage (interval forecasts) parameter, for example EmpiricalCoverage(coverage=0.7) for “empirical coverage at nominal interval coverage 70 percent”.

These are for use with benchmarking or tuning interfaces, where a metric is provided, but predict_interval or predict_quantiles are not explicitly called.

In such a case, the parameter of the metric will be used by the tuner or benchmark utility to tune with the metric at that quantile alpha or interval coverage.

For example, ForecastingGridSearchCV(fcst, cv, scoring=PinballLoss(alpha=[0.3, 0.7])), to tune the forecaster fcst scored by the pinball loss at quantiles 0.3 and 0.7.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data types, checks, conversions#

Forecasting#

Registry and search#

Time series classification#

Transformations#

Test framework#

Documentation#

Maintenance#

Fixes#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Contributors#

:user:`alex-jg3`, :user:`Anuragwagh`, :user:`benHeid`, :user:`Dehelaan`, :user:`ericjb`, :user:`fkiraly`, :user:`fnhirwa`, :user:`Garve`, :user:`geetu040`, :user:`Humorloos`, :user:`jan-mue`, :user:`julian-fong`, :user:`KarlKolibri`, :user:`MarkusSagen`, :user:`ninedigits`, :user:`phoeenniixx`, :user:`Prtm2110`, :user:`RobotPsychologist`, :user:`rigvedmanoj`, :user:`SaiRevanth25`, :user:`sanskarmodi8`, :user:`shivanshsinghal-22`, :user:`Smoothengineer`, :user:`talat-khattatov`, :user:`tianjiqx`, :user:`vedantag17`, :user:`XinyuWuu`, :user:`Z-Fran`

Version 0.33.1 - 2024-09-26#

Small feature release for showcase at pydata Paris.

Highlights#

Dependency changes#

  • optuna (hyperparameter optimization soft dependency) bounds have been updated to <4.1

  • mne (transformations soft dependency) bounds have been updated to >=1.5,<1.9

Enhancements#

BaseObject and base framework#

  • [ENH] is_scitype utility for scitype checking, improve support of estimators with multiple object types (:pr:`7143`) :user:`benHeid`

Data types, checks, conversions#

Forecasting#

Registry and search#

Time series anomalies, changepoints, segmentation#

Transformations#

Documentation#

Maintenance#

Fixes#

Forecasting#

Transformations#

Test framework

Contributors#

:user:`ankit-1204`, :user:`benHeid`, :user:`ericjb`, :user:`fkiraly`, :user:`pranavvp16`, :user:`SaiRevanth25`, :user:`Saptarshi-Bandopadhyay`, :user:`XinyuWuu`, :user:`yarnabrina`

Version 0.33.0 - 2024-09-09#

Maintenance release, with scheduled deprecations and change actions.

For last non-maintenance content updates, see 0.32.4 and 0.32.2.

Dependency changes#

  • scikit-base (core dependency) bounds have been updated to >=0.6.1,<0.10.0

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.57

  • pykan (deep learning soft dependency) bounds have been updated to >=0.2,<0.2.7

  • mne (transformations soft dependency) bounds have been updated to >=1.5,<1.9

  • dask (data container and parallelization back-end soft dependency) bounds have been updated to <2024.8.3

  • pytorch-forecasting (forecasting soft dependency) bounds have been updated to >=1.0.0,<1.2.0

Deprecations and removals#

  • in DirectReductionForecaster the default for windows_identical has changed to False.

Maintenance#

Documentation#

Enhancements#

Contributors#

:user:`benHeid`, :user:`ericjb`, :user:`fkiraly`, :user:`SaiRevanth25`, :user:`Saptarshi-Bandopadhyay`

Version 0.32.4 - 2024-09-06#

Small feature and fix release for:

  • colab compatibility, hotfix for polars dependency incompatibility

  • compatibility with skchange 2nd party integration

  • improvements to the anomalies, changepoints, segmentation framework

  • documentation update related to upcoming sktime elections

Core interface changes#

  • A scitype adaptation framework is introduced, allowing use of an estimator of one type in a slot for another, via type coercion. The coercion framework covers sklearn, skpro, and sktime estimators currently, and is extensible. A user and developer shorthand for such coercion is provided as the registry.coerce_scitype function, which dispatches to individual coercion mechanisms.

  • Time series clusterers that produce a cluster assignment can be coerced to transformations, enabling their use in any pipeline slot for transformations.

  • Anomaly and changepoint detectors can now be pipelined with transformations, resulting in a detector. Dunder concatenation transformer * detector will default to this.

  • Anomaly and changepoint detectors can be coerced to transformations, enabling their use in any pipeline slot for transformations.

Enhancements#

BaseObject and base framework#

Time series anomalies, changepoints, segmentation#

Time series clustering#

  • [ENH] enable use of clusterers as transformations, enable TransformSelectForecaster use of clusterers for group selection (:pr:`7068`) :user:`fkiraly`

Transformations#

Documentation#

Fixes#

Contributors#

:user:`Alex-JG3`, :user:`fkiraly`, :user:`fnhirwa`, :user:`geetu040`, :user:`ninedigits`, :user:`phoeenniixx`, :user:`Saptarshi-Bandopadhyay`, :user:`wirrywoo`

Version 0.32.3 - 2024-08-27#

Hotfix release with bugfix for html representation of forecasting pipelines.

For last non-maintenance content updates, see 0.32.2.

Contents#

  • [BUG] fix html display for TransformedTargetForecaster and ForecastingPipeline

Version 0.32.2 - 2024-08-26#

Highlights#

Dependency changes#

  • holiday (transformations soft dependency) bounds have been updated to >=0.29,<0.56

  • dask (data container and parallelization back-end) bounds have been updated to <2024.8.2

Core interface changes#

New tags for clusterers have been added to characterize capabilities to assign cluster centers. The following boolean tags have been added:

  • capability:predict, whether the clusterer can assign cluster labels via predict

  • capability:predict_proba, for probabilistic cluster assignment

  • capability:out_of_sample, for out-of-sample cluster assignment. If False, the clusterer can only assign clusters to data points seen during fitting.

Enhancements#

BaseObject and base framework#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Time series clustering#

Transformations#

Documentation#

Maintenance#

Fixes#

BaseObject and base framework#

Benchmarking and Metrics#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Contributors#

:user:`Abhay-Lejith`, :user:`felipeangelimvieira`, :user:`fkiraly`, :user:`geetu040`, :user:`marrov`, :user:`meraldoantonio`, :user:`ninedigits`, :user:`pranavvp16`, :user:`SaiRevanth25`, :user:`shlok191`, :user:`toandaominh1997`, :user:`wirrywoo`, :user:`wpdonders`, :user:`yarnabrina`

Version 0.32.1 - 2024-08-12#

Hotfix release for using make_reduction with not fully sklearn compliant tabular regressors such as from catboost.

For last non-maintenance content updates, see 0.31.1.

Contents#

  • [BUG] fix make_reduction type inference for non-sklearn estimators

Version 0.32.0 - 2024-08-11#

Maintenance release, with scheduled deprecations and change actions.

For last non-maintenance content updates, see 0.31.1.

Dependency changes#

  • skpro (soft dependency) bounds have been updated to >=2,<2.6.0

  • skforecast (forecasting soft dependency) bounds have been updated to <0.14.0.

Core interface changes#

  • all sktime estimators and objects are now required to have at least two test parameter sets in get_test_params to be compliant with check_estimator contract tests. This requirement was previously stated in the extension template but not enforced. It is now also included in the automated tests via check_estimator. Estimators without (unreserved) parameters, i.e., where two distinct parameter sets are not possible, are excepted from this.

Deprecations and removals#

  • From sktime 0.38.0, forecasters’ predict_proba will require skpro to be present in the python environment, for distribution objects to represent distributional forecasts. Until sktime 0.35.0, predict_proba will continue working without skpro, defaulting to return objects in sktime.proba if skpro is not present. From sktime 0.35.0, an error will be raised upon call of forecaster predict_proba if skpro is not present in the environment. Users of forecasters’ predict_proba should ensure that skpro is installed in the environment.

  • The probability distributions module sktime.proba deprecated and will be fully replaced by skpro in sktime 0.38.0. Until sktime 0.38.0, imports from sktime.proba will continue working, defaulting to sktime.proba if skpro is not present, otherwise redirecting imports to skpro objects. From sktime 0.35.0, an error will be raised if skpro is not present in the environment, otherwise imports are redirected to skpro. Direct or indirect users of sktime.proba should ensure skpro is installed in the environment. Direct users of the sktime.proba module should, in addition, replace any imports from sktime.proba with imports from skpro.distributions.

Contents#

Contributors#

:user:`fkiraly`, :user:`hliebert`, :user:`yarnabrina`

Version 0.31.2 - 2024-08-13#

Hotfix release, released after hotfix release 0.32.1, to apply the same hotfix to 0.31.X versions as well.

Hotfix for using make_reduction with not fully sklearn compliant tabular regressors such as from catboost.

For last non-maintenance content updates, see 0.31.1.

Contents#

  • [BUG] fix make_reduction type inference for non-sklearn estimators

Notes#

This is a hotfix for 0.31.1 release, fixing a regression. This release is not contained in the 0.32.0 or 0.32.1 releases.

Version 0.31.1 - 2024-08-10#

Highlights#

Dependency changes#

  • holiday (transformations soft dependency) bounds have been updated to >=0.29,<0.54

  • dask (data container and parallelization back-end) bounds have been updated to <2024.8.1

Core interface changes#

BaseObject and base framework#

  • implementers no longer need to set the package_import_alias tag when estimator dependencies have a different import name than the PEP 440 package name. All internal logic now only uses the PEP 440 package name. There is no need to remove the tag if already set, but it is no longer required.

  • estimators now have a tag capability:categorical_in_X: bool to indicate that the estimator can handle categorical features in the input data X. Such estimator can be used with categorical and string-valued features if X is passed in one of the pandas based mtypes.

  • the html representation of all objects now includes a link to the documentation of the object, and is now in line with the sklearn html representation.

Enhancements#

BaseObject and base framework#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Registry and search#

Time series anomalies, changepoints, segmentation#

Time series classification#

Transformations#

Test framework#

  • [ENH] make pyproject.toml parsing for differential testing more robust against non-package relevant changes (:pr:`6882`) :user:`fkiraly`

Vendor and onboard libraries#

Documentation#

Maintenance#

Fixes#

BaseObject and base framework#

Data types, checks, conversions#

Forecasting#

Registry and search#

  • [BUG] fix polymorphic estimators missing in estimator overview, e.g., pytorch-forecasting forecasters (:pr:`6803`) :user:`fkiraly`

Time series anomalies, changepoints, segmentation#

Transformations#

Visualization#

Contributors#

:user:`Abhay-Lejith`, :user:`Alex-JG3`, :user:`alexander-lakocy`, :user:`AlexeyOm`, :user:`bastisar`, :user:`benHeid`, :user:`ceroper`, :user:`DinoBektesevic`, :user:`fkiraly`, :user:`fnhirwa`, :user:`fr1ll`, :user:`gareth-brown-86`, :user:`geetu040`, :user:`hliebert`, :user:`julian-fong`, :user:`mateuszkasprowicz`, :user:`MBristle`, :user:`melinny`, :user:`Mitchjkjkjk`, :user:`mk406`, :user:`SaiRevanth25`, :user:`sbhobbes`, :user:`shlok191`, :user:`SultanOrazbayev`, :user:`szepeviktor`, :user:`XinyuWuu`, :user:`yarnabrina`, :user:`ZhipengXue97`

Version 0.31.0 - 2024-07-11#

Maintenance release:

  • scheduled deprecations and change actions

  • numpy 2 compatibility

  • code style and pre-commit updates, using ruff for linting

For last non-maintenance content updates, see 0.30.2.

Dependency changes#

  • numpy (core dependency) bounds have been updated to <2.1,>=1.21

  • skpro (soft dependency) bounds have been updated to >=2,<2.5.0

Deprecations and removals#

Time series anomalies, changepoints, segmentation#

  • The fmt argument in time series annotators is now deprecated. Users should use the predict and transform methods instead, predict instead of fmt="sparse", and transform instead of fmt="dense".

Time series classification#

  • The convert_y_to_keras method in deep learning classifiers has been removed. Users who have been using this method should instead use OneHotEncoder from sklearn directly, as convert_y_to_keras is a simple wrapper around OneHotEncoder with default settings.

Contents#

Contributors#

:user:`fkiraly`, :user:`fnhirwa`, :user:`yarnabrina`

Version 0.30.2 - 2024-07-04#

Highlights#

Dependency changes#

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.53

  • dask (data container and parallelization back-end) bounds have been updated to <2024.5.3

  • optuna is now a soft dependency, via the ForecastingOptunaSearchCV estimator, in the all_extras soft dependency set, with bounds <3.7

  • pytorch-forecasting is now a soft dependency, in the dl (deep learning) soft dependency set

  • skforecast is now a soft dependency, in the all_extras soft dependency set and the forecasting soft dependency set, with bounds <0.13,>=0.12.1

  • dtaidistance is now a soft dependency, in the all_extras soft dependency set and the alignment soft dependency set, with bounds <2.4

Core interface changes#

Forecasting#

The base forecaster interface now has a dedicated interface point for global forecasting or fine-tuning: in forecasters supporting global forecast, an y argument may be passed in predict, indicating new time series instances for a global forecast, or a context for foundation models. Forecasters capable of global forecasting or fine-tuning (this is the same interface point) are tagged with the tag capability:global_forecasting, value True.

The global forecasting and fine-tuning interfaces are currently experimental, and may undergo changes.

Users are invited to give feedback, and test the feature with the new pytorch-forecasting adapter.

Test framework#

  • 2nd and 3rd party extension packages can now use the parametrize_with_checks utility to set up granular API compliance tests. For detailed usage notes, consult the extender guide: Implementing Estimators.

  • various quality-of-life improvements have been made to facilitate indexing an estimator in the estimator overview and estimator search for developers of API compatible 2nd and 3rd party packages, without adding it directly to the main sktime repository. For detailed usage notes, consult the extender guide: Implementing Estimators, or inspect the Prophetverse forecaster as a worked example.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Registry and search#

Time series alignment#

Time series classification#

Time series regression#

Transformations#

Test framework#

Documentation#

Maintenance#

Fixes#

Benchmarking, Metrics, Splitters#

Data loaders#

Data types, checks, conversions#

  • [BUG] patch over pandas 2.2.X issue in freq timestamp/period round trip conversion for period start timestamps such as "MonthBegin" (:pr:`6574`) :user:`fkiraly`

Forecasting#

Time series classification#

Time series clustering#

Time series regression#

Test framework#

Transformations#

Contributors#

:user:`Abhay-Lejith`, :user:`benHeid`, :user:`benshaw2`, :user:`doberbauer`, :user:`emmanuel-ferdman`, :user:`ericjb`, :user:`felipeangelimvieira`, :user:`fkiraly`, :user:`fnhirwa`, :user:`gareth-brown-86`, :user:`geetu040`, :user:`iaryangoyal`, :user:`julian-fong`, :user:`ksharma6`, :user:`mk406`, :user:`shlok191`, :user:`Spinachboul`, :user:`TheoWeih`, :user:`XinyuWuu`, :user:`yarnabrina`, :user:`Z-Fran`

Version 0.30.1 - 2024-06-04#

Minimal maintenance update with actions consolidating onboard packages.

For last major feature update, see 0.29.1.

Contents#

Version 0.30.0 - 2024-06-03#

Major upgrade to the time series anomaly, changepoints, segmentation API (:user:`Alex-JG3`). Users should review the section in the release notes.

Kindly also note the python 3.8 End-of-life warning below.

Also includes scheduled deprecations and change actions.

For last major feature update, see 0.29.1.

Dependency changes#

  • joblib is now an explicit core dependency, with bounds <1.5,>=1.2.0. Previously, joblib was an indirect core dependency, via scikit-learn. Due to direct imports, this was changed to an explicit dependency.

  • scikit-learn (core dependency) bounds have been updated to >=0.24,<1.6.0

  • scikit-base (core dependency) bounds have been updated to >=0.6.1,<0.9.0

  • skpro (soft dependency) bounds have been updated to >=2,<2.4.0

  • kotsu is not longer a soft dependency required by the forecasting benchmarking framework. The kotsu package is no longer maintained, and its necessary imports have beend moved to sktime as private utilities until refactor. See :pr:`6514`.

  • pykalman (transformations soft dependency) has been forked into sktime, as sktime.libs.pykalman, as the original package is no longer maintained, see sktime issue 5414 or pykalman issue 109.

    • The package fork will be maintained in sktime.

    • Direct users of pykalman can replace imports from pykalman import x with equivalent imports from sktime.libs.pykalman import x.

    • Indirect users via the transformer KalmanFilterTransformerPK will not be impacted as APIs do not change, except that they no longer require the original pykalman package in their python environment.

Core interface changes#

The time series annotation, anomalies, changepoints, segmentation API has been fully reworked to be in line with scikit-base patterns, sktime tags, and to provide a more consistent and flexible interface.

  • the API provides predict methods for annotation labels, e.g., segments, outlier points, and a transform method for indicator series, for instance 1/0 indicator whether an anomaly is present at the time stamp.

  • the fmt argument used in some estimators is now deprecated, in favour of using predict or transform.

  • The type of annotation, e.g., change points or segmentation, is encoded by the new tag task used in time series annotators, with values anomaly_detection, segmentation, changepoint_detection.

  • Low-level methods allow polymorphic use of annotators, e.g., a changepoint detector to be used for segmentation, via predict_points or predict_segments. The predict method defaults to the type of annotation defined by task.

A full tutorial with examples will be created over the next release cycles, and further enhancements are planned.

Deprecations and removals#

Python 3.8 End-of-life#

sktime now requires Python version >=3.9. No errors will be raised on Python 3.8, but test coverage and support for Python 3.8 has been dropped.

Kindly note for context: python 3.8 will reach end of life in October 2024, and multiple sktime core dependencies, including scikit-learn, have already dropped support for 3.8.

Forecasting#

cINNForecaster has been renamed to CINNForecaster. The estimator is no longer available under its old name, after the deprecation period. Users should replace any imports of cINNForecaster with imports of CINNForecaster.

Enhancements#

Documentation#

Maintenance#

Contributors#

:user:`Alex-JG3`, :user:`dependabot[bot]`, :user:`fkiraly`, :user:`geetu040`, :user:`yarnabrina`

Version 0.29.1 - 2024-05-30#

Highlights#

Dependency changes#

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.50

  • pycatch22 (transformations soft dependency) bounds have been updated to <0.4.6

  • dtw-python (distances and alignment soft dependency) bounds have been updated to >=1.3,<1.6

  • dask (data container and parallelization back-end) bounds have been updated to <2024.5.2

  • transformers (forecasting soft dependency) bounds have been updated to <4.41.0

Core interface changes#

Benchmarking, Metrics, Splitters#

  • all metrics for point forecasts now support weighting, via the sample_weight parameter. If passed, the metric will be weighted by the sample weights. For hierarchical data, the weights are applied to the series level, in this case all series need to have same length. Probabilistic metrics do not support weighting yet, this will be added in a future release.

Time series alignment#

  • all time series aligners now possess the capability:unequal_length tag, which is True if the aligner can handle time series of unequal length, and False otherwise. An informative error message, based on the tag, is now raised if an aligner not supporting unequal length time series is used on such data.

Deprecations and removals#

Time series classification#

  • The convert_y_to_keras method in deep learning classifiers has been deprecated and will be removed in 0.31.0. Users who have been using this method should instead use OneHotEncoder from sklearn directly, as convert_y_to_keras is a simple wrapper around OneHotEncoder with default settings.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data loaders#

Data types, checks, conversions#

Forecasting#

Time series alignment#

Time series classification#

Transformations#

Test framework#

Visualization#

Documentation#

Maintenance#

Fixes#

Forecasting#

Neural networks#

Time series classification#

Time series regression#

Transformations#

Test framework#

Visualization#

Contributors#

:user:`Abhay-Lejith`, :user:`ArthrowAbstract`, :user:`benHeid`, :user:`cedricdonie`, :user:`ericjb`, :user:`fkiraly`, :user:`fnhirwa`, :user:`helloplayer1`, :user:`ishanpai`, :user:`luca-miniati`, :user:`meraldoantonio`, :user:`ninedigits`, :user:`pranavvp16`, :user:`sharma-kshitij-ks`, :user:`shlok191`, :user:`yarnabrina`, :user:`YelenaYY`

Version 0.29.0 - 2024-04-28#

Kindly note the python 3.8 End-of-life warning below.

Maintenance release:

  • scheduled deprecations and change actions

  • optimization of test collection speed

For last non-maintenance content updates, see 0.28.1.

Dependency changes#

  • sktime now requires scikit-base>=0.6.1 (core dependency), this has changed from previously no lower bound.

Deprecations and removals#

Python 3.8 End-of-life#

From sktime 0.30.0, sktime will require Python version >=3.9. No errors will be raised, but test coverage and support for Python 3.8 will be dropped from 0.30.0 onwards.

Kindly note for context: python 3.8 will reach end of life in October 2024, and multiple sktime core dependencies, including scikit-learn, have already dropped support for 3.8.

Forecasting#

cINNForecaster has been renamed to CINNForecaster. The estimator is available under its past name at its current location until 0.30.0, when the old name will be removed. To prepare for the name change, replace any imports of cINNForecaster with imports of CINNForecaster.

Transformations#

  • The n_jobs parameter in the Catch22 transformer has been removed. Users should pass parallelization backend parameters via set_config instead. To specify n_jobs, use any of the backends supporting it in the backend:parallel configuration, such as "loky" or "multithreading". The n_jobs parameter should be passed via the backend:parallel:params configuration. To retain previous behaviour, with a specific setting of n_jobs=x, use set_config(**{"backend:parallel": "loky", "backend:parallel:params": {"n_jobs": x}}).

Contents#

Contributors#

:user:`fkiraly`, :user:`geetu040`, :user:`yarnabrina`

Version 0.28.1 - 2024-04-25#

Highlights#

Dependency changes#

  • dask (data container and parallelization back-end) bounds have been updated to <2024.4.2

  • arch (transformation and parameter estimation soft dependency) bounds have been updated to >=5.6,<7.1.0

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.48

  • mne (transformations soft dependency) bounds have been updated to >=1.5,<1.8

Core interface changes#

All objects and estimators now can, in addition to the existing PEP 440 package dependency specifier tags, specify PEP 508 compatible environment markers for their dependencies, via the env_marker tag. Values should be PEP 508 compliant strings, e.g., platform_system!="Windows".

This allows for more fine-grained control over the dependencies of estimators, where needed, e.g., for estimators that require specific operating systems.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Forecasting#

Neural networks#

Probability distributions and simulators#

Time series classification#

Time series clustering#

Time series regression#

  • [ENH] k-nearest neighbors regressor: support for non-brute algorithms and non-precomputed mode to improve memory efficiency (:pr:`6217`) :user:`Z-Fran`

Transformations#

  • [ENH] make TabularToSeriesAdaptor compatible with sklearn transformers that accept only y, e.g., LabelEncoder (:pr:`5982`) :user:`fkiraly`

Test framework#

Documentation#

Maintenance#

Fixes#

Data loaders#

Forecasting#

Probability distributions and simulators#

Time series clustering#

Time series regression#

Transformations#

Contributors#

:user:`Anteemony`, :user:`astrogilda`, :user:`benHeid`, :user:`duydl`, :user:`fkiraly`, :user:`geetu040`, :user:`iamSathishR`, :user:`julian-fong`, :user:`MihirsinhChauhan`, :user:`MMTrooper`, :user:`mobley-trent`, :user:`morestart`, :user:`ninedigits`, :user:`pranavvp16`, :user:`Ram0nB`, :user:`SamruddhiNavale`, :user:`shlok191`, :user:`slavik57`, :user:`tm-slavik57`, :user:`toandaominh1997`, :user:`vandit98`, :user:`yarnabrina`, :user:`Z-Fran`

Version 0.28.0 - 2024-03-27#

Maintenance release:

  • scheduled deprecations and change actions

  • support for pandas 2.2.X

For last non-maintenance content updates, see 0.27.1.

Dependency changes#

  • sktime now supports pandas 2.2.X, bounds have been updated to <2.3.0,>=1.1.

  • temporian (transformations soft dependency) bounds have been updated to >=0.7.0,<0.9.0.

  • pykalman-bardo dependencies have been replaced by the original fork pykalman. pykalman-bardo has been merged back into pykalman, which is no longer abandoned. This is a soft dependency, and the switch does not affect users installing sktime using one of its dependency sets.

Deprecations and removals#

Forecasting#

  • in ProphetPiecewiseLinearTrendForecaster, the seasonality parameters yearly_seasonality, weekly_seasonality and daily_seasonality now have default values of False. To retain previous behaviour, set these parameters explicitly to "auto".

Transformations#

  • The n_jobs parameter in the Catch22 transformer is deprecated and will be removed in 0.29.0. Users should pass parallelization backend parameters via set_config instead. To specify n_jobs, use any of the backends supporting it in the backend:parallel configuration, such as "loky" or "multithreading". The n_jobs parameter should be passed via the backend:parallel:params configuration. To retain previous behaviour, with a specific setting of n_jobs=x, use set_config(**{"backend:parallel": "loky", "backend:parallel:params": {"n_jobs": x}}).

  • The n_jobs parameter in the Catch22Wrapper transformer has been removed. Users should pass parallelization backend parameters via set_config instead. To specify n_jobs, use any of the backends supporting it in the backend:parallel configuration, such as "loky" or "multithreading". The n_jobs parameter should be passed via the backend:parallel:params configuration. To retain previous behaviour, with a specific setting of n_jobs=x, use set_config(**{"backend:parallel": "loky", "backend:parallel:params": {"n_jobs": x}}).

  • panel.dictionary_based.PAA has been renamed to PAAlegacy in 0.27.0, and sktime.transformations.series.PAA2 has been renamed to PAA. PAA is now the primary PAA implementation in sktime. After completion of the deprecation cycle, the estimators are no longer available under their previous names. To migrate dependent code to use the new names, do one of the following: 1. replace use of PAA from sktime.transformations.panel.dictionary_based by use of PAA2 from sktime.transformations.series.paa, switching parameter names appropriately, or 2. replace use of PAA from sktime.transformations.panel.dictionary_based by use of PAAlegacy from sktime.transformations.panel.dictionary_based, without change of parameter values.

  • panel.dictionary_based.SAX has been renamed to SAXlegacy in 0.27.0, while sktime.transformations.series.SAX2 has been renamed to SAX. SAX is now the primary SAX implementation in sktime, while the former SAX will continue to be available as SAXlegacy. After completion of the deprecation cycle, the estimators are no longer available under their previous names. To migrate dependent code to use the new names, do one of the following: 1. replace use of SAX from sktime.transformations.panel.dictionary_based by use of SAX2 from sktime.transformations.series.paa, switching parameter names appropriately, or 2. replace use of SAX from sktime.transformations.panel.dictionary_based by use of SAXlegacy from sktime.transformations.panel.dictionary_based, without change of parameter values.

Contents#

Version 0.27.1 - 2024-03-25#

Highlights#

Dependency changes#

  • temporian is now a soft dependency for sktime (transformations)

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.46

  • dtw-python bounds have been updated to ``>=1.3,<1.5`

Core interface changes#

  • time series splitters are now full first-class citizens. Interface conformance can now be checked with check_estimator.

Deprecations and removals#

Forecasting#

cINNForecaster will be renamed to CINNForecaster in sktime 0.29.0. The estimator is available under the future name at its current location, and will be available under its deprecated name until 0.30.0. To prepare for the name change, replace any imports of cINNForecaster with imports of CINNForecaster.

Enhancements#

Benchmarking, Metrics, Splitters#

Data loaders#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Neural network templates#

Time series classification#

  • [ENH] remove private methods from parameters of ProximityForest, ProximityTree, and ProximityStump by :user:`fnhirwa` (:pr:`6046`)

Time series clustering#

Time series regression#

Transformations#

Test framework#

Documentation#

Maintenance#

Fixes#

Distances, kernels#

Estimator registry#

Forecasting#

Time series classification#

Time series regression#

Transformations#

Test framework#

Webpage#

Contributors#

:user:`Abhay-Lejith`, :user:`achoum`, :user:`albertoazzari`, :user:`Alex-JG3`, :user:`astrogilda`, :user:`benHeid`, :user:`Cyril-Meyer`, :user:`deysanjeeb`, :user:`duydl`, :user:`fkiraly`, :user:`fnhirwa`, :user:`fspinna`, :user:`geetu040`, :user:`Greyisheep`, :user:`HassnHamada`, :user:`ianspektor`, :user:`javiber`, :user:`julian-fong`, :user:`julnow`, :user:`KaustubhUp025`, :user:`kcentric`, :user:`ksharma6`, :user:`manuel-munoz-aguirre`, :user:`MBristle`, :user:`MEMEO-PRO`, :user:`meraldoantonio`, :user:`nilesh05apr`, :user:`pranavvp16`, :user:`SaiRevanth25`, :user:`sahusiddharth`, :user:`shankariraja`, :user:`stevcabello`, :user:`tiloye`, :user:`tpvasconcelos`, :user:`vandit98`, :user:`XinyuWuu`, :user:`YashKhare20`

Version 0.27.0 - 2024-02-28#

Maintenance release:

  • scheduled deprecations and change actions

  • support for soft dependency numba 0.59 and numba under python 3.12

  • minor documentation updates, website updates for GSoC 2024

For last non-maintenance content updates, see 0.26.1.

Dependency changes#

  • numba bounds have been updated to <0.60.

Deprecations and removals#

Forecasting tuners#

  • in forecasting tuners ForecastingGridSearchCV, ForecastingRandomizedSearchCV, ForecastingSkoptSearchCV, the joblib backend specific parameters n_jobs, pre_dispatch have been removed. Users should pass backend parameters via the backend_params parameter instead. Direct replacements are backend='joblib', and n_jobs and pre_dispatch passed via backend_params.

Transformations#

  • in SplitterSummarizer, the remember_data argument has been removed. Users should use the fit_on and transform_on arguments instead. Logic identical argument replacements are: remember_data=True with fit_on='all_train' and transform_on='all_train'; and remember_data=False with "fit_on='transform_train' and transform_on='transform_train'.

  • panel.dictionary_based.PAA has been renamed to PAAlegacy in 0.27.0, and sktime.transformations.series.PAA2 has been renamed to PAA. PAA is now the primary PAA implementation in sktime, while the former PAA will continue to be available as PAAlegacy. Both estimators are also available under their former name until 0.28.0. To prepare for the name change, do one of the following: 1. replace use of PAA from sktime.transformations.panel.dictionary_based by use of PAA2 from sktime.transformations.series.paa, switching parameter names appropriately, or 2. replace use of PAA from sktime.transformations.panel.dictionary_based by use of PAAlegacy from sktime.transformations.panel.dictionary_based, without change of parameter values.

  • panel.dictionary_based.SAX has been renamed to SAXlegacy in 0.27.0, while sktime.transformations.series.SAX2 has been renamed to SAX. SAX is now the primary SAX implementation in sktime, while the former SAX will continue to be available as SAXlegacy. Both estimators are also available under their former name until 0.28.0. To prepare for the name change, do one of the following: 1. replace use of SAX from sktime.transformations.panel.dictionary_based by use of SAX2 from sktime.transformations.series.paa, switching parameter names appropriately, or 2. replace use of SAX from sktime.transformations.panel.dictionary_based by use of SAXlegacy from sktime.transformations.panel.dictionary_based, without change of parameter values.

Contents#

Documentation#

Maintenance#

Version 0.26.1 - 2024-02-26#

Highlights#

Dependency changes#

  • dask (data container and parallelization back-end) bounds have been updated to <2024.2.2

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.44

  • pyts is now a soft dependency for classification and transformations

Core interface changes#

Transformations#

All transformation dunders now automatically coerce sklearn transformers to sktime transformers, wrapping in TabularToSeriesAdaptor is no longer necessary when using sklearn transformers in sktime pipelines specified by dunders.

Deprecations and removals#

Transformations#

The n_jobs parameter of Catch22Wrapper has been deprecated and will be removed in sktime 0.28.0. Users should pass parallelization backend parameters via set_config instead.

Enhancements#

Benchmarking, Metrics, Splitters#

Data loaders#

Data types, checks, conversions#

Forecasting#

Time series annotation#

Time series classification#

Time series regression#

Transformations#

Test framework#

Fixes#

Forecasting#

Pipelines#

Probability distributions and simulators#

Time series classification#

Transformations#

Maintenance#

Documentation#

Contributors#

:user:`Abhay-Lejith`, :user:`achieveordie`, :user:`albahhar`, :user:`arnaujc91`, :user:`benHeid`, :user:`ciaran-g`, :user:`Cyril-Meyer`, :user:`eduardojp26`, :user:`fkiraly`, :user:`ivarzap`, :user:`ninedigits`, :user:`oleeviyababu`, :user:`sanjayk0508`, :user:`sbuse`, :user:`Vasudeva-bit`, :user:`yarnabrina`

Version 0.26.0 - 2024-01-27#

Maintenance release:

  • support for scikit-learn 1.4.X

  • scheduled deprecations

  • minor bugfix

For last non-maintenance content updates, see 0.25.1.

Dependency changes#

  • scikit-learn bounds have been updated to >=0.24.0,<1.5.0.

Deprecations and removals#

Benchmarking, Metrics, Splitters#

  • in forecasting evaluate, kwargs have been removed. Users should pass backend parameters via the backend_params parameter instead.

Data types, checks, conversions#

  • in check_is_mtype, the default of msg_return_dict has now changed to "dict"

Forecasting tuners#

  • in forecasting tuners ForecastingGridSearchCV, ForecastingRandomizedSearchCV, ForecastingSkoptSearchCV, use of joblib backend specific parameters n_jobs, pre_dispatch has been deprecated, and will be removed in sktime 0.27.0. Users should pass backend parameters via the backend_params parameter instead.

Time series classification#

  • In SimpleRNNClassifier, the num_epochs parameter has been renamed to n_epochs. The original parameter of name num_epochs has now been removed.

Time series regression#

  • In SimpleRNNRegressor, the num_epochs parameter has been renamed to n_epochs. The original parameter of name num_epochs has now been removed.

Contents#

Version 0.25.1 - 2024-01-24#

Highlights#

Dependency changes#

Core interface changes#

BaseObject and base framework#

  • estimators and objects now record author and maintainer information in the new tags "authors" and "maintainers". This is required only for estimators in sktime proper and compatible third party packages. It is also used to generate mini-package headers used in lookup functionality of the sktime webpage.

  • author and maintainer information in the sktime package is no longer recorded in CODEOWNERS, but in the new tags "authors" and "maintainers". Authors and maintainer do not need to action this change, as it has been carried out by the sktime maintainers. However, authors and maintainers are encouraged to check the information in the tags, and to flag any accidental omissions or errors.

Benchmarking, Metrics, Splitters#

  • forecasting point prediction metrics now also support parallelization via set_config, for broadcasting on hierarchical or multivariate data

Forecasting#

  • forecasters can now be prevented from storing a reference to all seen data as self._y and self._X by setting the config "remember_data" to False via set_config. This is useful for serialization of forecasters. Currently, the setting is only supported for a combination of data and forecasters where instance or variable broadcasting is not triggered, but the feature will be extended to all situations in the future.

Parameter estimation and hypothesis testing#

  • Parameter plugin or estimation based parameter tuning estimators can now be quickly constructed with the * dunder, which will construct a PluginParamsForecaster or PluginParamsTransformer with all fitted parameters (get_fitted_params) of the left element plugged in into the right element (set_params), where parameter names match. For instance, SeasonalityACF() * Deseasonalizer() will construct a Deseasonalizer whose sp (seasonality period) parameter is tuned by SeasonalityACF, estimating sp via the ACF significance criterion on the series.

  • The * dunder binds to the left, for instance Differencer() * SeasonalityACF() * Deseasonalizer() will construct a Deseasonalizer whose sp (seasonality period) parameter is tuned by SeasonalityACF, estimating sp via the ACF significance criterion on first differenced data (for stationarity). Here first differencing is not applied to the Deseasonalizer, but only to the input of SeasonalityACF, as the first * constructs a parameter estimator, and the second * plugs in the parameter estimator into the Deseasonalizer.

Transformations#

  • transformations, i.e., BaseTransformer descendant instances, can now also return None in _transform, this is interpreted as empty data.

Deprecations and removals#

Transformations#

  • panel.dictionary_based.PAA will be renamed to PAAlegacy in sktime 0.27.0, while sktime.transformations.series.PAA2 will be renamed to PAA. PAA2 will become the primary PAA implementation in sktime, while the current PAA will continue to be available as PAAlegacy. Both estimators are also available under their future name at their current location, and will be available under their deprecated name until 0.28.0. To prepare for the name change, do one of the following: 1. replace use of PAA from sktime.transformations.panel.dictionary_based by use of PAA2 from sktime.transformations.series.paa, switching parameter names appropriately, or 2. replace use of PAA from sktime.transformations.panel.dictionary_based by use of PAAlegacy from sktime.transformations.panel.dictionary_based, without change of parameter values.

  • panel.dictionary_based.SAX will be renamed to SAXlegacy in sktime 0.27.0, while sktime.transformations.series.SAX2 will be renamed to SAX. SAX2 will become the primary SAX implementation in sktime, while the current SAX will continue to be available as SAXlegacy. Both estimators are also available under their future name at their current location, and will be available under their deprecated name until 0.28.0. To prepare for the name change, do one of the following: 1. replace use of SAX from sktime.transformations.panel.dictionary_based by use of SAX2 from sktime.transformations.series.paa, switching parameter names appropriately, or 2. replace use of SAX from sktime.transformations.panel.dictionary_based by use of SAXlegacy from sktime.transformations.panel.dictionary_based, without change of parameter values.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data types, checks, conversions#

Forecasting#

Parameter estimation and hypothesis testing#

Probability distributions and simulators#

Time series classification#

Transformations#

Test framework#

Fixes#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

  • [BUG] Fix dynamic make_forecasting_scorer for newer sklearn metrics (:pr:`5717`) :user:`fkiraly`

  • [BUG] fix test_evaluate_error_score to skip test of expected warning raised if the joblib backend is "loky" or "multiprocessing" (:pr:`5780`) :user:`fkiraly`

Data loaders#

Data types, checks, conversions#

Forecasting#

Pipelines#

Time series classification#

Time series regression#

  • [BUG] fix predict output conversion failure in BaseClassifier, BaseRegressor, if y_inner_mtype tag is a list (:pr:`5680`) :user:`fkiraly`

Transformations#

Test framework#

Maintenance#

Documentation#

Contributors#

:user:`achieveordie`, :user:`aiwalter`, :user:`alex-jg3`, :user:`aurumnpegasus`, :user:`benheid`, :user:`chrico-bu-uab`, :user:`corradomio`, :user:`DManowitz`, :user:`fkiraly`, :user:`hliebert`, :user:`NguyenChienFelix33`, :user:`ninedigits`, :user:`kurayami07734`, :user:`steenrotsman`, :user:`tpvasconcelos`, :user:`tvdboom`, :user:`yarnabrina`

Version 0.25.0 - 2023-12-26#

Release with base class updates and scheduled deprecations:

For last larger feature update, see 0.24.2.

Core interface changes#

Time series classification and regression#

  • the base class framework now supports multioutput classifiers or regressors. All classifiers and regressors are now able to make multioutput predictions, including all third party classifiers and regressors. A multioutput y can now be passed, in the form of a 2D np.ndarray or pd.DataFrame, with one column per output. The predict method will then return a predicted output of the same type. To retain downwards compatibility, predict will always return a 1D np.ndarray for univariate outputs, this is currently not subject to deprecation.

  • Genuinely multioutput classifiers and regressors are labelled with the new tag capability:multioutput being True. All other classifiers and regressors broadcast by column of y, and a parallelization backend can be selected via set_config, by setting the backend:parallel and backend:parallel:params configuration flags, see the set_config docstring for details. Broadcasting extends automatically to all existing third party classifiers and regressors via base class inheritance once sktime is updated, the estimator classes themselves do not need to be updated.

  • classifiers and regressors now have a tag y_inner_mtype, this allows extenders to specify an internal mtype, of Table scitype. The mtype specified i the tag is the guaranteed mtype of y seen in the private _fit method. The default is the same as previously implicit, the numpy1D mtype. Therefore, third party classifiers and regressors do not need to be updated, and should be fully upwards compatible.

Transformations#

  • the base class framework now supports transformations that aggregate Panel data to Series data, i.e., panel-to-series transformers, e.g., averaging. Such transformers are identified by the tags scitype:transform-input being "Panel", and scitype:transform-output being "Series". An example is Merger.

Deprecations and removals#

Benchmarking, Metrics, Splitters#

  • time series splitters, i.e., descendants of BaseSplitter, have moved from sktime.forecasting.model_selection to sktime.split. They are no longer available in the old location sktime.forecasting.model_selection, since 0.25.0. Forecasting tuners are still present in sktime.forecasting.model_selection, and their locationn is not subject to deprecation.

  • in forecasting evaluate, the order of columns in the return data frame has changed. Users should consult the docstring of evaluate for details.

  • in forecasting evaluate, the compute argument was removed, after deprecation in 0.24.0. Its purpose was to distinguish lazy or eager evaluation in the dask parallelization backend. To switch between lazy and eager evaluation, users should instead select dask or dask_lazy via the backend parameter.

  • in forecasting evaluate, kwargs are deprecated, removal has been moved to 0.26.0. Users should pass backend parameters via the backend_params parameter instead.

Contents#

Contributors#

:user:`benHeid`, :user:`fkiraly`, :user:`Vasudeva-bit`, :user:`yarnabrina`

Version 0.24.2 - 2023-12-24#

Highlights#

Dependency changes#

  • dask (data container and parallelization back-end) bounds have been updated to <2023.12.2.

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.40.

Core interface changes#

Forecasting#

  • fit_predict now allows specification of X_pred argument for predict. If passed, X_pred is used as X in predict, instead of X. This is useful for forecasters that expect X to be subset to the forecasting horizon.

  • custom joblib backends for hierarchical and multivariate forecast broadcasting are now supported. To use a custom joblib backend, use set_config to set the backend:parallel configuration flag to "joblib", and set the backend parameter in the dict set via backend:parallel:params to the name of the custom joblib backend. Further backend parameters can be passed in the same dict. See docstring of set_config for details.

Time series classification#

  • In SimpleRNNClassifier, the num_epochs parameter is deprecated and has been renamed to n_epochs. num_epochs can be used until sktime 0.25.last, but will be removed in sktime 0.26.0. A deprecation warning is raised if num_epochs is used.

Time series regression#

  • In SimpleRNNRegressor, the num_epochs parameter is deprecated and has been renamed to n_epochs. num_epochs can be used until sktime 0.25.last, but will be removed in sktime 0.26.0. A deprecation warning is raised if num_epochs is used.

Transformations#

  • custom joblib backends for hierarchical and multivariate transformer broadcasting are now supported. To use a custom joblib backend, use set_config to set the backend:parallel configuration flag to "joblib", and set the backend parameter in the dict set via backend:parallel:params to the name of the custom joblib backend. Further backend parameters can be passed in the same dict. See docstring of set_config for details.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data types, checks, conversions#

Forecasting#

Parameter estimation and hypothesis testing#

Time series annotation#

Time series classification#

Time series clustering#

Transformations#

Visualization#

Test framework#

Fixes#

BaseObject and base framework#

Data types, checks, conversions#

Forecasting#

Transformations#

Visualization#

Maintenance#

Documentation#

Contributors#

:user:`adamkells`, :user:`aeyazadil`, :user:`Alex-JG3`, :user:`benHeid`, :user:`ciaran-g`, :user:`fkiraly`, :user:`fspinna`, :user:`joanlenczuk`, :user:`NguyenChienFelix33`, :user:`onyekaugochukwu`, :user:`rahulporuri`, :user:`sbuse`, :user:`sd2k`, :user:`sssilvar`, :user:`tpvasconcelos`, :user:`Vasudeva-bit`, :user:`VyomkeshVyas`, :user:`wayneadams`, :user:`yarnabrina`

Version 0.24.1 - 2023-11-05#

Highlights#

Dependency changes#

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.36.

  • torch is now a managed soft dependency for neural networks (dl test set)

Core interface changes#

  • if using scikit-base>=0.6.1: set_params now recognizes unique __-separated suffixes as aliases for full parameter string, e.g., set_params(foo="bar") instead of set_params(estimator__detrender__forecaster__supercalifragilistic__foo="bar"). This extends to use of parameter names in tuners, e.g., ForecastingGridSearchCV grids, and estimators internally using set_params. The behaviour of get_params is unchanged.

  • sktime now supports cloudpickle for estimator serialization, with pickle being the standard serialization backend. To select the serialization backend, use the serialization_format parameter of estimators’ save method. cloudpickle is already a soft dependency, therefore no dependency change is required.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Forecasting#

MLOps & Deployment#

Neural networks#

Parameter estimation and hypothesis testing#

Time series annotation#

Time series classification#

Transformations#

Maintenance#

Documentation#

Fixes#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

  • [BUG] fix bug in deprecation logic of kwargs in evaluate that always set backend to dask_lazy if deprecated kwargs are passed (:pr:`5469`) :user:`fkiraly`

Forecasting#

  • [BUG] Fix pandas FutureWarning for silent upcasting (:pr:`5395`) :user:`tpvasconcelos`

  • [BUG] fix predict function of make_reduction (recursive, global) to work with tz aware data (:pr:`5464`) :user:`ciaran-g`

  • [BUG] in TransformedTargetForecaster, ensure correct setting of ignores-exogenous-X tag if forecaster ignores X, but at least one transformer uses y=X, e.g., feature selector (:pr:`5521`) :user:`fkiraly`

Parameter estimation and hypothesis testing#

Time series annotation#

Time series classification#

Transformations#

Visualization#

  • [BUG] fix plot_series prediction interval plotting for 3 or less points in forecasting horizon (:pr:`5494`) :user:`fkiraly`

Contributors#

:user:`achieveordie`, :user:`adamkells`, :user:`Alex-JG3`, :user:`ali-parizad`, :user:`ciaran-g`, :user:`fkiraly`, :user:`JonathanBechtel`, :user:`kianmeng`, :user:`luca-miniati`, :user:`pseudomo`, :user:`Ram0nB`, :user:`sz85512678`, :user:`szepeviktor`, :user:`tpvasconcelos`, :user:`Vasudeva-bit`, :user:`yarnabrina`, :user:`YHallouard`

Version 0.24.0 - 2023-10-13#

Maintenance release:

  • support for python 3.12

  • scheduled deprecations

  • soft dependency updates

For last non-maintenance content updates, see 0.23.1.

Dependency changes#

  • pykalman dependencies have been replaced by the fork pykalman-bardo. pykalman is abandoned, and pykalman-bardo is a maintained fork. This is a soft dependency, and the switch does not affect users installing sktime using one of its dependency sets. Mid-term, we expect pykalman-bardo to be merged back into pykalman, after which the dependency will be switched back to pykalman.

  • holidays (transformations soft dependency) bounds have been updated to >=0.29,<0.35.

  • numba (classification, regression, and transformations soft dependency) bounds have been updated to >=0.53,<0.59.

  • skpro (forecasting soft dependency) bounds have been updated to >=2.0.0,<2.2.0.

Deprecations and removals#

  • in forecasting tuners ForecastingGridSearchCV, ForecastingRandomizedSearchCV, ForecastingSkoptSearchCV, the default of parameter tune_by_variable has been switched from True to False.

Contents#

Contributors#

:user:`fkiraly`, :user:`mbalatsko`

Version 0.23.1 - 2023-10-12#

Highlights#

Dependency changes#

  • attrs is no longer a soft dependency (time series annotation) of sktime

  • arch is now a soft dependency (forecasting) of sktime

  • skpro is now a soft dependency (forecasting) of sktime

Core interface changes#

BaseObject and base framework#

  • the sktime framework now inspects estimator type primarily via the tag object_type. This is not a breaking change as inheriting from respective base classes automatically sets the tag as well, via the tag inheritance system. The type inspection utility scitype is also unaffected. For extenders, the change enables polymorphic and dynamically typed estimators.

  • warnings from sktime can now be silenced on a per-estimator basis via the warnings config that can be set via set_config (see docstring).

Forecasting#

  • hierarchical and multivariate forecasts can now use parallelization and distributed backends, including joblib and dask, if the forecast is obtained via broadcasting. To enable parallelization, set the backend:parallel and/or the backend:parallel:params configuration flags via set_config (see docstring) before fitting the forecaster. This change instantaneously extends to all existing third party forecasters that are interface conformant, via inheritance from the updated base framework.

Time series regression#

  • time series regressors now allow single-column pd.DataFrame as y. Current behaviour is unaffected, this is not a breaking change for existing code.

Transformations#

  • hierarchical and multivariate transformers can now use parallelization and distributed backends, including joblib and dask, if the transformation is obtained via broadcasting. To enable parallelization, set the backend:parallel and/or the backend:parallel:params configuration flags via set_config (see docstring) before fitting the transformer. This change instantaneously extends to all existing third party transformers that are interface conformant, via inheritance from the updated base framework.

Deprecations and removals#

Benchmarking, Metrics, Splitters#

  • time series splitters, i.e., descendants of BaseSplitter, have moved from sktime.forecasting.model_selection to sktime.split. The old location model_selection is deprecated and will be removed in 0.25.0. Until 0.25.0, it is still available but will raise an informative warning message.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data loaders#

Forecasting#

Time series alignment#

Time series distances and kernels#

Time series regression#

Transformations#

Testing framework#

Maintenance#

Documentation#

Fixes#

Benchmarking, Metrics, Splitters#

Forecasting#

Time series alignment#

Time series distances and kernels#

Transformations#

Visualization#

Contributors#

:user:`Abhay-Lejith`, :user:`achieveordie`, :user:`adamkells`, :user:`Alex-JG3`, :user:`alexfilothodoros`, :user:`alhridoy`, :user:`ali-parizad`, :user:`arnaujc91`, :user:`benHeid`, :user:`BensHamza`, :user:`fkiraly`, :user:`geronimos`, :user:`hazrulakmal`, :user:`julnow`, :user:`kurayami07734`, :user:`luca-miniati`, :user:`mdsaad2305`, :user:`pirnerjonas`, :user:`ShreeshaM07`, :user:`Vasudeva-bit`, :user:`xansh`, :user:`yarnabrina`

Version 0.23.0 - 2023-09-17#

Maintenance release - scheduled deprecations.

For last non-maintenance content updates, see 0.22.1.

Contents#

  • end of change period in column naming convention for univariate probabilistic forecasts, see below for details for users and developers

  • scheduled 0.23.0 deprecation actions

Deprecations and removals#

Forecasting - change of column naming for univariate probabilistic forecasts#

Returns of forecasters’ predict_quantiles and predict_intervals are now consistent between the univariate case and multivariate cases: the name of the uppermost (0-indexed) column level is always the variable name.

Previously, in the univariate case, it was always Coverage or Quantiles.

This has been preceded by a change transition period since 0.21.0. See the 0.21.0 and 0.22.0 changelogs for further details.

Users and extenders who have not yet completed their downstream actions should remain on 0.22.X until they have completed their actions, and then upgrade to 0.23.0 or later.

Version 0.22.1 - 2023-09-17#

Highlights#

Dependency changes#

  • sktime now supports pandas 2.1.X

  • sktime now supports holidays 0.32 (soft dependency)

  • sktime now supports statsforecast 1.6.X (soft dependency)

Core interface changes#

Transformations#

  • Transformations (BaseTransformer descendants) now have two new optional tags: "capability:inverse_transform:range" and "capability:inverse_transform:exact". The tags should be specified in the _tags class attribute of the transformer, in case the transformer implements inverse_transform and has the restrictions described below.

    • "capability:inverse_transform:range" specifies the domain of invertibility of the transform, must be list [lower, upper] of float”. This is used for documentation and testing purposes.

    • "capability:inverse_transform:exact" specifies whether inverse_transform is expected to be an exact inverse to transform. This is used for documentation and testing purposes.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Forecasting#

Pipelines#

Probability distributions and simulators#

Time series classification#

Time series distances and kernels#

Transformations#

Testing framework#

Maintenance#

Documentation#

Fixes#

Benchmarking, Metrics, Splitters#

Forecasting#

Pipelines#

Time series annotation#

Transformations#

Visualisations#

Contributors#

:user:`Akash190104`, :user:`Alex-JG3`, :user:`alexfilothodoros`, :user:`arnaujc91`, :user:`benHeid`, :user:`BensHamza`, :user:`DaneLyttinen`, :user:`fkiraly`, :user:`hazrulakmal`, :user:`heerme`, :user:`lnthach`, :user:`JonathanBechtel`, :user:`luca-miniati`, :user:`mattiasatqubes`, :user:`Ram0nB`, :user:`SmirnGregHM`, :user:`sniafas`, :user:`vrcarva`, :user:`yarnabrina`

Version 0.22.0 - 2023-08-18#

Maintenance release - dependency updates, scheduled deprecations.

For last non-maintenance content updates, see 0.21.1.

Contents#

  • midpoint of change period in column naming convention for univariate probabilistic forecasts, in preparation for 0.23.0 - see below for details for users and developers

  • scheduled 0.22.0 deprecation actions

Dependency changes#

  • the deprecated has been removed as a core dependency of sktime. No action is required of users or developers, as the package was used only for internal deprecation actions.

Deprecations and removals#

Forecasting - change of column naming for univariate probabilistic forecasts#

From 0.23.0, returns of forecasters’ predict_quantiles and predict_intervals in the univariate case will be made consistent with the multivariate case: the name of the uppermost (0-indexed) column level will always be the variable name. Previously, in the univariate case, it was always Coverage or Quantiles.

The transition period is managed by the legacy_interface argument of the two methods. See the 0.21.0 changelog for further details.

In 0.22.0, the legacy_interface argument defaults have been changed to False, which ensures outputs are of the future, post-change naming convention.

Reminder of recommended action for users:

  • Users should aim to upgrade dependent code to legacy_interface=False behaviour by 0.21.last, and to remove legacy_interface arguments after 0.22.0 and before 0.23.0. Users who need more time to upgrade dependent code can set legacy_interface=True until 0.22.last.

Extenders should use the new "pred_int:legacy_interface:testcfg" config field to upgrade their third party extensions, this is as described in the 0.21.0 changelog.

Transformations#

  • in DateTimeFeatures, the feature hour_of_week feature has been added to the "comprehensive" feature set. Users who would like to continue using the previous feature set should use the argument manual_selection instead.

List of PR#

Version 0.21.1 - 2023-08-16#

Highlights#

Core interface changes#

Time series alignment#

  • Time series aligners now accept all Panel mtypes as input, from only df-list previously. This is not a breaking change.

  • Time series aligners now have a tag "alignment_type", which can have values "full" and "partial", to distinguish between a full and partial alignment produced by get_alignment. The tag can depend on parameters of the aligner.

Time series distances and kernels#

  • Pairwise transformers now have a tag "pwtrafo_type", which can have values "kernel", "distance", or "other", to allow the user to inspect whether the transformer is a kernel or distance transformer. This does not impact the interface. The tag is mainly for search and retrieval by the user. This also allows to check against methodological requirements of estimators, e.g., support vector machines requiring a kernel. However, as stated, this is not enforced by the base interface.

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

Forecasting#

Parameter estimators#

Probability distributions and simulators#

  • [ENH] add length option to _bottom_hier_datagen hierarchical data generator, speed up ReconcilerForecaster doctest (:pr:`4979`) :user:`fkiraly`

Time series alignment#

Time series classification#

Time series clustering#

Time series distances and kernels#

Transformations#

Testing framework#

Maintenance#

Documentation#

Fixes#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

Data types, checks, conversions#

Forecasting#

Parameter estimators#

Time series alignment#

Time series classification#

Time series clustering#

Transformations#

Contributors#

:user:`Abelarm`, :user:`achieveordie`, :user:`Alex-JG3`, :user:`benHeid`, :user:`davidgilbertson`, :user:`eenticott-shell`, :user:`eyjo`, :user:`fkiraly`, :user:`Gigi1111`, :user:`hazrulakmal`, :user:`hliebert`, :user:`janpipek`, :user:`julia-kraus`, :user:`luca-miniati`, :user:`MBristle`, :user:`MCRE-BE`, :user:`Ram0nB`, :user:`tarpas`, :user:`Verogli`, :user:`VyomkeshVyas`, :user:`yarnabrina`

Version 0.21.0 - 2023-07-19#

Maintenance release - dependency updates, scheduled deprecations.

For last non-maintenance content updates, see 0.20.1.

Contents#

  • sktime is now compatible with sklearn 1.3.X

  • start of change in column naming convention for univariate probabilistic forecasts, in preparation for 0.23.0 - see below for details for users and developers

  • scheduled 0.21.0 deprecation actions

Dependency changes#

  • scikit-learn version bounds now allow versions 1.3.X

  • the deprecated package is deprecated as a core dependency of sktime, and will cease to be a dependency from 0.22.0 onwards. No action is required of users or developers, as the package was used only for internal deprecation actions.

  • pycatch22 has been added back as a soft dependency, after python 3.7 EOL

Deprecations and removals#

Forecasting - change of column naming for univariate probabilistic forecasts#

From 0.23.0, returns of forecasters’ predict_quantiles and predict_intervals in the univariate case will be made consistent with the multivariate case: the name of the uppermost (0-indexed) column level will always be the variable name. Previously, in the univariate case, it was always Coverage or Quantiles, irrespective of the variable name present in y, whereas in the multivariate case, it was always the variable names present in y.

The change will take place over two MINOR cycles, 0.21.X (early phase) and 0.22.X (late phase), the union of which makes up the change period. We explain the schedule below, for users, and then for maintainers of third party forecasters (“extenders”).

Users should use a new, temporary legacy_interface argument to handle the change:

  • Users - change period. The two forecaster methods predict_quantiles and predict_intervals will have a new boolean argument, legacy_interface. If True, the methods produce returns with the current naming convention. If False, the methods produce returns with the future, post-change naming convention.

  • Users - early and late phase. In the early phase (0.21.X), the default value of legacy_interface will be True. In the late phase (0.22.X), the default value of legacy_interface will be False. This change of default will occur in 0.22.0, and may be breaking for users who do not specify the argument.

  • Users - post-deprecation. In 0.23.0, the legacy_interface argument will be removed. The methods will always produce returns with the future, post-change naming convention. This change may be breaking for users who do not remove the argument by 0.23.0.

  • Appropriate deprecation warnings will be raised from 0.21.0 onwards, until 0.22.last.

  • Users - recommended change actions. Users should aim to upgrade dependent code to legacy_interface=False behaviour by 0.21.last, and to remove legacy_interface arguments after 0.22.0 and before 0.23.0. Users who need more time to upgrade dependent code can set legacy_interface=True until 0.22.last.

Extenders should use the new "pred_int:legacy_interface:testcfg" config field to upgrade their third party extensions:

  • Extenders - change period. The config field "pred_int:legacy_interface:testcfg" has been added to all descendants of the BaseForecaster class. This config controls the contract that the check_estimator and pytest tests check against, and can be set by set_config.

  • The default value of the tag is "auto" - this means that the tests will check against the current naming convention in the early phase (0.21.X), and against the future naming convention in the late phase (0.22.X), for _predict_quantiles or _predict_intervals having the standard signature, without legacy_interface. From 0.23.0 on, the tag will have no effect.

  • In the change period: if the tag is set to "new", the tests will always check against the new interface; if the tag is set to "old", the tests will check against the old interface, irrespective of the phase. From 0.23.0, the setting will have no effect and the tests will always check against the new interface.

  • Extenders - recommended change actions: Extenders should aim to upgrade their third party extensions to "pred_int:legacy_interface:testcfg=new" behaviour by 0.21.last. Tests against late stage and post-deprecation behaviour can be enforced by setting forecaster.set_config({"pred_int:legacy_interface:testcfg": "new"}), before passing it to check_estimator. The set_config call can be removed after 0.22.0, and should be removed before 0.23.0, but will not be breaking if not removed.

  • Extenders with a substantial user base of their own can, alternatively, implement and release _predict_quantiles and _predict_intervals with a legacy_interface argument before 0.22.0, the default of which should be False from the beginning on (even in early phase). In this case, the "pred_int:legacy_interface:testcfg" tag should be set to "auto", and the tests will check both new and old behaviour. The legacy_interface argument can be removed after 0.23.0. This will result in the same transition experience for users of the extenders’ forecasters as for users of sktime proper.

List of PR#

Version 0.20.1 - 2023-07-14#

Highlights#

Core interface changes#

BaseObject#

  • object blueprint (specification) serialization/deserialization to string has been added. “blueprints” in this sense are object composites at init state, e.g., a pristine forecasting pipeline. All objects serialize by str coercion, e.g., str(my_pipeline), and deserialize via sktime.registry.craft : str -> object. The deserializer craft is a pseudo-inverse of the serializer str for a fixed python environment, so can be used for fully reproducible specification storage and sharing, e.g., in reproducible science or performance benchmarking.

  • further utilities registry.deps and registry.imports complement the serialization toolbox. In an environment with only core dependencies of sktime, the utility deps : str -> list[str] produces a list of PEP 440 soft dependency specifiers required to craft the serialized object (e.g., a forecasting pipeline) which can be used to set up a python environment install before crafting. The utility imports : str -> str produces a code block of all python compilable imports required to craft the serialized object.

  • the tag python_dependencies_alias was added to manage estimator specific dependencies where the package name differs from the import name. See the estimator developer guide for further details.

Transformations#

  • the transformations base interface, i.e., estimators inheriting From BaseTransformer, now allow X=None in transform without raising an exception. Individual transformers may now implement their own logic to deal with X=None.

Enhancements#

BaseObject#

Benchmarking and Metrics#

Data loaders#

Forecasting#

Time series classification#

Time series regression#

Transformations#

Visualisations#

Maintenance#

Documentation#

Fixes#

Benchmarking and Metrics#

Forecasting#

Transformations#

Testing framework#

  • [BUG] fix sporadic failures in utils.plotting tests - set the matplotlib backend to agg to avoid that a GUI is triggered (:pr:`4781`) :user:`benHeid`

Contributors#

:user:`achieveordie`, :user:`alan191006`, :user:`benHeid`, :user:`BensHamza`, :user:`CTFallon`, :user:`felipeangelimvieira`, :user:`fkiraly`, :user:`GargiChakraverty-yb`, :user:`hazrulakmal`, :user:`JonathanBechtel`, :user:`kbpk`, :user:`mdsaad2305`, :user:`mgazian000`, :user:`mswat5`, :user:`VyomkeshVyas`, :user:`yarnabrina`

Version 0.20.0 - 2023-06-21#

Maintenance release - python 3.7 end-of-life maintenance update, scheduled deprecations.

For last non-maintenance content updates, see 0.19.2 and 0.19.1.

Contents#

  • python 3.7 is no longer supported by sktime, as python 3.7 end-of-life is imminent (June 27), with sktime dependencies already having dropped support.

  • pre-commit and coding style upgrades (3.8 plus)

  • scheduled 0.20.0 deprecation actions

Dependency changes#

  • numpy version bounds now allow versions 1.25.X

Deprecations and removals#

Python 3.7 end-of-life#

sktime no longer supports python 3.7 with sktime 0.20.0 and later.

python reaches end-of-life on Jun 27, 2023, and core dependencies of sktime have already dropped support for python 3.7 with their most recent versions (e.g., scikit-learn).

Time Series Classification#

ComposableTimeSeriesClassifier and WeightedEnsembleClassifier have finished their move to classification.ensemble, they are no longer importable in their original locations.

List of PR#

Contributors#

:user:`fkiraly`, :user:`jorenham`, :user:`yarnabrina`

Version 0.19.2 - 2023-06-19#

Highlights#

Core interface changes#

  • ForecastingHorizon and forecasters’ fit, predict now support range as input. Caveat: range(n) starts at 0 and ends at n-1. For an n-step-ahead forecast, including all n integer steps in the horizon, pass range(1, n+1).

Enhancements#

Forecasting#

Time series classification#

Documentation#

Maintenance#

Fixes#

BaseObject#

Benchmarking#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Contributors#

:user:`achieveordie`, :user:`fkiraly`, :user:`hazrulakmal`, :user:`hoesler`, :user:`mdsaad2305`, :user:`yarnabrina`

Version 0.19.1 - 2023-05-30#

Maintenance release - scheduled pandas dependency updates, scheduled deprecations.

For last non-maintenance content update, see 0.18.1.

Contents#

  • pandas 2 is now fully supported. All sktime native functionality remains compatible with pandas 1, >=1.1.0.

  • scheduled deprecation of tensorflow based probability interface.

Dependency changes#

  • pandas version bounds now allow versions 2.0.X in addition to currently supported pandas 1 versions. This concludes the interim period for experimental support and begins full support for pandas 2, with aim to support any pandas 2 version.

  • tensorflow-probability is no longer a dependency or soft dependency, it has also been removed from all dependency sets (including dl)

Deprecations and removals#

Python 3.7 end-of-life#

Python 3.7 reaches end-of-life on Jun 27, 2023, and core dependencies of sktime have already dropped support for python 3.7 with their most recent versions (e.g., scikit-learn).

sktime will drop support for python 3.7 with 0.20.0, or the first minor release after Jun 27, 2023, whichever is later.

Dependencies#

  • tensorflow-probability is no longer a dependency or soft dependency, it has also been removed from all dependency sets (including dl)

Forecasting#

  • The legacy_interface argument has been removed from forecasters’ predict_proba. The method now always returns a BaseDistribution object, in line with prior default behaviour, i.e., legacy_interface=False.

List of PR#

Version 0.19.0#

Skipped for maintenance purposes, should not be used. (yanked from pypi)

Version 0.18.1 - 2023-05-22#

Highlights#

Core interface changes#

Probability distributions#

  • specification of default sample sizes for Monte Carlo approximations now use the scikit-base config system

  • a quantile method was added, which returns a table of quantiles in the same format as BaseForecaster.predict_quantiles return quantile forecasts

  • a ppf method was added for returning quantiles

Enhancements#

Benchmarking#

Forecasting#

Probability distributions#

Time series alignment#

Time series classification#

Time series distances and kernels#

Transformations#

Testing framework#

Maintenance#

Documentation#

Fixes#

BaseObject, BaseEstimator#

Forecasting#

Probability distributions#

Time series distances and kernels#

Time series classification#

Time series regression#

Transformations#

Contributors#

:user:`achieveordie`, :user:`antonioramos1`, :user:`ArushikaBansal`, :user:`fkiraly`, :user:`hazrulakmal`, :user:`kbpk`, :user:`luca-miniati`, :user:`marrov`, :user:`mdsaad2305`, :user:`panozzaj`, :user:`sanjayk0508`, :user:`Taise228`, :user:`TonyZhangkz`, :user:`wasup-yash`, :user:`yarnabrina`

Version 0.18.0 - 2023-04-28#

Maintenance release - scheduled numba, scikit-base, pandas dependency updates, scheduled deprecations.

For last non-maintenance content update, see 0.17.2.

Contents#

  • numba has been changed to be a soft dependency. All numba based estimators continue working unchanged, but require explicit numba installation.

  • the base module of sktime has been factored out to scikit-base, the abstract base layer for scikit-learn like packages maintained by sktime

  • pandas 2 support continues in testing/experimental period until 0.18.last. All sktime native functionality is pandas 2 compatible, the transition period allows testing of deployments and custom extensions. See instructions below for upgrading dependent code to pandas 2, or remaining on pandas 1.

  • scheduled deprecation of tensorflow based probability interface and VectorizedDF methods.

Dependency changes#

  • numba is no longer a core dependency, it has changed to soft dependency

  • scikit-base is a new core dependency

Deprecations and removals#

Dependencies#

  • numba has changed from core dependency to soft dependency in sktime 0.18.0. To ensure functioning of setups of sktime code dependent on numba based estimators going forward, ensure to install numba in the environment explicitly, or install the all_extras soft dependency set which will continue to contain numba. Besides this, numba dependent estimators will function identically as before.

  • sktime’s base module has moved to a new core dependency, scikit-base, from sktime 0.18.0. This will not impact functionality or imports directly from sktime, or any usage.

  • tensorflow-probability will cease to be a soft dependency from 0.19.0, as the only dependency locus (forecasters’ old predict_proba return type) is being deprecated.

Data types, checks, conversions#

  • VectorizedDF.get_iloc_indexer was removed. Developers and users should use iter, __iter__, or get_iter_indices instead.

Forecasting#

  • forecasters’ predict_proba now by default returns a BaseDistribution. The old tensorflow-probability based return from pre-0.17.0 can still be obtained by setting the argument legacy_interface=False in predict_proba. This is useful for handling deprecation.

  • from 0.19.0, the legacy_interface argument will be removed from predict_proba, together with the option to return tensorflow-probability based returns.

pandas 2 upgrade and testing#

  • support for pandas 2 is being introduced gradually:

    • experimental support period until 0.19.0 (all 0.17.X and 0.18.X versions)

    • full support from 0.19.0 (0.19.0, 0.19.X and onwards)

  • in the experimental period (0.17.1-0.18.last):

    • sktime will have a dependency bound of pandas<2.0.0

    • sktime will aim to be compatible with pandas 2.0.X as well as pandas 1, >=1.1.0,

    • sktime can be run and tested with pandas 2.0.X by force-installing pandas 2.0.X

    • estimators can be tested for pandas 2 compatibility via check_estimator under force-installed pandas 2.0.X

    • reports on compatibility issues are appreciated in :issue:`4426` (direct input or link from)

  • in the full support period (0.19.0-onwards):

    • sktime requirements will allow pandas 2.0.X and extend support with pandas releases

    • sktime will aim to be compatible with pandas 2 (any version), as well as pandas 1, >=1.1.0

    • users choose their preferred pandas version by requirements on their downstream environment

    • the bug and issue trackers should be used as normal

List of PR#

Version 0.17.2 - 2023-04-24#

Highlights#

Core interface changes#

Forecasting#

  • all forecasters (Baseforecaster descendants) now have the following new tags:

    • capability:insample, boolean, indicating whether the classifier can make in-sample forecasts.

    • capability:pred_int:insample, boolean, indicating whether the classifier can make probabilistic in-sample forecasts, e.g., prediction intervals in-sample.

  • all forecasters are now tested for interface conformance for interval forecasts, in-sample (based on the above tags) and out-of-sample, via check_estimator

Time series classification#

  • all time series classifiers (BaseClassifier descendants) now have a tag capability:predict_proba. This indicates whether the classifier implements a non-default (non-delta-mass) probabilistic classification functionality.

Enhancements#

Data types, checks, conversions#

Forecasting#

Time series classification#

Time series regression#

Transformations#

Testing framework#

Maintenance#

Documentation#

Fixes#

Forecasting#

Testing framework#

Contributors#

:user:`dashapetr`, :user:`doncarlos999`, :user:`fkiraly`, :user:`howdy07`, :user:`marrov`, :user:`SzymonStolarski`, :user:`tobiasweede`, :user:`yarnabrina`

Version 0.17.1 - 2023-04-10#

Maintenance patch (pandas 2, attrs). For last content update, see 0.17.0.

  • pandas 2 compatibility patch

  • experimental support for pandas 2 with testing and upgrade instructions for users

  • sktime will continue to support pandas 1 versions

User feedback and pandas 2 compatibility issues are appreciated in :issue:`4426`.

Dependency changes#

  • the version bound pandas<2.0.0 will be relaxed to pandas<2.1.0 in sktime 0.19.0

    • option 1: to keep using pandas 1.X from 0.19.0 onwards, simply introduce the pandas<2.0.0 bound in downstream requirements

    • option 2: to upgrade safely to pandas 2.X, follow the upgrade and testing instructions below

    • neither option impacts public interfaces of sktime, i.e., there are no removals, deprecations, or changes of contract besides the change of pandas bound in sktime requirements

  • attrs changes from an implied (non-explicit) soft dependency to an explicit soft dependency (in all_extras)

pandas 2 upgrade and testing#

  • support for pandas 2 will be introduced gradually:

    • experimental support period until 0.19.0 (all 0.17.X and 0.18.X versions)

    • full support from 0.19.0 (0.19.0, 0.19.X and onwards)

  • in the experimental period (0.17.1-0.18.last):

    • sktime will have a dependency bound of pandas<2.0.0

    • sktime will aim to be compatible with pandas 2.0.X as well as pandas 1, >=1.1.0,

    • sktime can be run and tested with pandas 2.0.X by force-installing pandas 2.0.X

    • estimators can be tested for pandas 2 compatibility via check_estimator under force-installed pandas 2.0.X

    • reports on compatibility issues are appreciated in :issue:`4426` (direct input or link from)

  • in the full support period (0.19.0-onwards):

    • sktime requirements will allow pandas 2.0.X and extend support with pandas releases

    • sktime will aim to be compatible with pandas 2 (any version), as well as pandas 1, >=1.1.0

    • users choose their preferred pandas version by requirements on their downstream environment

    • the bug and issue trackers should be used as normal

List of PR#

Version 0.17.0 - 2023-04-03#

Highlights#

Dependency changes#

  • a new soft dependency was added, the seasonal package, required (only) for the SeasonalityPeriodogram estimator.

Core interface changes#

BaseObject, BaseEstimator#

  • all sktime objects and estimators now possess a config interface, via new get_config and set_config methods. This is currently experimental, and there are no externally facing config fields at the moment.

Data types, checks, conversions#

  • sktime now recognizes nullable pandas dtypes and coerces them to non-nullable if necessary. Previously, nullable dtype would cause exceptions.

Forecasting#

  • the BaseDistribution object has been introduced as a potential return of full distribution forecasts and simulation queries. This is currently experimental, feedback and contributions are appreciated.

  • Forecasters’ predict_proba now returns an sktime BaseDistribution object, if tensorflow-probability is not present (e.g., on python 3.11), or if the temporary deprecation argument legacy_interface=False is set. The old tensorflow based interfaced will be deprecated over two cycles, see below.

  • sktime now contains metrics and losses for probability distribution forecasts. These metrics assume BaseDistribution objects as forecasts.

Deprecations and removals#

Dependencies#

  • numba will change from core dependency to soft dependency in sktime 0.18.0. To ensure functioning of setups of sktime code dependent on numba based estimators going forward, ensure to install numba in the environment explicitly, or install the all_extras soft dependency set which will continue to contain numba. Besides this, numba dependent estimators will function identically as before.

  • sktime’s base module will move to a new core dependency, skbase, from sktime 0.18.0. This will not impact functionality or imports directly from sktime, or any usage.

Forecasting#

  • Forecasters’ predict_proba pre-0.17.0 tensorflow based return will be replaced by BaseDistribution object based return. This will be phased out in two minor cycles as follows.

  • until 0.18.0, forecasters’ predict_proba will return BaseDistribution by default only in cases where calling predict_proba would have raised an error, prior to 0.17.0, i.e., on python 3.11 and when tensorflow-probability is not present in the python environment.

  • until 0.18.0, BaseDistribution return can be enforced by setting the new argument legacy_interface=False in predict_proba. This is useful for handling deprecation.

  • from 0.18.0, the default for legacy_interface will be set to False.

  • from 0.19.0, the legacy_interface argument will be removed from predict_proba, together with the option to return tensorflow-probability based returns.

Transformations#

  • DateTimeFeatures: the default value of the keep_original_columns parameter has changed to False

  • FourierFeatures: the default value of the keep_original_columns parameter has changed to False

Testing framework#

  • in check_estimator and run_tests, the return_exceptions argument has been removed. It is now fully replaced by raise_exceptions (its logical negation), which has been available since 0.16.0.

Enhancements#

BaseObject, BaseEstimator#

Data types, checks, conversions#

Forecasting#

Parameter estimators#

Time series classification#

Transformations#

Testing framework#

Maintenance#

Documentation#

Fixes#

Data types, checks, conversions#

Forecasting#

Parameter estimators#

Time series classification#

Time series regression#

Testing framework#

Utilities#

Contributors#

:user:`abhisek7154`, :user:`achieveordie`, :user:`blazingbhavneek`, :user:`danbartl`, :user:`fkiraly`, :user:`hoesler`, :user:`JonathanBechtel`, :user:`ken-maeda`, :user:`kgeis`, :user:`lmmentel`, :user:`marcosousapoza`, :user:`marrov`, :user:`noahleegithub`, :user:`SamiAlavi`, :user:`ShivamPathak99`, :user:`yarnabrina`

Version 0.16.1 - 2023-02-13#

Highlights#

Testing and feedback of python 3.11 support and the benchmarking module are appreciated.

Dependency changes#

  • sktime now supports python 3.11

  • on python 3.11, numba is not a dependency, and a number of other packages are also not available as soft dependencies, mostly due to compatibility with 3.11.

  • sktime and its test suite can now be used without numba installed, with the exception of estimators depending on numba. numba is still a core dependency on python 3.7-3.10.

  • numba will become a soft dependency, from a core dependency, in 0.18.0. Estimators dependent on numba will function exactly as before if numba is present in the python environment.

Core interface changes#

Benchmarking#

  • the kotsu-based benchmarking module introduces a new design and syntax for benchmarking forecasters.

Forecasting#

  • forecasters will now consistently preserve the name attribute in pd.Series passed. Previously, named pd.Series were not fully supported.

Deprecations and removals#

Dependencies#

  • numba will change from core dependency to soft dependency in sktime 0.18.0. To ensure functioning of setups of sktime code dependent on numba based estimators going forward, ensure to install numba in the environment explicitly, or install the all_extras soft dependency set which will continue to contain numba. Besides this, numba dependent estimators will function identically as before.

Enhancements#

Benchmarking#

Data types, checks, conversions#

Forecasting#

Transformations#

Fixes#

Data sets and data loaders#

Forecasting#

  • [BUG] fixes for forecasters to retain name attribute in predict (:pr:`4161`) :user:`fkiraly`

  • [BUG] ensure pd.Series name attribute is preserved in conversion to/from pd.DataFrame and np.ndarray, as Series scitype (:pr:`4150`) :user:`fkiraly`

  • [BUG] AutoETS, UnobservedComponents: fix predict_interval for integer based index not starting at zero (:pr:`4180`) :user:`fkiraly`

Parameter estimation#

Time series clustering#

Maintenance#

Documentation#

Contributors#

:user:`aiwalter`, :user:`alex-hh`, :user:`danbartl`, :user:`dbcerigo`, :user:`fkiraly`, :user:`hoesler`, :user:`matthewmiddlehurst`, :user:`NeuralNut`, :user:`pranavvp16`, :user:`romanlutz`

Version 0.16.0 - 2023-01-30#

Highlights#

Dependency changes#

  • statsmodels is now a soft dependency. Estimators dependent on statsmodels can be used exactly as before if statsmodels is present in the python environment.

Core interface changes#

BaseEstimator#

  • The method get_fitted_params, of all BaseEstimator descendants (any estimator with fit), has a new boolean argument deep, default True. Similar to the argument of the same name of get_params, this allows to control for composite estimators, whether to return fitted parameters with or without estimator nesting.

Forecasting#

  • all forecasters: the public cutoff attribute of forecasters has changed to pd.Index subtype, from index element. To update previously functional code, replace references to cutoff by cutoff[0].

Deprecations and removals#

Dependencies#

  • statsmodels has changed from core dependency to soft dependency in sktime 0.16.0. To ensure functioning of setups of sktime code dependent on statsmodels based estimators going forward, ensure to install statsmodels in the environment explicitly, or install the all_extras soft dependency set which will continue to contain statsmodels.

Data types, checks, conversions#

  • check_is_scitype: the msg_legacy_interface argument has now been removed. Future behaviour is as per the default of the argument, msg_legacy_interface=False.

Forecasting#

  • all forecasters: the public cutoff attribute of forecasters has changed to pd.Index subtype, from index element. To update previously functional code, replace references to cutoff by cutoff[0].

Transformations#

  • Catch22: the transform_single_feature method has been removed from the Catch22 transformer

  • FourierFeatures: in 0.17.0, the default value of the keep_original_columns parameter will change to False

Enhancements#

BaseEstimator#

Data types, checks, conversions#

Forecasting#

Time series annotation#

Time series classification#

Time series generators#

Transformations#

Maintenance#

Documentation#

Fixes#

BaseObject#

  • [BUG] fix faulty BaseObject.__eq__ and deep_equals if an attribute or nested structure contains float (:pr:`4109`) :user:`fkiraly`

Forecasting#

Time series classification#

Transformations#

Contributors#

:user:`aaronrmm`, :user:`achieveordie`, :user:`danbartl`, :user:`erjieyong`, :user:`fkiraly`, :user:`JonathanBechtel`, :user:`KishManani`, :user:`klam-data`, :user:`mateuja`, :user:`Pyyim`, :user:`romanlutz`, :user:`snnbotchway`, :user:`VyomkeshVyas`

Version 0.15.1 - 2023-01-12#

Highlights#

Core interface changes#

BaseObject#

  • the python_dependencies tag now allows full PEP 440 specifier strings for specifying package dependencies

Data types, checks, conversions#

  • new mtypes for time series, panels and hierarchical data that can be used when dask is installed: dask_series, dask_panel, dask_hierarchical. These can be used in estimators now. End-to-end integration with dask is not yet available, but on the roadmap.

Distances, kernels#

  • pairwise transformers now possess a method transform_diag which returns the diagonal of the distance/kernel matrix

  • pairwise panel transformers can be composed with each other using arithmetic operations, which will result in the corresponding arithmetic combination of transformers, e.g., sum of distances

  • pairwise panel transformers can be composed with simple transformers using the * dunder, which will result in a pipeline of first applying the simple transformer, then the pairwise transformer

Time series clustering#

  • time series clusterers can now be used with make_pipeline and the * dunder to build linear pipelines with time series transformers

Deprecations and removals#

  • in check_estimator and run_tests, the return_exceptions argument has been deprecated, and will be replaced with raise_exceptions (its logical negation) in 0.17.0. Until 0.17.0, both arguments will work, with non-defaults being overriding.

Enhancements#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Pipelines#

Time series classification#

Time series clustering#

Transformations#

Testing framework#

Visualisations#

Maintenance#

Documentation#

Fixes#

Distances, kernels#

Forecasting#

Governance#

Time series classification#

Time series clustering#

Time series regression#

Transformations#

Testing framework#

Visualisations#

  • [BUG] plot_cluster_algorithm: fix error predict_series is undefined if X is passed as np.ndarray (:pr:`3933`) :user:`hakim89`

Contributors#

:user:`Aarthy153`, :user:`achieveordie`, :user:`adoherty21`, :user:`aiwalter`, :user:`arnavrneo`, :user:`badrmarani`, :user:`bethrice44`, :user:`ciaran-g`, :user:`dainelli98`, :user:`danbartl`, :user:`darshitsharma`, :user:`erjieyong`, :user:`fkiraly`, :user:`hakim89`, :user:`josuedavalos`, :user:`KishManani`, :user:`MatthewMiddlehurst`, :user:`MichalChromcak`, :user:`miraep8`, :user:`patrickzib`, :user:`tianjiqx`, :user:`xxl4tomxu98`

Version 0.15.0 - 2022-12-22#

Highlights#

Dependency changes#

  • sktime is now compatible with numpy 1.24, bound is relaxed to <1.25

  • sktime is now compatible with sklearn 1.2.0, bound is relaxed to <1.3.0

  • pycatch22 is no longer a soft dependency of sktime, due to installation issues. pycatch22 based transformers are still functional if the dependency is installed in the python environment.

  • statsmodels will change from core dependency to soft dependency in sktime 0.16.0

Core interface changes#

BaseObject#

Comparison by equality for any sktime object now compares identity of parameters, as obtained via get_params, with recursive application if objects/estimators are nested.

Deprecations and removals#

Dependencies#

  • statsmodels will change from core dependency to soft dependency in sktime 0.16.0. To ensure functioning of setups of sktime code dependent on statsmodels based estimators after the deprecation period, ensure to install statsmodels in the environment explicitly, or install the all_extras soft dependency set which will continue to contain statsmodels.

Data types, checks, conversions#

datatypes.check_is_scitype: 2nd return argument (only returned if return_metadata=True) will be changed from list to dict format (see docstring). The list format is deprecated since 0.14.0, and replaced by dict in 0.15.0. The format is determined by temporary additional arg msg_legacy_interface, which will be the default has now changed to False (dict format). The msg_legacy_interface argument and the option to return the legacy list format will be removed in 0.16.0.

Forecasting#

  • ExpandingWindowSplitter had start_with_window argument removed. From now on, initial_window=0 should be used instead of start_with_window=False.

  • the row transformers, SeriesToSeriesRowTransformer and SeriesToPrimitivesRowTransformer have been removed. Row/instance vectorization functionality is natively supported by sktime since 0.11.0 and does not need to be added by these wrappers anymore. Both transformers will be removed in 0.15.0. To migrate, simply remove the row transformer wrappers. In some rarer, ambiguous vectorization cases (e.g., using wrapped functions that are vectorized, such as np.mean), FunctionTransformer may have to be used instead of SeriesToPrimitivesRowTransformer.

  • change to public cutoff attribute delayed to 0.16.0: public cutoff attribute of forecasters will change to pd.Index subtype, from index element.

Time series classification#

  • Delayed: the base class of ProbabilityThresholdEarlyClassifier will be changed to BaseEarlyClassifier in 0.16.0. This will change how classification safety decisions are made and returned, see BaseEarlyClassifier or TEASER for the new interface.

Transformations#

  • transformations.series.compose has been removed in favour of transformations.compose. All estimators in the former have been moved to the latter.

  • The default of default_fc_parameters in TSFreshFeatureExtractor and TSFreshRelevantFeatureExtractor has beenchanged from "efficient" to "comprehensive".

Testing framework#

  • The general interface contract test test_methods_do_not_change_state has been renamed to test_non_state_changing_method_contract

Enhancements#

MLOps & Deployment#

BaseObject#

Forecasting#

Time series annotation#

Time series classification#

Time series regression#

Transformations#

Visualisations#

Fixes#

Forecasting#

Time series classification#

Time series regression#

Transformations#

  • [BUG] ClearSky doesn’t raise error for range indexes and when X has no set frequency (:pr:`3872`) :user:`ciaran-g`

  • [BUG] sklearn 1.2.0 compatibility - fix invalid elbow variable selection shrinkage parameter passed to sklearn NearestCentroid (:pr:`3921`) :user:`fkiraly`

Visualisations#

Documentation#

Maintenance#

Contributors#

:user:`aiwalter`, :user:`aquemy`, :user:`badrmarani`, :user:`benjaminbluhm`, :user:`bethrice44`, :user:`chillerobscuro`, :user:`ciaran-g`, :user:`danbartl`, :user:`dsanr`, :user:`fkiraly`, :user:`GianFree`, :user:`KatieBuc`, :user:`kcc-lion`, :user:`KishManani`, :user:`lmmentel`, :user:`nilesh05apr`, :user:`nshahpazov`, :user:`solen0id`, :user:`templierw`, :user:`TonyBagnall`

Version 0.14.1 - 2022-11-30#

Highlights#

Core interface changes#

Forecasting#

  • dunder method for variable subsetting exogeneous data: my_forecaster[variables] will create a ForecastingPipeline that subsets the exogeneous data to variables

Enhancements#

BaseObject#

  • [ENH] default get_params / set_params for _HeterogenousMetaEstimator & [BUG] fix infinite loop in get_params for FeatureUnion, with hoesler (:pr:`3708`) :user:`fkiraly`

Forecasting#

Time series classification#

Time series regression#

Transformations#

Governance#

Fixes#

Data loaders#

Forecasting#

Time series classification#

Transformations#

Testing framework#

Documentation#

Maintenance#

Contributors#

:user:`achieveordie`, :user:`aiwalter`, :user:`ciaran-g`, :user:`danbartl`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`hadifawaz1999`, :user:`haskarb`, :user:`hoesler`, :user:`jorenham`, :user:`KishManani`, :user:`lmmentel`, :user:`matt-wisdom`, :user:`MatthewMiddlehurst`, :user:`michaelfeil`, :user:`RikStarmans`, :user:`templierw`, :user:`TonyBagnall`, :user:`wolph`

Version 0.14.0 - 2022-11-05#

Highlights#

Core interface changes#

BaseObject & BaseEstimator#

  • all objects and estimators (BaseObject descendants) now possess a save method for serialization to memory or file. Serialized objects can be deserialized by base.load. Interface contracts on save and load are now tested by the standard test suite (e.g., check_estimator).

  • all fittable objects (“estimators”, BaseEstimator descendants) now have a functioning default implementation of get_fitted_params. Interface contracts on get_fitted_params are now tested by the standard test suite (e.g., check_estimator).

  • the extender contract for get_fitted_params has changed. For new implementations of sktime estimators, developers should implement _get_fitted_params rather than get_fitted_params directly, similar to fit and _fit. The extension templates have been updated accordingly. Estimators following the old extension contract are still compatible for the time being and will remain compatible at least until 0.15.0.

Deprecations and removals#

Forecasting#

  • ExpandingWindowSplitter parameter start_with_window is deprecated and will be removed in 0.15.0. For continued functionality of start_with_window=True, use start_with_window=0 instead. Other values of start_with_window will behave as in the case start_with_window=False.

  • Isolated pd.timedelta elements should no longer be passed to splitters and ForecastingHorizon, as pandas has deprecated freq for pd.delta. Exceptions will be raised in corner cases where freq as not been passed and cannot be inferred.

  • change to public cutoff attribute delayed to 0.15.0: public cutoff attribute of forecasters will change to pd.Index subtype, from index element.

Time series classification#

  • The base class of ProbabilityThresholdEarlyClassifier will be changed to BaseEarlyClassifier in 0.15.0. This will change how classification safety decisions are made and returned, see BaseEarlyClassifier or TEASER for the new interface.

Transformations#

  • The default of default_fc_parameters in TSFreshFeatureExtractor and TSFreshRelevantFeatureExtractor will change from "efficient" to "comprehensive" in 0.15.0.

Testing framework#

  • The name of the test test_methods_do_not_change_state will change to test_non_state_changing_method_contract in 0.15.0. For a safe transition in a case where the old name has been used as part of an argument in check_estimator, use both the new and the old name (in a list) in test/fixture exclusion or inclusion.

Enhancements#

BaseObject#

Data loaders#

Data types, checks, conversions#

Forecasting#

Parameter estimation#

Time series annotation#

Time series classification#

Time series regression#

Transformations#

Testing framework#

Governance#

Documentation#

Maintenance#

Refactored#

Fixes#

BaseObject#

Data loaders#

Data types, checks, conversions#

Forecasting#

Parameter estimation#

Time series annotation#

Time series clustering#

Time series classification#

Time series distances and kernels#

Time series regression#

Transformations#

Contributors#

:user:`achieveordie`, :user:`aiwalter`, :user:`AnH0ang`, :user:`arampuria19`, :user:`bethrice44`, :user:`canbooo`, :user:`chillerobscuro`, :user:`chrisholder`, :user:`ciaran-g`, :user:`danbartl`, :user:`fkiraly`, :user:`GuzalBulatova`, :user:`kcc-lion`, :user:`khrapovs`, :user:`lmmentel`, :user:`MatthewMiddlehurst`, :user:`miraep8`, :user:`shagn`, :user:`TonyBagnall`, :user:`topher-lo`

Version 0.13.4 - 2022-09-27#

Maintenance release - moved sktime repository to sktime org from alan-turing-institute org (:pr:`2926`)

Forks and links should be redirected, governance remains unchanged.

In case of any problems, please contact us via the issue tracker or discussion forum.

Version 0.13.3 - 2022-09-25#

Highlights#

Dependency changes#

  • sktime is now compatible with pmdarima 2.0.0, bound is relaxed to <3.0.0

  • sktime is now compatible with pandas 1.5.0, bound is relaxed to <1.6.0

Deprecations and removals#

Data types, checks, conversions#

datatypes.check_is_scitype: 2nd return argument (only returned if return_metadata=True) will be changed from list to dict format (see docstring). list format will be deprecated from 0.14.0, and replaced by dict in 0.15.0. The format will be determined by temporary additional arg msg_legacy_interface, which will be introduced in 0.14.0, default changed to False in 0.15.0, and removed in 0.16.0.

Enhancements#

Data types, checks, conversions#

Data loaders#

Forecasting#

Time series annotation#

Time series classification#

Time series distances and kernels#

Transformations#

Testing framework#

Fixes#

Data types, checks, conversions#

Forecasting#

Time series annotation#

Time series classification#

Transformations#

Maintenance#

Documentation#

Contributors#

:user:`achieveordie`, :user:`aiwalter`, :user:`AurumnPegasus`, :user:`benHeid`, :user:`bethrice44`, :user:`bugslayer-332`, :user:`fkiraly`, :user:`ilkersigirci`, :user:`KatieBuc`, :user:`khrapovs`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`miraep8`, :user:`patrickzib`, :user:`paulbauriegel`, :user:`shagn`, :user:`stepinski`, :user:`topher-lo`

Version 0.13.2 - 2022-08-23#

Highlights#

Dependency changes#

  • pmdarima is bounded <2.0.0 until compatibility issues are resolved

Core interface changes#

Forecasting#

  • dunder method for pipelining transformers to exogeneous data: my_trafo ** my_forecaster will create a ForecastingPipeline Note: ** has precedence over * (apply to endogeneous data)

  • the default value for the ignores-exogeneous-X tag is set to the safer value False. This does not affect sktime forecasters, but may affect sktime compatible forecasters in which an explicit setting of the tag has been omitted, in that X is now passed to all internal functions _fit, predict, etc. This is breaking only under the condition that (a) the tag has been erroneously omitted, (b) the internal functions are broken, i.e., will cause an exception only if the error (a) was masking a bug (b).

Time series distances and kernels#

  • dunder method for pipelining ordinary transformers with pairwise transformers: my_trafo ** distance will create a PwTrafoPanelPipeline, same as “apply my_trafo.fit_transform to both inputs first, then apply distance

Transformations#

  • dunder method for applying OptionalPassthrough: -my_trafo is the same as OptionalPassthrough(my_trafo)

  • dunder method for inverting transformer: ~my_trafo has transform and inverse_transform switched

Deprecations and removals#

Transformations#

  • deprecated: transformations.series.compose is deprecated in favour of transformations.compose. All estimators in the former are moved to the latter, and will no longer be accessible in transformations.series.compose from 0.15.0.

  • deprecated: the row transformers, SeriesToSeriesRowTransformer and SeriesToPrimitivesRowTransformer have been deprecated. Row/instance vectorization functionality is natively supported by sktime since 0.11.0 and does not need to be added by these wrappers anymore. Both transformers will be removed in 0.15.0. To migrate, simply remove the row transformer wrappers. In some rarer, ambiguous vectorization cases (e.g., using wrapped functions that are vectorized, such as np.mean), FunctionTransformer may have to be used instead of SeriesToPrimitivesRowTransformer.

Enhancements#

BaseObject#

Data types, checks, conversions#

Forecasting#

Time series annotation#

Time series distances and kernels#

Transformations#

Testing framework#

Governance#

Fixes#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Parameter estimation#

Time series annotation#

Time series classification#

Transformations#

Maintenance#

Contributors#

:user:`achieveordie`, :user:`aiwalter`, :user:`chillerobscuro`, :user:`chrisholder`, :user:`fkiraly`, :user:`haskarb`, :user:`KatieBuc`, :user:`kcc-lion`, :user:`KishManani`, :user:`miraep8`, :user:`patrickzib`, :user:`paulbauriegel`

Version 0.13.1 - 2022-08-11#

Highlights#

Dependency changes#

  • new soft dependency mne, from Filter transformer

  • new developer dependency pytest-randomly

Core interface changes#

All Estimators#

  • get_fitted_params now has a private implementer interface _get_fitted_params, similar to fit / _fit etc

  • the undocumented _required_parameters parameter is no longer required (to be present in certain estimators)

Forecasting#

  • forecasting metric classes now fully support hierarchical data and hierarchy averaging via multilevel argument

Parameter estimation#

  • new estimator type - parameter estimators, base class BaseParamFitter

Deprecations and removals#

Time series classification#

  • ProbabilityThresholdEarlyClassifier has been deprecated and will be replaced by an early classifier of the same name in version 0.15.0.

    Interfaces will not be downwards compatible.

Enhancements#

BaseObject#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Parameter estimation#

Time series annotation#

Time series classification#

Time series regression#

Transformations#

Testing framework#

Documentation#

Fixes#

Data types, checks, conversions#

Forecasting#

Time series classification#

Transformations#

Testing framework#

Maintenance#

Contributors#

:user:`achieveordie`, :user:`aiwalter`, :user:`AnH0ang`, :user:`Arvind644`, :user:`AurumnPegasus`, :user:`benHeid`, :user:`bethrice44`, :user:`C-mmon`, :user:`ciaran-g`, :user:`danbartl`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`jelc53`, :user:`kcc-lion`, :user:`khrapovs`, :user:`lbventura`, :user:`lmmentel`, :user:`Lovkush-A`, :user:`ltsaprounis`, :user:`mariamjabara`, :user:`MatthewMiddlehurst`, :user:`miraep8`, :user:`shchur`, :user:`soma2000-lang`, :user:`sveameyer13`, :user:`TNTran92`, :user:`tobiasweede`, :user:`ZiyaoWei`

Version 0.13.0 - 2022-07-14#

Highlights#

Dependency changes#

  • Python requirements and soft dependencies are now isolated to estimator classes where possible, see below.

  • sktime now allows numpy 1.22.

  • prophet soft dependency now must be above 1.1, where it no longer depends on pystan.

  • indirect soft dependency on pystan has been removed.

  • soft dependency on hcrystalball has been removed.

Core interface changes#

Data types, checks, conversions#

  • VectorizedDF now supports vectorization over columns

Dependency handling#

  • Python requirements and soft dependencies are now isolated to estimator classes via the python_version and python_dependencies tags. This allows to bundle algorithms together with their dependency requirements.

Forecasting#

  • all forecasters can now make mulivariate forecasts. Univariate forecasters do so by iterating/vectorizing over variables. In that case, individual forecasters, for variables, are stored in the forecasters_ attribute.

  • ForecastingHorizon now stores frequency information in the freq attribute. It can be set in the constructor via the new freq argument, and is inferred/updated any time data is passed.

Transformations#

  • all transformers can now transform multivariate time series. Univariate transformers do so by iterating/vectorizing over variables. In that case, individual transformers, for variables, are stored in the transformers_ attribute.

Deprecations and removals#

Forecasting#

  • deprecated: use of ForecastingHorizon methods with pd.Timestamp carrying freq is deprecated and will raise exception from 0.14.0. Use of pd.Timestamp will remain possible. This due to deprecation of the freq attribute of pd.Timestamp in pandas.

  • from 0.14.0, public cutoff attribute of forecasters will change to pd.Index subtype, from index element.

  • removed: class HCrystalBallForecaster, see :pr:`2677`.

Performance metrics#

  • removed: func and name args from all performance metric constructors.

  • changed: the greater_is_better property is replaced by the greater_is_better tag.

Time series classification#

  • removed: "capability:early_prediction" tag from BaseClassifier descendants. Early classifiers are their own estimator type now. In order to search for early classifiers, use the early-classifier scitype string instead of the tag.

Transformations#

  • removed: Differencer - drop_na argument has been removed. Default of na_handling changed to fill_zero

  • removed: lag_config argument in WindowSummarizer, please use lag_feature argument instead.

Enhancements#

Data types, checks, conversions#

Forecasting#

Transformations#

Fixes#

Data loaders#

Data types, checks, conversions#

Forecasting#

Time series classification#

Transformations#

Refactored#

Maintenance#

Documentation#

Contributors#

:user:`a-pasos-ruiz`, :user:`aiwalter`, :user:`AurumnPegasus`, :user:`ciaran-g`, :user:`fkiraly`, :user:`haskarb`, :user:`jlopezpena`, :user:`KatieBuc`, :user:`khrapovs`, :user:`lbventura`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`MatthewMiddlehurst`, :user:`ris-bali`, :user:`TNTran92`, :user:`tobiasweede`, :user:`TonyBagnall`

Version 0.12.1 - 2022-06-28#

Highlights#

Dependency changes#

  • upper bound prophet < 1.1 due to cmdstanpy incompatibility

Core interface changes#

BaseObject#

  • set_params now behaves identically to __init__ call with corresponding parameters, including dynamic setting of tags. This is to fully comply with the sklearn interface assumption that this is the case. (:pr:`2835`) :user:`fkiraly`

Enhancements#

BaseObject#

Forecasting#

Transformations#

Fixes#

Forecasting#

Transformations#

Documentation#

Maintenance#

Contributors#

:user:`aiwalter`, :user:`AurumnPegasus`, :user:`bethrice44`, :user:`ciaran-g`, :user:`fkiraly`, :user:`khrapovs`, :user:`miraep8`

Version 0.12.0 - 2022-06-12#

Highlights#

Dependency changes#

  • new soft dependencies: pykalman and filterpy (for Kalman filter transformers)

Core interface changes#

BaseObject#

  • all estimators now reset and execute __init__ at the start of fit (:pr:`2562`) :user:`fkiraly`. Pre fit initialization and checks can therefore also be written at the end of __init__ now.

  • all estimators now possess a clone method which is function equivalent to sklearn’s’ clone (:pr:`2565`) :user:`fkiraly`.

Forecasting#

  • ExpandingWindowSplitter with data individually added is now default cv in BaseForecaster.update_predict (:pr:`2679`) :user:`fkiraly`. Previously, not specifying cv would result in an error.

Performance metrics#

  • performance metrics have a new base class design and inheritance structure. See BaseForecastingErrorMetric docstring documentation. Changes to the interface are downwards compatible and lay the groundwork for further refactoring.

Time series regression#

  • TSR base class was updated to an interface that parallels BaseClassifier (:pr:`2647`) :user:`fkiraly`. See the base class docstrings for specification details.

Deprecations and removals#

Data types, checks, conversions#

  • removed: instance_index and time_index args from from_multi_index_to_3d_numpy. Use convert or convert_to instead.

Forecasting#

  • removed: tag fit-in-predict, now subsumed under fit_is_empty

  • deprecated: HCrystalBallForecaster, will be removed in 0.13.0. See :pr:`2677`.

Performance metrics#

  • changed: set symmetric hyper-parameter default to True in all relative performance metrics.

  • deprecated: func and name args will be removed from all performance metric constructors in 0.13.0. If these attributes are needed, they should be object or class attributes, and can be optional constructor arguments. However, it will no longer be required that all performance metrics have func and name as constructor arguments.

  • deprecated: the greater_is_better property will be replaced by the greater_is_better tag, in 0.13.0. Until then, implementers should set the greater_is_better tag. Users can still call the greater_is_better property until 0.13.0, which will alias the greater_is_better tag, if set.

Time series classification#

  • deprecated: "capability:early_prediction" will be removed in 0.13.0 from BaseClassifier descendants. Early classifiers should inherit from the learning task specific base class BaseEarlyClassifier instead.

Transformations#

  • removed: tag fit-in-transform, now subsumed under fit_is_empty

  • removed: FeatureUnion’s preserve_dataframe parameter

  • removed: series_as_features.compose module, contents are in transformations.compose

  • removed: transformations.series.window_summarize module, contents are in transformations.series.summarize

  • changed: "drift", "mean", "median", "random" methods of Imputer now use the training set (fit arguments) to compute parameters. For pre-0.12.0 behaviour, i.e., using the transform set, wrap the Imputer in the FitInTransform compositor.

Enhancements#

BaseObject#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Performance metrics#

Pipelines#

Time series classification and regression#

Transformations#

Testing framework#

Governance#

Fixes#

Clustering#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Time series classification and regression#

Transformations#

Maintenance#

Refactored#

Documentation#

Contributors#

:user:`aiwalter`, :user:`asattiraju13`, :user:`bethrice44`, :user:`chrisholder`, :user:`ciaran-g`, :user:`DBCerigo`, :user:`dougollerenshaw`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`k1m190r`, :user:`keepersas`, :user:`khrapovs`, :user:`lbventura`, :user:`lielleravid`, :user:`ltsaprounis`, :user:`miraep8`, :user:`NoaWegerhoff`, :user:`Ris-Bali`, :user:`TonyBagnall`, :user:`ZiyaoWei`

Version 0.11.4 - 2022-05-13#

Highlights#

  • maintenance update for compatibility with recent scikit-learn 1.1.0 release

Dependency changes#

  • Added defensive upper bound scikit-learn<1.2.0

Maintenance#

Enhancements#

BaseObject#

  • [ENH] components retrieval utility and default BaseForecaster._update(update_params=False) for composites (:pr:`2596`) :user:`fkiraly`

Clustering#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Time series classification#

Transformations#

Fixes#

BaseObject#

Clustering#

Forecasting#

Testing framework#

Contributors#

:user:`chrisholder`, :user:`ciaran-g`, :user:`fkiraly`, :user:`khrapovs`, :user:`miraep8`, :user:`phershbe`, :user:`Ris-Bali`, :user:`TonyBagnall`

Version 0.11.3 - 2022-04-29#

Highlights#

  • sktime is now compatible with scipy 1.8.X versions (:pr:`2468`, :pr:`2474`) :user:`fkiraly`

  • dunder method for forecasting pipelines: write trafo * forecaster * my_postproc for TransformedTargetForecaster pipeline (:pr:`2404`) :user:`fkiraly`

  • dunder method for multiplexing/autoML: write forecaster1 | forecaster2 | forecaster3 for MultiplexForecaster, used in tuning over forecasters (:pr:`2540`) :user:`miraep8`

  • dunders combine with existing transformer pipeline and feature union, e.g., trafo1 * trafo2 * forecaster or (trafo1 + trafo2) * forecaster

  • prediction intervals for UnobservedComponents forecaster (:pr:`2454`) :user:`juanitorduz`

  • new argument return_tags of all_estimators allows listing estimators together with selected tags (:pr:`2410`) :user:`miraep8`

Dependency changes#

  • Upper bound on scipy relaxed to scipy<1.9.0, sktime is now compatible with scipy 1.8.X versions.

Core interface changes#

All Estimators#

All estimators now have a reset method which resets objects a clean post-init state, keeping hyper-parameters. Equivalent to clone but overwrites self.

Forecasting#

Forecasters have two new dunder methods. Invoke dunders for easy creation of a pipeline object:

  • * with a transformer creates forecasting pipeline, e.g., my_trafo1 * my_forecaster * my_postproc. Transformers before the forecaster are used for pre-processing in a TransformedTargetForecaster. Transformers after the forecaster are used for post-processing in a TransformedTargetForecaster.

  • | with another forecaster creates a multiplexer, e.g., forecaster1 | forecaster2 | forecaster 3. Result is of class MultiplexForecaster which can be combined with grid search for autoML style tuning.

Dunder methods are compatible with existing transformer dunders * (pipeline) and + (feature union).

Forecaster update_predict now accepts an additional boolean argument reset_forecaster. If reset_forecaster = True (default and current intended behaviour), forecaster state does not change. If reset_forecaster = False, then update, predict sequence updates state.

In 0.13.0, the default will change to reset_forecaster = False.

Deprecations#

Forecasting#

Forecaster update_predict default behaviour will change from reset_forecaster = True to reset_forecaster = False, from 0.13.0 (see above).

Transformations#

Differencer: drop_na argument will be deprecated from 0.12.0 and removed in 0.13.0. It will be replaced bz the na_handling argument and a default of "fill_zero".

WindowSummarizer: lag_config will be deprecated from 0.12.0 and removed in 0.13.0. It will be replaced by the lag_feature argument and new specification syntax for it.

Enhancements#

BaseObject#

Data types, checks, conversions#

Forecasting#

Registry#

Testing framework#

Transformations#

Fixes#

Clustering#

Data types, checks, conversions#

Distances, kernels#

Forecasting#

Time series classification#

Transformations#

Testing framework#

Refactored#

Maintenance#

Documentation#

Contributors#

:user:`aiwalter`, :user:`chrisholder`, :user:`ciaran-g`, :user:`danbartl`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`GuzalBulatova`, :user:`juanitorduz`, :user:`KatieBuc`, :user:`khrapovs`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`MatthewMiddlehurst`, :user:`miraep8`, :user:`ris-bali`, :user:`Samuel-Oyeneye`, :user:`tarpas`, :user:`Tomiiwa`

Version 0.11.2 - 2022-04-11#

Fixes#

Version 0.11.1 - 2022-04-10#

Highlights#

Core interface changes#

Data types, checks, conversions#

  • the pd-multiindex mtype was relaxed to allow arbitrary level names

Forecasting#

  • probabilistic forecasting interface now also available for auto-vectorization cases

  • probabilistic forecasting interface now compatible with hierarchical forecasting interface

Enhancements#

Data types, checks, conversions#

Forecasting#

Time series classification#

Transformations#

Maintenance#

Refactored#

Fixes#

Forecasting#

Transformations#

Documentation#

Contributors#

:user:`0saurabh0`, :user:`aiwalter`, :user:`ciaran-g`, :user:`danbartl`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`katiebuc`, :user:`khrapovs`, :user:`ksachdeva`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`MatthewMiddlehurst`, :user:`NoaWegerhoff`, :user:`RISHIKESHAVAN`, :user:`TNTran92`

Version 0.11.0 - 2022-03-26#

Highlights#

Dependency changes#

  • sktime has a new optional dependency set for deep learning, consisting of tensorflow and tensorflow-probability

  • new soft dependency: tslearn (required for tslearn clusterers)

  • new soft dependency: statsforecast (required for StatsforecastAutoARIMA)

Core interface changes#

Data types, checks, conversions#

  • new Hierarchical scientific type for hierarchical time series data, with mtype format pd_multiindex_hier (row-multiindexed series)

  • new Table scientific type for “ordinary” tabular (2D data frame like) data which is not time series or sequential

  • multiple mtype formats for the Table scientific type: numpy1D, numpy2D, pd_DataFrame_Table, pd_Series_Table, list_of_dict

  • new Proba scientific type for distributions and distribution like objects (used in probabilistic forecasting)

Forecasting#

  • forecasters now also accept inputs of Panel type (panel and global forecasters) and Hierarchical type (hierarchical forecasters)

  • when a forecaster is given Panel or Hierarchical input, and only Series logic is defined, the forecaster will automatically loop over (series) instances

  • when a forecaster is given Hierarchical input, and only Panel or Series logic is defined, the forecaster will automatically loop over (panel) instances

  • new probabilistic forecasting interface for probabilistic forecasts:

    • new method predict_var(fh, X, cov=False) for variance forecasts, returns time series of predictive variances

    • new method predict_proba(fh, X, marginal=True) for distribution forecasts, returns tensorflow Distribution

Time series classification#

  • dunder method for pipelining classifier and transformers: my_trafo1 * my_trafo2 * my_clf will create a ClassifierPipeline (sklearn compatible)

Transformations#

  • transformers now also accept inputs of Panel type (panel and global transformers) and Hierarchical type (hierarchical transformers)

  • when a transformer is given Panel or Hierarchical input, and only Series logic is defined, the transformer will automatically loop over (series) instances

  • when a transformer is given Hierarchical input, and only Panel or Series logic is defined, the transformer will automatically loop over (panel) instances

  • Table scientific type is used as output of transformers returning “primitives”

  • dunder method for pipelining transformers: my_trafo1 * my_trafo2 * my_trafo3 will create a (single) TransformerPipeline (sklearn compatible)

  • dunder method for FeatureUnion of transformers: my_trafo1 + my_trafo2 + my_trafo3 will create a (single) FeatureUnion (sklearn compatible)

  • transformer dunder pipeline is compatible with sklearn transformers, automatically wrapped in a TabularToSeriesAdaptor

Deprecations and removals#

Data types, checks, conversions#

Forecasting#

  • removed: return_pred_int argument in forecaster predict, fit_predict, update_predict_single. Replaced by predict_interval and predict_quantiles interface.

  • deprecated: fit-in-predict tag is deprecated and renamed to fit_is_empty. Old tag fit-in-predict can be used until 0.12.0 when it will be removed.

  • deprecated: forecasting metrics symmetric argument default will be changed to False in 0.12.0. Until then the default is True.

Transformations#

  • removed: series transformers no longer accept a Z argument - use first argument X instead (:pr:`1365`, :pr:`1730`)

  • deprecated: fit-in-transform tag is deprecated and renamed to fit_is_empty. Old tag fit-in-transform can be used until 0.12.0 when it will be removed.

  • deprecated: old location in series_as_features of FeatureUnion, has moved to transformations.compose. Old location is still importable from until 0.12.0.

  • deprecated: preserve_dataframe argument of FeatureUnion, will be removed in 0.12.0.

  • deprecated: old location in transformations.series.windows_summarizer of WindowSummarizer, has moved to transformations.series.summarize. Old location is still importable from until 0.12.0.

Enhancements#

Data types, checks, conversions#

Data sets and data loaders#

Clustering#

Distances, kernels#

Forecasting#

Time series classification#

Transformations#

Testing framework#

Governance#

Fixed#

Documentation#

Maintenance#

Refactored#

Contributors#

:user:`aiwalter`, :user:`cdahlin`, :user:`chrisholder`, :user:`ciaran-g`, :user:`danbartl`, :user:`dionysisbacchus`, :user:`eenticott-shell`, :user:`FedericoGarza`, :user:`fkiraly`, :user:`hmtbgc`, :user:`IlyasMoutawwakil`, :user:`kejsitake`, :user:`KishenSharma6`, :user:`lielleravid`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`MatthewMiddlehurst`, :user:`mikofski`, :user:`RafaAyGar`, :user:`theanorak`, :user:`Tomiiwa`, :user:`TonyBagnall`, :user:`Vasudeva-bit`,

[0.10.1] - 2022-02-20#

Highlights#

  • This release is mainly a maintenance patch which upper bounds scipy<1.8.0 to prevent bugs due to interface changes in scipy.

  • Once sktime is compatible with scipy 1.8.0, the upper bound will be relaxed

  • New forecaster: STLForecaster (:pr:`1963`) :user:`aiwalter`

  • New transformer: lagged window summarizer transformation (:pr:`1924`) :user:`danbartl`

  • Loaders for .tsf data format (:pr:`1934`) :user:`rakshitha123`

Dependency changes#

  • Introduction of bound scipy<1.8.0, to prevent bugs due to interface changes in scipy

  • Once sktime is compatible with scipy 1.8.0, the upper bound will be relaxed

Added#

Documentation#

Data sets and data loaders#

Data types, checks, conversions#

Forecasting#

Transformations#

Maintenance#

Fixed#

Contributors#

:user:`aiwalter`, :user:`baggiponte`, :user:`chicken-biryani`, :user:`danbartl`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`khrapovs`, :user:`lmmentel`, :user:`MatthewMiddlehurst`, :user:`rakshitha123`, :user:`RishiKumarRay`, :user:`Rubiel1`, :user:`Saransh-cpp`, :user:`schettino72`,

[0.10.0] - 2022-02-02#

Highlights#

Dependency changes#

  • sktime now supports python 3.7-3.9 on windows, mac, and unix-based systems

  • sktime now supports, and requires, numpy>=1.21.0 and statsmodels>=0.12.1

  • sktime Prophet interface now uses prophet instead of deprecated fbprophet

  • developer install for sktime no longer requires C compilers and cython

Core interface changes#

Forecasting#

New probabilistic forecasting interface for quantiles and predictive intervals:

  • for all forecasters with probabilistic forecasting capability, i.e., capability:pred_int tag

  • new method predict_interval(fh, X, coverage) for interval forecasts

  • new method predict_quantiles(fh, X, alpha) for quantile forecasts

  • both vectorized in coverage, alpha and applicable to multivariate forecasting

  • old return_pred_int interface is deprecated and will be removed in 0.11.0

  • see forecaster base API and forecaster extension template

Convenience method to return residuals:

  • all forecasters now have a method predict_residuals(y, X, fh)

  • if fh is not passed, in-sample residuals are computed

Transformations#

Base interface refactor rolled out to series transformers (:pr:`1790`, :pr:`1795`):

  • fit, transform, fit_transform now accept both Series and Panel as argument

  • if Panel is passed to a series transformer, it is applied to all instances

  • all transformers now have signature transform(X, y=None) and inverse_transform(X, y=None). This is enforced by the new base interface.

  • Z (former first argument) aliases X until 0.11.0 in series transformers, will then be removed

  • X (former second argument) was not used in those transformers, was changed to y

  • see transformer base API and transformer extension template

Deprecations and removals#

Data types, checks, conversions#

  • deprecated, scheduled for removal in 0.11.0: check_is renamed to check_is_mtype, check_is to be removed in 0.11.0 (:pr:`1692`) :user:`mloning`

Forecasting#

  • deprecated, scheduled for removal in 0.11.0: return_pred_int argument in forecaster predict, fit_predict, update_predict_single. Replaced by predict_interval and predict_quantiles interface.

Time series classification#

Transformations#

  • deprecated, scheduled for removal in 0.11.0: series transformers will no longer accept a Z argument - first argument Z replaced by X (:pr:`1365`, :pr:`1730`)

Added#

Documentation#

Data types, checks, conversions#

Data sets and data loaders#

Clustering#

Distances, kernels#

Forecasting#

Time series classification#

Transformations#

Testing module#

Governance#

Maintenance#

Fixed#

Contributors#

:user:`aiwalter`, :user:`amrith-shell`, :user:`Aparna-Sakshi`, :user:`AreloTanoh`, :user:`chrisholder`, :user:`eenticott-shell`, :user:`fkiraly`, :user:`k1m190r`, :user:`kejsitake`, :user:`khrapovs`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`MatthewMiddlehurst`, :user:`MrPr3ntice`, :user:`mloning`, :user:`ngupta23`, :user:`rakshitha123`, :user:`RNKuhns`, :user:`shubhamkarande13`, :user:`sumit-158`, :user:`TonyBagnall`,

[0.9.0] - 2021-12-08#

Highlights#

Core interface changes#

Data types, checks, conversions#

Time series classification#

Transformations#

Base interface refactor (:pr:`1365`, :pr:`1663`, :pr:`1706`):

  • fit, transform, fit_transform now accept both Series and Panel as argument

  • if Panel is passed to a series transformer, it is applied to all instances

  • all transformers now use X as their first argument, y as their second argument. This is enforced by the new base interface.

  • This was inconsistent previously between types of transformers: the series-to-series transformers were using Z as first argument, X as second argument.

  • Z (former first argument) aliases X until 0.10.0 in series transformers, will then be deprecated

  • X (former second argument) was not used in those transformers where it changed to y

  • see new transformer extension template

  • these changes will gradually be rolled out to all transformers through 0.9.X versions

New deprecations for 0.10.0#

Data types, checks, conversions#

Time series classification#

Transformations#

  • series transformers will no longer accept a Z argument - first argument Z replaced by X (:pr:`1365`)

Added#

Documentation#

Data types, checks, conversions#

  • [ENH] added check_is_scitype for scitype checks, cleaning up dists_kernels input checks/conversions (:pr:`1704`) :user:`fkiraly`

Forecasting#

Time series alignment#

Time series classification#

Time series distances#

Governance#

Maintenance#

Fixed#

Estimator registry#

Forecasting#

Performance metrics, evaluation#

Time series alignment#

Time series classification#

Transformations#

Maintenance#

Contributors#

:user:`aiwalter`, :user:`AngelPone`, :user:`AreloTanoh`, :user:`Carlosbogo`, :user:`chernika158`, :user:`chrisholder`, :user:`fstinner`, :user:`fkiraly`, :user:`freddyaboulton`, :user:`kejsitake`, :user:`lmmentel`, :user:`ltsaprounis`, :user:`MatthewMiddlehurst`, :user:`marcio55afr`, :user:`MrPr3ntice`, :user:`mloning`, :user:`OliverMatthews`, :user:`RNKuhns`, :user:`thayeylolu`, :user:`TonyBagnall`,

Full changelog#

https://github.com/sktime/sktime/compare/v0.8.1…v0.9.0

[0.8.1] - 2021-10-28#

Highlights#

New deprecations for 0.10.0#

Forecasting#

  • current prediction intervals interface in predict via return_pred_int will be deprecated and replaced by the new interface points predict_interval and predict_quantiles

Core interface changes#

Forecasting#

Added#

BaseEstimator/BaseObject#

Forecasting#

Time series classification#

Transformers#

Annotation: change-points, segmentation#

Documentation#

Governance#

Testing framework#

Fixed#

All contributors: :user:`Aparna-Sakshi`, :user:`BINAYKUMAR943`, :user:`IlyasMoutawwakil`, :user:`MatthewMiddlehurst`, :user:`Piyush1729`, :user:`RNKuhns`, :user:`RavenRudi`, :user:`SveaMeyer13`, :user:`TonyBagnall`, :user:`afzal442`, :user:`aiwalter`, :user:`bobbys-dev`, :user:`boukepostma`, :user:`danbartl`, :user:`eyalshafran`, :user:`fkiraly`, :user:`freddyaboulton`, :user:`kejsitake`, :user:`mloning`, :user:`myprogrammerpersonality`, :user:`patrickzib`, :user:`ronnie-llamado`, :user:`xiaobenbenecho`, :user:`SinghShreya05`, and :user:`yairbeer`

[0.8.0] - 2021-09-17#

Highlights#

Core interface changes#

BaseEstimator/BaseObject#

  • estimator (class and object) capabilities are inspectable by get_tag and get_tags interface

  • list all tags applying to an estimator type by registry/all_tags

  • list all estimators of a specific type, with certain tags, by registry/all_estimators

In-memory data types#

  • introduction of m(achine)types and scitypes for defining in-memory format conventions across all modules, see in-memory data types tutorial

  • loose conversion methods now in _convert files in datatypes will no longer be publicly accessible in 0.10.0

Forecasting#

  • Forecasters can now be passed pd.DataFrame, pd.Series, np.ndarray as X or y, and return forecasts of the same type as passed for y

  • sktime now supports multivariate forecasters, with all core interface methods returning sensible return types in that case

  • whether forecaster can deal with multivariate series can be inspected via get_tag("scitype:y"), which can return "univariate", "multivariate", or "both"

  • further tags have been introduced, see registry/all_tags

Time series classification#

  • tags have been introduced, see registry/all_tags

Added#

Forecasting#

Time series classification#

Transformers#

Benchmarking and evaluation#

Documentation#

Testing framework#

Fixed#

All contributors: :user:`Aparna-Sakshi`, :user:`AreloTanoh`, :user:`BINAYKUMAR943`, :user:`Flix6x`, :user:`GuzalBulatova`, :user:`IlyasMoutawwakil`, :user:`Lovkush-A`, :user:`MatthewMiddlehurst`, :user:`RNKuhns`, :user:`SveaMeyer13`, :user:`TonyBagnall`, :user:`afzal442`, :user:`aiwalter`, :user:`bilal-196`, :user:`corvusrabus`, :user:`fkiraly`, :user:`freddyaboulton`, :user:`juanitorduz`, :user:`justinshenk`, :user:`ltoniazzi`, :user:`mathco-wf`, :user:`mloning`, :user:`moradabaz`, :user:`pul95`, :user:`tensorflow-as-tf`, :user:`thayeylolu`, :user:`victordremov`, :user:`whackteachers` and :user:`xloem`

[0.7.0] - 2021-07-12#

Added#

Changed#

Fixed#

All contributors: :user:`Dbhasin1`, :user:`GuzalBulatova`, :user:`Lovkush-A`, :user:`MarcoGorelli`, :user:`MatthewMiddlehurst`, :user:`RNKuhns`, :user:`Riyabelle25`, :user:`SveaMeyer13`, :user:`TonyBagnall`, :user:`Yard1`, :user:`aiwalter`, :user:`chrisholder`, :user:`ckastner`, :user:`fkiraly`, :user:`jambo6`, :user:`julramos`, :user:`kachayev`, :user:`ltsaprounis`, :user:`mloning`, :user:`thayeylolu` and :user:`tombh`

[0.6.1] - 2021-05-14#

Fixed#

Changed#

Added#

All contributors: :user:`GuzalBulatova`, :user:`RNKuhns`, :user:`aaronreidsmith`, :user:`aiwalter`, :user:`kachayev`, :user:`ltsaprounis`, :user:`luiszugasti`, :user:`mloning`, :user:`satya-pattnaik` and :user:`yashlamba`

[0.6.0] - 2021-04-15#

Fixed#

Changed#

Added#

All contributors: :user:`AidenRushbrooke`, :user:`Ifeanyi30`, :user:`Lovkush-A`, :user:`MarcoGorelli`, :user:`MatthewMiddlehurst`, :user:`TonyBagnall`, :user:`afzal442`, :user:`aiwalter`, :user:`ayan-biswas0412`, :user:`dsherry`, :user:`jschemm`, :user:`kanand77`, :user:`koralturkk`, :user:`luiszugasti`, :user:`mloning`, :user:`pabworks` and :user:`xuyxu`

[0.5.3] - 2021-02-06#

Fixed#

Changed#

Added#

All contributors: :user:`Lovkush-A`, :user:`MatthewMiddlehurst`, :user:`RNKuhns`, :user:`TonyBagnall`, :user:`ViktorKaz`, :user:`aiwalter`, :user:`goastler`, :user:`koralturkk`, :user:`mloning`, :user:`pabworks`, :user:`patrickzib` and :user:`xuyxu`

[0.5.2] - 2021-01-13#

Fixed#

All contributors: :user:`Hephaest`, :user:`MatthewMiddlehurst`, :user:`TonyBagnall`, :user:`aiwalter` and :user:`dhirschfeld`

[0.5.1] - 2020-12-29#

Added#

Fixed#

All contributors: :user:`HYang1996`, :user:`TonyBagnall`, :user:`afzal442`, :user:`aiwalter`, :user:`angus924`, :user:`juanitorduz`, :user:`mloning` and :user:`ngupta23`

[0.5.0] - 2020-12-19#

Added#

Changed#

Fixed#

Removed#

All contributors: :user:`AaronX121`, :user:`Afzal-Ind`, :user:`AidenRushbrooke`, :user:`HYang1996`, :user:`MarcoGorelli`, :user:`MatthewMiddlehurst`, :user:`MichalChromcak`, :user:`TonyBagnall`, :user:`aiwalter`, :user:`bmurdata`, :user:`davidbp`, :user:`gracewgao`, :user:`magittan`, :user:`mloning`, :user:`ngupta23`, :user:`patrickzib`, :user:`raishubham1`, :user:`tch`, :user:`utsavcoding`, :user:`vnmabus`, :user:`vollmersj` and :user:`whackteachers`

[0.4.3] - 2020-10-20#

Added#

Changed#

Fixed#

All contributors: :user:`Emiliathewolf`, :user:`alwinw`, :user:`evanmiller29`, :user:`kkoziara`, :user:`krumeto`, :user:`mloning` and :user:`patrickzib`

[0.4.2] - 2020-10-01#

Added#

Fixed#

Changed#

All contributors: :user:`HYang1996`, :user:`SebasKoel`, :user:`fkiraly`, :user:`akanz1`, :user:`alwinw`, :user:`big-o`, :user:`brettkoonce`, :user:`mloning`, :user:`patrickzib`

[0.4.1] - 2020-07-09#

Added#

Changed#

Fixed#

All contributors: :user:`Ayushmaanseth`, :user:`Mo-Saif`, :user:`Pangoraw`, :user:`marielledado`, :user:`mloning`, :user:`sophijka`, :user:`Cheukting`, :user:`MatthewMiddlehurst`, :user:`Multivin12`, :user:`ABostrom`, :user:`HYang1996`, :user:`BandaSaiTejaReddy`, :user:`vedazeren`, :user:`hiqbal2`, :user:`btrtts`

[0.4.0] - 2020-06-05#

Added#

  • Forecasting framework, including: forecasting algorithms (forecasters), tools for composite model building (meta-forecasters), tuning and model evaluation

  • Consistent unit testing of all estimators

  • Consistent input checks

  • Enforced PEP8 linting via flake8

  • Changelog

  • Support for Python 3.8

  • Support for manylinux wheels

Changed#

  • Revised all estimators to comply with common interface and to ensure scikit-learn compatibility

Removed#

  • A few redundant classes for the series-as-features setting in favour of scikit-learn’s implementations: Pipeline and GridSearchCV

  • HomogeneousColumnEnsembleClassifier in favour of more flexible ColumnEnsembleClassifier

Fixed#

  • Deprecation and future warnings from scikit-learn

  • User warnings from statsmodels