Changelog#

All notable changes to this project will be documented in this file. We keep track of changes in this file since v0.4.0. 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 upcoming changes and next releases, see our milestones. For our long-term plan, see our Roadmap.

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#

  • [MNT] 0.28.0 deprecations and change actions (#6198) @fkiraly

  • [MNT] raise pandas bound to pandas<2.3.0 (#5841) @fkiraly

  • [MNT] update temporian bound to <0.9.0,!=0.8.0 (#6222) @fkiraly

  • [MNT] revert switch from pykalman to pykalman-bardo (#6114) @fkiraly

  • [MNT] [Dependabot](deps-dev): Update pytest-cov requirement from <4.2,>=4.1 to >=4.1,<5.1 (#6215) @dependabot[bot]

  • [MNT] [Dependabot](deps): Bump tj-actions/changed-files from 43 to 44 (#6226) @dependabot[bot]

  • [ENH] stricter condition for get_test_params not failing in repo soft dependency isolation tests (#6223) @fkiraly

Version 0.27.1 - 2024-03-25#

Highlights#

  • Phase 1 integration with temporian - TemporianTransformer transformer (#5980) @ianspektor, @achoum, @javiber

  • Phase 1 integration with tsbootstrap - TSBootstrapAdapter transformer (#5887) @benHeid, @astrogilda, @fkiraly

  • Shapelet transform from pyts available as sktime transformer (#6082) @Abhay-Lejith

  • Catch22 transformer now supports short aliases and parallelization backend selection (#6002) @julnow

  • forecasting tuners can now return performances of all parameters, via return_n_best_forecasters=-1 (#6031) @HassnHamada

  • NeuralForecastRNN can now auto-detect freq (#6039) @geetu040

  • time series splitters are now first-class objects, with suite tests and check_estimator support (#6051) @fkiraly

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#

  • [ENH] check_estimator integration for splitters (#6051) @fkiraly

Data loaders#

  • [ENH] automatic inference of file ending in data loaders for single file types (#6045) @SaiRevanth25

Data types, checks, conversions#

  • [ENH] use Index.unique instead of set in conversion from pd-multiindex to df-list mtype by @fkiraly (#6007)

Distances, kernels#

  • [ENH] Second test parameter set for shapeDTW (#6093) @Xinyu-Wu-0000

  • [ENH] add colalign functionality to ScipyDist class as specified in the docstrings (#6110) @fnhirwa

Forecasting#

  • [ENH] forecasting tuners, return_n_best_forecasters=-1 to return performances of all forecasters (#6031) @HassnHamada

  • [ENH] NeuralForecastRNN freq auto-detect feature (#6039) @geetu040

  • [ENH] neuralforecast based LSTM model by @pranavvp16 (#6047)

  • [ENH] fix ForecastingHorizon.freq handling for pandas 2.2.X by @fkiraly (#6057)

Neural network templates#

Time series classification#

  • [ENH] remove private methods from parameters of ProximityForest, ProximityTree, and ProximityStump by @fnhirwa (#6046)

Time series clustering#

Time series regression#

  • [ENH] Migrate DL regressors from sktime-dl: CNTC, InceptionTime, MACNN (#6038) @nilesh05apr

  • [ENH] MultiplexRegressor - autoML multiplexer for time series regressors (#6075) @ksharma6

Transformations#

Test framework#

Documentation#

Maintenance#

  • [MNT] [Dependabot](deps-dev): Update holidays requirement from <0.45,>=0.29 to >=0.29,<0.46 (#6164) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update dtw-python requirement from <1.4,>=1.3 to >=1.3,<1.5 (#6165) @dependabot[bot]

  • [MNT] [Dependabot](deps): Bump tj-actions/changed-files from 42 to 43 (#6125) @dependabot[bot]

  • [MNT] temporary skip sporadically failing tests for ShapeletTransformPyts (#6172) @fkiraly

  • [MNT] create build tool to check invalid backticks (#6088) @geetu040

  • [MNT] decouple catch22 module from numba utilities (#6101) @fkiraly

  • [MNT] bound temporian<0.8.0 (#6184) @fkiraly

  • [MNT] Ensure Update Contributors does not run on main (#6189) @Greyisheep, @duydl

  • [MNT] initialize change cycle (0.28.0) for renaming cINNForecaster to CINNForecaster (#6121) @geetu040

  • [MNT] Fix failing tests due to tensorflow update (#6098) @benHeid

  • [MNT] silence sporadic failure in test_evaluate_error_score (#6058) @fkiraly

  • [MNT] update statsforecast version in forecasting extra (#6064) @yarnabrina

  • [MNT] Docker files updated by (#6076) @deysanjeeb

  • [MNT] deprecation action timing for Catch22 changes (#6123) @fkiraly

  • [MNT] run update-contributors workflow only on PR by (#6133) @fkiraly

  • [MNT] temporary skip sporadically failing tests for ShapeletTransformPyts (#6172) @fkiraly

  • [MNT] enable concurrency settings in ‘Install and Test’ GHA workflow (#6074) @MEMEO-PRO

  • [MNT] temporary skip for some sporadic failures on main (#6208) @fkiraly

Fixes#

Distances, kernels#

Estimator registry#

  • [BUG] remove unnecessary line in all_estimators (#6103) @fkiraly

Forecasting#

  • [BUG] Fixed SARIMAX failure when X is passed to predict but not fit (#6005) @Abhay-Lejith

  • [BUG] fix BaseForecaster.predict_var default if predict_proba is implemented (#6067) @fkiraly

  • [BUG] In ForecastingHorizon, ignore ValueError on pd.infer_freq when index has fewer than 3 values (#6097) @tpvasconcelos

Time series classification#

  • [BUG] fix super calls in deep learning classifiers and regressors (#6139) @fkiraly

  • [BUG] Resolved wrong arg name lr in SimpleRNNClassifier and regressor, fix minor batch_size param issue in ResNetClassifier (#6154) @vandit98

Time series regression#

  • [BUG] fix BaseRegressor.score method failing with sklearn.metrics r2_score got an unexpected keyword argument 'normalize (#6019) @Cyril-Meyer

  • [BUG] fix super calls in deep learning classifiers and regressors (#6139) @fkiraly

  • [BUG] fix network construction in InceptionTimeRegressor (#6140) @fkiraly

Transformations#

Test framework#

  • [BUG] fix deep_equals when comparing ForecastingHorizon of different lengths by @MBristle (#5954)

Webpage#

  • [BUG] fix search function for estimator overview not working (#6105) @duydl

Contributors#

@Abhay-Lejith, @achoum, @albertoazzari, @Alex-JG3, @astrogilda, @benHeid, @Cyril-Meyer, @deysanjeeb, @duydl, @fkiraly, @fnhirwa, @fspinna, @geetu040, @Greyisheep, @HassnHamada, @ianspektor, @javiber, @julian-fong, @julnow, @KaustubhUp025, @kcentric, @ksharma6, @manuel-munoz-aguirre, @MBristle, @MEMEO-PRO, @meraldoantonio, @nilesh05apr, @pranavvp16, @SaiRevanth25, @sahusiddharth, @shankariraja, @stevcabello, @tiloye, @tpvasconcelos, @vandit98, @Xinyu-Wu-0000, @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#

  • [DOC] improved formatting of HierarchyEnsembleForecaster docstring (#6008) @fkiraly

  • [DOC] add missing PluginParamsTransformer to API reference (#6010) @fkiraly

  • [DOC] update contact links in code of conduct (#6011) @fkiraly

  • [DOC] 2024 summer programme links on sktime.net landing page (#6013) @fkiraly

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#

  • [ENH] efficient _evaluate_by_index for MeanAbsolutePercentageError (#5842) @fkiraly

Data loaders#

Data types, checks, conversions#

  • [ENH] polars based Table mtype, feature name metadata (#5757) @fkiraly

Forecasting#

  • [ENH] Conditional Invertible Neural Network forecaster (#5339) @benHeid

  • [ENH] Expose seasonality parameters of ProphetPiecewiseLinearTrendForecaster (#5834) @sbuse

  • [ENH] centralize logic for safe clone of delegator tags - forecasting (#5845) @fkiraly

  • [ENH] FallbackForecaster - support for probabilistic forecasters (#5847) @ninedigits

  • [ENH] interface to ARIMA from statsmodels library (#5857) @arnaujc91

  • [ENH] Improved specificity of some error messages in forecasters and transformations (#5882) @fkiraly

  • [ENH] statsforecast AutoTBATS direct interface estimator (#5908) @yarnabrina

  • [ENH] Several updates in direct statsforecast interface estimators (#5920) @yarnabrina

  • [ENH] Add nan policy handler for FallbackForecaster (#5924) @ninedigits

  • [ENH] ForecastX option to use future-known variables as exogenous variables in forecasting future-unknown exogenous variables (#5926) @fkiraly

  • [ENH] neuralforecast adapter and rnn forecaster (#5962) @yarnabrina

  • [ENH] rearchitect ForecastingSkoptSearchCV on abstract parallelization backend (#5973) @fkiraly

  • [ENH] in ForecastingPipeline, allow None X to be passed to transformers (#5977) @albahhar, @fkiraly

Time series annotation#

Time series classification#

  • [ENH] k-nearest neighbors classifier: support for non-brute algorithms and non-precomputed mode to improve memory efficiency (#5937) @fkiraly

  • [ENH] adapter to pyts KNeighborsClassifier (#5939) @fkiraly

  • [ENH] adapter to tslearn KNeighborsTimeSeriesClassifier (#5952) @fkiraly

  • [ENH] Feature importance capability tag for classifiers (#5969) @sanjayk0508

Time series regression#

Transformations#

  • [ENH] pyts adapter and interface to pyts ROCKET (#5851) @fkiraly

  • [ENH] in transformer dunders, uniformize coercion of sklearn transformers (#5869) @fkiraly

  • [ENH] Improved specificity of some error messages in forecasters and transformations (#5882) @fkiraly

  • [ENH] second set of test parameters for TSInterpolator (#5910) @sanjayk0508

  • [ENH] improved output type checking error messages in BaseTransformer.transform (#5921) @fkiraly

  • [ENH] refactor Catch22Wrapper transformer to use pd.Series type internally (#5983) @fkiraly

Test framework#

  • [ENH] testing estimators whose package dependencies are changed in pyproject.toml (#5727) @fkiraly

Fixes#

Forecasting#

  • [BUG] Remove duplicative setting of _fh and _y in _fit of _pytorch.py (#5889) @benHeid

  • [BUG] BaseForecaster - move check_fh to inner loop if vectorized (#5900) @ciaran-g

  • [BUG] fix sporadic failure of ConformalIntervals if sample_frac is too low (#59/2) @fkiraly

Pipelines#

  • [BUG] In Pipeline, empty dummy step’s buffer only if new data arrive (#5837) @benHeid

Probability distributions and simulators#

  • [BUG] fix missing loc/scale in TDistribution methods (#5942) @ivarzap

Time series classification#

  • [BUG] corrected default loss function to CNNClassifier (#5852) @Vasudeva-bit

  • [BUG] fix BaseClassifier.fit_predict for multioutput y and non-none cv (#5928) @fkiraly

  • [BUG] fix input check error message in BaseTransformer (#5947) @fkiraly

Transformations#

Maintenance#

  • [MNT] improvements to modular CI framework - part 2, merge frameworks (#5785) @fkiraly

  • [MNT] pandas 2.2.X compatibility fixes (#5840) @fkiraly

  • [MNT] fix moto breaking change by using different mocking methods depending on version (#5858) @yarnabrina

  • [MNT] address some pandas deprecations (#5883) @fkiraly

  • [MNT] addressed FutureWarning for RMSE by using newer root_mean_absolute_error function (#5884) @yarnabrina

  • [MNT] Skip mlflow tests when soft-dependencies are absent (#5888) @achieveordie

  • [MNT] fix failing CRON “test all” workflow (#5925) @fkiraly

  • [MNT] update versions of several actions (#5929) @yarnabrina

  • [MNT] Add codecov token to coverage uploads (#5930) @yarnabrina

  • [MNT] CI on main fix: add checkout step to detect steps in CI (#5945) @fkiraly

  • [MNT] address some upcoming deprecations (#5971) @fkiraly

  • [MNT] avoid running unit tests in CI for documentation/template/etc changes (#5976) @yarnabrina

  • [MNT] [Dependabot](deps-dev): Update dask requirement from <2024.1.1 to <2024.1.2 (#5861) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update dask requirement from <2024.1.2 to <2024.2.1 (#5958) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update holidays requirement from <0.43,>=0.29 to >=0.29,<0.44 (#5965) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update dask requirement from <2024.2.1 to <2024.2.2 (#5991) @dependabot[bot]

Documentation#

Contributors#

@Abhay-Lejith, @achieveordie, @albahhar, @arnaujc91, @benHeid, @ciaran-g, @Cyril-Meyer, @eduardojp26, @fkiraly, @ivarzap, @ninedigits, @oleeviyababu, @sanjayk0508, @sbuse, @Vasudeva-bit, @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#

  • in make_reduction, direct reduction forecaster now supports probabilistic tabular regressors from skpro (#5536) @fkiraly

  • new, efficient, parallelizable PAA and SAX transformer implementations, available as PAA2, SAX2 (#5742) @steenrotsman

  • FallbackForecaster, fallback chain of multiple forecaster for exception handling (#5779) @ninedigits

  • time series classification: sktime native grid search, multiplexer for autoML (#4596, #5678) @achieveordie, @fkiraly

  • IgnoreX - forecasting compositor to ignore exogenous data, for use in tuning (#5769) @hliebert, @fkiraly

  • classifier migrated from sktime-dl: CNTC classifier (#3978) @aurumnpegasus

  • authors and maintainers of algorithms are now tracked via tags "authors" and "maintainers", see below

Dependency changes#

  • arch (forecasting and parameter estimation soft dependency) bounds have been updated to >=5.6,<6.4.0 (#5771) @dependabot[bot]

  • mne (transformations soft dependency) bounds have been updated to >=1.5,<1.7 (#5585) @dependabot[bot]

  • dask (data container and parallelization back-end) bounds have been updated to <2024.1.1 (#5748) @dependabot[bot]

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#

  • [ENH] update deep_equals to accommodate plugins, e.g., for polars (#5504) @fkiraly

  • [ENH] Replace isinstance by object_type tag based checks (#5657) @benheid

  • [ENH] author and maintainer tags (#5754) @fkiraly

  • [ENH] enable all_tags to retrieve estimator and object tags (#5798) @fkiraly

  • [ENH] remove maintainer information from CODEOWNERS in favour of estimator tags (#5808) @fkiraly

  • [ENH] author and maintainer tags for alignment and distances modules (#5801) @fkiraly

  • [ENH] author and maintainer tags for forecasting module (#5802) @fkiraly

  • [ENH] author and maintainer tags for distributions and parameter fitting module (#5803) @fkiraly

  • [ENH] author and maintainer tags for classification, clustering and regression modules (#5807) @fkiraly

  • [ENH] author and maintainer tags for transformer module (#5800) @fkiraly

Benchmarking, Metrics, Splitters#

  • [ENH] Repeat splitter composition (#5737) @fkiraly

  • [ENH] parallelization support and config for forecasting performance metrics (#5813) @fkiraly

Data types, checks, conversions#

  • [ENH] in VectorizedDF, partially decouple internal data store from methods (#5681) @fkiraly

Forecasting#

Parameter estimation and hypothesis testing#

  • [ENH] Simplify BaseEstimator._get_fitted_params() and BaseParamFitter inheritance of that method (#5633) @tpvasconcelos

  • [ENH] parameter plugin for estimator into transformers, right concat dunder (#5764) @fkiraly

Probability distributions and simulators#

Time series classification#

Transformations#

  • [ENH] better explanation about fit/transform instance linking in instance-wise transformers in error messages, and pointer to common solution (#5652) @fkiraly

  • [ENH] New PAA and SAX transformer implementations (#5742) @steenrotsman

  • [ENH] feature upgrade for SplitterSummarizer - granular control of inner fit/transform input (#5750) @fkiraly

  • [ENH] allow BaseTransformer._transform to return None (#5772) @fkiraly, @hliebert

Test framework#

  • [ENH] refactor tests with parallelization backend fixtures to programmatic backend fixture lookup (#5714) @fkiraly

  • [ENH] further refactor parallelization backend test fixtures to use central location (#5734) @fkiraly

Fixes#

BaseObject and base framework#

  • [BUG] fix scitype inference utility for all cases (#5672) @fkiraly

  • [BUG] fixes for minor typos in error message related to custom joblib backend selection (#5724) @fkiraly

  • [BUG] handles AttributeError in show_versions when dependency lacks __version__ (#5793) @yarnabrina

  • [BUG] fix type error in parallelization backend test fixture refactor (#5760) @fkiraly

Benchmarking, Metrics, Splitters#

  • [BUG] Fix dynamic make_forecasting_scorer for newer sklearn metrics (#5717) @fkiraly

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

Data loaders#

  • [BUG] fix extract_path arg in sktime.datasets.load_UCR_UEA_dataset (#5744) @steenrotsman

Data types, checks, conversions#

  • [BUG] fix deep_equals for np.array with dtype="object" (#5697) @fkiraly

Forecasting#

  • [BUG] fix ForecastingHorizon.get_expected_pred_idx sort_time (#5726) @fkiraly

  • [BUG] in BaggingForecaster, fix random_state handling (#5730) @fkiraly

Pipelines#

Time series classification#

  • [BUG] fix predict output conversion failure in BaseClassifier, BaseRegressor, if y_inner_mtype tag is a list (#5680) @fkiraly

  • [BUG] fix test_multioutput for genuinely multioutput classifiers (#5700) @fkiraly

Time series regression#

  • [BUG] fix predict output conversion failure in BaseClassifier, BaseRegressor, if y_inner_mtype tag is a list (#5680) @fkiraly

Transformations#

  • [BUG] skip sporadic test errors in ExponentialSmoothing (#5516) @achieveordie

  • [BUG] fix sporadic permutation of internal feature columns in TSFreshClassifier.predict (#5673) @fkiraly

  • [BUG] fix backend strings in transformer test_base (#5695) @fkiraly

  • [BUG] Ensure MultiRocketMultivariate uses random_state (#5710) @chrico-bu-uab

Test framework#

Maintenance#

  • [MNT] [Dependabot](deps-dev): Update sphinx-issues requirement from <4.0.0 to <5.0.0 (#5792) @dependabot[bot]

  • [MNT] [Dependabot](deps): Bump tj-actions/changed-files from 41 to 42 (#5777) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update arch requirement from <6.3.0,>=5.6 to >=5.6,<6.4.0 (#5771) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update mne requirement from <1.6,>=1.5 to >=1.5,<1.7 (#5585) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update dask requirement from <2023.12.2 to <2024.1.1 (#5748) @dependabot[bot]

  • [MNT] improvements to modular CI framework - clearer naming, pyproject handling (#5713) @fkiraly

  • [MNT] temporary deactivation of new CI (#5795) @fkiraly

  • [MNT] fix faulty deprecation logic for n_jobs, pre_dispatch in forecasting tuners, bump deprecation to 0.27.0 (#5784) @fkiraly

  • [MNT] update python version in binder dockerfile to 3.11 (#5762) @fkiraly

  • [MNT] address various deprecations from pandas (#5733) @fkiraly, @yarnabrina

  • [MNT] scikit-learn 1.4.0 compatibility patches (#5782, #5811) @fkiraly

  • [MNT] Code quality updates (#5786) @yarnabrina

  • [MNT] change cycle for making SAX2 and PAA2 primary implementation renamed to SAX, PAA (#5799) @fkiraly

  • [MNT] remove maintainer information from CODEOWNERS in favour of estimator tags (#5808) @fkiraly

  • [MNT] addressing more pandas deprecations (#5816) @fkiraly

  • [MNT] address pd.DataFrame.groupby(axis=1) deprecation in EnsembleForecaster (#5707) @ninedigits

  • [MNT] add missing __author__ field for MultiRocket and MultiRocketMultivariate (#5698) @fkiraly

  • [MNT] addressing DataFrame.groupby(axis=1) deprecation in metric classes (#5709) @fkiraly

  • [MNT] added upper bound pycatch22<0.4.5 in transformations dependency set to avoid installation error on windows (#5670) @yarnabrina

  • [MNT] refactoring new CI to fix some bugs and other minor enhancements (#5638) @yarnabrina

  • [MNT] Update tslearn dependency version in pyproject.toml (#5686) @DManowitz

  • [MNT] fix several spelling mistakes (#5639) @yarnabrina

Documentation#

  • [DOC] comment in CONTRIBUTORS.md that source file is all-contributorsrc (#5687) @fkiraly

  • [DOC] improved docstring for TrendForecaster and PolynomialTrendForecaster (#5747) @fkiraly

  • [DOC] updated algorithm inclusion guide (#5753) @fkiraly

  • [DOC] improved docstring for TimeSeriesForestClassifier (#5741) @fkiraly

  • [DOC] fix scitype string of transformers in API ref (#5759) @fkiraly

  • [DOC] improved formatting of tag section in extension templates (#5812) @fkiraly

  • [DOC] Imputer: docstring clarity improvement, conditional parameter handling logic (#3916) @aiwalter, @fkiraly`

  • [DOC] extension template for time series splitters (#5769) @fkiraly

  • [DOC] update soft dependency handling guide for tests with tag based dependency checking (#5756) @fkiraly

  • [DOC] fix all import failures in API docs and related missing exports (#5752) @fkiraly

  • [DOC] improve clarity in describing strategy="refit" in forecasting tuners’ docstrings (#5711) @fkiraly

  • [DOC] correct type statement in forecasting tuner regarding forecaster (#5699) @fkiraly

  • [DOC] various minor API reference improvements (#5721) @fkiraly

  • [DOC] add ReducerTransform and DirectReductionForecaster to API reference (#5690) @fkiraly

  • [DOC] remove outdated sktime-dl reference in README.md (#5685) @fkiraly

Contributors#

@achieveordie, @aiwalter, @alex-jg3, @aurumnpegasus, @benheid, @chrico-bu-uab, @corradomio, @DManowitz, @fkiraly, @hliebert, @NguyenChienFelix33, @ninedigits, @kurayami07734, @steenrotsman, @tpvasconcelos, @tvdboom, @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#

  • [ENH] Multioutput capability for all time series classifiers and regressors, broadcasting and tag (#5408) @Vasudeva-bit

  • [ENH] Support for panel-to-series transformers, merger transformation (#5351) @benHeid

  • [ENH] allow object dtype-s in pandas based Table mtype-s (#5651) @fkiraly

  • [ENH] intermediate base class for panel tasks - classification, regression (#5662) @fkiraly

  • [MNT] CI element to test blogpost notebooks (#5663) @fkiraly, @yarnabrina

  • [MNT] 0.25.0 deprecations and change actions (#5613) @fkiraly

Contributors#

@benHeid, @fkiraly, @Vasudeva-bit, @yarnabrina

Version 0.24.2 - 2023-12-24#

Highlights#

  • FunctionParamFitter for custom parameter switching, e.g., applying forecaster or transformer conditional on instance properties (#5630) @tpvasconcelos

  • calibration_plot for probabilistic forecasts (#5632) @benHeid

  • prophet based piecewise linear trend forecaster (#5592) @sbuse

  • new transformer: dilation mapping (#5557) @fspinna

  • custom joblib backends are now supported in parallelization via set_config (#5537) @fkiraly

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#

  • [ENH] improved error messages for input checks in base classes (#5510) @fkiraly

  • [ENH] support for custom joblib backends in parallelization (#5537) @fkiraly

  • [ENH] consistent use of np.ndarray for mtype tags (#5648) @fkiraly

  • [ENH] set output format parameter in sktime internal check_is_mtype calls to silence deprecation warnings (#5563) @benHeid

Benchmarking, Metrics, Splitters#

  • [ENH] cutoff and forecasting horizon loc based splitter (#5575) @fkiraly

  • [ENH] enable tag related registry tests for splitter estimator type (#5576) @fkiraly

Data types, checks, conversions#

  • [ENH] sklearn facing coercion utility for pd.DataFrame, to str columns (#5550) @fkiraly

  • [ENH] deep_equals - clearer return on diffs from dtypes and index, relaxation of MultiIndex equality check (#5560) @fkiraly

  • [ENH] Uniformization of pandas index types in mtypes (#5561) @fkiraly

  • [ENH] n_features and feature_names metadata field for time series mtypes (#5596) @fkiraly

Forecasting#

  • [ENH] expected forecast prediction index utility in ForecastingHorizon (#5501) @fkiraly

  • [ENH] refactor index generation in reducers to use ForecastingHorizon method (#5539) @fkiraly

  • [ENH] fix index name check for reduction forecasters (#5543) @fkiraly

  • [ENH] forecaster fit_predict with X_pred argument for predict (#5562) @fkiraly

  • [ENH] refactor DirectReductionForecaster``to use ``sklearn input coercion utility (#5581) @fkiraly

  • [ENH] export and test DirectReductionForecaster (#5582) @fkiraly

  • [ENH] prophet based piecewise linear trend forecaster (#5592) @sbuse

  • [ENH] Add fit_kwargs to Prophet (#5597) @tpvasconcelos

  • [ENH] Croston test parameters - integer smoothing parameter (#5608) @NguyenChienFelix33

  • [ENH] prophet adapter - safer handling of fit_kwargs (#5622) @fkiraly

Parameter estimation and hypothesis testing#

Time series annotation#

  • [ENH] Change GGS to inherit from BaseSeriesAnnotator (#5315) @Alex-JG3

Time series classification#

  • [ENH] enable testing MrSQM for persistence in nsfa>0 case after upstream bugfix (#5171) @fkiraly

  • [ENH] num_epochs renamed to n_epochs in SimpleRNNClassifier and SimpleRNNRegressor (#5607) @aeyazadil

Time series clustering#

  • [ENH] enable tag related registry tests for clusterer estimator type (#5576) @fkiraly

Transformations#

  • [ENH] dilation mapping transformer (#5557) @fspinna

  • [ENH] second test parameter set for TSFreshRelevantFeatureExtractor (#5623) @fkiraly

Visualization#

  • [ENH] Add calibration_plot for probabilistic forecasts (#5632) @benHeid

Test framework#

  • [ENH] reactivate and fix test_multiprocessing_idempotent (#5573) @fkiraly

  • [ENH] test class register, refactor check_estimator test gathering to central location (#5574) @fkiraly

  • [ENH] conditional testing of objects - test if covering test class has changed (#5579) @fkiraly

Fixes#

BaseObject and base framework#

  • [BUG] fix scitype coerce_to_list parameter, add test coverage (#5578) @fkiraly

Data types, checks, conversions#

  • [BUG] Fix typos in mtype tags np.ndarray, from erroneous nd.array (#5645) @yarnabrina

Forecasting#

  • [BUG] in ARCH, fix str coercion of pd.Series name (#5407) @Vasudeva-bit

  • [BUG] in reduced regressor, copy or truncate X if it does not fit the forecasting horizon (#5542) @benHeid

  • [BUG] pass correct level argument from StatsForecastBackAdapter to statsforecast (#5587) @sd2k

  • [BUG] fix HierarchyEnsembleForecaster returned unexpected predictions if data had only one hierarchy level and forecasters specified by node (#5615) @VyomkeshVyas

  • [BUG] fix loss of time zone attribute in ForecastingHorizon.to_absolute (#5628) @fkiraly

  • [BUG] change index match to integer in _StatsModelsAdapter predict (#5642) @ciaran-g

Transformations#

  • [BUG] TsFreshFeatureExtractor - correct wrong forwarded parameter name profiling (#5600) @sssilvar

  • [BUG] Correct inference of TransformerPipeline output type tag (#5625) @fkiraly

Visualization#

  • [BUG] Fix multiple figures created by plot_windows (#5636) @benHeid

Maintenance#

Documentation#

Contributors#

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

Version 0.24.1 - 2023-11-05#

Highlights#

  • torch adapter, LTSF forecasters - linear, D-linear, N-linear (#4891, #5514) @luca-miniati

  • more period options in FourierFeatures: pandas period alias and from offset column (#5513) @Ram0nB

  • iisignature backend option for SignatureTransformer (#5398) @sz85512678

  • TimeSeriesForestClassifier feature importance and optimized interval generation (#5338) @YHallouard

  • all stationarity tests from arch package available as estimators (#5439) @Vasudeva-bit

  • Hyperbolic sine transformation and its inverse, ScaledAsinhTransformer, for soft input or output clipping (#5389) @ali-parizad

  • estimator serialization: user choice of serialization_format in save method and mlfow plugin, support for cloudpickle (#5486, #5526) @achieveordie

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#

  • [ENH] test that set_params recognizes unique suffixes as aliases for full parameter string (#2931) @fkiraly

  • [ENH] estimator serialization: user choice of serialization_format, support for cloudpickle (#5486) @achieveordie

Benchmarking, Metrics, Splitters#

  • [ENH] in ExpandingGreedySplitter, allow float step_size (#5329) @fkiraly

  • [ENH] Sensible default for BaseSplitter.get_n_splits (#5412) @fkiraly

Data sets and data loaders#

  • [ENH] Add tecator dataset for time series regression as sktime onboard dataset (#5428) @JonathanBechtel

Forecasting#

  • [ENH] LTSFLinearForecaster, LTSFLinearNetwork, BaseDeepNetworkPyTorch (#4891) @luca-miniati

  • [ENH] LTSFDLinearForecaster, LTSFNLinearForecaster (#5514) @luca-miniati

  • [ENH] parallel backend selection for forecasting tuners (#5430) @fkiraly

  • [ENH] in NaiveForecaster, add valid variance prediction for in-sample forecasts (#5499) @fkiraly

MLOps & Deployment#

  • [ENH] in mlflow plugin, improve informativity of ModuleNotFoundError messages (#5487) @achieveordie

  • [ENH] Add support for DL estimator persistence in mlflow plugin (#5526) @achieveordie

Neural networks#

Parameter estimation and hypothesis testing#

Time series annotation#

  • [ENH] Add unit tests for change point and segmentation plotting functions (#5509) @adamkells

Time series classification#

  • [ENH] TimeSeriesForestClassifier feature importance and optimized interval generation (#5338) @YHallouard

Transformations#

  • [ENH] Add Hyperbolic Sine transformation and its inverse (ScaledAsinhTransformer) (#5389) @ali-parizad

  • [ENH] iisignature backend option for SignatureTransformer (#5398) @sz85512678

  • [ENH] general inverse transform for MSTL transformer (#5457) @fkiraly

  • [ENH] more period options in FourierFeatures: pandas period alias and from offset column (#5513) @Ram0nB

Maintenance#

Documentation#

  • [DOC] fixing docstring example for FhPlexForecaster (#4931) @fkiraly

  • [DOC] Programmatically fix (all) typos (#5424) @kianmeng

  • [DOC] comments for readability of pyproject.toml (#5472) @fkiraly

  • [DOC] streamlining API reference, fixing minor issues (#5466) @fkiraly

  • [DOC] Fix more typos (#5478) @szepeviktor

  • [DOC] update docstring of STLTransformer to correct statements on inverse and pipelines (#5455) @fkiraly

  • [DOC] improved docstrings for statsforecast estimators (#5409) @fkiraly

  • [DOC] add missing API reference entries for five deep learning classifiers (#5522) @fkiraly

  • [DOC] fixed docstrings for stationarity tests (#5531) @fkiraly

Fixes#

BaseObject and base framework#

  • [BUG] fix error message in _check_python_version (#5473) @fkiraly

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 (#5469) @fkiraly

Forecasting#

  • [BUG] Fix pandas FutureWarning for silent upcasting (#5395) @tpvasconcelos

  • [BUG] fix predict function of make_reduction (recursive, global) to work with tz aware data (#5464) @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 (#5521) @fkiraly

Parameter estimation and hypothesis testing#

  • [BUG] fixed incorrect signs for some stationarity tests (#5531) @fkiraly

Time series annotation#

  • [BUG] CLASP logic: remove indexes from exclusion zone that are out of range (#5459) @Alex-JG3

  • [BUG] in ClaSPSegmentation, deal with k when it is too large for np.argpartition (#5490) @Alex-JG3

Time series classification#

  • [BUG] fix missing epochs parameter in MCDCNNClassifier._fit (#4996) (#5422) @pseudomo

  • [BUG] add missing exports five deep learning classifiers (#5522) @fkiraly

Transformations#

  • [BUG] fix test excepts for SignatureTransformer (#5474) @fkiraly

Visualization#

  • [BUG] fix plot_series prediction interval plotting for 3 or less points in forecasting horizon (#5494) @fkiraly

Contributors#

@achieveordie, @adamkells, @Alex-JG3, @ali-parizad, @ciaran-g, @fkiraly, @JonathanBechtel, @kianmeng, @luca-miniati, @pseudomo, @Ram0nB, @sz85512678, @szepeviktor, @tpvasconcelos, @Vasudeva-bit, @yarnabrina, @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#

@fkiraly, @mbalatsko

Version 0.23.1 - 2023-10-12#

Highlights#

  • all hierarchical/multivariate forecaster and transformer broadcasting can now use parallelization backends joblib, dask via set_config (#5267, #5268, #5301, #5311, #5405) @fkiraly

  • PeakTimeFeatures transformer to generate indicator features for one or multiple peak hours, days, etc (#5191) @ali-parizad

  • ARCH forecaster interfacing arch package (#5326) @Vasudeva-bit

  • forecasting reducer YfromX now makes probabilistic forecasts when using skpro probabilistic tabular regressors (#5271) @fkiraly

  • forecasting compositors ForecastX now allows fitting forecaster_y on forecasted X (#5334) @benHeid

  • lucky dynamic time warping distance and aligner, for use in time series classifiers, regressors, clusterers (#5341) @fkiraly

  • splitters have now moved to their own module, sktime.split (#5017) @BensHamza

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#

  • [ENH] warnings config (#4536) @fkiraly

  • [ENH] add exports of common utilities in utils module (#5266) @fkiraly

  • [ENH] in scitype check, replace base class register logic with type tag inspection (#5288) @fkiraly

  • [ENH] parallelization backend calls in utility module - part 1, refactor to utility module (#5268) @fkiraly

  • [ENH] parallelization backend calls in utility module - part 2, backend parameter passing (#5311) @fkiraly

  • [ENH] parallelization backend calls in utility module - part 3, backend parameter passing in base class broadcasting (#5405) @fkiraly

Benchmarking, Metrics, Splitters#

  • [ENH] consolidating splitters as their own module with systematic tests and extension (#5017, #5331) @BensHamza, @fkiraly

  • [ENH] allow evaluate to accept any combination of multiple metrics with correct predict method (#5192) @hazrulakmal

  • [ENH] add tests for temporal_train_test_split (#5332) @fkiraly

Data loaders#

Forecasting#

  • [ENH] Add a CurveFitForecaster based on scipy optimize_curve (#5240) @benHeid

  • [ENH] Restructure the trend forecasters module (#5242) @benHeid

  • [ENH] YfromX - probabilistic forecasts (#5271) @fkiraly

  • [ENH] Link test_interval_wrappers.py to changes in evaluate for conditional testing (#5337) @fkiraly

  • [ENH] joblib and dask backends in broadcasting of estimators in multivariate or hierarchical case - part 1, VectorizedDF.vectorize_est (#5267) @fkiraly

  • [ENH] joblib and dask backends in broadcasting of estimators in multivariate or hierarchical case - part 2, base class config (#5301) @fkiraly

  • [ENH] ARCH model interfacing arch package (#5326) @Vasudeva-bit

  • [ENH] in ForecastX, enable fitting forecaster_y on forecasted X (#5334) @benHeid

  • [ENH] Skip unnecessary fit in ForecastX if inner forecaster_y ignores X (#5353) @yarnabrina

  • [ENH] remove legacy except in TestAllEstimators for predict_proba (#5386) @fkiraly

Time series alignment#

  • [ENH] lucky dynamic time warping aligner (#5341) @fkiraly

  • [ENH] sensible default _get_distance_matrix for time series aligners (#5347) @fkiraly

Time series distances and kernels#

  • [ENH] delegator for pairwise time series distances and kernels (#5340) @fkiraly

  • [ENH] lucky dynamic time warping distance (#5341) @fkiraly

  • [ENH] simplified delegator interface to dtw-python based dynamic time warping distances (#5348) @fkiraly

Time series regression#

Transformations#

  • [ENH] PeakTimeFeatures transformer to generate indicator features for one/multiple peak/hours-day-week-, working hours, etc (#5191) @ali-parizad

  • [ENH] VmdTransformer, add decompose-forecast-recompose as a docstring example and test (#5250) @fkiraly`* [ENH] improve ``evaluate` failure error message (#5269) @fkiraly

  • [ENH] add proper inverse_transform to STLTransformer (#5300) @fkiraly

  • [ENH] joblib and dask backends in broadcasting of estimators in multivariate or hierarchical case - part 1, VectorizedDF.vectorize_est (#5267) @fkiraly

  • [ENH] joblib and dask backends in broadcasting of estimators in multivariate or hierarchical case - part 2, base class config (#5301) @fkiraly

  • [ENH] Refactor of DateTimeFeatures tests to pytest fixtures (#5397) @adamkells

Testing framework#

  • [ENH] add error message return to deep_equals assert in test_reconstruct_identical (#4927) @fkiraly

  • [ENH] incremental testing to also test if any parent class in sktime has changed (#5379) @fkiraly

Maintenance#

  • [MNT] revert update numba requirement from <0.58,>=0.53 to >=0.53,<0.59” (#5297) @fkiraly

  • [MNT] bound numba<0.58 (#5303) @fkiraly

  • [MNT] Remove attrs dependency (#5296) @Alex-JG3

  • [MNT] simplified CI - merge windows CI step with test matrix (#5362) @fkiraly

  • [MNT] towards 3.12 compatibility - replace distutils calls with equivalent functionality (#5376) @fkiraly

  • [MNT] skpro as a soft dependency (#5273) @fkiraly

  • [MNT] removed py37.dockerfile and update doc entry for CI (#5356) @kurayami07734

  • [MNT] [Dependabot](deps): Bump styfle/cancel-workflow-action from 0.11.0 to 0.12.0 (#5355) @dependabot[bot]

  • [MNT] [Dependabot](deps): Bump stefanzweifel/git-auto-commit-action from 4 to 5 (#5373) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update holidays requirement from <0.33,>=0.29 to >=0.29,<0.34 (#5276) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update numpy requirement from <1.26,>=1.21.0 to >=1.21.0,<1.27 (#5275) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update arch requirement from <6.2.0,>=5.6.0 to >=5.6.0,<6.3.0 (#5392) @dependabot[bot]

Documentation#

Fixes#

Benchmarking, Metrics, Splitters#

  • [BUG] fix temporal_train_test_split for hierarchical and panel data in case where fh is not passed (#5330) @fkiraly

  • [BUG] allow alpha and coverage to be passed again via metrics to evaluate (#5354) @fkiraly, @benheid

Forecasting#

  • [BUG] fix STLForecaster tag ignores-exogeneous-X to be correctly set for composites (#5365) @yarnabrina

  • [BUG] statsforecast 1.6.0 compatibility - in statsforecast adapter, fixing RuntimeError: dictionary changed size during iteration (#5317) @arnaujc91

  • [BUG] statsforecast 1.6.0 compatibility - fix argument differences between sktime and statsforecast (#5393) @luca-miniati

  • [BUG] Fix ARCH._check_predict_proba (#5384) @Vasudeva-bit

Time series alignment#

Time series distances and kernels#

Transformations#

  • [BUG] in Imputer, fix y not being passed in method="forecaster" (#5287) @fkiraly

  • [BUG] ensure Catch22 parameter setting n_jobs = -1 uses all cores (#5361) @julnow

Visualization#

  • [BUG] Fix inconsistent date/time index in plot_windows #4919 (#5321) @geronimos

Contributors#

@Abhay-Lejith, @achieveordie, @adamkells, @Alex-JG3, @alexfilothodoros, @alhridoy, @ali-parizad, @arnaujc91, @benHeid, @BensHamza, @fkiraly, @geronimos, @hazrulakmal, @julnow, @kurayami07734, @luca-miniati, @mdsaad2305, @pirnerjonas, @ShreeshaM07, @Vasudeva-bit, @xansh, @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#

  • [ENH] test for specification conformance of tag register (#5170) @fkiraly

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

  • [ENH] set mirrors for time series classification data loaders (#5260) @fkiraly

Forecasting#

  • [ENH] speed up tests in test_fh (#5098) @fkiraly

  • [ENH] Robustifying ForecastingGridSearchCV towards free kwarg methods in estimators, e.g., graphical pipeline (#5210) @benHeid

  • [ENH] make statsforecast adapter compatible with optional predict level arguments, and different init param sets (#5112) @arnaujc91

  • [ENH] fix test_set_freq_hier for pandas 2.1.0 (#5185) @fkiraly

Pipelines#

  • [ENH] Graphical Pipelines for any learning task (polymorphic) (#4652) @benHeid

  • [ENH] add warning that graphical pipeline is experimental (#5235) @benHeid

  • [ENH] ensure ForecastingPipeline is compatible with “featurizers” (#5252) @fkiraly

Probability distributions and simulators#

  • [ENH] Student’s t-distribution (#5050) @Alex-JG3

  • [ENH] empirical distribution (#5094) @fkiraly

  • [ENH] Laplace distribution (#5161) @fkiraly

  • [ENH] Refactor of BaseDistribution and descendants - generalised distribution param broadcasting in base class (#5176) @Alex-JG3

  • [ENH] fixture names in probability distribution tests (#5159) @fkiraly

Time series classification#

Time series distances and kernels#

  • [ENH] tslearn distances and kernels including adapter (#5039) @fkiraly

  • [ENH] conditional execution of test_distance and test_distance_params (#5099) @fkiraly

  • [ENH] refactor and add conditional execution to numba based distance tests (#5141) @fkiraly

Transformations#

Testing framework#

  • [ENH] speed up test_probabilistic_metrics by explicit fixture generation instead of using forecaster fit/predict (#5115) @Ram0nB

  • [ENH] test forecastingdata downloads only on a small random subset (#5146) @fkiraly

  • [ENH] widen scope of change-conditional test execution (#5100, #5135, #5147) @fkiraly

  • [ENH] differential testing of cython based estimators (#5206) @fkiraly

Maintenance#

  • [MNT] upgrade CI runners to latest stable images (#5031) @yarnabrina

  • [MNT] bound statsforecast<1.6.0 due to recent failures (#5149) @fkiraly

  • [MNT] test forecastingdata downloads only on a small random subset (#5146) @fkiraly

  • [MNT] lower dep bound compatibility patch - binom_test (#5152) @fkiraly

  • [MNT] fix dependency isolation of DateTimeFeatures tests (#5154) @fkiraly

  • [MNT] move fixtures in test_reduce_global to pytest fixtures (#5157) @fkiraly

  • [MNT] move fixtures in test_dropna to pytest fixtures (#5153) @fkiraly

  • [MNT] Extra dependency specifications per component (#5136) @yarnabrina

  • [MNT] add numba to python 3.11 tests (#5179) @fkiraly

  • [MNT] autoupdate for copyright range in sphinx docs (#5212) @fkiraly

  • [MNT] move Pipeline exception from test_all_estimators to test _config (#5251) @fkiraly

  • [MNT] Update versions of pre commit hooks and fix E721 issues pointed out by flake8 (#5163) @yarnabrina

  • [MNT] [Dependabot](deps-dev): Update sphinx-gallery requirement from <0.14.0 to <0.15.0 (#5124) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update pandas requirement from <2.1.0,>=1.1.0 to >=1.1.0,<2.2.0 (#5183) @dependabot[bot]

  • [MNT] [Dependabot](deps): Bump actions/checkout from 3 to 4 (#5189) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update holidays requirement from <0.32,>=0.29 to >=0.29,<0.33 (#5214) @dependabot[bot]

  • [MNT] [Dependabot](deps-dev): Update statsforecast requirement from <1.6,>=0.5.2 to >=0.5.2,<1.7 (#5215) @dependabot[bot]

Documentation#

  • [DOC] provisions for treasurer role (#4798) @marrov, @kiraly

  • [DOC] Fix make_pipeline, make_reduction, window_summarizer & load_forecasting data docstrings (#5065) @hazrulakmal

  • [DOC] minor docstring typo fixes in _DelegatedForecaster module (#5168) @fkiraly

  • [DOC] update forecasting extension template on predict_proba (#5138) @fkiraly

  • [DOC] speed-up tutorial notebooks - deep learning classifiers (#5169) @alexfilothodoros

  • [DOC] Fix rendering issues in ColumnEnsembleForecaster docstring, add ColumnEnsembleTransformer example (#5201) @benHeid

  • [DOC] installation instruction docs for learning task specific dependency sets (#5204) @fkiraly

  • [DOC] add allcontributors badges of benHeid (#5209) @benHeid

  • [DOC] fix typo in forecaster API reference (#5211) @fkiraly

  • [DOC] Fixing typos in installation.rst (#5213) @Akash190104

  • [DOC] Added examples for temporal_train_test_split docstring (#5216) @JonathanBechtel

  • [DOC] update to README badges: license, tutorials, and community further up (#5227) @fkiraly

  • [DOC] Simple edits to make STLForecaster docstring render properly (#5220) @hazrulakmal

  • [DOC] fixing conftest.py docstrings (#5228) @fkiraly

  • [DOC] clarify docstrings in trend.py (#5231) @sniafas

Fixes#

Benchmarking, Metrics, Splitters#

  • [BUG] in splitters, correctly infer series frequency for datetime datatype if not given (#5009) @hazrulakmal

  • [BUG] fix BaseWindowSplitter get_n_split method for hierarchical data (#5012) @hazrulakmal

Forecasting#

  • [BUG] fix check causing exception in ConformalIntervals in _predict (#5134) @fkiraly

  • [BUG] ensure forecasting tuners do not vectorize over columns (variables) (#5145) @fkiraly, @SmirnGregHM

  • [BUG] Fix tag to indicate support of exogenous features by NaiveForecaster (#5162) @yarnabrina

  • [BUG] Add missing return statement for y_dict in tests for composite forecasters (#5253) @BensHamza

  • [BUG] Fix missing y_train key in y_dict in tests for composite forecasters (#5255) @fkiraly

  • [BUG] Fix ForecastKnownValues failure on pd-multiindex (#5256) @mattiasatqubes

Pipelines#

  • [BUG] fix missing Pipeline export in sktime.pipeline (#5232) @fkiraly

Time series annotation#

  • [BUG] prevent exception in PyODAnnotator.get_test_params (#5151) @fkiraly

Transformations#

  • [BUG] adds missing tag skip-inverse-transform to ColumnSelect (#5208) @benHeid

Visualisations#

  • [BUG] address matplotlib deprecation of label attribute (#5246) @benHeid

Contributors#

@Akash190104, @Alex-JG3, @alexfilothodoros, @arnaujc91, @benHeid, @BensHamza, @DaneLyttinen, @fkiraly, @hazrulakmal, @heerme, @lnthach, @JonathanBechtel, @luca-miniati, @mattiasatqubes, @Ram0nB, @SmirnGregHM, @sniafas, @vrcarva, @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#

  • [MNT] failfast=False in the release workflow (#5120) @fkiraly

  • [MNT] 0.22.0 release action - deprecate deprecated in 0.21.0, remove in 0.22.0 (#4822) @fkiraly

  • [MNT] 0.22.0 deprecations and change actions (#5106) @fkiraly

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#

  • [ENH] Speed-up deep_equals - lazy evaluation of costly error message string coercions (#5044) @benHeid

  • [ENH] sktime str/object aliasing registry mechanism (#5058) @fkiraly

Benchmarking, Metrics, Splitters#

  • [ENH] private split_loc and tag to control dispatch of split_series to split vs split_loc (#4903) @fkiraly

  • [ENH] applying forecasting metrics disregarding index - docstrings and tests (#4960) @fkiraly

  • [ENH] metrics classes - add testing parameters (#5097) @fkiraly

  • [ENH] tests and fixes for numpy weights in performance metrics (#5086) @fkiraly

  • [ENH] input checks for BaseBenchmark, allow add_estimator to accept multiple estimators (#4877) @hazrulakmal

  • [ENH] tests and fixes for numpy weights in performance metrics - probabilistic metrics (#5104) @fkiraly

Data sets and data loaders#

  • [ENH] rework data loader module, ability to specify download mirrors (#4985) @fkiraly

Forecasting#

  • [ENH] improvements to _ColumnEstimator - refactor to reduce coupling with BaseForecaster (#4791) @fkiraly

  • [ENH] rewrite test_probabilistic_metrics using proper pytest fixtures (#4946) @julia-kraus

  • [ENH] add expanding greedy splitter (#4917) @davidgilbertson

  • [ENH] Interface statsforecast MSTL, statsforecast back-adapter (#4865) @luca-miniati

  • [ENH] contiguous fh option for FhPlexForecaster (#4926) @fkiraly

  • [ENH] ensure robustness of StatsForecastBackAdapter w.r.t. change of predict_interval return format (#4991) @fkiraly

  • [ENH] improve SARIMAX test parameter coverage (#4932) @janpipek

  • [ENH] interface to statsforecast ARCH family estimators (#4938) @eyjo

  • [ENH] add test cases for Croston and ExponentialSmoothing (#4935) @Gigi1111

  • [ENH] applying forecasting metrics disregarding index - docstrings and tests (#4960) @fkiraly

  • [ENH] alias strings for scoring argument in forecasting tuners (#5058) @fkiraly

  • [ENH] allow YfromX to take missing data (#5062) @eenticott-shell

Parameter estimators#

  • [ENH] speed up parameter fitter base class boilerplate (#5057) @fkiraly

Probability distributions and simulators#

  • [ENH] add length option to _bottom_hier_datagen hierarchical data generator, speed up ReconcilerForecaster doctest (#4979) @fkiraly

Time series alignment#

  • [ENH] edit distance alignment algorithms from sktime native numba based aligners (#5075) @fkiraly

  • [ENH] extend BaseAligner.fit with input conversion (#5077) @fkiraly

  • [ENH] naive multiple aligners for baseline comparisons (#5076) @fkiraly

  • [ENH] tag for full/partial alignment, exact tests for full alignment output (#5080) @fkiraly

Time series classification#

  • [ENH] full rework of time series classification notebook (#5045) @fkiraly

Time series clustering#

  • [ENH] Explicit centroid init for TimeSeriesLloyds, TimeSeriesKMeans and TimeSeriesKMedoids (#5001) @Alex-JG3

  • [ENH] generalized tslearn adapter and clusterer refactor (#4992) @fkiraly

  • [ENH] interface to all tslearn clusterers (#5037) @fkiraly

Time series distances and kernels#

  • [ENH] distance/kernel tag, uniformize base module (#5038) @fkiraly

Transformations#

  • [ENH] inverse transform for CosineTransformer, tag handling for limited range of invertibility (#3671) @fkiraly

  • [ENH] Holiday indicator transformers by country or market based on holidays package (#4893) @yarnabrina

  • [ENH] HolidayFeatures transformer (#4909) @VyomkeshVyas

  • [ENH] enable use of TabularToSeriesAdaptor with feature selectors, and passing of y (#4978) @fkiraly

  • [ENH] speed up BaseTransformer checks and conversion boilerplate (#5036) @fkiraly

  • [ENH] DropNA transformer to drop rows or columns with nan (#5049) @hliebert

  • [ENH] speed up Lag transformer (#5035) @fkiraly

  • [ENH] option to remember data in SplitterSummarizer (#5070) @fkiraly

Testing framework#

  • [ENH] speed-up test collection by improvements to _testing.scenarios (#4901) @tarpas

  • [ENH] test for more than one parameter sets per estimator (#2862) @fkiraly

  • [ENH] remove sklearn dependency in test_get_params (#5011) @fkiraly

  • [ENH] testing only estimators from modules that have changed compared to main (#5019) @fkiraly, @yarnabrina

  • [ENH] dependency and diff test switch for individual estimators to decorate non-suite tests (#5084) @fkiraly

Maintenance#

  • [MNT] add statsforecast to the pandas2 compatible dependency set (#4878) @fkiraly

  • [MNT] bound dask<2023.7.1 to diagnose and remove bug #4925 from main (#4928) @fkiraly

  • [MNT] [Dependabot](deps-dev): Update sphinx-design requirement from <0.5.0 to <0.6.0 (#4969) @dependabot[bot]

  • [MNT] speed up test_gscv_proba test (#4962) @fkiraly

  • [MNT] speed up test_stat benchmarking test (#4990) @fkiraly

  • [MNT] speed up clustering dunder test (#4982) @fkiraly

  • [MNT] speed up various tests in the forecasting module (#4963) @fkiraly

  • [MNT] speed up basic check_estimator tests (#4980) @fkiraly

  • [MNT] speed up costly redundant ElasticEnsemble classifier doctest (#4981) @fkiraly

  • [MNT] address various deprecation warnings (#5018) @fkiraly

  • [MNT] rename TestedMockClass to MockTestedClass (#5005) @fkiraly

  • [MNT] updated sphinx intersphinx links for other libraries (#5016) @yarnabrina

  • [MNT] fix duplication of pytest durations parameter in CI (#5034) @fkiraly

  • [MNT] speed up various non-suite tests (#5027) @fkiraly

  • [MNT] speed up various non-suite tests, part 2 (#5071) @fkiraly

  • [MNT] add more soft dependencies to show_versions (#5059) @fkiraly

Documentation#

  • [DOC] minor improvements to the dependencies guide (#4896) @fkiraly

  • [DOC] remove outdated references from transformers API (#4895) @fkiraly

  • [DOC] Installation documentation: Pip install without soft dependencies for conda environments (#4936) @Verogli

  • [DOC] clarifications to different installations in install documentation (#4937) @julia-kraus

  • [DOC] Contributors update (#4892) @fkiraly

  • [DOC] correct docstring of BaseForecaster.score, reference to use of non-symmetric MAPE (#4948) @MBristle

  • [DOC] Contributors update (#4944) @fkiraly

  • [DOC] remove duplication of troubleshooting ‘matches_not_found’ in install instructions (#4956) @julia-kraus

  • [DOC] Contributors update (#4961) @fkiraly

  • [DOC] Resolve broken link (governance) in README.md (#4942) @eyjo

  • [ENH] in doc build, add copy clipboard button for Example sections (#5015) (#5015) @yarnabrina

  • [DOC] improve description of scoring in docstrings of tuning forecasters such as ForecastingGridSearchCV (#5022) @fkiraly

  • [DOC] API reference for time series aligners (#5074) @fkiraly

  • [DOC] Contributors update (#5010) @fkiraly

  • [DOC] improve formatting of docstring examples (#5078) @yarnabrina

  • [DOC] Contributors update (#5085) @fkiraly

  • [DOC] docstring example for PinballLoss (#5068) (#5068) @Ram0nB

  • [DOC] Contributors update (#5088) @fkiraly

Fixes#

BaseObject and base framework#

  • [BUG] in craft, fix false positive detection of True, False as class names (#5066) @fkiraly

Benchmarking, Metrics, Splitters#

  • [BUG] use correct arguments in geometric_mean_absolute_error (#4987) @yarnabrina

Data types, checks, conversions#

  • [BUG] Fix vectorize_est returning jumbled rows for row vectorization, pd.DataFrame return, if row names were not lexicographically ordered (#5110) @fkiraly, @hoesler

Forecasting#

  • [BUG] clarify forecasting tuning estimators’ docstrings and error messages in case of refit=False (#4945) @fkiraly

  • [BUG] fix ConformalIntervals failure if wrapped estimator supports hierarchical mtypes (#5091, #5093) @fkiraly

Parameter estimators#

  • [BUG] fix PluginParamsForecaster in params: dict case (#4922) @fkiraly

Time series alignment#

  • [BUG] fix missing transpose in AlignerDtwNumba (#5080) @fkiraly

Time series classification#

  • [BUG] fix sklearn interface non-conformance for estimators in _proximity_forest.py, add further test parameter sets (#3520) @Abelarm, @fkiraly

Time series clustering#

  • [BUG] add informative error messages for incompatible scitype in BaseClusterer (#4958) @achieveordie

Transformations#

  • [BUG] fix DataConversionWarning in FeatureSelection (#4883) @fkiraly

  • [BUG] Fix forecaster based imputation strategy in Imputer if forecaster requires fh in fit (#4999) @MCRE-BE

  • [BUG] fix Differencer for integer index (#4984) @fkiraly

  • [BUG] Fix Differencer.inverse_transform on train data if na_handling=fill_zero (#4998) @benHeid, @MCRE-BE

  • [BUG] fix wrong logic for index_out="shift" in Lag transformer (#5069) @fkiraly

Contributors#

@Abelarm, @achieveordie, @Alex-JG3, @benHeid, @davidgilbertson, @eenticott-shell, @eyjo, @fkiraly, @Gigi1111, @hazrulakmal, @hliebert, @janpipek, @julia-kraus, @luca-miniati, @MBristle, @MCRE-BE, @Ram0nB, @tarpas, @Verogli, @VyomkeshVyas, @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#

  • [ENH] replace "Coverage" and "Quantiles" default variable name in univariate case with variable name (#4880) @fkiraly, @benheid

  • [BUG] 0.21.0 release bugfix - fix interaction of sklearn 1.3.0 with dynamic error metic based on partial in test_make_scorer (#4915) @fkiraly

  • [MNT] xfail mlflow failure #4904 until debugged, gitignore for py-spy (#4913) @fkiraly

  • [DOC] 0.21.0 release action - update deprecation guide to reflect deprecation of use of deprecated (#4914) @fkiraly

  • [MNT] 0.21.0 release action - update sklearn bound to <1.4.0 (#4778) @fkiraly

  • [MNT] 0.21.0 release action - add back pycatch22 as a soft dependency post python 3.7 EOL (#4790) @fkiraly

Version 0.20.1 - 2023-07-14#

Highlights#

  • data loader for Monash Forecasting Repository (#4826) @hazrulakmal

  • estimator crafter = string serialization/deserialization for all object/estimator blueprint specifications (#4738) @fkiraly

  • SkoptForecastingCV - hyperparameter tuning for forecasters using scikit-optimize (#4580) @hazrulakmal

  • new forecaster - statsmodels AutoReg interface (#4774) @CTFallon, @mgazian000, @JonathanBechtel

  • new forecaster - by-horizon FhPlexForecaster, for different estimator/parameter per horizon (#4811) @fkiraly

  • new transformer - SplitterSummarizer to apply transformer by fold (#4759) @BensHamza

  • ColumnEnsembleTransformer - remainder argument (#4789) @fkiraly

  • new classifier and regressor - MCDCNN estimators migrated from sktime-dl (#4637) @achieveordie

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#

  • [ENH] refactored evaluate routine, use splitters internally and allow for separate X-split (#4861) @fkiraly

Data loaders#

Forecasting#

  • [ENH] refactoring of ForecastingHorizon to use Index based cutoff in private methods (#4463) @fkiraly

  • [ENH] SkoptForecastingCV - hyperparameter tuning using scikit-optimize (#4580) @hazrulakmal

  • [ENH] add more contract tests for predict_interval, predict_quantiles (#4763) @yarnabrina

  • [ENH] statsmodels AutoReg interface (#4774) @CTFallon, @mgazian000, @JonathanBechtel

  • [ENH] remove private defaults in forecasting module (#4810) @fkiraly

  • [ENH] by-horizon forecaster, for different estimator/parameter per horizon (#4811) @fkiraly

  • [ENH] splitter that replicates loc of another splitter (#4851) @fkiraly

  • [ENH] test-plus-train splitter compositor (#4862) @fkiraly

  • [ENH] set ForecastX missing data handling tag to True to properly cope with future unknown variables (#4876) @fkiraly

Time series classification#

  • [ENH] ensure BaggingClassifier can be used as univariate-to-multivariate compositor (#4788) @fkiraly

  • [ENH] migrate MCDCNN classifier, regressor, network from sktime-dl (#4637) @achieveordie

  • [ENH] in CNNNetwork, add options to control padding and filter_size logic (#4784) @alan191006

Time series regression#

  • [ENH] migrate MCDCNN classifier, regressor, network from sktime-dl (#4637) @achieveordie

Transformations#

  • [ENH] allow X=None in BaseTransformer.transform (#4112) @fkiraly

  • [ENH] Add hour_of_week option to DateTimeFeatures transformer (#4724) @VyomkeshVyas

  • [ENH] ColumnEnsembleTransformer - remainder argument (#4789) @fkiraly

  • [ENH] SplitterSummarizer transformer to apply transformer by fold (#4759) @BensHamza

Visualisations#

  • [ENH] remove assumption about column names from plot_series / plot_interval (#4779) @fkiraly

Maintenance#

Documentation#

  • [DOC] Update Get Started docs, add regression vignette (#4216) @GargiChakraverty-yb

  • [DOC] adds a banner for non-latest branches in read-the-docs (#4681) @yarnabrina

  • [DOC] greatly simplified forecaster and transformer extension templates (#4729) @fkiraly

  • [DOC] Added examples to docstrings for K-Means and K-Medoids (#4736) @CTFallon

  • [DOC] Improvements to formulations in the README (#4757) @mswat5

  • [DOC] testing guide: add ellipsis flag to doctest command (#4768) @mdsaad2305

  • [DOC] Examples added to docstrings for Time Series Forest Regressor and Dummy Regressor (#4775) @mgazian000

  • [DOC] add missing metrics to API reference (#4813) @fkiraly

  • [DOC] update date/year in LICENSE and readthedocs license constant (#4816) @fkiraly, @yarnabrina

  • [DOC] improved guide for soft dependencies (#4831) @fkiraly

  • [DOC] sort slightly disordered forecasting API reference (#4815) @fkiraly

  • [DOC] fix ColumnSelect typos in documentation (#4800) @fkiraly

  • [DOC] minor improvements to forecasting and transformer extension templates (#4828) @fkiraly

Fixes#

Benchmarking and Metrics#

  • [BUG] allow unused parameters in metric when using make_forecasting_scorer (#4833) @fkiraly

  • [BUG] fix evaluate utility for case where y and X are not equal length (#4861) @fkiraly

Forecasting#

  • [BUG] Add temporary fix to _BaseWindowForecaster to handle simultaneous in and out-of-sample forecasts (#4812) @felipeangelimvieira

  • [BUG] fix for make_reduction with unequal panels time index for global pooling (#4644) @kbpk

  • [BUG] allows probabilistic predictions in DynamicFactor in presence of exogenous variables by (#4758) @yarnabrina

  • [BUG] Fix predict_residuals internal data type conversion (#4772) @fkiraly, @benHeid

Transformations#

  • [BUG] fix BoxCoxTransformer failure after scipy 1.11.0 (#4770) @fkiraly

  • [BUG] ColumnEnsembleTransformer - bugfixing broken logic (#4789) @fkiraly

Testing framework#

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

Contributors#

@achieveordie, @alan191006, @benHeid, @BensHamza, @CTFallon, @felipeangelimvieira, @fkiraly, @GargiChakraverty-yb, @hazrulakmal, @JonathanBechtel, @kbpk, @mdsaad2305, @mgazian000, @mswat5, @VyomkeshVyas, @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#

  • [MNT] 0.20.0 deprecation actions (#4733) @fkiraly

  • [MNT] 0.20.0 release action - remove python 3.7 support (#4717) @fkiraly

  • [MNT] 0.20.0 release action - increase scikit-base bound to <0.6.0 (#4735) @fkiraly

  • [MNT] 0.20.0 release action - support for numpy 1.25 (#4720) @jorenham

  • [MNT] 0.20.0 release action - remove initial utf comments in all python modules which are unnecessary in python 3 (#4725) @yarnabrina

  • [MNT] 0.20.0 release action - upgrade to coding style of python 3.8 and above using pyupgrade (#4726) @yarnabrina

Contributors#

@fkiraly, @jorenham, @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#

  • [ENH] statsforecast AutoETS direct interface estimator (#4648) @yarnabrina

  • [ENH] statsforecast AutoCES direct interface estimator (#4649) @yarnabrina

  • [ENH] improved BaseForecaster exception messages, with reference to self class name (#4699) @fkiraly

  • [ENH] support passing horizons as range object in ForecastingHorizon and in fit and predict methods (#4716) @yarnabrina

Time series classification#

Documentation#

  • [DOC] correct accidental duplication of 0.19.0 changelog (#4662) @fkiraly

  • [DOC] developer guide on remote setup of test suite (#4689) @fkiraly

  • [DOC] User registration link on documentation landing page (#4675) @fkiraly

  • [DOC] correct some failing doctests (#4679) @mdsaad2305

Maintenance#

  • [MNT] resolve pre-commit issues on main (#4673) @yarnabrina

  • [MNT] except some DL and numba based estimators from tests to prevent memory overload (#4682) @fkiraly

  • [MNT] remove private imports from sklearn - set_random_state (#4672) @fkiraly

  • [MNT] update pre-commit hook versions and corresponding changes (#4680) @yarnabrina

  • [MNT] add skbase to default package version display of show_versions (#4694) @fkiraly

  • [MNT] reduce CI test log verbosity (#4715) @fkiraly

  • [MNT] remove python 3.7 tests from CI (#4722) @fkiraly

Fixes#

BaseObject#

Benchmarking#

Data sets and data loaders#

  • [BUG] fix dead source link for UEA datasets (#4705) @fkiraly

  • [BUG] remove IOError dataset from TSC data registry (#4711) @fkiraly

Data types, checks, conversions#

  • [BUG] fix conversion from pd-multiindex to df-list if not all index levels are present (#4693) @fkiraly

  • [BUG] Fix vectorize_est returning jumbled columns for column vectorization, pd.DataFrame return, if column names were not lexicographically ordered (#4684) @fkiraly, @hoesler

Forecasting#

  • [BUG] correct ForecastX behaviour in case of multivariate y (#4719) @fkiraly

Contributors#

@achieveordie, @fkiraly, @hazrulakmal, @hoesler, @mdsaad2305, @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#

  • [MNT] 0.19.0 change action - relax pandas bound to <2.1.0 (#4429) @fkiraly

  • [MNT] 0.19.0 release action - tests for both pandas 1 and pandas 2 (#4622) @fkiraly

  • [MNT] 0.19.0 deprecations and changes (#4646) @fkiraly

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#

  • [ENH] Clearer error message on fitting fail of evaluate (#4545) @fkiraly

  • [ENH] Extend forecasting benchmarking framework to multiple metrics, add test coverage (#4586) @hazrulakmal

Forecasting#

  • [ENH] statsforecast AutoTheta direct interface estimator (#4539) @yarnabrina

  • [ENH] remove warning for length 1 forecasting pipelines (#4546) @fkiraly

  • [ENH] simple tabular prediction reduction for forecasting (#4564) @fkiraly

  • [ENH] rewrite of _StatsForecastAdapter in a generic way to support other models than AutoARIMA (#4629) @yarnabrina

Probability distributions#

  • [ENH] move probability distribution statistic approximation sample sizes to config interface (#4561) @fkiraly

  • [ENH] add more test parameter sets to AutoETS (#4588) @fkiraly

  • [ENH] improving BaseDistribution defaulting, and add test coverage (#4583) @fkiraly

Time series alignment#

Time series classification#

  • [ENH] SimpleRNN DL time series regressor, migrated from sktime-dl (#4185) @ArushikaBansal

  • [ENH] move classification ensembles to classification.ensembles (#4532) @fkiraly

  • [ENH] better documentation and test coverage for custom estimators and parameters in DrCIF (#4621) @Taise228

  • [ENH] Add MACNN classifier and network (#4636) @achieveordie

Time series distances and kernels#

  • [ENH] independent distance and multivariate aggregated kernel wrapper (#4598) @fkiraly

  • [ENH] variable subsetting dunder for distances and kernels (#4596) @fkiraly

Transformations#

  • [ENH] remove unnecessary conversion in TSFreshFeatureExtractor (#4571) @fkiraly

Testing framework#

  • [ENH] replace joblib.hash with deep_equals in test_fit_does_not_overwrite_hyper_params for pandas based parameters (#4538) @fkiraly

  • [ENH] added msg argument in check_estimator (#4552) @fkiraly

Maintenance#

  • [MNT] add silent dependencies to core dependency set (#4551) @fkiraly

  • [MNT] bound tensorflow-probability to <0.20.0 (#4567) @fkiraly

  • [MNT] changing Union[int | float] to float as per issue #4379 (#4575) @mdsaad2305

  • [MNT] remove remaining soft dependency related module import warnings (#4554) @fkiraly

  • [MNT] pytest isolation in check_estimator (#4552) @fkiraly

  • [MNT] remove remaining soft dependency related module import warnings (#4554) @fkiraly

  • [MNT] temporary bound holidays to avoid error in Prophet, later reverted (#4594, #4600) @fkiraly, @yarnabrina

  • [MNT] remove tsfresh python version bounds from estimators (#4573) @fkiraly

  • [MNT] excepting FCNClassifier from CI to prevent memouts until bugfix (#4616) @fkiraly

  • [MNT] address kulsinski deprecation in scipy (#4618) @fkiraly

  • [MNT] remove forgotten legacy_interface reference from check_is_scitype docstring (#4630) @fkiraly

Documentation#

Fixes#

BaseObject, BaseEstimator#

  • [BUG] fix for get_fitted_params in _HeterogenousMetaEstimator (#4633) @fkiraly

Forecasting#

  • [BUG] corrected default logic for _predict_interval in case _predict_quantiles is not implemented but _predict_proba is (#4529) @fkiraly

  • [BUG] RecursiveReductionForecaster pandas 2 fix (#4568) @fkiraly

  • [BUG] in _StatsModelsAdapter, avoid passing exog to get_prediction of statsmodels in _predict_interval if parameter is not supported (#4589) @yarnabrina

  • [BUG] fix incorrect sorting of n_best_forecasters_ in BaseGridCV if metric’s lower_is_better is False (#4590) @hazrulakmal

Probability distributions#

  • [BUG] fix error messages in BaseDistribution if default methods are not implemented (#4628) @fkiraly

  • [BUG] fix wrong alpha sorting in BaseDistribution quantile return (#4631) @fkiraly

Time series distances and kernels#

  • [BUG] fix input check error message in BasePairwiseTransformerPanel (#4499) @fkiraly

Time series classification#

Time series regression#

Transformations#

  • [BUG] fix informative error message on y input type check in BaseTransformer (#4525) @fkiraly

  • [BUG] fix incorrect values returned by DateTimeFeatures 'month_of_quarter' feature (#4542) @fkiraly

  • [BUG] Fixes incorrect window indexing in HampelFilter (#4560) @antonioramos1

Contributors#

@achieveordie, @antonioramos1, @ArushikaBansal, @fkiraly, @hazrulakmal, @kbpk, @luca-miniati, @marrov, @mdsaad2305, @panozzaj, @sanjayk0508, @Taise228, @TonyZhangkz, @wasup-yash, @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 #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#

  • [MNT] 0.18.0 change action - numba as soft dependency (#3843) @fkiraly

  • [MNT] 0.18.0 deprecation actions (#4510) @fkiraly

  • [MNT] ensure predict_proba calls in mlflow forecasting interface explicitly call legacy_interface (#4514) @fkiraly

  • [MNT] skbase refactor - part 1: BaseObject and package dependencies (#3151) @fkiraly

  • [MNT] skbase refactor - part 2: all_estimators lookup (#3777) @fkiraly

  • [ENH] quantile method for distributions, default implementation of forecaster predict_quantiles if predict_proba is present (#4513) @fkiraly

  • [ENH] add test for all_estimators tag filter (#4512) @fkiraly

Version 0.17.2 - 2023-04-24#

Highlights#

  • the transformers and pipelines tutorial from pydata global 2022 is now available in sktime, see examples (#4381) @dashapetr

  • probabilistic prediction functionality for SARIMAX (#4439) @yarnabrina

  • InceptionTime classifier from sktime-dl migrated (#3003) @tobiasweede

  • SplitterBootstrapTransformer for booststrapping based on any splitter (#4455) @fkiraly

  • IxToX transformer that creates features from time index or hierarchy label (#4416) @fkiraly

  • many bugfixes to probabilistic forecasting interfaces - BaggingForecaster, BATS, TBATS, DynamicFactor, VECM

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#

  • [ENH] allow inclusive/exclusive bounds in get_slice (#4483) @fkiraly

Forecasting#

  • [ENH] Adds _predict_interval to SARIMAX to support predict_interval and predict_quantiles (#4439) @yarnabrina

  • [ENH] shift ForecastingHorizon-BaseForecaster cutoff interface to rely on public point (#4456) @fkiraly

  • [ENH] testing in-sample forecasting - replace try/except in test_predict_time_index by tag and tag dependent contract (#4476) @fkiraly

  • [ENH] remove monotonicity requirement from quantile prediction contract (#4480) @fkiraly

  • [ENH] remove superfluous implementation checks in _predict_interval and _predict_quantiles of BaseForecaster (#4481) @yarnabrina

  • [ENH] seasonal tabulation utility (#4490) @fkiraly, @marrov

  • [ENH] testing all forecasters predict_quantiles, predict_interval in-sample (#4470) @fkiraly

  • [ENH] performant re-implementation of NaiveForecaster - "last" strategy (#4461) @fkiraly

  • [ENH] adds _predict_interval in _StatsModelsAdapter and inherits in other estimator to reduce code duplication (#4465) @yarnabrina

  • [ENH] in ForecastingHorizon, refactor to_absolute().to_pandas() calls to a method (#4464) @fkiraly

Time series classification#

  • [ENH] predict_proba capability tag for classifiers (#4012) @fkiraly

  • [ENH] migrate InceptionTime classifier and example (from sktime-dl) (#3003) @tobiasweede

Time series regression#

Transformations#

  • [ENH] IxToX transformer that creates features from time index or hierarchy label (#4416) @fkiraly

  • [ENH] SplitterBootstrapTransformer for booststrapping based on any splitter (#4455) @fkiraly

  • [ENH] transformer compositor to apply by panel or instance (#4477) @fkiraly

Testing framework#

  • [ENH] improved _make_series utility and docstring (#4487) @fkiraly

  • [ENH] remove calls to return_numpy arg in _make_series (#4488) @fkiraly

Maintenance#

  • [MNT] Changed line endings of ElectricDevices.csv and GunPoint.csv from CRLF to LF (#4452) @yarnabrina

  • [MNT] ensure all elements in test matrix complete runs (#4472) @fkiraly

  • [MNT] add InceptionTimeClassifier and LSTMFCNClassifier as direct module export (#4484) @fkiraly

  • [MNT] address some warnings and deprecation messages from dependencies (#4486) @fkiraly

Documentation#

  • [DOC] Fix error in MiniRocket example code - wrong transformer (#4497) @doncarlos999

  • [DOC] add InceptionTimeClassifier and LSTMFCNClassifier to API docs (#4484) @fkiraly

  • [DOC] fix typo in cython interface reference, MySQM -> MrSQM (#4493) @fkiraly

  • [DOC] move content from pydata global 2022 (transformers, pipelines tutorial) to sktime main repo (#4381) @dashapetr

  • [DOC] improvements to description of sktime on the readthedocs landing page (#4444) @howdy07

Fixes#

Forecasting#

  • [BUG] fix pandas write error in probabilistic forecasts of BaggingForecaster (#4478) @fkiraly

  • [BUG] fix predict_quantiles in _PmdArimaAdapter and _StatsForecastAdapter post 0.17.1 (#4469) @fkiraly

  • [BUG] ForecastingHorizon constructor - override erroneously inferred freq attribute from regular DatetimeIndex based horizon (#4466) @fkiraly, @yarnabrina

  • [BUG] fix broken DynamicFactor._predict_interval (#4479) @fkiraly

  • [BUG] fix pmdarima interfaces breaking for X containing more indices than forecasting horizon (#3667) @fkiraly, @SzymonStolarski

  • [BUG] fix BATS and TBATS _predict_interval interface (#4492, #4505) @fkiraly`

  • [BUG] fix VECM._predict_interval interface for date-like indices (#4506) @fkiraly

Testing framework#

Contributors#

@dashapetr, @doncarlos999, @fkiraly, @howdy07, @marrov, @SzymonStolarski, @tobiasweede, @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 #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 #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#

  • [MNT] address deprecation of "mad" option on DataFrame.agg and Series.agg (#4435) @fkiraly

  • [MNT] address deprecation of automatic drop on DataFrame.agg on non-numeric columns (#4436) @fkiraly

  • [MNT] resolve freq related deprecations and pandas 2 failures in reducers (#4438) @fkiraly

  • [MNT] except Prophet from test_predict_quantiles due to sporadic failures (#4432) @fkiraly

  • [MNT] except VECM from test_predict_quantiles due to sporadic failures (#4442) @fkiraly

  • [MNT] fix and sharpen soft dependency isolation logic for statsmodels and pmdarima (#4443) @fkiraly

  • [MNT] isolating attrs imports (#4450) @fkiraly

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#

  • [ENH] nullable dtypes - ensure nullable columns are coerced to float dtype in pandas conversions (#4245) @fkiraly

  • [ENH] is_equal_index metadata element in checks and examples (#4312) @fkiraly

  • [ENH] granular control of mtype metadata computation, avoid computation when not needed (#4389) @fkiraly, @hoesler

  • [ENH] turn off all unnecessary input checks in current base class boilerplate (#4390) @fkiraly

Forecasting#

  • [ENH] factor out column ensemble functionality from _ColumnEnsembleForecaster to new base mixin (#4231) @fkiraly

  • [ENH] ForecastKnownValues forecaster that forecasts prescribed known or expert forecast values (#4243) @fkiraly

  • [ENH] Improve vectorized metric calculation, deprecate VectorizedDF.get_iloc_indexer (#4228) @hoesler

  • [ENH] MeanAbsoluteError - evaluate_by_index (#4302) @fkiraly

  • [ENH] BaseForecastingErrorMetric internal interface cleanup (#4305) @fkiraly

  • [ENH] probabilistic forecasting rework part 1 - backend agnostic probability distributions (#4190) @fkiraly

  • [ENH] probabilistic forecasting rework part 2 - distribution forecast metrics log-loss, CRPS (#4276) @fkiraly

  • [ENH] probabilistic forecasting rework part 3 - forecasters (#4290) @fkiraly

  • [ENH] probabilistic forecasting rework part 4 - evaluation and tuning (#4367) @fkiraly

  • [ENH] informative error messages for forecasting pipeline constructors, for steps arg (#4371) @fkiraly

Parameter estimators#

  • [ENH] interface the seasonal package as a parameter estimator for seasonality (#4215) @blazingbhavneek

  • [ENH] parameter estimators for stationarity - ADF and KPSS (#4247) @fkiraly

  • [ENH] PluginParamsForecaster to accept any estimator, conformal tuned fast example (#4412) @fkiraly

Time series classification#

Transformations#

  • [ENH] transformer interfacing numpy.fft for simple fourier transform (#4214) @blazingbhavneek

  • [ENH] sktime native column ensemble transformer (#4232) @fkiraly

  • [ENH] conditional transform (#4248) @fkiraly

  • [ENH] kinematic feature transformer (#4261) @fkiraly

  • [ENH] refactoring segmentation transformers to use pandas native data types (#4267) @fkiraly

  • [ENH] remove test for output values in test_FeatureUnion_pipeline (#4316) @fkiraly

  • [ENH] Hodrick-Prescott filter transformer (statsmodels interface) (#4342) @ken-maeda

  • [ENH] turn BKFilter into a direct statsmodels interface (#4346) @fkiraly

  • [ENH] Christiano-Fitzgerald filter transformer (statsmodels interface) (#4402) @ken-maeda

Testing framework#

  • [ENH] additional test parameter sets for performance metrics (#4246) @fkiraly

  • [ENH] test for get_test_params, and reserved parameters (#4279) @fkiraly

  • [ENH] cleaned up probabilistic forecasting tests for quantile and interval predictions (#4393) @fkiraly, @yarnabrina

  • [ENH] cover list input case for test_predict_interval coverage and test_predict_quantiles alpha in forecaster contract tests (#4394) @yarnabrina

Maintenance#

  • [MNT] address deprecation of pandas.DataFrame.iteritems (#4271) @fkiraly

  • [MNT] Fixes linting issue B016 Cannot raise a literal in distances module (#4284) @SamiAlavi

  • [MNT] add soft dependencies on python 3.11 that are 3.11 compatible (#4269) @fkiraly`

  • [MNT] integrate parameter estimators with check_estimator (#4287) @fkiraly

  • [MNT] addressing pytest failure - downgrade dash to <2.9.0 (#4353) @fkiraly

  • [MNT] resolve circular imports in forecasting.base (#4329) @fkiraly

  • [MNT] isolating scipy imports, part 1 (#4005) @fkiraly

  • [MNT] Remove restrictions on branch for workflow that autodetect and updates CONTRIBUTORS.md (#4323) @achieveordie

  • [MNT] carry out forgotten deprecation for ContractableBOSS typed_dict parameter (#4331) @fkiraly

  • [MNT] except forecasters failing proba prediction tests (previously masked by buggy tests) (#4364) @fkiraly

  • [MNT] split up transformations.compose into submodules (#4368) @fkiraly

  • [MNT] replace emergency dash bound by exclusion of failing version 2.9.0 (#4415) @fkiraly

  • [MNT] remove soft dependency import warnings in modules and documented requirements to add these (#4398) @fkiraly

  • [MNT] dockerized tests (#4285) @fkiraly, @lmmentel

  • [MNT] Fix linting issues in transformations module (#4291) @SamiAlavi

  • [MNT] Fixes linting issues in base, networks, registry modules (#4310) @SamiAlavi

  • [MNT] resolve circular imports in forecasting.base (#4329) @fkiraly

  • [MNT] Linting test_croston.py (#4334) @ShivamPathak99

  • [MNT] except forecasters failing proba prediction tests (previously masked by buggy tests) (#4364) @fkiraly

  • [MNT] Auto-fixing linting issues (#4317) @SamiAlavi

  • [MNT] Fix linting issues in clustering module (#4318) @SamiAlavi

  • [MNT] Fix linting issues in forecasting module (#4319) @SamiAlavi

  • [MNT] Fixes linting issues in annotation module (#4309) @SamiAlavi

  • [MNT] Fix linting issues in series_as_features, tests, dist_kernels, benchmarking modules (#4321) @SamiAlavi

  • [MNT] Fixes linting issues in classification module (#4311) @SamiAlavi

  • [MNT] Fix linting issues in performance_metrics module (#4320) @SamiAlavi

  • [MNT] Fix linting issues in utils module (#4322) @SamiAlavi

  • [MNT] replace author names by GitHub ID in author fields (#4340) @SamiAlavi

  • [MNT] address deprecation warnings from dependencies (#4423) @fkiraly

  • [MNT] 0.17.0 deprecation & change actions (#4424) @fkiraly

Documentation#

  • [DOC] direct documentation links to sktime.net addresses (#4241) @fkiraly

  • [DOC] improved reducer docstring formatting (#4160) @fkiraly

  • [DOC] improve docstring for VectorizedDF.items and .__iter__ (#4223) @fkiraly

  • [DOC] direct documentation links to sktime.net addresses (#4241) @fkiraly

  • [DOC] update transformer extension template docstrings, reference to Hierarchical (#4250) @fkiraly

  • [DOC] API reference for parameter estimator module (#4244) @fkiraly

  • [DOC] add missing docstrings in PlateauFinder module (#4255) @ShivamPathak99

  • [DOC] docstring improvements for ColumnConcatenator (#4272) @JonathanBechtel

  • [DOC] Small docstring fixes in reducer module and tests (#4274) @danbartl

  • [DOC] clarified requirement for get_test_params in extension templates (#4289) @fkiraly

  • [DOC] developer guide for local testing (#4285) @fkiraly

  • [DOC] extension template for parameter estimators (#4288) @fkiraly

  • [DOC] refresh discord invite to new server (#4297) @fkiraly

  • [DOC] Update CONTRIBUTORS.md to most recent (#4358) @fkiraly

  • [DOC] improved method docstrings for transformers (#4328) @fkiraly

  • [DOC] MeanAbsoluteError docstring (#4302) @fkiraly

  • [DOC] updated dtw_distance docstring example to include import (#4324) @JonathanBechtel

  • [DOC] fix typo: Transforemd → Transformed (#4366) @kgeis

  • [DOC] TimeSeriesKMeans - correct init_algorithm default in docstring (#4347) @marcosousapoza

  • [DOC] add missing import statements in numba distance docstrings (#4376) @JonathanBechtel

  • [DOC] guide for adding cython based estimators (#4388) @fkiraly

  • [DOC] add docstring example for ForecastX forecasting only some exogeneous variables (#4392) @fkiraly

  • [DOC] improvements to “invitation to contribute” paragraph in documentation (#4395) @abhisek7154

  • [DOC] README and docs update - tasks table, typos, lookup (#4414) @fkiraly

Fixes#

Data types, checks, conversions#

  • [BUG] fix level name handling in conversions nested_univ / pd-multiindex (#4270) @fkiraly

  • [BUG] fix incorrect inference of is_equally_spaced for unequal index pd-multiindex typed data (#4308) @noahleegithub

Forecasting#

  • [BUG] fix Settingwithcopywarning when using custom error metric in evaluate (#4294) @fkiraly, @marrov

  • [BUG] fix forecasting metrics’ evaluate_by_index for hierarchical input (#4306) @fkiraly, @marrov

  • [BUG] pass user passed parameters to ForecastX to underlying estimators (#4391) @yarnabrina

  • [BUG] fix unreported probabilistic prediction bugs detected through #4393 (#4399) @fkiraly

  • [BUG] ensure forecaster cutoff has freq inferred if inferable, for single series (#4406) @fkiraly

  • [BUG] fix ValueError in VECM._predict_interval if multiple coverage values were passed (#4411) @yarnabrina

  • [BUG] temporarily skip test_predict_quantiles for VAR due to known sporadic bug #4420 (#4425) @yarnabrina

Parameter estimators#

  • [BUG] fix seasonality estimators for candidate_sp being int (#4360) @fkiraly

Time series classification#

  • [BUG] fix WeightedEnsembleClassifier._predict_proba to work with pandas based mtypes (#4275) @fkiraly

Time series regression#

  • [BUG] fix broken ComposableTimeSeriesRegressor (#4221) @fkiraly

Testing framework#

  • [BUG] in forecasting test framework, fix ineffective assertion for correct time index check (#4361) @fkiraly

  • [BUG] Fix MockForecaster._predict_quantiles to ensure monotonicity of quantiles (#4397) @yarnabrina

  • [BUG] prevent discovery of abstract TimeSeriesLloyds by contract tests (#4225) @fkiraly

Utilities#

Contributors#

@abhisek7154, @achieveordie, @blazingbhavneek, @danbartl, @fkiraly, @hoesler, @JonathanBechtel, @ken-maeda, @kgeis, @lmmentel, @marcosousapoza, @marrov, @noahleegithub, @SamiAlavi, @ShivamPathak99, @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#

  • [ENH] fixes for forecasters to retain name attribute in predict (#4161) @fkiraly

  • [ENH] improved/fixed scoring argument for forecasting tuners (#4178) @fkiraly

  • [ENH] test Prophet with pd.DatetimeIndex (#4183) @fkiraly

  • [ENH] faster test for forecasters’ predict_residuals (#4156) @fkiraly

  • [ENH] test that forecasters preserve name attr of pd.Series (#4157) @fkiraly

  • [ENH] improved/fixed scoring argument for forecasting tuners (#4178) @fkiraly

Transformations#

  • [ENH] add native multi-index/hierarchical data support to Imputer (#4194) @hoesler

  • [ENH] Add panel support to ColSelect transformer (#4193) @hoesler

Fixes#

Data sets and data loaders#

  • [BUG] Correct 'StarlightCurves' data set identifier string, to ‘StarLightCurves’ (#4222) @NeuralNut

  • [BUG] fix race condition in tsfile tests (#4192) @hoesler

Forecasting#

  • [BUG] fixes for forecasters to retain name attribute in predict (#4161) @fkiraly

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

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

Parameter estimation#

  • [BUG] fix nlag logic in SeasonalityACF and SeasonalityACFqstat (#4171) @fkiraly

Time series clustering#

  • [BUG] fix TimeSeriesDBSCAN and remove strict BaseClusterer abstracts (#4227) @fkiraly

Maintenance#

  • [MNT] Fix merge conflicts and formatting in .all-contributorsrc (#4205) @fkiraly

  • [MNT] isolate numba - NB: does not make numba a soft dependency (#3631) @fkiraly

  • [MNT] isolate remaining numba references (#4226) @fkiraly

  • [MNT] python 3.11 compatibility, with numba as core dependency on 3.7-3.10 (#4000) @fkiraly

Documentation#

Contributors#

@aiwalter, @alex-hh, @danbartl, @dbcerigo, @fkiraly, @hoesler, @matthewmiddlehurst, @NeuralNut, @pranavvp16, @romanlutz

Version 0.16.0 - 2023-01-30#

Highlights#

  • HierarchyEnsembleForecaster for level- or node-wise application of forecasters on panel/hierarchical data (#3905) @VyomkeshVyas

  • new transformer: BKFilter, Baxter-King filter, interfaced from statsmodels (#4127) @klam-data, @pyyim`

  • get_fitted_params of pipelines and other heterogeneous meta-estimators now supports parameter nesting (#4110) @fkiraly

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#

  • [ENH] get_fitted_params for pipelines and other heterogeneous meta-estimators (#4110) @fkiraly

  • [ENH] deep argument for get_fitted_params (#4113) @fkiraly

Data types, checks, conversions#

  • [ENH] significantly speed up nested_univ (nested dataframe) check for non-nested data (#4130) @danbartl

  • [ENH] refactor - localize broadcasting in VectorizedDF (#4132) @fkiraly

  • [ENH] get_time_index rework to get faster run times for grouped data (#4141) @danbartl

Forecasting#

  • [ENH] HierarchyEnsembleForecaster for level- or node-wise application of forecasters on panel/hierarchical data (#3905) @VyomkeshVyas

  • [ENH] second set of test parameters for ARIMA (#4099) @fkiraly

  • [ENH] Refactor/simplify sktime.forecasting.model_selection._split.BaseSplitter._split_vectorized (#4108) @mateuja

Time series annotation#

Time series classification#

  • [ENH] Reduce repetitive code in test_boss.py and add check for string datatype in _boss.py (#4100) @erjieyong

Time series generators#

Transformations#

Maintenance#

  • [MNT] Automate updating CONTRIBUTORS.md (#3807) @achieveordie

  • [MNT] address pd.Series constructor dtype deprecation / FutureWarning - part 2 (#4111) @fkiraly

  • [MNT] 0.16.0 change/deprecation action - statsmodels as soft dependency (#3516) @fkiraly

  • [MNT] emergency fix for precommit CI failure - remove isort (#4164) @fkiraly

  • [MNT] isolate statsmodels in HierarchyEnsembleForecaster docstring (#4166) @fkiraly

  • [MNT] 0.16.0 deprecation action - change BaseForecaster.cutoff to pd.Index (#3678) @fkiraly

  • [MNT] isolate statsmodels in HierarchyEnsembleForecaster docstring - accidentally missing commit (#4168) @fkiraly

  • [MNT] 0.16.0 deprecation & change actions (#4138) @fkiraly

  • [MNT] Bump isort to 5.12.0 in pre-commit config (#4167) @snnbotchway

Documentation#

  • [DOC] fixes table of contents in 01_forecasting.ipynb tutorial (#4120) @fkiraly

  • [DOC] improved docstring for AutoETS (#4116) @fkiraly

  • [DOC] Added Paul Yim, Kevin Lam, and Margaret Gorlin to contributor list (#4122) @Pyyim

  • [DOC] Fix broken link to the user guide in the glossary (#4125) @romanlutz

Fixes#

BaseObject#

  • [BUG] fix faulty BaseObject.__eq__ and deep_equals if an attribute or nested structure contains float (#4109) @fkiraly

Forecasting#

  • [BUG] fix get_fitted_params for forecaster tuners, missing best_forecaster etc (#4102) @fkiraly

  • [BUG] fix get_fitted_params in case of vectoriztion for forecasters (#4105) @fkiraly

  • [BUG] fix erroneous int coercion of TrendForecaster and PolynomialTrendForecaster on DatetimeIndex (#4133) @fkiraly

  • [BUG] Remove unnecessary freq error in _RecursiveReducer (#4124) @danbartl

Time series classification#

  • [BUG] Diagnose and fix sporadic failures in the test suite due to MemoryError (#4036) @achieveordie

  • [BUG] fix - Callbacks cause deep learning estimators to fail (#4095) @aaronrmm

Transformations#

  • [BUG] fix get_fitted_params in case of vectoriztion for transformers (#4105) @fkiraly

  • [BUG] Fix OptionalPassthrough X_inner_mtype tag (#4115) @fkiraly

Contributors#

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

Version 0.15.1 - 2023-01-12#

Highlights#

  • substantial speed-ups of boilerplate for panel and hierarchical data, may result in 10-50x overall speed improvement on large panel/hierarchical data (#3935, #4061) @danbartl

  • dunders for time series distances and kernels, for arithmetic composition and pipelining (#3949) @fkiraly

  • pipelines and dunders for time series clustering (#3967) @fkiraly

  • new estimators: DBSCAN clustering for time series; kernel support vector classifier for time series kernels (#3950, #4003) @fkiraly, @josuedavalos

  • notes and troubleshooting guide for installing sktime under macOS with ARM processors (#4010) @dainelli98

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#

  • [ENH] dask mtypes - part 1, Series (#3554) @fkiraly

  • [ENH] dask mtypes - part 2, Panel and Hierarchical (#4011) @fkiraly

  • [ENH] speed up mtype check for pandas based mtypes with pd.PeriodIndex (#3991) @fkiraly

  • [ENH] improve performance of pandas based panel and hierarchical mtype checks (#3935) @danbartl

  • [ENH] Speed up hierarchical checks and unify with panel approach (#4061) @danbartl

Distances, kernels#

  • [ENH] generalize AggrDist and FlatDist to allow arbitrary callables, including sklearn kernel functions (#3956) @fkiraly

  • [ENH] transform_diag method for pairwise transformers, for computing diagonal of distance/kernel matrix (#3957) @fkiraly

  • [ENH] wrapper to convert kernels to distances and distances to kernels (#3958) @fkiraly

  • [ENH] dunders for time series distances and kernels (#3949) @fkiraly

Forecasting#

  • [ENH] add global forecasting (pooling) options to DirectTabularRegressionForecaster and DirectTimeSeriesRegressionForecaster (#3688) @danbartl

  • [ENH] forecasting benchmark function evaluate to accept list of scorers (#3883) @aiwalter

  • [ENH] add contract test for hierarchical forecasting (#3969) @fkiraly

  • [ENH] extend Prophet to allow pd.PeriodIndex (#3995) @fkiraly

  • [ENH] improve handling of scitype in make_reduction (#4022) @fkiraly

  • [ENH] hcrystalball forecaster adapter (#4040) @MichalChromcak

Pipelines#

Time series classification#

  • [ENH] kernel support vector classifier for time series kernels (#3950) @fkiraly

Time series clustering#

Transformations#

  • [ENH] “typical length” constant in transformer scenarios (#3892) @fkiraly

  • [ENH] change DateTimeFeatures trafo to work with multi-index data and add option to drop columns. (#3996) @KishManani

  • [ENH] time bin aggregation transformer (#3997) @fkiraly

  • [ENH] enable TimeSince trafo to transform multiindex dataframes natively (#4006) @KishManani

  • [ENH] make TimeSince trafo faster by changing period diff calculation (#4018) @KishManani

  • [ENH] clean up Detrender, extend to forecasters which require forecasting horizon in fit (#4053) @fkiraly

Testing framework#

  • [ENH] update _check_soft_dependencies to allow PEP 440 specifier strings for version bounds (#3925) @fkiraly

  • [ENH] allow tuples/lists of package identifier strings in _check_soft_dependencies (#3955) @fkiraly

  • [ENH] _check_estimator_deps to also allows list or tuple of BaseObject-s (#4002) @fkiraly

  • [ENH] extend sklearn_scitype to infer the scitype correctly from composites (#4021) @fkiraly

  • [ENH] Improve error messages in test_estimator_tags test (#4014) @fkiraly

  • [ENH] in check_estimator and run_tests replace return_exceptions arg with raise_exceptions, with deprecation (#4030) @fkiraly

  • [ENH] add test parameter sets to increase number of test parameter sets per estimator to 2 or larger (#4043) @fkiraly

Visualisations#

Maintenance#

  • [MNT] carry out accidentally missed deprecation action for 0.15.0: in WEASEL and BOSS, remove type_dict and update default alphabet_size=2 (#4025) @xxl4tomxu98

  • [MNT] move badrmarani contrib to chronological order (#4029) @fkiraly

  • [MNT] skip #4033 related failures until fixed (#4034) @fkiraly

  • [MNT] skip LSTMFCNClassifier tests due to unfixed failure on main (#4037) @fkiraly

  • [MNT] explicit lower version bound on scipy (#4019) @fkiraly

  • [MNT] fix _check_soft_dependencies breaking for PEP 440 specifiers without class reference (#4044) @fkiraly

  • [MNT] downwards compatibility fixes for minimal dependency set (#4041) @fkiraly

  • [MNT] address pd.Series constructor dtype deprecation / FutureWarning (#4031) @fkiraly

  • [MNT] isolate statsmodels, recent instances (#4035) @fkiraly

  • [MNT] address pandas astype deprecation / FutureWarning in TrendForecaster (#4032) @fkiraly

  • [MNT] explicit use of min_periods args inside WindowSummarizer to address deprecation message (#4052, #4074) @arnavrneo

Documentation#

Fixes#

Distances, kernels#

Forecasting#

  • [BUG] fix StatsForecastAutoARIMA_.predict incorrect in-sample start index (#3942) @tianjiqx

  • [BUG] fix statsmodels estimators when exogenous X is passed with more indices than fh (#3972) @adoherty21

  • [BUG] fix ReconcilerForecaster when not used in a pipeline with Aggregator (#3980) @ciaran-g

  • [BUG] fix logic bug in ForecastX predictions (#3987) @aiwalter, @fkiraly

  • [BUG] fix Prophet not working with non-integer forecast horizon (#3995) @fkiraly

  • [BUG] fix dropped column index in BaggingForecaster (#4001) @fkiraly

  • [BUG] fix TrendForecaster if regressor is not boolean coercible (#4047) @fkiraly

  • [BUG] fix mutation of regressor in PolynomialTrendForecaster._fit (#4057) @fkiraly

  • [BUG] fix ConformalIntervals update when sample_frac argument is not None (#4083) @bethrice44

Governance#

  • [GOV] code of conduct update - decision making on finances and resource allocation (#3674) @fkiraly

Time series classification#

  • [BUG] constructor of any DL estimator to pass non-default values to underlying Network object (#4075) @achieveordie

  • [BUG] Fix BOSS based classifiers truncating class names to single character length (#4096) @erjieyong

Time series clustering#

  • [BUG] fix default BaseClusterer._predict_proba for all mtypes (#3985) @fkiraly

Time series regression#

  • [BUG] constructor of any DL estimator to pass non-default values to underlying Network object (#4075) @achieveordie

Transformations#

  • [BUG] fix TimeSince check of inconsistency between time_index and start (#4015) @KishManani

  • [BUG] fix multivariate and hierarchical behaviour of Detrender (#4053) @fkiraly

Testing framework#

  • [BUG] fix _check_soft_dependencies breaking for PEP 440 specifiers without class reference (#4044) @fkiraly

Visualisations#

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

Contributors#

@Aarthy153, @achieveordie, @adoherty21, @aiwalter, @arnavrneo, @badrmarani, @bethrice44, @ciaran-g, @dainelli98, @danbartl, @darshitsharma, @erjieyong, @fkiraly, @hakim89, @josuedavalos, @KishManani, @MatthewMiddlehurst, @MichalChromcak, @miraep8, @patrickzib, @tianjiqx, @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#

  • [ENH] equality dunder for BaseObject to compare blueprint (#3862) @fkiraly

Forecasting#

  • [ENH] Check for frequency in hierarchical data, provide utility function to set frequency for hierarchical data (#3729) @danbartl

  • [ENH] forecasting pipeline get_fitted_params (#3863) @fkiraly

Time series annotation#

  • [ENH] E-Agglo estimator for hierarchical agglomerative cluster estimation (#3430) @KatieBuc

Time series classification#

  • [ENH] Migrate LSTM-FCN classifier from sktime-dl to sktime (#3714) @solen0id

  • [ENH] Migrate ResNetClassifier from sktime-dl to sktime (#3881) @nilesh05apr

Time series regression#

Transformations#

Visualisations#

Fixes#

Forecasting#

  • [BUG] in ConformalIntervals, fix update of residuals matrix for sliding window splitter (#3914) @bethrice44

  • [BUG] fix start_with_window deprecation in ExpandingWindowSplitter (#3953) @fkiraly

  • [BUG] fix EnsembleForecaster erroneous broadcasting and attribute clash (#3964) @fkiraly

Time series classification#

  • [BUG] fix unreported set_params bug in ClassifierPipeline and RegressorPipeline (#3857) @fkiraly

  • [BUG] fixes KNN estimators’ kneighbors methods to work with all mtypes (#3927) @fkiraly

Time series regression#

  • [BUG] fix unreported set_params bug in ClassifierPipeline and RegressorPipeline (#3857) @fkiraly

  • [BUG] fixes KNN estimators’ kneighbors methods to work with all mtypes (#3927) @fkiraly

Transformations#

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

  • [BUG] sklearn 1.2.0 compatibility - fix invalid elbow variable selection shrinkage parameter passed to sklearn NearestCentroid (#3921) @fkiraly

Visualisations#

  • [BUG] fix soft dependency check in plotting.plot_correlations (#3887) @dsanr

Documentation#

Maintenance#

  • [MNT] Additional project urls in pyproject.toml (#3864) @lmmentel

  • [MNT] sklearn 1.2.0 compatibility - remove private _check_weights import in KNeighborsTimeSeriesClassifier and -Regressor (#3918) @fkiraly

  • [MNT] sklearn 1.2.0 compatibility - cover BaseForest parameter change (#3919) @fkiraly

  • [MNT] sklearn 1.2.0 compatibility - decouple sklearn.base._pprint (#3923) @fkiraly

  • [MNT] sklearn 1.2.0 compatibility - remove normalize=False args from RidgeClassifierCV (#3924) @fkiraly

  • [MNT] sklearn 1.2.0 compatibility - ComposableTimeSeriesForest reserved attribute fix (#3926) @fkiraly

  • [MNT] remove pycatch22 as a soft dependency (#3917) @fkiraly

  • [MNT] Update sklearn compatibility to 1.2.x, version bound to <1.3 (#3922) @fkiraly

  • [MNT] bump numpy version bound to <1.25 and fix compatibility issues (#3915) @aquemy, @fkiraly

  • [MNT] 0.15.0 deprecation actions (#3952) @fkiraly

  • [MNT] skip sporadic ResNetClassifier failures (#3974) @fkiraly

Contributors#

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

Version 0.14.1 - 2022-11-30#

Highlights#

  • dedicated notebook tutorial for transformers and feature engineering - stay tuned for more at pydata global 2022! (#1705) @fkiraly

  • documentation & step-by-step guide to add a new dataset loader (#3805) @templierw

  • new transformer: Catch22Wrapper, direct interface for pycatch22 (#3431) @MatthewMiddlehurst

  • new transformer: TimeSince for feature engineering, time since fixed date/index (#3810) @KishManani

  • permutation wrapper Permute for tuning of estimator order in forecatsing pipelines (#3689) @aiwalter @fkiraly

  • all soft dependencies are now isolated in tests, all tests now run with minimal dependencies (#3760) @fkiraly

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 (#3708) @fkiraly

Forecasting#

  • [ENH] direct reducer prototype rework based on feedback (#3382) @fkiraly

  • [ENH] forecast default update warning to point to stream forecasting wrappers (#3410) @fkiraly

  • [ENH] getitem / square brackets dunder for forecasting (#3740) @fkiraly

  • [ENH] Add test for global forecasting case (#3728) @danbartl

Time series classification#

Time series regression#

  • [ENH] Add some get_test_params values to deep learning classifiers and regressors (#3761) @TonyBagnall

Transformations#

Governance#

Fixes#

Data loaders#

Forecasting#

Time series classification#

  • [BUG] keras import quick-fix (#3744) @ltsaprounis

  • [BUG] in TemporalDictionaryEnsemble, set Parallel prefer="threads", fixes #3788 (#3808) @TonyBagnall

  • [BUG] in DummyClassifier, fix incorrectly set capability:multivariate tag (#3858) @fkiraly

Transformations#

  • [BUG] fix behaviour of FourierFeatures with pd.DatetimeIndex (#3606) @eenticott-shell

  • [BUG] fix infinite loop in get_params for FeatureUnion (#3708) @hoesler @fkiraly

  • [BUG] SupervisedIntervals bugfixes and clean up (#3727) @MatthewMiddlehurst

  • [BUG] Reduce size of MultiRocket test example to avoid sporadic MemoryError in testing (#3813) @TonyBagnall

  • [BUG] fix return index for transformers’ Primitives output in row vectorization case (#3839) @fkiraly

  • [BUG] in Reconciler, fix summation matrix bug for small hierarchies with one unique ID in outer index (#3859) @ciaran-g

Testing framework#

  • [BUG] Update test_deep_estimator_full to incorporate new versions of tensorflow / keras (#3820) @achieveordie

Documentation#

Maintenance#

  • [MNT] Converted setup.py to pyproject.toml. Depends on setuptools>61.0.0 (#3723) @jorenham @wolph

  • [MNT] decouple forecasting pipeline module from registry (#3799) @fkiraly

  • [MNT] temporary skip of new failure test_deep_estimator_full[keras-adamax] (#3817) @fkiraly

  • [MNT] isolate soft dependencies in tests (#3760) @fkiraly

  • [MNT] fix pyproject.toml broken string (#3797) @TonyBagnall

  • [MNT] exclude TapNet from tests (#3812) @TonyBagnall

  • [MNT] test soft dependency isolation in non-suite tests (#3750) @fkiraly

  • [MNT] Address ContinuousIntervalTree and RandomShapeletTransform deprecation warnings (#3796) @MatthewMiddlehurst

  • [MNT] isolate statsmodels, part 4: isolating statsmodels in non-suite tests (#3821) @fkiraly

Contributors#

@achieveordie, @aiwalter, @ciaran-g, @danbartl, @eenticott-shell, @fkiraly, @hadifawaz1999, @haskarb, @hoesler, @jorenham, @KishManani, @lmmentel, @matt-wisdom, @MatthewMiddlehurst, @michaelfeil, @RikStarmans, @templierw, @TonyBagnall, @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#

  • [ENH] get_args default handling for keys not present (#3595) @fkiraly

  • [ENH] improve base class test docstrings and clone test (#3555) @fkiraly

  • [ENH] get_fitted_params for nested sklearn components (#3645) @fkiraly

  • [ENH] Serialization and deserialization of estimators (#3336) @fkiraly

  • [ENH] Serialization and deserialization of deep learning estimators (#3425) @achieveordie

Data loaders#

  • [ENH] support for @targetlabel identifier for .ts files in load_from_tsfile (#3436) @achieveordie

  • [ENH] refactor/integrate _contrib - datasets (#3518) @fkiraly

Data types, checks, conversions#

  • [ENH] dask conversion adapters for multi-indexed pandas.DataFrame (#3513) @fkiraly

  • [ENH] refactor mtype conversion extension utils into one location (#3514) @fkiraly

Forecasting#

  • [ENH] modular/configurable Theta forecaster (#1300) @GuzalBulatova

  • [ENH] global/local recursive reduction prototype (#3333) @fkiraly

  • [ENH] Squaring residuals estimator (#3378) @kcc-lion

  • [ENH] extend recursive strategy in make_reduction to allow global pooling on panel data (#3451) @danbartl

  • [EHN] Parallelized evaluate with {joblib, dask} (#3511) @topher-lo

  • [ENH] use statsmodels append in _StatsModelsAdapter._update (#3527) @chillerobscuro

  • [ENH] extend evaluate to hierarchical and panel data (#3542) @fkiraly

  • [ENH] numpy integer support for ColumnEnsembleForecaster (#3557) @fkiraly

  • [ENG] forecast-by-level wrapper (#3585) @fkiraly

  • [ENH] multivariate test case for EnsembleForecaster (#3637) @fkiraly

  • [ENH] extend ColumnEnsembleForecaster to allow application of multivariate forecasters (#3504) @fkiraly

  • [ENH] add forecaster test case with string columns (#3506) @fkiraly

  • [ENH] extend forecasting grid/random search to hierarchical and panel data (#3548) @fkiraly

  • [ENH] Make EnsembleForecaster work with multivariate data (#3623) @AnH0ang

  • [ENH] ExpandingWindowSplitter fix for initial_window=0 and deprecating "start_with_window" (#3690) @chillerobscuro

Parameter estimation#

Time series annotation#

Time series classification#

  • [ENH] TapNet DL Model for classification (#3386) @achieveordie

  • [ENH] refactor/integrate _contrib - diagram_code (#3519) @fkiraly

  • [ENH] fast test parameters for TapNet estimators and docstring/interface cleanup (#3544) @achieveordie

  • [ENH] more relevant parameters to CNNRegressor for user flexibility (#3561) @achieveordie

  • [ENH] allow KNeighborsTimeSeriesClassifier to handle distances between unequal length series (#3654) @fkiraly

Time series regression#

  • [ENH] TapNet DL Model for regression from sktime-dl (#3481) @achieveordie

  • [ENH] allow KNeighborsTimeSeriesRegressor to handle distances between unequal length series(#3654) @fkiraly

Transformations#

  • [ENH] test that TruncationTransformer preserves index and column names in pd-multiindex (#3535) @fkiraly

  • [ENH] replace inplace sort by non-inplace sort in Reconciler (#3553) @fkiraly

  • [ENH] SupervisedIntervals transformer and cleaned numba functions (#3622) @MatthewMiddlehurst

  • [ENH] TSFreshFeatureExtractor cleanup, tests, and docstring (#3636) @kcc-lion

  • [ENH] Option to fit Clearsky transformer in parallel (#3652) @ciaran-g

Testing framework#

  • [ENH] tests for get_fitted_params interface contract by estimator (#3590) @fkiraly

Governance#

Documentation#

Maintenance#

  • [MNT] 0.14.0 deprecation actions (#3677) @fkiraly

  • [MNT] Bump pre-commit action from 2 to 3 (#3576) @lmmentel

  • [MNT] Bump setup-python action from 2 to 4 (#3577) @lmmentel

  • [MNT] Remove ABCMeta inheritance from _HeterogeneousMetaEstimator (#3569) @fkiraly

  • [MNT] loosen scipy bound to <2.0.0 (#3587) @fkiraly

  • [MNT] Replace deprecated sphinx-panels with sphinx-design (#3575) @MatthewMiddlehurst

  • [MNT] Bump checkout action from 2 to 3 (#3578) @lmmentel

  • [MNT] temporarily remove stochastically failing tapnet from tests (#3624) @fkiraly

  • [MNT] replace ARIMA used in tests by reducer to remove soft dependency in tests (#3552) @fkiraly

  • [MNT] replace author names by GitHub ID in author fields, linting (#3628) @fkiraly

  • [ENH] isolate statsmodels imports (#3445) @fkiraly

  • [MNT] isolate statsmodels imports, part 2 (#3515) @fkiraly

  • [MNT] isolate statsmodels, part 3: replace dependent estimators in test parameters (#3632) @fkiraly

  • [MNT] replace author names by GitHub ID in author fields, linting (#3628) @fkiraly

Refactored#

  • [ENH] refactor remaining get_fitted_params overrides to _get_fitted_params (#3591) @fkiraly

  • [BUG] fix get_fitted_params for non-conformant estimators (#3599) @fkiraly

Fixes#

BaseObject#

  • [BUG] fix get_fitted_params default for unfittable components (#3598) @fkiraly

Data loaders#

  • [BUG] fix bug with data loading from timeseriesclassification.com when extract_path is not None (#3021) @TonyBagnall

  • [BUG] fix error in writing datasets to file in ts format (#3532) @TonyBagnall

Data types, checks, conversions#

  • [BUG] fix pd.concat in stratified resampling causing error in check_is_scitype (#3546) @TonyBagnall

  • [BUG] fix check_estimator exclude arguments not working for non-base scitype tests (#3566) @fkiraly

  • [BUG] fix erroneous asserts in input checkers (#3556) @fkiraly

  • [BUG] Exclude np.timedelta64 from is_int check (#3627) @khrapovs

  • [BUG] fix get_cutoff for numpy format (#3442) @fkiraly

Forecasting#

  • [BUG] fix ConformalIntervals update does not update residuals_matrix (#3460) @bethrice44

  • [BUG] Fix side effect of predict_residuals (#3475) @aiwalter

  • [BUG] Fix residuals formula in NaiveForecaster.predict_var for non-null window_length (#3495) @topher-lo

  • [BUG] fix ColumnEnsembleForecaster for str index (#3504) @canbooo @fkiraly

  • [BUG] Fix pipeline tags for NaN values (#3549) @aiwalter

  • [BUG] fix conditional requires-fh-in-fit tag in EnsembleForecaster (#3642) @fkiraly

Parameter estimation#

  • [BUG] Fix PluginParamsForecaster docstring and add dict use example (#3643) @fkiraly

Time series annotation#

Time series clustering#

Time series classification#

Time series distances and kernels#

Time series regression#

  • [BUG] fix KNeighborsTimeSeriesRegressor tag handling dependent on distance component (#3654) @fkiraly

Transformations#

  • [BUG] RandomShapeletTransform: floor the maximum number of shapelets to number of classes (#3564) @TonyBagnall

  • [BUG] ClearSky transformer: fix missing value problem after transform (#3579) @ciaran-g

Contributors#

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

Version 0.13.4 - 2022-09-27#

Maintenance release - moved sktime repository to sktime org from alan-turing-institute org (#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#

  • [ENH] support for xarray DataArray & mtypes (#3255) @benHeid

  • [ENH] avoid metadata computation in scitype utility (#3357) @fkiraly

  • [ENH] check_is_scitype error message return changed to dict (#3466) @fkiraly

  • [ENH] soft dependency handling for mtypes (#3408) @fkiraly

  • [ENH] Optimize from_3d_numpy_to_nested converter function (#3339) @paulbauriegel

  • [ENH] simplify convert_to_scitype logic, fix export and docstring omissions in scitype converter module (#3358) @fkiraly

Data loaders#

  • [ENH] test for correct return type of load_basic_motions (#3458) @fkiraly

Forecasting#

  • [ENH] pmdarima 2.0.0 compatibility fix - use absolute index in return (#3302) @fkiraly

  • [ENH] global/local setting for DirectReductionForecaster (#3327) @fkiraly

  • [ENH] consistent sp handling in parameter estimators and AutoARIMA (#3367) @fkiraly

  • [ENH] enable default get_fitted_params for forecasters and delegated estimators (#3381) @fkiraly

  • [ENH] prevent vectorization in forecaster multiplexer (#3391) @fkiraly

  • [ENH] prevent vectorization in update wrappers and ForecastX (#3393) @fkiraly

  • [ENH] added missing data input check in forecasters (#3405) @fkiraly

  • [ENH] Add parallel fit and predict_residuals for calculation of residuals_matrix in ConformalIntervals (#3414) @bethrice44

  • [ENH] predictive variance and quantiles for naive forecaster (#3435) @topher-lo

Time series annotation#

Time series classification#

Time series distances and kernels#

Transformations#

Testing framework#

  • [ENH] testing transformers with transform data different from fit data (#3341) @fkiraly

  • [ENH] reduce legacy logic in test framework and refactor to scenarios (#3342) @fkiraly

  • [ENH] second param sets for selected estimators (#3428) @fkiraly

Fixes#

Data types, checks, conversions#

  • [BUG] ensure nested_univ metadata inference passes for scalar columns present (#3463) @fkiraly

Forecasting#

  • [BUG] Fix default conformal intervals initial_window parameter (#3383) @bethrice44

Time series annotation#

Time series classification#

  • [BUG] fixes missing super.__init__ call in MLPNetwork (#3350) @fkiraly

Transformations#

Maintenance#

Documentation#

  • [DOC] updated extension templates - tags explained, soft dependencies (#3334) @fkiraly

  • [DOC] API reference for dists_kernels module (#3312) @fkiraly

  • [DOC] fix notebook/example symlinks (#3379) @khrapovs

  • [DOC] Some tips on getting virtual environments to work (#3331) @miraep8

  • [DOC] changed wrong docstring default value of start_with_window in SlidingWindowSplitter to actual default value (#3340) @bugslayer-332

  • [DOC] Correct minor typos in examples/AA_datatypes_and_datasets.ipynb (#3349) @achieveordie

  • [DOC] updated extension templates - transformer tags explained (#3377) @fkiraly

  • [DOC] correcting and clarifying BaseSplitter docstrings (#3440) @fkiraly

  • [DOC] Fix docstring of TransformerPipeline (#3401) @aiwalter

  • [DOC] Expired slack link under “Where to ask questions” (#3449) @topher-lo

  • [DOC] Instructions for how to skip tests for new soft dependencies. (#3416) @miraep8

  • [DOC] replace legacy estimator overview with links (#3407) @fkiraly

  • [DOC] Update core dev list (#3415) @aiwalter

  • [DOC] Expired slack link under “Where to ask questions” (#3449) @topher-lo

  • [DOC] Added example to plot_series & fixed example for plot_lags (#3400) @shagn

Contributors#

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

Version 0.13.2 - 2022-08-23#

Highlights#

  • new forecaster: statsmodels ARDL interface (#3209) @kcc-lion

  • new transformer: channel/variable selection (Dhariyal et al 2021) for multivariate time series classification (#3248) @haskarb

  • new dunders: trafo ** forecaster = apply to exogeneous data; -trafo = OptionalPassthrough; ~trafo = invert (#3243, #3273, #3274) @fkiraly

  • pairwise transformations (time series distances, kernels) are now fully integrated with the check_estimator utility (#3254) @fkiraly

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#

  • [ENH] robustify BaseObject.set_tags against forgotten __init__ (#3226) @fkiraly

Data types, checks, conversions#

  • [ENH] treat non nested cols in conversion nested_univ to pd-multiindex (#3250) @fkiraly

Forecasting#

  • [ENH] statsmodels ARDL interface (#3209) @kcc-lion

  • [ENH] ** dunder for applying transformers to exogeneous data in forecasters (#3243) @fkiraly

  • [ENH] test pd.Series with name attribute in forecasters (#3297, #3323) @fkiraly

  • [ENH] set default ignores-exogeneous-X to False (#3260) @fkiraly

  • [ENH] forecasting pipeline test case with Detrender (#3270) @fkiraly

  • [ENH] test hierarchical forecasters with hierarchical data (#3321) @fkiraly

Time series annotation#

  • [ENH] Data generator for annotation - normal multivariate mean shift (#3114) @KatieBuc

Time series distances and kernels#

Transformations#

  • [ENH] channel selection (Dhariyal et al 2021) for multivariate time series classification (#3248) @haskarb

  • [ENH] channel selection (Dhariyal et al 2021) - compatibility with arbitrary distance (#3256) @fkiraly

  • [ENH] in Lag, make column naming consistent between single-lag and multi-lag case (#3261) @KishManani

  • [ENH] deprecate transformations.series.compose in favour of transformations.compose (#3271) @fkiraly

  • [ENH] inversion of transformer wrapper and dunder (#3274) @fkiraly

  • [ENH] correctness test for OptionalPassthrough (#3276) @aiwalter

  • [ENH] OptionalPassthrough wrapping via neg dunder (#3273) @fkiraly

  • [ENH] refactor of OptionalPassthrough as a delegator (#3272) @fkiraly

Testing framework#

  • [ENH] test super.__init__ call in objects and estimators (#3309) @fkiraly

Governance#

  • [GOV] sktime as a “library”, not a “curated selection” (#3155) @fkiraly

Fixes#

Data sets and data loaders#

Data types, checks, conversions#

  • [BUG] fix failure of some conversions in _load_provided_dataset() (#3231) @achieveordie

  • [BUG] fix recurring instances of forgotten list comprehension brackets inside np.all (#3245) @achieveordie, @fkiraly

  • [BUG] fix _enforce_infer_freq private utility for short time series (#3287) @fkiraly

Forecasting#

  • [BUG] Delay trimming in ForecastingGridSearchCV until after transforming (#3132) @miraep8

  • [BUG] Fix tag in DirectReductionForecaster (#3257) @KishManani

  • [BUG] ensure that forecasters do not add pd.Series.name attribute (#3290) @fkiraly

  • [BUG] removes superfluous UserWarning in AutoETS.fit if auto=True and additive_only=True #3311 (#3317) @chillerobscuro

  • [BUG] fix ColumnEnsembleForecaster for hierarchical input (#3324) @fkiraly

  • [BUG] fix bug where default forecaster _update empties converter store (#3325) @fkiraly

  • [BUG] (temporary fix) remove hierarchical datatypes from recursive reduction forecasters (#3326) @fkiraly

Parameter estimation#

  • [BUG] fixed concat dunder for ParamFitterPipeline (#3262) @fkiraly

Time series annotation#

Time series classification#

Transformations#

Maintenance#

  • [MNT] Deprecation of row transformers (#2370) @fkiraly

  • [MNT] add soft dependency tag to CNNClassifier (#3252) @fkiraly

  • [MNT] bound pmdarima < 2.0.0 (#3301) @fkiraly

  • [MNT] fix merge accident that deleted DtwDist export (#3304) @fkiraly

  • [MNT] move transformers in transformations.series.compose to transformations.compose (#3310) @fkiraly

Contributors#

@achieveordie, @aiwalter, @chillerobscuro, @chrisholder, @fkiraly, @haskarb, @KatieBuc, @kcc-lion, @KishManani, @miraep8, @patrickzib, @paulbauriegel

Version 0.13.1 - 2022-08-11#

Highlights#

  • forecasting reducers constructed via make_reduction now fully support global/hierarchical forecasting (#2486) @danbartl

  • forecasting metric classes now fully support hierarchical data and hierarchy averaging via multilevel argument (#2601) @fkiraly

  • probabilistic forecasting functionality for DynamicFactor, VAR and VECM (#2925, #3105) @AurumnPegasus, @lbventura

  • update features for AutoARIMA, BATS, TBATS, and forecasting tuners (#3055, #3068, #3086) @fkiraly, @jelc53

  • new transformer: ClearSky transformer for solar irradiance time series (#3130) @ciaran-g

  • new transformer: Filter transformer for low/high-pass and band filtering, interfaces mne filter_data (#3067) @fkiraly, @sveameyer13

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#

  • [ENH] remove custom __repr__ from BaseTask, inherit from BaseObject (#3049) @fkiraly

  • [ENH] default implementation for get_fitted_params and nested fitted params interface (#3077) @fkiraly

  • [ENH] remove _required_parameters interface point from BaseObject (#3152) @fkiraly

Data sets and data loaders#

Data types, checks, conversions#

  • [ENH] add check for unique column indices to mtype checks (#2971) @fkiraly

  • [ENH] Adapter from pd-multiindex to gluonts ListDataset (#2976) @TNTran92

  • [ENH] add check for non-duplicate indices in nested_univ mtype (#3029) @fkiraly

  • [BUG] Remove redundant computations in datatypes._utilities.get_cutoff (#3070) @shchur

Forecasting#

  • [ENH] Reworked make_reduction for global forecasting (#2486) @danbartl

  • [ENH] flexible update behaviour of forecasting tuners (#3055) @fkiraly

  • [ENH] flexible update behaviour of AutoARIMA (#3068) @fkiraly

  • [ENH] Reducer prototype rework - experimental (#2833) @fkiraly

  • [ENH] better ForecastingHorizon construction error message (#3236) @fkiraly

  • [ENH] metrics rework part IV - hierarchical metrics (#2601) @fkiraly

  • [ENH] Reducer prototype rework - experimental (#2833) @fkiraly

  • [ENH] predict_interval capability for VECM (#2925) @AurumnPegasus

  • [ENH] “dont refit or update” option in evaluate (#2954) @fkiraly

  • [ENH] regular update for stream forecasting, and “no update” wrappers (#2955) @fkiraly

  • [ENH] Implement get_fitted_params for tuning forecasters (#2975) @ZiyaoWei

  • [ENH] allow sp=None in the NaiveForecaster (#3043) @fkiraly

  • [MNT] remove custom __repr__ from BaseSplitter (#3048) @fkiraly

  • [ENH] dedicated update for BATS and TBATS (#3086) @jelc53

  • [ENH] DynamicFactor predict_interval and predict_quantiles (#3105) @lbventura

  • [ENH] Added error_score to evaluate and forecasting tuners (#3135) @aiwalter

  • [ENH] Refactor CutoffSplitter using get_window function (#3145) @khrapovs

  • [ENH] Refactor SingleWindowSplitter using get_window function (#3146) @khrapovs

  • [ENH] Allow lists to be cutoff argument in CutoffSplitter (#3147) @khrapovs

  • [ENH] Adding VAR._predict_intervals (#3149) @lbventura

Parameter estimation#

  • [ENH] Parameter estimators and “plug in parameter” compositors (#3041) @fkiraly

Time series annotation#

Time series classification#

Time series regression#

Transformations#

  • [ENH] refactored ColumnConcatenator, rewrite using pd-multiindex inner mtype (#2379) @fkiraly

  • [ENH] __getitem__ aka [ ] dunder for transformers, column subsetting (#2907) @fkiraly

  • [ENH] YtoX transformer to use transform endogeneous data as exogegneous (#2922) @fkiraly

  • [BUG] fixes RandomIntervalFeatureExtractor to have unique column names (#3001) @fkiraly

  • [BUG] fix for Differencer.inverse_transform not having access to data index freq (#3007) @fkiraly

  • [ENH] Refactor transformers in _deseasonalize module (#3040) @fkiraly

  • [ENH] Filter transformer from sktime-neuro (#3067) @fkiraly

  • [ENH] increase stateless scope of FunctionTransformer and TabularToSeriesAdaptor (#3087) @fkiraly

  • [ENH] ClearSky transformer for solar irradiance time series (#3130) @ciaran-g

  • [ENH] move simple ShapeletTransform from _contrib to transformations module (#3136) @fkiraly

Testing framework#

  • [ENH] test that transformer output columns are unique (#2969) @fkiraly

  • [ENH] test estimator fit without soft dependencies (#3039) @fkiraly

  • [ENH] test all BaseObject descendants for sklearn compatibility (#3122) @fkiraly

  • [ENH] functools wrapper to preserve docstrings in estimators wrapped by make_mock_estimator (#3228) @ltsaprounis

  • [ENH] refactoring test params for FittedParamExtractor to get_test_params (#2995) @mariamjabara

  • [ENH] refactored test params for ColumnTransformer (#3008) @kcc-lion

  • [ENH] complete refactor of all remaining test params left in _config to get_test_params (#3123) @fkiraly

  • [ENH] partition design for test matrix to reduce test time to a third (#3137) @fkiraly

Documentation#

Fixes#

Data types, checks, conversions#

  • [BUG] fix stray args in one from_multi_index_to_3d_numpy (#3239) @fkiraly

Forecasting#

  • [BUG] fix forecaster default predict_quantiles for multivariate data (#3106) @fkiraly

  • [BUG] ExpandingWindowSplitter constructor sklearn conformace fix (#3121) @fkiraly

  • [BUG] fix override/defaulting of “prediction intervals” adders (#3129) @bethrice44

  • [BUG] fix check_equal_time_index with numpy arrays as input (#3160, #3167) @benHeid

  • [BUG] fix broken AutoEnsembleForecaster inverse variance method (#3208) @AnH0ang

  • [BUG] fixing bugs in metrics base classes and custom performance metric (#3225) @fkiraly

Time series classification#

  • [BUG] fix HIVE-COTE2 sporadic test failure (#3094) @MatthewMiddlehurst

  • [BUG] fixes to BaseClassifier._predict_proba default and SklearnClassifierPipeline in case predict_proba is not implemented (#3104) @fkiraly

  • [BUG] allowing single class case in sklearn classifiers (trees/forests) (#3204) @fkiraly

  • [BUG] skip check for no. estimators in contracted classifiers (#3207) @fkiraly

Transformations#

  • [BUG] fixed inverse transform logic in transformer pipelines (#3085) @fkiraly

  • [BUG] fixed DateTimeFeatures inconsistent output type formats (#3223) @danbartl

  • [BUG] fixed Datetimefeatures day_of_year option not working (#3223) @danbartl

Testing framework#

  • [BUG] address shadowing of object in _check_soft_dependencies (#3116) @fkiraly

  • [BUG] prevent circular imports in all_estimators (#3198) @fkiraly

Maintenance#

Contributors#

@achieveordie, @aiwalter, @AnH0ang, @Arvind644, @AurumnPegasus, @benHeid, @bethrice44, @C-mmon, @ciaran-g, @danbartl, @eenticott-shell, @fkiraly, @jelc53, @kcc-lion, @khrapovs, @lbventura, @lmmentel, @Lovkush-A, @ltsaprounis, @mariamjabara, @MatthewMiddlehurst, @miraep8, @shchur, @soma2000-lang, @sveameyer13, @TNTran92, @tobiasweede, @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 #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#

  • [ENH] VectorizedDF to support vectorization across columns/variables (#2864) @fkiraly

  • [ENH] preserve index.freq in get_cutoff (#2908) @fkiraly

  • [ENH] extend get_cutoff to pd.Index input (#2939) @fkiraly

Forecasting#

Transformations#

  • [ENH] extend ColumnSelect to work for scalar columns parameter (#2906) @fkiraly

  • [ENH] transformer vectorization: ensure unique column names if unvectorized output is multivariate (#2958) @fkiraly

Fixes#

Data loaders#

  • [BUG] load_UCR_UEA_dataset checks for existence of files rather than just directories (#2899) @TonyBagnall

Data types, checks, conversions#

  • [BUG] fixing get_time_index for 1D and 2D numpy formats (#2852) @fkiraly

  • [BUG] Fixing broken conversions from nested data frame (#2375) @fkiraly

  • [BUG] preserve pd-multiindex index names (#2999) @fkiraly

Forecasting#

  • [BUG] loosen index check related tags and fix incorrect pipeline tag inference (#2842) @fkiraly

  • [BUG] remove non-standard score function in BaseGridSearch (#2752) @fkiraly

  • [BUG] fix Prophet to have correct output column names (#2973) @fkiraly

  • [BUG] fixing grid/random search broken delegation (#2945) @fkiraly

  • [BUG] forecaster vectorization for update and proba prediction, bugfixes (#2960) @fkiraly

  • [BUG] fix pipeline vectorization for univariate estimators (#2959) @fkiraly

Time series classification#

Transformations#

  • [BUG] ensure IntervalSegmenter unique column output (#2970) @fkiraly

  • [BUG] fix NaN columns in bootstrap transformers (#2974) @fkiraly

  • [BUG] ensure TruncationTransformer.transform output now has same columns as input (#2999) @fkiraly

Refactored#

  • [ENH] NaiveForecaster: remove manual vectorization layer in favour of base class vectorization (#2874) @fkiraly

  • [ENH] remove old multiindex-df index convention hack from VectorizedDF (#2863) @fkiraly

  • [ENH] delete duplicate classifier tests (#2912) @fkiraly

Maintenance#

Documentation#

  • [DOC] updated forecasting tutorial with multivariate vectorization (#3000) @fkiraly

  • [DOC] all_estimators authors variable (#2861) @fkiraly

  • [DOC] added missing credits in naive.py (#2876) @fkiraly

  • [DOC] add _is_vectorized to forecaster extension template exclusion list (#2878) @fkiraly

  • [DOC] replace AyushmaanSeth name with GitHub ID (#2911) @fkiraly

  • [DOC] Added docstrings code showing example of using metrics with evaluate (#2850) @TNTran92

  • [DOC] updated release process to current de-facto process (#2927) @fkiraly

Contributors#

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

Version 0.12.1 - 2022-06-28#

Highlights#

  • new ReconcilerForecaster estimator for reconciling forecasts using base model residuals (#2830) @ciaran-g

  • | dunder for multiplexing and autoML, shorthand for MultiplexTransformer (#2810) @miraep8

  • lagging transformer Lag for easy generation of lags (#2783) @fkiraly

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. (#2835) @fkiraly

Enhancements#

BaseObject#

  • [ENH] set_params to call reset, to comply with sklearn parameter interface assumptions (#2835) @fkiraly

Forecasting#

  • [ENH] make get_cutoff compatible with all time series formats, fix bug for VectorizedDF input (#2870) @fkiraly

  • [ENH] more informative error messages to diagnose wrong input format to forecasters (#2824) @fkiraly

Transformations#

Fixes#

Forecasting#

  • [BUG] fixed forecasters not updating cutoff when in vectorization mode (#2870) @fkiraly

  • [BUG] Fixing type conversion bug for probabilistic interval wrappers NaiveVariance and ConformalInterval (#2815) @bethrice44

  • [BUG] fix Lag transformer when numpy.int was passed as lag integers (#2832) @fkiraly

  • [ENH] fix get_window utility when window_length was None (#2866) @fkiraly

Transformations#

  • [BUG] Vectorization in transformers overwrote y with X if y was passed (#2844) @fkiraly

  • [BUG] output type check fix for ambiguous return types in vectorized Panel case (#2843) @fkiraly

Documentation#

  • [DOC] add missing Sajaysurya references (#2800) @fkiraly

  • [DOC] add missing TonyBagnall to contributors of 0.12.0 in changelog (#2803) @fkiraly

  • [DOC] adds solution to “no matches found” to troubleshoot section of install guide (#2786) @AurumnPegasus

  • [DOC] cleaning up transformer API reference (#2818) @fkiraly

  • [DOC] team update: remove TonyBagnall from CC (#2794) @fkiraly

  • [DOC] Added diviner by Databricks and statsforecast by Nixtla to related software (#2873) @aiwalter

Maintenance#

Contributors#

@aiwalter, @AurumnPegasus, @bethrice44, @ciaran-g, @fkiraly, @khrapovs, @miraep8

Version 0.12.0 - 2022-06-12#

Highlights#

  • Time series classification: deep learning based algorithms, port of sktime-dl into sktime (#2447) @TonyBagnall

  • forecasting data splitters now support hierarchical data (#2599) @fkiraly

  • Updated forecasting and classification notebooks (#2620, #2641) @fkiraly

  • frequently requested algorithm: Kalman filter transformers (#2611) @NoaBenAmi @lielleravid

  • frequently requested algorithm: top-down reconciler based on forecast proportions (#2664) @ciaran-g

  • frequently requested algorithm: empirical and conformal prediction intervals after Stankeviciute et al, 2021 (#2542, #2706) @bethrice44 @fkiraly

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 (#2562) @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 (#2565) @fkiraly.

Forecasting#

  • ExpandingWindowSplitter with data individually added is now default cv in BaseForecaster.update_predict (#2679) @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 (#2647) @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 #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#

  • [ENH] Add support to get_slice for multi-index and hierarchical data (#2761) @bethrice44

Distances, kernels#

Forecasting#

  • [ENH] early fit for NaiveVariance (#2546) @fkiraly

  • [ENH] empirical and conformal probabilistic forecast intervals (Stankeviciute et al, 2021) (#2542 #2706) @bethrice44 @fkiraly

  • [ENH] BaseSplitter extension: hierarchical data, direct splitting of series (#2599) @fkiraly

  • [ENH] Top-down reconciler based on forecast proportions (#2664) @ciaran-g

  • [ENH] HCrystalBallForecaster deprecation (#2675) @aiwalter

  • [ENH] add int handling to Prophet (#2709) @fkiraly

  • [ENH] Compositor for forecasting of exogeneous data before using in exogeneous forecaster (#2674) @fkiraly

  • [ENH] add ExpandingWindowSplitter as default cv in BaseForecaster.update_predict (#2679) @fkiraly

Performance metrics#

  • [ENH] new probabilistic metrics for interval forecasts - empirical coverage, constraint violation (#2383) @eenticott-shell

  • [ENH] metrics rework part II - metrics internal interface refactor (#2500) @fkiraly

  • [ENH] metrics rework part III - folding metric mixins into intermediate class, interface consolidation (#2502) @fkiraly

  • [ENH] tests for probabilistic metrics (#2683) @eenticott-shell

Pipelines#

  • [ENH] make_pipeline utility to create linear pipelines of any type (#2643) @fkiraly

Time series classification and regression#

  • [ENH] Transfer deep learning classifiers and regressors from sktime-dl (#2447) @TonyBagnall

  • [ENH] Proximity forest, removal of legacy conversion (#2518) @fkiraly

  • [ENH] update TSR base class, kNN time series regression (#2647) @fkiraly

  • [ENH] DummyClassifier, naive classifier baseline (#2707) @ZiyaoWei

  • [ENH] pipeline for time series classification from sktime transformers and sklearn classifiers (#2718) @fkiraly

Transformations#

Testing framework#

  • [ENH] allow different import and package names in soft dependency check (#2545) @fkiraly

  • [ENH] option to exclude tests/fixtures in check_estimator (#2756) @fkiraly

  • [ENH] make_mock_estimator passing constructor args for the mocked class (#2686) @ltsaprounis

  • [ENH] test_update_predict_predicted_index for continuous data (#2701) @ltsaprounis

  • [ENH] interface compliance test to ensure sklearn compliance of constructor (#2732) @fkiraly

  • [ENH] check_estimators to run without soft dependencies (#2779) @fkiraly

  • [ENH] forecasting pipeline test which triggers conversions and failure condition in #2739 (#2790) @fkiraly

  • [ENH] expose estimator method iteration in TestAllEstimators as test fixture (#2781) @fkiraly

Governance#

Fixes#

Clustering#

  • [BUG] fixed constructor non-compliance with sklearn: TimeSeriesKMeans (#2773) @fkiraly

Data types, checks, conversions#

  • [BUG] fix pd.Series to pd.DataFrame mtype conversion in case series has a name (#2607) @fkiraly

  • [BUG] corrected Series to Panel conversion for numpy formats (#2638) @fkiraly

Distances, kernels#

Forecasting#

  • [BUG] Fix incorrect update_predict arg default and docstring on cv arg (#2589) @aiwalter

  • [BUG] Fix Prophet with logistic growth #1079 (#2609) @k1m190r

  • [BUG] ignores-exogeneous-X tag correction for UnobservedComponents (#2666) @fkiraly

  • [BUG] fixed StackingForecaster for exogeneous data (#2667) @fkiraly

  • [BUG] fixed pmdarima interface index handling if X index set is strictly larger than y index set (#2673) @fkiraly

  • [BUG] Fix duration to int coercion for pd.tseries.offsets.BaseOffset (#2726) @khrapovs

  • [BUG] fixed overlap in NaiveVariance train/test set due to inclusive indexing for timestamp limits (#2760) @bethrice44

  • [BUG] fixed constructor non-compliance with sklearn: AutoETS (#2736) @fkiraly

  • [BUG] fixed constructor non-compliance with sklearn: UnobservedComponents (#2773) @fkiraly

  • [BUG] fixed sarimax_kwargs in ARIMA and AutoARIMA being incompliant with scikit-learn interface (#2731, #2773) @fkiraly

  • [BUG] add patch to ensure column/name preservation in NaiveForecaster (#2793) @fkiraly

Time series classification and regression#

  • [BUG] fixing constructor non-compliance with sklearn: KNeighborsTimeSeriesClassifier and KNeighborsTimeSeriesRegressor (#2737, #2773) @fkiraly

Transformations#

  • [BUG] Fixed fit method of Imputer (#2362) @aiwalter

  • [BUG] fix typo in author variable for boxcox module (#2642) @fkiraly

  • [BUG] TransformerPipeline fix for vectorization edge cases and sklearn transformers (#2644) @fkiraly

  • [BUG] SummaryTransformer multivariate output fix and tests for series-to-primitives transform output (#2720) @fkiraly

  • [BUG] fixing constructor non-compliance with sklearn: PCATransformer (#2734) @fkiraly

Maintenance#

  • [MNT] Added pytest flags to setup.cfg (#2535) @aiwalter

  • [MNT] Added deprecation warning for HCrystalBallForecaster (#2675) @aiwalter

  • [MNT] Replace deprecated argument squeeze with the method .squeeze(“columns”) in pd.read_csv (#2693) @khrapovs

  • [MNT] Replace pandas.DataFrame.append with pandas.concat to address future deprecation (#2723) @khrapovs

  • [MNT] Add [MNT] tag to PR template (#2727) @khrapovs

  • [MNT] Removed redundant todo from transformer_simple extension template (#2740) @NoaBenAmi

  • [MNT] Address various future warnings from pandas and numpy (#2725) @khrapovs

  • [MNT] testing sktime without softdeps (#2719) @fkiraly

  • [MNT] remove accidental codecov overwrite from nosoftdeps (#2782) @fkiraly

  • [MNT] deprecation actions scheduled for 0.12.0 release (#2747) @fkiraly

Refactored#

Documentation#

Contributors#

@aiwalter, @asattiraju13, @bethrice44, @chrisholder, @ciaran-g, @DBCerigo, @dougollerenshaw, @eenticott-shell, @fkiraly, @k1m190r, @keepersas, @khrapovs, @lbventura, @lielleravid, @ltsaprounis, @miraep8, @NoaBenAmi, @Ris-Bali, @TonyBagnall, @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 (#2596) @fkiraly

Clustering#

Data types, checks, conversions#

  • [ENH] more informative error message from mtype if no mtype can be identified (#2606) @fkiraly

Distances, kernels#

Forecasting#

  • [ENH] Extended sliding and expanding window splitters to allow timedelta forecasting horizon (#2551) @khrapovs

  • [ENH] Removed interval_width parameter of Prophet (#2630) @phershbe

Time series classification#

Transformations#

Fixes#

BaseObject#

Clustering#

Forecasting#

  • [BUG] Forecasting pipeline get/set params fixed for dunder generated pipelines (#2619) @fkiraly

Testing framework#

  • [BUG] fixing side effects between test runs of the same test in the test suite (#2558) @fkiraly

Contributors#

@chrisholder, @ciaran-g, @fkiraly, @khrapovs, @miraep8, @phershbe, @Ris-Bali, @TonyBagnall

Version 0.11.3 - 2022-04-29#

Highlights#

  • sktime is now compatible with scipy 1.8.X versions (#2468, #2474) @fkiraly

  • dunder method for forecasting pipelines: write trafo * forecaster * my_postproc for TransformedTargetForecaster pipeline (#2404) @fkiraly

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

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

  • prediction intervals for UnobservedComponents forecaster (#2454) @juanitorduz

  • new argument return_tags of all_estimators allows listing estimators together with selected tags (#2410) @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#

  • [ENH] new _make_panel utility, separate from _make_panel_X, with arbitrary return mtype (#2505) @fkiraly

Forecasting#

  • [ENH] prediction intervals for UnobservedComponents forecaster (#2454) @juanitorduz

  • [ENH] remove error message on exogeneous X from DirRec reducer (#2463) @fkiraly

  • [ENH] replace np.arange by np.arghwere in splitters to enable time based indexing and selection (#2394) @khrapovs

  • [ENH] Test SingleWindowSplitter with Timedelta forecasting horizon (#2392) @khrapovs

  • [ENH] Aggregator: remove index naming requirement (#2479) @ciaran-g

  • [ENH] MultiplexForecaster compatibility with multivariate, probabilistic and hierarchical forecasting (#2458) @fkiraly

  • [ENH] Differencer NA handling - “fill zero” parameter (#2487) @fkiraly

  • [ENH] Add random_state to statsmodels adapter and estimators (#2440) @ris-bali

  • [ENH] Added tests for MultiplexForecaster (#2520) @miraep8

  • [ENH] Added | dunder method for MultiplexForecaster (#2540) @miraep8

Registry#

  • [ENH] add new argument return_tags to all_estimators (#2410) @miraep8

Testing framework#

Transformations#

Fixes#

Clustering#

  • [BUG] Fixed medoids in kmedoids being taken across all data instead of cluster-wise (#2548) @chrisholder

Data types, checks, conversions#

  • [BUG] fixing direct conversions from/to numpyflat mtype being overridden by indirect ones (#2517) @fkiraly

Distances, kernels#

  • [BUG] Distances fixed bug where bounding matrix was being rounded incorrectly (#2549) @chrisholder

Forecasting#

  • [BUG] refactor _predict_moving_cutoff and bugfix, outer update_predict_single should be called (#2466) @fkiraly

  • [BUG] fix ThetaForecaster.predict_quantiles breaking on pd.DataFrame input (#2529) @fkiraly

  • [BUG] bugfix for default _predict_var implementation (#2538) @fkiraly

  • [BUG] ensure row index names are preserved in hierarchical forecasting when vectorizing (#2489) @fkiraly

  • [BUG] Fix type checking error due to pipeline type polymorphism when constructing nested pipelines (#2456) @fkiraly

  • [BUG] fix for update_predict state handling bug, replace detached cutoff by deepcopy (#2557) @fkiraly

  • [BUG] Fixes the index name dependencies in WindowSummarizer (#2567) @ltsaprounis

  • [BUG] Fix non-compliant output of ColumnEnsembleForecaster.pred_quantiles, pred_interval (#2512) @eenticott-shell

Time series classification#

  • [BUG] fixed ColumnEnsembleClassifier handling of unequal length data (#2513) @fkiraly

Transformations#

  • [BUG] remove alpha arg from _boxcox, remove private method dependencies, ensure scipy 1.8.0 compatibility (#2468) @fkiraly

  • [BUG] fix random state overwrite in MiniRocketMultivariate (#2563) @fkiraly

Testing framework#

  • [BUG] fix accidental overwrite of default method/arg sequences in test scenarios (#2457) @fkiraly

Refactored#

  • [ENH] changed references to fit-in-transform to fit_is_empty (#2494) @fkiraly

  • [ENH] cleaning up _panel._convert module (#2519) @fkiraly

  • [ENH] Legacy test refactor - move test_data_processing, mtype handling in test_classifier_output (#2506) @fkiraly

  • [ENH] MockForecaster without logging, MockUnivariateForecaster clean-up (#2539) @fkiraly

  • [ENH] metrics rework part I - output format tests (#2496) @fkiraly

  • [ENH] simplify load_from_tsfile, support more mtypes (#2521) @fkiraly

  • [ENH] removing dead args and functions post _predict_moving_cutoff refactor (#2470) @fkiraly

Maintenance#

  • [MNT] upgrade codecov uploader and cleanup coverage reporting (#2389) @tarpas

  • [MNT] fix soft dependency handling for esig imports (#2414) @fkiraly

  • [MNT] Make the contrib module private (#2422) @MatthewMiddlehurst

  • [MNT] disabling aggressive dtw_python import message (#2439) @KatieBuc

  • [MNT] loosen strict upper bound on scipy to 1.9.0 (#2474) @fkiraly

  • [MNT] Remove accidentally committed prob integration notebook (#2476) @eenticott-shell

  • [MNT] speed up Facebook Prophet tests (#2497) @fkiraly

  • [MNT] Proximity forest faster test param settings (#2525) @fkiraly

  • [MNT] Fix tests to prevent all guaranteed check_estimator failures (#2411) @danbartl

  • [MNT] added pytest-timeout time limit of 10 minutes (#2532, #2541) @fkiraly

  • [MNT] turn on tests for no state change in transform, predict (#2536) @fkiraly

  • [MNT] switch scipy mirror to anaconda on windows to resolve gfortran FileNotFoundError in all CI/CD (#2561) @fkiraly

  • [MNT] Add a script to generate changelog in rst format (#2449) @lmmentel

Documentation#

  • [DOC] Added clustering module to API docs (#2429) @aiwalter

  • [DOC] updated datatypes notebook (#2492) @fkiraly

  • [DOC] Broken Links in Testing Framework Doc (#2450) @Tomiiwa

  • [DOC] remove GSoC announcement from landing page after GSoC deadline (#2543) @GuzalBulatova

  • [DOC] fix typo in sktime install instructions, causes “invalid requirement error” if followed verbatim (#2503) @Samuel-Oyeneye

Contributors#

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

Version 0.11.2 - 2022-04-11#

Fixes#

  • [BUG] temp workaround for unnamed levels in hierarchical X passed to aggregator (#2432) @fkiraly

  • [BUG] forecasting pipeline dunder fix by (#2431) @fkiraly

  • [BUG] fix erroneous direct passthrough in ColumnEnsembleForecaster (#2436) @fkiraly

  • [BUG] Incorrect indices returned by make_reduction on hierarchical data fixed by (#2438) @danbartl

Version 0.11.1 - 2022-04-10#

Highlights#

  • GSoC 2022 application instructions - apply by Apr 19 for GSoC with sktime! (#2373) @lmmentel @Lovkush-A @fkiraly

  • enhancements and bugfixes for probabilistic and hierarchical forecasting features introduced in 0.11.0

  • reconciliation transformers for hierarchical predictions (#2287, #2292) @ciaran-g

  • pipeline, tuning and evaluation compatibility for probabilistic forecasting (#2234, #2318) @eenticott-shell @fkiraly

  • interface to statsmodels SARIMAX (#2400) @TNTran92

  • reduction with transform-on-y predictors (e.g., lags, window summaries), and for hierarchical data (#2396) @danbartl

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#

  • [ENH] tsf loader to allow specification of return mtype (#2103) @ltsaprounis

  • [ENH] relax name rules for multiindex - fixed omission in from_multi_index_to_nested (#2384) @ltsaprounis

Forecasting#

  • [ENH] require uniqueness from multiple alpha/coverage in interval/quantile forecasts (#2326) @fkiraly

  • [ENH] Adding fit parameters to VAR constructor #1850 (#2304) @TNTran92

  • [ENH] vectorization for probabilistic forecasting methods that return pd.DataFrame (#2355) @fkiraly

  • [ENH] adding compatibility with probabilistic and hierarchical forecasts to ForecastingPipeline and TransformedTargetForecaster (#2318) @fkiraly

  • [ENH] Allow pd.Timedelta values in ForecastingHorizon (#2333) @khrapovs

  • [ENH] probabilistic methods for ColumnEnsembleForecaster (except predict_proba) (#2356) @fkiraly

  • [ENH] NaiveVariance: verbose arg and extended docstring (#2395) @fkiraly

  • [ENH] Grid search with probabilistic metrics (#2234) @eenticott-shell

  • [ENH] wrapper for stream forecasting (update_predict use) to trigger regular refit (#2305) @fkiraly

  • [ENH] post-processing in TransformedTargetForecaster, dunder method for (transformed y) forecasting pipelines (#2404) @fkiraly

  • [ENH] suppressing deprecation messages in all_estimators estimator retrieval, address dtw import message (#2418) @katiebuc

  • [ENH] improved error message in forecasters when receiving an incompatible input (#2314) @fkiraly

  • [ENH] NaiveVariance: verbose arg and extended docstring (#2395) @fkiraly

  • [ENH] Prohibit incompatible splitter parameters (#2328) @khrapovs

  • [ENH] added interface to statsmodels SARIMAX (#2400) @TNTran92

  • [ENH] extending reducers to hierarchical data, adding transformation (#2396) @danbartl

Time series classification#

  • [ENH] Faster classifier example parameters (#2378) @MatthewMiddlehurst

  • [ENH] BaseObject.is_composite utility, relax errors in BaseClassifier input checks to warnings for composites (#2366) @fkiraly

  • [ENH] Capability inference for transformer and classifier pipelines (#2367) @fkiraly

Transformations#

  • [ENH] Implement reconcilers for hierarchical predictions - transformers (#2287) @ciaran-g

  • [ENH] Hierarchy aggregation transformer (#2292) @ciaran-g

  • [ENH] memory for WindowSummarizer to enable transform windows to reach into the fit time period (#2325) @fkiraly

Maintenance#

  • [MNT] Remove jinja2 version (#2330) @aiwalter

  • [ENH] test generation error to raise and not return (#2298) @fkiraly

  • [ENH] Remove pd.Int64Index due to impending deprecation (#2339, #2390) @khrapovs

  • [MNT] removing unused imports from tests._config (#2358) @fkiraly

  • [ENH] scenarios for hierarchical forecasting and tests for probabilistic forecast methods (#2359) @fkiraly

  • [MNT] fixing click/black incompatibility in CI (#2353, #2372) @fkiraly

  • [ENH] tests for check_estimator` tests passing (#2408) @fkiraly

  • [ENH] Fix tests to prevent guaranteed check_estimator failure (#2405) @danbartl

Refactored#

  • [ENH] remove non-compliant fit_params kwargs throughout the code base (#2343) @fkiraly

  • [ENH] Classification expected output test updates (#2295) @MatthewMiddlehurst

  • [ENH] Transformers module full refactor - part III, panel module (2nd batch) (#2253) @fkiraly

  • [ENH] Transformers module full refactor - part IV, panel module (3rd batch) (#2369) @fkiraly

  • [ENH] test parameter refactor: TSInterpolator (#2342) @NoaBenAmi

  • [ENH] move “sktime forecaster tests” into TestAllForecasters class (#2311) @fkiraly

  • [ENH] upgrade BasePairwiseTransformer to use datatypes input conversions and checks (#2363) @fkiraly

  • [ENH] extend _HeterogeneousMetaEstimator estimator to allow mixed tuple/estimator list (#2406) @fkiraly

  • [MNT] test parameter refactor: forecasting reducers and ColumnEnsembleClassifier (#2223) @fkiraly

  • [ENH] refactoring test_all_transformers to test class architecture (#2252) @fkiraly

Fixes#

Forecasting#

  • [BUG] fix _update default for late fh pass case (#2362) @fkiraly

  • [ENH] Extract cached ForecastingHorizon methods to functions and avoid B019 error (#2364) @khrapovs

  • [ENH] AutoETS prediction intervals simplification (#2320) @fkiraly

  • [BUG] fixed get_time_index for most mtypes (#2380) @fkiraly

Transformations#

  • [BUG] TSInterpolator and nested_univ check fix (#2259) @fkiraly

  • [BUG][ENH] WindowSummarizer offset fix, easier lag specification (#2316) @danbartl

  • [BUG] FeatureUnion output column names fixed (#2324) @fkiraly

  • [ENH][BUG] fixes and implementations of missing inverse_transform in transformer compositions (#2322) @fkiraly

Documentation#

  • [DOC] fix 0.11.0 release note highlights formatting (#2310) @fkiraly

  • [DOC] typo fix constructor -> constructor in extension templates (#2348) @fkiraly

  • [DPC] fixed the issue with 'docs/source/developer_guide/testing_framework.rst' (#2335) @0saurabh0

  • [DOC] Updated conda installation instructions (#2365) @RISHIKESHAVAN

  • [DOC] updated extension templates: link to docs and reference to check_estimator (#2303) @fkiraly

  • [DOC] Improved docstrings in forecasters (#2314) @fkiraly

  • [DOC] Added docstring examples to load data functions (#2393) @aiwalter

  • [DOC] Added platform badge to README (#2398) @aiwalter

  • [DOC] Add GSoC 2022 landing page and announcement (#2373) @lmmentel

  • [DOC] In interval_based_classification example notebook, use multivariate dataset for the multivariate examples (#1822) @ksachdeva

Contributors#

@0saurabh0, @aiwalter, @ciaran-g, @danbartl, @eenticott-shell, @fkiraly, @katiebuc, @khrapovs, @ksachdeva, @lmmentel, @ltsaprounis, @MatthewMiddlehurst, @NoaBenAmi, @RISHIKESHAVAN, @TNTran92

Version 0.11.0 - 2022-03-26#

Highlights#

  • multivariate forecasting, probabilistic forecasting section in forecasting tutorial (#2041) @kejsitake

  • hierarchical & global forecasting: forecaster and transformer interfaces are now compatible with hierarchical data, automatically vectorize over hierarchy levels (#2110, #2115, #2219) @danbartl @fkiraly

  • probabilistic forecasting: predict_var (variance forecast) and predict_proba (full distribution forecast) interfaces; performance metrics for interval and quantile forecasts (#2100, #2130, #2232) @eenticott-shell @fkiraly @kejsitake

  • dunder methods for transformer and classifier pipelines: write my_trafo1 * my_trafo2 for pipeline, my_trafo1 + my_trafo2 for FeatureUnion (#2090, #2251) @fkiraly

  • Frequently requested: AutoARIMA from statsforecast package available as StatsforecastAutoARIMA (#2251) @FedericoGarza

  • for extenders: detailed “creating sktime compatible estimator” guide

  • for extenders: simplified extension templates for forecasters and transformers (#2161) @fkiraly

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 (#1365, #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#

  • [ENH] cutoff getter for Series, Panel, and Hierarchical mtypes (#2115) @fkiraly

  • [ENH] Gettimeindex to access index of hierarchical data (#2110) @danbartl

  • [ENH] datatypes support for interval and quantile based probabilistic predictions (#2130) @fkiraly

  • [ENH] sklearn typing util (#2208) @fkiraly

  • [ENH] Relaxing pd-multiindex mtype to allow string instance index (#2262) @fkiraly

Data sets and data loaders#

Clustering#

  • [ENH] tslearn added as soft dependency and used to add new clusterers. (#2048) @chrisholder

  • [ENH] Add user option to determine return type in single problem clustering/classification problems (#2139) @TonyBagnall

Distances, kernels#

  • [ENH] minor changes to Lcss distance (#2119) @TonyBagnall

  • [ENH] factory to add 3D capability to all distances exported by distances module (#2051) @fkiraly

Forecasting#

Time series classification#

Transformations#

  • [ENH] Univariate time series bootstrapping (#2065) @ltsaprounis

  • [ENH] changed FunctionTransformer._fit to common signature (#2205) @fkiraly

  • [ENH] Upgrade of BaseTransformer to use vectorization utility, hierarchical mtype compatibility (#2219) @fkiraly

  • [ENH] WindowSummarizer to deal with hierarchical data (#2154) @danbartl

  • [ENH] Transformer pipeline and dunder method (#2090) @fkiraly

  • [ENH] Tabular transformer adaptor “fit in transform” parameter (#2209) @fkiraly

  • [ENH] dunder pipelines sklearn estimator support (#2210) @fkiraly

Testing framework#

Governance#

Fixed#

  • [BUG] fixed state change caused by ThetaForecaster.predict_quantiles (#2108) @fkiraly

  • [BUG] _make_hierarchical is renamed to _make_hierarchical (typo/bug) issue #2195 (#2196) @Vasudeva-bit

  • [BUG] fix wrong output type of PaddingTransformer._transform (#2217) @fkiraly

  • [BUG] fixing nested_dataframe_has_nans (#2216) @fkiraly

  • [BUG] Testing vectorization for forecasters, plus various bugfixes (#2188) @fkiraly

  • [BUG] fixed ignores-exogeneous-X tag for forecasting reducers (#2230) @fkiraly

  • [BUG] fixing STLBootstrapTransformer error message and docstrings (#2260) @fkiraly

  • [BUG] fix conversion interval->quantiles in BaseForecaster, and fix ARIMA.predict_interval (#2281) @fkiraly

  • [DOC] fix broken link to CoC (#2104) @mikofski

  • [BUG] Fix windows bug with index freq in VectorizedDF.__getitem__ (#2279) @ltsaprounis

  • [BUG] fixes duplication of Returns section in _predict_var docstring (#2306) @fkiraly

  • [BUG] Fixed bug with check_pdmultiindex_panel (#2092) @danbartl

  • [BUG] Fixed crash of kmeans, medoids when empty clusters are generated (#2060) @chrisholder

  • [BUG] Same cutoff typo-fix (#2193) @cdahlin

  • [BUG] Addressing doc build issue due to failed soft dependency imports (#2170) @fkiraly

  • Deprecation handling: sklearn 1.2 deprecation warnings (#2190) @hmtbgc

  • Deprecation handling: Replacing normalize by use of StandardScaler (#2167) @KishenSharma6

Documentation#

  • [DOC] forecaster tutorial: multivariate forecasting, probabilistic forecasting (#2041) @kejsitake

  • [DOC] New estimator implementation guide (#2186) @fkiraly

  • [DOC] simplified extension templates for transformers and forecasters (#2161) @fkiraly

  • [DOC] contributing page: concrete initial steps (#2227) @fkiraly

  • [DOC] adding “troubleshooting” link in sktime installation instructions (#2121) @eenticott-shell

  • [DOC] enhance distance doc strings (#2122) @TonyBagnall

  • [DOC] updated soft dependency docs with two tier check (#2182) @fkiraly

  • [DOC] replace gitter mentions by appropriate links, references (#2187) @TonyBagnall

  • [DOC] updated the environments doc with python version for sktime, added python 3.9 (#2199) @Vasudeva-bit

  • [DOC] Replaced youtube link with recent PyData Global (#2191) @aiwalter

  • [DOC] extended & cleaned docs on dependency handling (#2189) @fkiraly

  • [DOC] migrating mentoring form to sktime google docs (#2222) @fkiraly

  • [DOC] add scitype/mtype register pointers to docstrings in datatypes (#2160) @fkiraly

  • [DOC] improved docstrings for HIVE-COTE v1.0 (#2239) @TonyBagnall

  • [DOC] typo fix and minor clarification in estimator implementation guide (#2241) @fkiraly

  • [DOC] numpydoc compliance fix of simple forecasting extension template (#2284) @fkiraly

  • [DOC] typos in developer_guide.rst (#2131) @theanorak

  • [DOC] fix broken link to CoC (#2104) @mikofski

  • [DOC] minor update to tutorials (#2114) @ciaran-g

  • [DOC] various minor doc issues (#2168) @aiwalter

Maintenance#

  • [MNT] Update release drafter (#2096) @lmmentel

  • speed up EE tests and ColumnEnsemble example (#2124) @TonyBagnall

  • [MNT] add xfails in test_plotting until #2066 is resolved (#2144) @fkiraly

  • [MNT] add skips to entirety of test_plotting until #2066 is resolved (#2147) @fkiraly

  • [ENH] improved deep_equals return message if dict`s are discrepant (:pr:`2107) @fkiraly

  • [BUG] Addressing doc build issue due to failed soft dependency imports (#2170) @fkiraly

  • [ENH] extending deep_equals for ForecastingHorizon (#2225) @fkiraly

  • [ENH] unit tests for deep_equals utility (#2226) @fkiraly

  • [MNT] Faster docstring examples - ForecastingGridSearchCV, MultiplexForecaster (#2229) @fkiraly

  • [BUG] remove test for StratifiedGroupKFold (#2244) @TonyBagnall

  • [ENH] Classifier type hints (#2246) @MatthewMiddlehurst

  • Updated pre-commit link and also grammatically updated Coding Style docs (#2285) @Tomiiwa

  • Update .all-contributorsrc (#2286) @Tomiiwa

  • [ENH] Mock estimators and mock estimator generators for testing (#2197) @ltsaprounis

  • [MNT] Deprecation removal 0.11.0 (#2271) @fkiraly

  • [BUG] fixing pyproject and jinja2 CI failures (#2299) @fkiraly

  • [DOC] Update PULL_REQUEST_TEMPLATE.md so PRs should start with [ENH], [DOC] or [BUG] in title (#2293) @aiwalter

  • [MNT] add skips in test_plotting until #2066 is resolved (#2146) @fkiraly

Refactored#

Contributors#

@aiwalter, @cdahlin, @chrisholder, @ciaran-g, @danbartl, @dionysisbacchus, @eenticott-shell, @FedericoGarza, @fkiraly, @hmtbgc, @IlyasMoutawwakil, @kejsitake, @KishenSharma6, @lielleravid, @lmmentel, @ltsaprounis, @MatthewMiddlehurst, @mikofski, @RafaAyGar, @theanorak, @Tomiiwa, @TonyBagnall, @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 (#1963) @aiwalter

  • New transformer: lagged window summarizer transformation (#1924) @danbartl

  • Loaders for .tsf data format (#1934) @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#

  • [ENH] convert store reset/freeze behaviour & fix of bug 1976 (#1977) @fkiraly

  • [ENH] new Table mtypes: pd.Series based, list of dict (as used in bag of words transformers) (#2076) @fkiraly`

Forecasting#

  • [ENH] Added STLForecaster (#1963) @aiwalter

  • [ENH] moving forecaster test params from _config into classes - all forecasters excluding reduction (#1902) @fkiraly

Transformations#

Maintenance#

Fixed#

Contributors#

@aiwalter, @baggiponte, @chicken-biryani, @danbartl, @eenticott-shell, @fkiraly, @khrapovs, @lmmentel, @MatthewMiddlehurst, @rakshitha123, @RishiKumarRay, @Rubiel1, @Saransh-cpp, @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 (#1790, #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 (#1692) @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 (#1365, #1730)

Added#

Documentation#

Data types, checks, conversions#

  • [ENH] check_is_scitype, cleaning up dists_kernels input checks/conversions (#1704) @fkiraly

  • [ENH] Table scitype and refactor of convert module (#1745) @fkiraly

  • [ENH] estimator scitype utility (#1838) @fkiraly

  • [ENH] experimental: hierarchical time series scitype hierarchical_scitype (#1786) @fkiraly

  • [ENH] upgraded mtype_to_scitype to list-like args (#1807) @fkiraly

  • [ENH] check_is_mtype to return scitype (#1789) @fkiraly

  • [ENH] vectorization/iteration utility for sktime time series formats (#1806) @fkiraly

Data sets and data loaders#

Clustering#

Distances, kernels#

  • [ENH] Composable distances interface prototype for numba distance module (#1858) @fkiraly

Forecasting#

  • [ENH] Scaled Logit Transformer (#1913, #1965) @ltsaprounis.

  • [ENH] add fit parameters to statsmodels Holt-Winters exponential smoothing interface (#1849) @fkiraly

  • [ENH] Add predict_quantiles to FBprophet (#1910) @kejsitake

  • [ENH] Add `predict_quantiles to ets, pmdarima adapter (#1874) @kejsitake

  • [ENH] Defaults for _predict_interval and _predict_coverage (#1879, #1961) @fkiraly

  • [ENH] refactored column ensemble forecaster (#1764) @Aparna-Sakshi

  • [ENH] Forecaster convenience method to return forecast residuals (#1770) @fkiraly

  • [ENH] Update extension template for predict_quantiles (#1780) @kejsitake

  • [ENH] Prediction intervals refactor: BATS/TBATS; bugfix for #1625; base class updates on predict_quantiles (#1842) @k1m190r

  • [ENH] Change _set_fh to a _check_fh that returns self._fh (#1823) @fkiraly

  • [ENH] Generalize splitters to accept timedeltas (equally spaced) (#1758) @khrapovs

Time series classification#

Transformations#

  • [ENH] Transformers module full refactor - part I, series module (#1795) @fkiraly

  • [ENH] Transformer base class DRY-ing, and inverse_transform (#1790) @fkiraly

  • [ENH] transformer base class to allow multivariate output if input is always univariate (#1706) @fkiraly

Testing module#

  • [ENH] Test refactor with scenarios (#1833) @fkiraly

  • [ENH] Test scenarios for advanced testing (#1819) @fkiraly

  • [ENH] pytest conditional fixtures (#1839) @fkiraly

  • [ENH] Test enhancements documentation (#1922) @fkiraly

  • [ENH] split tests in series_as_features into classification and regression (#1959) @tonybagnall

  • [ENH] Testing for metadata returns of check_is_mtype (#1748) @fkiraly

  • [ENH] Extended deep_equals, with precise indication of why equality fails (#1844) @fkiraly

  • [ENH] test for test_create_test_instances_and_names fixture generation method (#1829) @fkiraly

  • [ENH] Utils module housekeeping varia utils-housekeeping (#1820) @fkiraly

  • [ENH] Extend testing framework to test multiple instance fixtures per estimator (#1732) @fkiraly

Governance#

Maintenance#

  • [MNT] Switch the extra dependency from fbprophet to prophet (#1958) @lmmentel

  • [MNT] Updated code dependency version, i.e. numpy and statsmodels to reduce dependency conflicts (#1921) @lmmentel

  • [MNT] Move all the CI/CD workflows over to github actions and drop azure pipelines and appveyor (#1620, #1920) @lmemntel

  • [MNT] Refactor legacy test config (#1792) @lmmentel

  • [FIX] Add missing init files (#1695) @mloning

  • [MNT] Add shellcheck to pre-commit (#1703) @mloning

  • [MNT] Remove assign-contributor workflow (#1702) @mloning

  • [MNT] Fail CI on missing init files (#1699) @mloning

  • [ENH] replace deprecated np.int, np.float (#1734) @fkiraly

  • [MNT] Correct the bash error propagation for running notebook examples (#1816) @lmmentel

Fixed#

  • [DOC] Fixed a typo in transformer extension template (#1901) @rakshitha123

  • [DOC] Fix typo in Setting up a development environment section (#1872) @shubhamkarande13

  • [BUG] Fix incorrect “uses X” tag for ARIMA and TrendForecaster (#1895) @ngupta23

  • [BUG] fix error when concatenating train and test (#1892) @tonybagnall

  • [BUG] Knn bugfix to allow GridsearchCV and usage with column ensemble (#1903) @tonybagnall

  • [BUG] Fixes various bugs in DrCIF, STSF, MUSE, Catch22 (#1869) @MatthewMiddlehurst

  • [BUG] fixing mixup of internal variables in detrender (#1863) @fkiraly

  • [BUG] transformer base class changes and bugfixes (#1855) @fkiraly

  • [BUG] fixed erroneous index coercion in convert_align_to_align_loc (#1911) @fkiraly

  • [BUG] bugfixes for various bugs discovered in scenario testing (#1846) @fkiraly

  • [BUG] 1523 fixing ForecastHorizon.to_absolute for freqs with anchorings (#1830) @eenticott-shell

  • [BUG] remove duplicated input checks from BaseClassifier.score (#1813) @fkiraly

  • [BUG] fixed mtype return field in check_is_scitype (#1805) @fkiraly

  • [BUG] fix fh -> self.fh in predict_interval and predict_quantiles (#1775) @fkiraly

  • [BUG] fix incorrect docstrings and resolving confusion unequal length/spaced in panel metadata inference (#1768) @fkiraly

  • [BUG] hotfix for bug when passing multivariate y to boxcox transformer (#1724) @fkiraly

  • [BUG] fixes CIF breaking with CIT, added preventative test (#1709) @MatthewMiddlehurst

  • [BUG] Correct the examples/catch22.ipynb call to transform_single_feature (#1793) @lmmentel

  • [BUG] Fixes prophet bug concerning the internal change of exogenous X (#1711) @kejsitake

  • [BUG] Fix DeprecationWarning of pd.Series in sktime/utils/tests/test_datetime.py:21 (#1743) @khrapovs

  • [BUG] bugfixes in BaseClassifier, updated base class docstrings (#1804) @fkiraly

Contributors#

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

[0.9.0] - 2021-12-08#

Highlights#

  • frequently requested: AutoARIMA get_fitted_params access for fitted order and seasonal order (#1641) @AngelPone

  • Numba distance module - efficient time series distances (#1574) @chrisholder

  • Transformers base interface refactor - default vectorization to panel data @fkiraly

  • new experimental module: Time series alignment, dtw-python interface (#1264) @fkiraly

Core interface changes#

Data types, checks, conversions#

  • check_is renamed to check_is_mtype, check_is to be deprecated in 0.10.0 (#1692) @mloning

Time series classification#

  • time series classifiers now accept 2D np.ndarray by conversion to 3D rather than throwing exception (#1604) @TonyBagnall

Transformations#

Base interface refactor (#1365, #1663, #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#

  • check_is renamed to check_is_mtype, check_is to be deprecated in 0.10.0 (#1692) @mloning

Time series classification#

Transformations#

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

Added#

Documentation#

Data types, checks, conversions#

  • [ENH] added check_is_scitype for scitype checks, cleaning up dists_kernels input checks/conversions (#1704) @fkiraly

Forecasting#

  • [ENH] Auto-ETS checks models to select from based on non-negativity of data (#1615) @chernika158

  • [DOC] meta-tuning examples for docstring of ForecastingGridSearchCV (#1656) @aiwalter

Time series alignment#

  • [ENH] new module: time series alignment; alignment distances (#1264) @fkiraly

Time series classification#

Time series distances#

Governance#

Maintenance#

Fixed#

Estimator registry#

  • [BUG] Fixes to registry look-up, test suite for registry look-up (#1648) @fkiraly

Forecasting#

  • [BUG] Facebook prophet side effects on exogenous data X (#1711) @kejsitake

  • [BUG] fixing bug for _split, accidental removal of pandas.Index support (#1582) @fkiraly

  • [BUG] Fix convert and _split for Numpy 1D input (#1650) @fkiraly

  • [BUG] issue with update_y_X when we refit forecaster by (#1595) @ltsaprounis

Performance metrics, evaluation#

Time series alignment#

Time series classification#

Transformations#

Maintenance#

Contributors#

@aiwalter, @AngelPone, @AreloTanoh, @Carlosbogo, @chernika158, @chrisholder, @fstinner, @fkiraly, @freddyaboulton, @kejsitake, @lmmentel, @ltsaprounis, @MatthewMiddlehurst, @marcio55afr, @MrPr3ntice, @mloning, @OliverMatthews, @RNKuhns, @thayeylolu, @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#

  • new interface points for probabilistic forecasting, predict_interval and predict_quantiles (#1421) @SveaMeyer13

  • changed forecasting univariate-only tag to ignores-exogeneous-X (#1358) @fkiraly

Added#

BaseEstimator/BaseObject#

Forecasting#

Time series classification#

Transformers#

Annotation: change-points, segmentation#

  • Clasp for time series segmentation (CIKM’21 publication) (#1352) @patrickzib

Documentation#

Governance#

Testing framework#

  • Tests refactor: using pytest_generate_tests instead of loops (#1407) @fkiraly

  • Tests refactor: Adding get_test_params method to extension template (#1395) @Aparna-Sakshi

  • Changed defaults in make_forecasting_problem (#1477) @aiwalter

Fixed#

All contributors: @Aparna-Sakshi, @BINAYKUMAR943, @IlyasMoutawwakil, @MatthewMiddlehurst, @Piyush1729, @RNKuhns, @RavenRudi, @SveaMeyer13, @TonyBagnall, @afzal442, @aiwalter, @bobbys-dev, @boukepostma, @danbartl, @eyalshafran, @fkiraly, @freddyaboulton, @kejsitake, @mloning, @myprogrammerpersonality, @patrickzib, @ronnie-llamado, @xiaobenbenecho, @SinghShreya05, and @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#

  • unit test for absence of side effects in estimator methods (#1078) @fkiraly

Fixed#

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

[0.7.0] - 2021-07-12#

Added#

Changed#

Fixed#

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

[0.6.1] - 2021-05-14#

Fixed#

Changed#

Added#

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

[0.6.0] - 2021-04-15#

Fixed#

Changed#

Added#

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

[0.5.3] - 2021-02-06#

Fixed#

Changed#

Added#

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

[0.5.2] - 2021-01-13#

Fixed#

All contributors: @Hephaest, @MatthewMiddlehurst, @TonyBagnall, @aiwalter and @dhirschfeld

[0.5.1] - 2020-12-29#

Added#

Fixed#

  • Pin pandas version to fix pandas-related AutoETS error on Linux (#581) @mloning

  • Fixed default argument in docstring in SlidingWindowSplitter (#556) @ngupta23

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

[0.5.0] - 2020-12-19#

Added#

Changed#

Fixed#

Removed#

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

[0.4.3] - 2020-10-20#

Added#

Changed#

Fixed#

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

[0.4.2] - 2020-10-01#

Added#

Fixed#

Changed#

  • Move documentation to ReadTheDocs with support for versioned documentation (#395) @mloning

  • Refactored SFA implementation (additional features and speed improvements) (#389) @patrickzib

  • Move prediction interval API to base classes in forecasting framework (#387) @big-o

  • Documentation improvements (#364) @mloning

  • Update CI and maintenance tools (#394) @mloning

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

[0.4.1] - 2020-07-09#

Added#

Changed#

Fixed#

All contributors: @Ayushmaanseth, @Mo-Saif, @Pangoraw, @marielledado, @mloning, @sophijka, @Cheukting, @MatthewMiddlehurst, @Multivin12, @ABostrom, @HYang1996, @BandaSaiTejaReddy, @vedazeren, @hiqbal2, @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