Changelog#

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

The source code for all releases is available on GitHub.

Note

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

For our long-term plan, see our Roadmap.

Version 0.33.2 - 2024-10-17#

Highlights#

  • new forecaster: interface to Chronos (zero-shot) foundation model forecaster (#7001) @Z-Fran, @geetu040, @benHeid, @rigvedmanoj

  • new classifiers: GRU-based time series classifiers (#6952) @fnhirwa

  • new transformer: temporal radial basis function features (#7261) @phoeenniixx

  • new ExpandingSlidingWindowSplitter, switching from expanding window to sliding window at cutoff point (#7193) @MarkusSagen

  • pytorch-forecasting and neuralforecast models now provide probabilistic forecasts for global forecasting (#6628, #6666) @XinyuWuu

  • PolynomialTrendForecaster now can make probabilistic forecasts (#6424) @ericjb

  • TimesFMForecaster now allows to select the source package, and zero-shot usage has been memory optimized (#7204, #7212) @Prtm2110, @fkiraly

Dependency changes#

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

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

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

Core interface changes#

Performance metrics for probabilistic forecasting, for interval and quantile returns, can now optionally be constructed with an alpha (quantile forecasts) or coverage parameter.

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

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

Enhancements#

BaseObject and base framework#

  • [ENH] version tag for objects and estimators (#3629) @fkiraly

  • [ENH] add test that html repr of objects does not crash (#7151) @fkiraly

  • [ENH] decorators for singleton and multiton oop pattern (#7203) @fkiraly

Benchmarking, Metrics, Splitters#

  • [ENH] ExpandingSlidingWindowSplitter, switching from expanding window to sliding window at cutoff point (#7193) @MarkusSagen

  • [ENH] added coverage parameter to all metrics of pred_interval type (#7278) @talat-khattatov

Data types, checks, conversions#

  • [ENH] refactor datatypes module to scikit-base classes and data records (#7161) @fkiraly

  • [ENH] Fix polars PerformanceWarning when object is of type polars.LazyFrame (#7221) @shivanshsinghal-22

Forecasting#

  • [ENH] Added method predict_interval to PolynomialTrendForecaster (#6424) @ericjb

  • [ENH] Quantile Forecast for pytorch-forecasting Models with Global Forecast API (#6628) @XinyuWuu

  • [ENH] Global Forecast API for NeuralForecast interface (#6666) @XinyuWuu

  • [ENH] testing global forecasters: reduces number of obs in _make_hierarchical for test data generation to ensure shorter runtimes (#6948) @julian-fong

  • [ENH] interface to Chronos (zero-shot) foundation model forecaster (#7001) @Z-Fran, @geetu040, @benHeid, @rigvedmanoj

  • [ENH] Added get_test_params in ThetaLinesTransformer (#7199) @Anuragwagh

  • [ENH] cached timesfm instance in case of repeated use (#7204) @fkiraly

  • [ENH] refactor probabilistic prediction default dispatching logic to mixin class (#7230) @fkiraly

  • [ENH] TimesFMForecaster dependencies now depends on use_source_package (#7212) @Prtm2110

  • [ENH] python 3.13 compatibility - SquaringResiduals (#7244) @fkiraly

Time series classification#

Transformations#

Test framework#

  • [ENH] get_test_params cases in composites conditional on soft dependencies to use _check_estimator_deps (#7225) @shivanshsinghal-22

Documentation#

Maintenance#

  • [MNT] Removes coverage upload steps from CI (#7012) @Prtm2110

  • [MNT] [Dependabot](deps): Update skpro requirement from <2.6.0,>=2 to >=2,<2.8.0 (#7245) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update sphinx-gallery requirement from <0.18.0 to <0.19.0 (#7264) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update u8darts requirement from <0.31,>=0.29.0 to >=0.29.0,<0.32 (#7272) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.8.1 to <2024.10.1 (#7292) @dependabot[bot]

Fixes#

Benchmarking, Metrics, Splitters#

Data sets and data loaders#

  • [BUG] skip the test load_fpp3 if rdata is not installed (#7181) @jan-mue

Data types, checks, conversions#

Forecasting#

  • [BUG] fix ForecastingHorizon.to_absolute with multiple frequencies (#7172) @tianjiqx

  • [BUG] in ReconcilerForecaster, fix return_totals parameter for all strategies (#7208) @SaiRevanth25

  • [BUG] Fix DartsLinearRegression failing instead of giving a warning (#7235) @fnhirwa

  • [BUG] Fix Prophet not tagged as handles-missing-data (#7267) @Garve

  • [BUG] fix singular matrices in test_reconcilerforecaster_return_totals (#7293) @fkiraly

Contributors#

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

Version 0.33.1 - 2024-09-26#

Small feature release for showcase at pydata Paris.

Highlights#

Dependency changes#

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

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

Enhancements#

BaseObject and base framework#

  • [ENH] is_scitype utility for scitype checking, improve support of estimators with multiple object types (#7143) @benHeid

Data types, checks, conversions#

  • [ENH] Hierarchical scitype support for polars (#6697) @pranavvp16

  • [ENH] refactor datatypes example fixtures to BaseObject classes (#7133) @fkiraly

Forecasting#

Registry and search#

  • [ENH] retrieval utilities for all functions or classes in a module (#7089) @fkiraly

Time series anomalies, changepoints, segmentation#

Transformations#

  • [ENH] logger transformer for logging pipeline inputs and outputs (#7074) @fkiraly

Documentation#

Maintenance#

  • [MNT] Updating pre-commit hooks and corresponding changes (#7109) @yarnabrina

  • [MNT] [Dependabot](deps): Update optuna requirement from <3.7 to <4.1 (#7104) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update mne requirement from <1.8,>=1.5 to >=1.5,<1.9 (#7129) @dependabot[bot]

  • [MNT] temporarily skip temporian related failure of test_complex_function until #7040 is resolved (#7147) @fkiraly

  • [MNT] fix FPP3 download link (#7164) @fkiraly, @ericjb

  • [MNT] bound SignatureTransformer to numpy<2 (#7163) @fkiraly

  • [MNT] remove ptf install from example notebooks (#7165) @XinyuWuu

  • [MNT] remove python version bound from pytorch-forecasting based estimators (#7102) @fkiraly

Fixes#

Forecasting#

  • [BUG] Fix pykan forecaster (#7150) @benHeid

  • [BUG] fix probabilistic forecasts if only _predict_var is implemented (#7153) @fkiraly

Transformations#

  • [BUG] fix drop_na and update mode of Differencer transformation (#7115) @fkiraly

Test framework

Contributors#

@ankit-1204, @benHeid, @ericjb, @fkiraly, @pranavvp16, @SaiRevanth25, @Saptarshi-Bandopadhyay, @XinyuWuu, @yarnabrina

Version 0.33.0 - 2024-09-09#

Maintenance release, with scheduled deprecations and change actions.

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

Dependency changes#

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

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

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

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

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

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

Deprecations and removals#

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

Maintenance#

  • [MNT] Try to reduce load for the runners (#7061) @benHeid

  • [MNT] 0.33.0 deprecations and change actions (#7091) @fkiraly

  • [MNT] ffp3 datasets URLs changed on CRAN; updated _fpp3_loaders.py accordingly (#7084) @ericjb

  • [MNT] remove <3.11 restriction for pytorch-forecasting, add upper bound (#7092) @fkiraly

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.8.2 to <2024.8.3 (#7062) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update numpy requirement from <2.1,>=1.21 to >=1.21,<2.2 (#7007) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update scikit-base requirement from <0.9.0,>=0.6.1 to >=0.6.1,<0.10.0 (#7035) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.56,>=0.29 to >=0.29,<0.57 (#7096) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update pykan requirement from <0.2.2,>=0.2 to >=0.2,<0.2.7 (#7010) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update mne requirement from <1.8,>=1.5 to >=1.5,<1.9 (#7004) @dependabot[bot]

Documentation#

Enhancements#

  • [ENH] change test_inheritance to be more lenient to framework level extensions (#7067) @fkiraly

Contributors#

@benHeid, @ericjb, @fkiraly, @SaiRevanth25, @Saptarshi-Bandopadhyay

Version 0.32.4 - 2024-09-06#

Small feature and fix release for:

  • colab compatibility, hotfix for polars dependency incompatibility

  • compatibility with skchange 2nd party integration

  • improvements to the anomalies, changepoints, segmentation framework

  • documentation update related to upcoming sktime elections

Core interface changes#

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

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

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

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

Enhancements#

BaseObject and base framework#

  • [ENH] decouple registry from base modules, scitype specific data records for documentation of estimator types (#6998) @fkiraly

  • [ENH] scitype coercion and checking utility (#6969) @fkiraly

Time series anomalies, changepoints, segmentation#

  • [ENH] Add padded f1 score for evaluating change point detection algorithms (#7034) @Alex-JG3

  • [ENH] improvements to BaseSeriesAnnotator base class for anomaly, changepoint, segments (#7073) @fkiraly

  • [ENH] pipeline for anomaly, changepoint detectors and segmenters (#7071) @fkiraly

  • [ENH] coercion to use time series anomaly, changepoint detectors as transformers (#7072) @fkiraly

Time series clustering#

  • [ENH] enable use of clusterers as transformations, enable TransformSelectForecaster use of clusterers for group selection (#7068) @fkiraly

Transformations#

Documentation#

Fixes#

  • [BUG] fix sktime crash with older polars versions (#7057) @fkiraly

  • [BUG] Fix ForecastX.update when the forecaster_X_exogeneous is set to "complement" (#7041) @fnhirwa

  • [BUG] fix ExpandingCutoffSplitter for case where fh is not continuous (#7053) @ninedigits

Contributors#

@Alex-JG3, @fkiraly, @fnhirwa, @geetu040, @ninedigits, @phoeenniixx, @Saptarshi-Bandopadhyay, @wirrywoo

Version 0.32.3 - 2024-08-27#

Hotfix release with bugfix for html representation of forecasting pipelines.

For last non-maintenance content updates, see 0.32.2.

Contents#

  • [BUG] fix html display for TransformedTargetForecaster and ForecastingPipeline

Version 0.32.2 - 2024-08-26#

Highlights#

Dependency changes#

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

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

Core interface changes#

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

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

  • capability:predict_proba, for probabilistic cluster assignment

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

Enhancements#

BaseObject and base framework#

Data sets and data loaders#

  • [ENH] Hierarchical sales toydata generator from workshops (#6953) @marrov

  • [ENH] Convert the date column to a period with daily frequency in load_m5 (#6990) @SaiRevanth25

Data types, checks, conversions#

Forecasting#

Time series clustering#

  • [ENH] clusterer tags for capability to assign cluster centers (#7018) @fkiraly

Transformations#

Documentation#

  • [DOC] minor improvements to docstring of Bollinger (bands) (#6978) @fkiraly

  • [DOC] Update .all-contributorsrc with council roles (#6962) @fkiraly

  • [DOC] update soft dependency handling guide for estimators (#7000) @fkiraly

  • [DOC] improvements to docstrings for panel tasks - time series classification, regression, clustering (#6991) @fkiraly

  • [DOC] update XinyuWuu’s user name (#7030) @fkiraly

  • [DOC] fixes to TransformedTargetForecaster docstring (#7002) @fkiraly

  • [DOC] update intro notebook with material from ISF and EuroSciPy 2024 (#7013) @fkiraly

  • [DOC] Fix docstring for ExpandingCutoffSplitter (#7033) @ninedigits

  • [DOC] fix incorrect import in EnbPIForecaster docstring (#7015) @fkiraly

Maintenance#

  • [MNT] Refactor show_versions to use dependencies module (#6883) @fkiraly

  • [MNT] sync changelog with hotfix branch anirban-sktime-0.31.2 (#6963) @yarnabrina

  • [MNT] add numpy 2 incompatibility flag to pmdarima dependency (#6974) @fkiraly

  • [MNT] decorate test_auto_arima with numpy 2 skip until final fix/diagnosis (#6973) @fkiraly

  • [MNT] remove tsbootstrap dependency from public dependency sets (#6966) @fkiraly

  • [MNT] rename base class TimeSeriesLloyds to BaseTimeSeriesLloyds (#6992) @fkiraly

  • [MNT] remove module level numba import warnings (#6999) @fkiraly

  • [MNT] esig based estimators: add numpy<2 bound (#7036) @fkiraly

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

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.55,>=0.29 to >=0.29,<0.56 (#7006) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.8.1 to <2024.8.2 (#7005) @dependabot[bot]

Fixes#

BaseObject and base framework#

  • [BUG] fix test_softdep_error dependency handling check if environment marker tag is not satisfied (#6961) @fkiraly

  • [BUG] fix dependency checkers in case of multiple distributions available in environment, e.g., on databricks (#6986) @fkiraly, @toandaominh1997

Benchmarking and Metrics#

  • [BUG] Fix ForecastingBenchmark giving an error when the dataloader returns the tuple (y, X) (#6971) @SaiRevanth25

Data sets and data loaders#

Data types, checks, conversions#

  • [BUG] Fix nested_univ converter inconsistent handling of index level names (#7026) @pranavvp16

Forecasting#

  • [BUG] TinyTimeMixerForecaster: fix truncating index and update test_params (#6965) @geetu040

  • [BUG] Do not add season condition names as extra regressors in Prophet (#6988) @wpdonders

  • [BUG] Fix Prophet ``_get_fitted_params ``error when the timeseries is constant (#7011) @felipeangelimvieira

Contributors#

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

Version 0.32.1 - 2024-08-12#

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

For last non-maintenance content updates, see 0.31.1.

Contents#

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

Version 0.32.0 - 2024-08-11#

Maintenance release, with scheduled deprecations and change actions.

For last non-maintenance content updates, see 0.31.1.

Dependency changes#

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

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

Core interface changes#

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

Deprecations and removals#

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

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

Contents#

  • [MNT] 0.32.0 deprecations and change actions (#6916) @fkiraly

  • [MNT] [Dependabot](deps): Update skpro requirement from <2.5.0,>=2 to >=2,<2.6.0 (#6897) @dependabot[bot]

  • [MNT] remove numpy 2 incompatibility flag from numba based estimators (#6915) @fkiraly

  • [MNT] isolate joblib (#6385) @fkiraly

  • [MNT] handle more pandas deprecations (#6941) @fkiraly

  • [MNT] deprecation of proba module in favour of skpro soft dependency (#6940) @fkiraly

  • [MNT] update versions of pre-commit hooks (#6947) @yarnabrina

  • [MNT] 0.32.0 release action - revert temporary skip get_test_params number check for 0.21.1 and 0.22.0 release (#5114) @fkiraly

  • [MNT] Bump skforecast to 0.13 version allowing support for python 3.12 (#6946) @yarnabrina

  • [BUG] Fix Xt_msg type in tranformations.base (#6944) @hliebert

Contributors#

@fkiraly, @hliebert, @yarnabrina

Version 0.31.2 - 2024-08-13#

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

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

For last non-maintenance content updates, see 0.31.1.

Contents#

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

Notes#

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

Version 0.31.1 - 2024-08-10#

Highlights#

Dependency changes#

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

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

Core interface changes#

BaseObject and base framework#

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

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

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

Enhancements#

BaseObject and base framework#

Data sets and data loaders#

Data types, checks, conversions#

  • [ENH] check_pdmultiindex_panel to return names of invalid object columns if there are any (#6797) @SaiRevanth25

  • [ENH] Allow object dtype in series (#5886) @yarnabrina

  • [ENH] converter framework tests in datatypes to cover all types, including those requiring soft dependencies (#6838) @fkiraly

  • [ENH] add missing feature_kind metadata fields to gluonts based data container checkers (#6861) @fkiraly

  • [ENH] added feature_kind metadata in datatype checks (#6490) @Abhay-Lejith

  • [ENH] Adding support for gluonts PandasDataset object (#6668) @shlok191

  • [ENH] Added support for gluonts PandasDataset as a Series scitype (#6837) @shlok191

Forecasting#

  • [ENH] interface to autots ensemble (#5948) @MBristle

  • [ENH] darts Reduction Models adapter (#6712) @fnhirwa, @yarnabrina

  • [ENH] Extension Template For Global Forecasting API (#6699) @XinyuWuu

  • [ENH] enable multivariate data passed to autots interface (#6805) @fkiraly

  • [ENH] Add Sampler to ForecastingOptunaSearchCV (#6823) @bastisar

  • [ENH] Improve TestAllGlobalForecasters (#6845) @XinyuWuu

  • [ENH] Add scoring direction to ForecastingOptunaSearchCV (#6846) @gareth-brown-86, @mk406

  • [ENH] de-novo implementation of LTSFTransformer based on cure-lab research code base (#6202) @geetu040

  • [ENH] Add windows_identical to DirectReductionForecaster (#6650) @hliebert

  • [ENH] updates type inference in make_reduction to use central scitype inference and allow proba tabular regressors (#6893) @fkiraly

  • [ENH] DeepAR and NHiTS and refinements for pytorch-forecasting interface (#6551) @XinyuWuu

  • [ENH] Interface to TinyTimeMixer foundation model (#6712) @geetu040

  • [ENH] remove now superfluous try-excepts in forecasting API test suite (#6906) @fkiraly

  • [ENH] improve test_global_forecasting_tag (#6929) @geetu040

Registry and search#

  • [ENH] in estimator html repr, make version retrieval safer and more flexible (#6923) @fkiraly

Time series anomalies, changepoints, segmentation#

  • [ENH] time series annotation (outliers, changepoints) - test class and full check_estimator integration (#6843) @fkiraly

  • [ENH] Add Windowed Local Outlier Factor Anomaly Detector (#6524) @Alex-JG3

  • [ENH] Add binary segmentation annotator for change point detection (#6723) @Alex-JG3

Time series classification#

Transformations#

  • [ENH] add second test params dict to Aggregator (#6759) @fr1ll

  • [ENH] pandas inner type and global pooling for TabularToSeriesAdaptor (#6752) @fkiraly

  • [ENH] alternative returns for VmdTransformer - mode spectra and central frequencies (#6857) @fkiraly

  • [ENH] simplify dictionaries and alias handling in Catch22 (#6104) @fkiraly

  • [ENH] making self._is_vectorized access more defensive in BaseTransformer (#6863) @fkiraly

Test framework#

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

Vendor and onboard libraries#

Documentation#

  • [DOC] Notebook and Template For Global Forecasting API (#6699) @XinyuWuu

  • [DOC] Add authorship credits to MatrixProfileTransformer for Stumpy authors (#6762) @alexander-lakocy

  • [DOC] add examples to StatsForecastGARCH and StatsForecastARCH docstrings (#6761) @melinny

  • [DOC] Add alignment notebook example (#6768) @alexander-lakocy

  • [DOC] fix transformers type table in API reference in accordance with sphinx guidelines (#6771) @alexander-lakocy

  • [DOC] Modify editable install to make cross-platform (#6758) @fr1ll

  • [DOC] TruncationTransformer docstring example (#6765) @ceroper

  • [DOC] De-duplicate User Guide and Examples (closes #6767) (#6770) @alexander-lakocy

  • [DOC] improved docstring of DWTTransformer (#6764) @Mitchjkjkjk

  • [DOC] various improvements to user journey on documentation page (#6760) @fkiraly

  • [DOC] Time series k means max iter parameter docstring (#6726) @AlexeyOm

  • [DOC] cross-reference estimator search from tags API reference (#6816) @fkiraly, @yarnabrina

  • [DOC] updated docstring for check_is_mtype to match skpro check_is_mtype function (#6835) @julian-fong

  • [DOC] example & tutorial notebooks: normalize execution counts, indentation, execute all cells (#6847) @fkiraly

  • [DOC] clarify column handling in docstring of FourierFeatures (#6834) @fkiraly

  • [DOC] added fork usage recommendations (#6827) @yarnabrina

  • [DOC] change links in documentation to refer to same version (#6841) @yarnabrina

  • [DOC] minor improvements to check_scoring docstring (#6877) @fkiraly

  • [DOC] add proper author credits to 1:1 interface classes - aligners, distances, forecasters, parameter estimators (#6850) @fkiraly

  • [DOC] fix docstring formatting of evaluate (#6864) @fkiraly

  • [DOC] Add documentation for benchmarking module (#6792) @benHeid

  • [DOC] add elections link on landing page (#6910) @fkiraly

  • [DOC] Add example notebook for the graphical pipeline (#5175) @benHeid

  • [DOC] git workflow guide - chained branches, fixing header fonts (#6913) @fkiraly

Maintenance#

  • [MNT] Remove tbats python version constraint (#6769) @fr1ll

  • [MNT] Update Callable import from typing to collections.abc (#6798) @yarnabrina

  • [MNT] Fix spellings using codespell and typos (#6799) @yarnabrina

  • [MNT] improved environment package version check (#6776) @fkiraly

  • [MNT] downgrade pykan version to <0.2.2 (#6853) @geetu040

  • [MNT] add non-unicode characters check to the linter (#6807) @fnhirwa

  • [MNT] updates and fixes to type hints (#6743) @ZhipengXue97

  • [MNT] Resolve the issue with diacritics failing to be decoded on Windows (#6862) @fnhirwa

  • [MNT] sync docstring and code formatting of dependency checker module with skbase (#6873) @fkiraly

  • [MNT] Remove package import alias related internal logic and tags (#6821) @fkiraly

  • [MNT] restrict failing Mr-SEQL version (#6879) @fkiraly

  • [MNT] release workflow: Upgrade deprecated pypa action parameter (#6878) @szepeviktor

  • [MNT] Fix pykan import and dependency checks (#6881) @fkiraly

  • [MNT] temporarily pin matplotlib below 3.9.1 (#6890) @yarnabrina

  • [MNT] make pyproject.toml parsing for differential testing more robust against non-package relevant changes (#6882) @fkiraly

  • [MNT] formatter for jupyter notebook json in build tools (#6849) @fkiraly

  • [MNT] sync differential testing utilities with skpro (#6840) @fkiraly

  • [MNT] Handle deprecations from pandas (#6855) @fkiraly

  • [MNT] sync docstring and code formatting of dependency checker module with skbase (#6873) @fkiraly

  • [MNT] fix .all-contributorsrc syntax (#6918) @fkiraly

  • [MNT] Resolve the issue with diacritics failing to be decoded on Windows (#6862) @fnhirwa

  • [MNT] changelog utility: fix termination condition to retrieve merged PR (#6920) @fkiraly

  • [MNT] restore holidays lower bound to 0.29 (#6921) @fkiraly

  • [MNT] Updating the GHA dependencies to install OSX dependencies and setting the compiler flags (#6926) @fnhirwa

  • [MNT] revert an erroneous instance of pandas deprecation fix (#6925) @fkiraly

  • [MNT] Update the path to script to fix #6926 (#6933) @fnhirwa

  • [MNT] [Dependabot](deps): Update pytest requirement from <8.3,>=7.4 to >=7.4,<8.4 (#6819) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.6.3 to <2024.7.2 (#6818) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update sphinx-gallery requirement from <0.17.0 to <0.18.0 (#6820) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.53,>=0.52 to >=0.52,<0.54 (#6780) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update sphinx requirement from !=7.2.0,<8.0.0 to !=7.2.0,<9.0.0 (#6865) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.54,>=0.52 to >=0.52,<0.55 (#6898) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.7.2 to <2024.8.1 (#6907) @dependabot[bot]

Fixes#

BaseObject and base framework#

  • [BUG] fix _check_soft_dependencies for post and pre versions of patch versions (#6909) @fkiraly

Data types, checks, conversions#

  • [BUG] fix type inconsistency in conversion pandas to xarray based Series (#6856) @fkiraly

Forecasting#

  • [BUG] Fix pykan dependency and set lower bound (#6789) @benHeid

  • [BUG] correct dependency tag for pytorch-forecasting forecasters: rename pytorch_forecasting to correct package name pytorch-forecasting (#6830) @XinyuWuu

Registry and search#

  • [BUG] fix polymorphic estimators missing in estimator overview, e.g., pytorch-forecasting forecasters (#6803) @fkiraly

Time series anomalies, changepoints, segmentation#

  • [BUG] Fix bug when predicting segments from clasp change point annotator (#6756) @Alex-JG3

Transformations#

  • [BUG] Refactor ADICVTransformer and fix CV calculation (#6757) @sbhobbes

  • [BUG] fix BaseTransformer broadcasting condition in inverse_transform for decomposers (#6824) @fkiraly

  • [BUG] fix MSTL inverse transform and use in forecasting pipeline (#6825) @fkiraly

  • [BUG] fix handling of numpy integers in refactored Catch22 transformation (#6934) @fkiraly

Visualization#

Contributors#

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

Version 0.31.0 - 2024-07-11#

Maintenance release:

  • scheduled deprecations and change actions

  • numpy 2 compatibility

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

For last non-maintenance content updates, see 0.30.2.

Dependency changes#

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

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

Deprecations and removals#

Time series anomalies, changepoints, segmentation#

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

Time series classification#

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

Contents#

  • [MNT] raise numpy bound to numpy < 2.1, numpy 2 compatibility (#6624) @fkiraly

  • [MNT] [Dependabot](deps): Update skpro requirement from <2.4.0,>=2 to >=2,<2.5.0 (#6663) @dependabot[bot]

  • [MNT] bound prophet based forecasters to numpy<2 due to incompatibility of prophet (#6721) @fkiraly

  • [MNT] further numpy 2 compatibility fixes in estimators (#6729) @fkiraly

  • [MNT] handle numpy 2 incompatible soft deps (#6728) @fkiraly

  • [MNT] Upgrade code style beyond python 3.8 (#6330) @yarnabrina

  • [MNT] Update pre commit hooks post dropping python 3.8 support (#6331) @yarnabrina

  • [MNT] suppress aggressive freq related warnings from pandas 2.2 (#6733) @fkiraly

  • [MNT] 0.31.0 deprecations and change actions (#6716) @fkiraly

  • [MNT] switch to ruff as linting tool (#6676) @fnhirwa

  • [ENH] refactor and bugfixes for environment checker utilities (#6719) @fkiraly

Contributors#

@fkiraly, @fnhirwa, @yarnabrina

Version 0.30.2 - 2024-07-04#

Highlights#

Dependency changes#

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

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

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

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

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

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

Core interface changes#

Forecasting#

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

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

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

Test framework#

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

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

Enhancements#

BaseObject and base framework#

  • [ENH] prevent imports caused by _check_soft_dependencies, speed up dependency check and test collection time (#6355) @fkiraly, @yarnabrina

Benchmarking, Metrics, Splitters#

  • [ENH] Parallelization option for ForecastingBenchmark (#6568) @benHeid

Data types, checks, conversions#

Distances, kernels#

Forecasting#

  • [ENH] pytorch-forecasting adapter with Global Forecasting API (#6228) @XinyuWuu

  • [ENH] fitted parameter forwarding utility, forward statsforecast estimators’ fitted parameters (#6349) @fkiraly

  • [ENH] EnbPI based forecaster with components from aws-fortuna (#6449) @benHeid

  • [ENH] skforecast ForecasterAutoreg adapter (#6531) @Abhay-Lejith, @yarnabrina

  • [ENH] Extend HFTransformersForecaster for PEFT methods (#6457) @geetu040

  • [ENH] in BaseForecaster, move check for capability:insample to _check_fh boilerplate (#6593) @XinyuWuu

  • [ENH] indexing prophetverse forecaster (#6614) @fkiraly

  • [ENH] ForecastingOptunaSearchCV for hyper-parameter tuning of forecasters via optuna (#6630) @mk406, @gareth-brown-86

Registry and search#

Time series alignment#

Time series classification#

  • [ENH] resolve duplication in KNeighborsClassifier and KNeighborsRegressor (#6504) @Z-Fran

  • [ENH] added two test params sets to FCNNetwork (#6562) @TheoWeih

  • [ENH] further refactor of knn classifier and regressor (#6615) @fkiraly

  • [ENH] update tests._config to skip various sporadically failing tests for Proximity Forest and Proximity Tree until fixed (#6638) @julian-fong

Time series regression#

  • [ENH] Time Series Regression grid search (#6118) @ksharma6

  • [ENH] test parameters for RocketRegressor (#6149) @iaryangoyal

  • [ENH] resolve duplication in KNeighborsClassifier and KNeighborsRegressor (#6504) @Z-Fran

  • [ENH] further refactor of knn classifier and regressor (#6615) @fkiraly

Transformations#

Test framework#

  • [ENH] differential testing for base functionality in various modules (#6534) @fkiraly

  • [ENH] further differential testing for the transformations module (#6533) @fkiraly

  • [ENH] differential testing in dist_kernels and clustering modules (#6543) @fkiraly

  • [ENH] simplify and add differential testing to forecasting.compose.tests module (#6563) @fkiraly

  • [ENH] simplify and add differential testing to sktime.pipeline module (#6565) @fkiraly

  • [ENH] differential testing in benchmarking module (#6566) @fkiraly

  • [ENH] move doctests to main test suite to ensure conditional execution (#6536) @fkiraly

  • [ENH] minor improvements to test efficiency (#6586) @fkiraly

  • [ENH] parametrize_with_checks utility for granular API compliance test setup in 2nd/3rd party libraries (#6588) @fkiraly

  • [ENH] differential testing to utils module (#6620) @fkiraly

  • [ENH] differential testing and minor improvements to forecasting.base tests (#6619) @fkiraly

  • [ENH] differential testing for performance_metrics module (#6616) @fkiraly

  • [ENH] fixes and improvements to pytest doctest integration (#6621) @fkiraly

Documentation#

Maintenance#

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.51,>=0.29 to >=0.29,<0.52 (#6634) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.52,>=0.29 to >=0.52,<0.53 (#6702) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.6.1 to <2024.6.2 (#6643) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update numba requirement from <0.60,>=0.53 to >=0.53,<0.61 (#6590) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update dask requirement from <2024.6.2 to <2024.6.3 (#6647) @dependabot[bot]

  • [MNT] remove coverage reporting and pytest-cov from PR CI and setup.cfg (#6363) @fkiraly

  • [MNT] numpy 2 compatibility fixes - estimators (#6626) @fkiraly

  • [MNT] scipy 1.14.0 compatibility for deep_equals plugin for csr_matrix (#6664) @fkiraly

  • [MNT] deprecate unused _check_soft_dependencies argument suppress_import_stdout (#6691) @fkiraly

Fixes#

Benchmarking, Metrics, Splitters#

  • [BUG] fix AUCalibration probabilistic metric for multivariate case (#6617) @fkiraly

Data loaders#

  • [BUG] fix bug 4076: PerformanceWarning in load_from_tsfile_to_dataframe (#6632) @ericjb

Data types, checks, conversions#

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

Forecasting#

Time series classification#

  • [BUG] Fix bug in fitted parameter override in pyts and tslearn adapters (#6707) @fkiraly

Time series clustering#

  • [BUG] Fix bug in fitted parameter override in pyts and tslearn adapters (#6707) @fkiraly

Time series regression#

  • [BUG] in TimeSeriesForestRegressor, fix failure: self.criterion does not exist (#6573) @ksharma6

Test framework#

  • [BUG] partially revert pytest.skip change from #6233 due to side effects in downstream test suites (#6508) @fkiraly

  • [BUG] fix test failures introduced by differential testing refactor (#6585) @fkiraly

Transformations#

  • [BUG] fix HolidayFeatures crashes if dataframe doesn’t contain specified date (#6550) @fnhirwa

  • [BUG] in Differencer, make explicit clone to avoid SettingWithCopyWarning (#6567) @benHeid

  • [BUG] minirocket: fix zero division errors #5174 (#6612) @benshaw2

  • [BUG] ensure correct setting of requires_X and requires_y tag for FeatureUnion (#6695) @fkiraly

  • [BUG] ensure correct setting of requires_X and requires_y tag for TransformerPipeline (#6692) @fkiraly

  • [BUG] partial fix for dropped column names in PaddingTransformer (#6693) @fkiraly

Contributors#

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

Version 0.30.1 - 2024-06-04#

Minimal maintenance update with actions consolidating onboard packages.

For last major feature update, see 0.29.1.

Contents#

  • [MNT] reorganization of onboard libs - pykalman, vmdpy (#6535) @fkiraly

  • [MNT] differential testing for split module (#6532) @fkiraly

Version 0.30.0 - 2024-06-03#

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

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

Also includes scheduled deprecations and change actions.

For last major feature update, see 0.29.1.

Dependency changes#

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

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

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

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

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

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

    • The package fork will be maintained in sktime.

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

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

Core interface changes#

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

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

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

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

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

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

Deprecations and removals#

Python 3.8 End-of-life#

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

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

Forecasting#

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

Enhancements#

Documentation#

  • [DOC] updated all_estimators docstring for re.Pattern support (#6478) @fkiraly

Maintenance#

  • [MNT] [Dependabot](deps): Update skpro requirement from <2.3.0,>=2 to >=2,<2.4.0 (#6443) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update scikit-learn requirement from <1.5.0,>=0.24 to >=0.24,<1.6.0 (#6462) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update scikit-base requirement from <0.8.0,>=0.6.1 to >=0.6.1,<0.9.0 (#6488) @dependabot[bot]

  • [MNT] drop test coverage on python 3.8 in CI (#6329) @yarnabrina

  • [MNT] final change cycle (0.30.0) for renaming cINNForecaster to CINNForecaster (#6367) @geetu040

  • [MNT] added joblib as core dependency (#6384) @yarnabrina

  • [MNT] 0.30.0 deprecations and change actions (#6468) @fkiraly

  • [MNT] modified CRLF line endings to LF line endings (#6512) @yarnabrina

  • [MNT] Move dependency checkers to separate module in utils (#6354) @fkiraly

  • [MNT] resolution to pykalman issue - sktime local pykalman fork (#6188) @fkiraly

  • [MNT] add systematic differential test switch to low-level tests (#6511) @fkiraly

  • [MNT] isolate utils module init and sktime init from external imports (#6516) @fkiraly

  • [MNT] preparing refactor of benchmark framework: folding minimal kotsu library into sktime (#6514) @fkiraly

  • [MNT] run tests in distances module only if it has changed (#6517) @fkiraly

  • [MNT] refactor pykalman tests to pytest and conditional execution (#6519) @fkiraly

  • [MNT] conditional execution of tests in datatypes module (#6520) @fkiraly

Contributors#

@Alex-JG3, @dependabot[bot], @fkiraly, @geetu040, @yarnabrina

Version 0.29.1 - 2024-05-30#

Highlights#

  • TransformSelectForecaster to apply different forecasters depending on series type (e.g., intermittent, lumpy) (#6453) @shlok191

  • Kolmogorov-Arnold Network (KAN) forecaster (#6386) @benHeid

  • New probabilistic forecast metrics: interval width (sharpness), area under the calibration curve (#6437, #6460) @fkiraly

  • Data loader for fpp3 (Forecasting, Princniples and Practice) datasets via rdata package, in sktime data formats (#6477) @ericjb

  • Bollinger Bands transformation (#6473) @ishanpai

  • ADI/CV2 (Syntetos/Boylan) feature extractor (#6336) @shlok191

  • ExpandingCutoffSplitter - splitter by moving cutoff (#6360) @ninedigits

Dependency changes#

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

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

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

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

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

Core interface changes#

Benchmarking, Metrics, Splitters#

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

Time series alignment#

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

Deprecations and removals#

Time series classification#

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

Enhancements#

BaseObject and base framework#

Benchmarking, Metrics, Splitters#

  • [ENH] ExpandingCutoffSplitter - splitter by moving cutoff (#6360) @ninedigits

  • [ENH] Interval width (sharpness) metric (#6437) @fkiraly

  • [ENH] unsigned area under the calibration curve metric for distribution forecasts (#6460) @fkiraly

  • [ENH] forecasting metrics: ensure uniform support and testing for sample_weight parameter (#6495) @fkiraly

Data loaders#

  • [ENH] data loader for fpp3 datasets from CRAN via rdata package, to sktime data formats (#6477) @ericjb

Data types, checks, conversions#

Forecasting#

  • [ENH] Kolmogorov-Arnold Network (KAN) forecaster (#6386) @benHeid

  • [ENH] Compositor to apply forecasters depending on series type (e.g., intermittent) (#6453) @shlok191

  • [ENH] compatibility of ForecastingHorizon with pandas freq 2Y on pandas 2.2.0 and above (#6500) @fkiraly

  • [ENH] add test case for ForecastingHorizon pandas 2.2.X compatibility, failure case #6499 (#6503) @fkiraly

  • [ENH] remove Prophet from test_differencer_cutoff (#6492) @fkiraly

  • [ENH] address deprecation and raise error in test_differencer_cutoff (#6493) @fkiraly

Time series alignment#

  • [ENH] time series aligners capability check at input, tag for unequal length capability (#6486) @fkiraly

Time series classification#

  • [ENH] Make deep classifier’s convert_y_to_keras private (#6373) @cedricdonie

  • [ENH] classification test scenario with three classes and pd-multiindex mtype (#6374) @fkiraly

  • [ENH] test classifiers on str dtype y, ensure predict returns same type and labels (#6428) @fkiraly

Transformations#

Test framework#

  • [ENH] enable check_estimator and QuickTester.run_tests to work with skip marked pytest tests (#6233) @YelenaYY

  • [ENH] make get_packages_with_changed_specs safe to mutation of return (#6451) @fkiraly

Visualization#

  • [ENH] plot_series improved to use matplotlib conventions; plot_interval can now plot multiple overlaid intervals (#6416, #6501) @ericjb

Documentation#

  • [DOC] remove redundant/duplicative classification tutorial notebooks (#6401) @fkiraly

  • [DOC] update meetup time to new 1pm slot (#6402) @fkiraly

  • [DOC] explanation of get_test_params in test framework example (#6434) @fkiraly

  • [DOC] fix download badges in README (#6479) @fkiraly

  • [DOC] improved formatting of transformation docstrings (#6489) @fkiraly

  • [DOC] document more tags: transformations (#6351) @fkiraly

  • [DOC] Improve docstrings for metrics (#6419) @fkiraly

  • [DOC] fixed wrong sentence in the documentation (#6375) @helloplayer1

  • [DOC] Correct docstring for conversion functions of dask_to_pd (#6439) @pranavvp16

  • [DOC] Fix hugging face transformers documentation (#6450`) @benheid

  • [DOC] plot_calibration docstring - formal explanation of the plot (#6414) @fkiraly

  • [DOC] high-level explanation of deprecation policy principles (#6464) @fkiraly

Maintenance#

Fixes#

Forecasting#

  • [BUG] fix ForecastX when forecaster_X_exogeneous="complement" (#6433) @fnhirwa

  • [BUG] Modified VAR code to allow predict_quantiles of 0.5 (fixes #4742) (#6441) @meraldoantonio

Neural networks#

Time series classification#

  • [BUG] Resolve LSTMFCNClassifier changing callback parameter (#6239) @ArthrowAbstract

  • [BUG] fix _get_train_probs in some classifiers to accept any input data type (#6377) @fkiraly

  • [BUG] fix BaggingClassifier for column subsampling case (#6429) @fkiraly

  • [BUG] fix ProximityForest, tree, stump, and IndividualBOSS returning y of different type in predict (#6432) @fkiraly

  • [BUG] fix classifier default _predict returning integer labels always, even if fit y was not integer (#6430) @fkiraly

  • [BUG] in CNNClassifier, ensure filter_sizes and padding is passed on (#6452) @fkiraly

  • [BUG] fix BaseClassifier.fit_predict and fit_predict_proba for pd-multiindex mtype (#6491) @fkiraly

Time series regression#

  • [BUG] Resolve LSTMFCNRegressor changing callback parameter (#6239) @ArthrowAbstract

  • [BUG] in CNNRegressor, ensure filter_sizes and padding is passed on (#6452) @fkiraly

Transformations#

Test framework#

  • [BUG] allow metric classes to be called with multilevel arg if series is not hierarchical (#6418) @fkiraly

  • [BUG] fix test_run_test_for_class logic check if ONLY_CHANGED_MODULES flag is False and all estimator dependencies are present (#6383) @fkiraly

  • [BUG] fix test_run_test_for_class test logic (#6448) @fkiraly

Visualization#

Contributors#

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

Version 0.29.0 - 2024-04-28#

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

Maintenance release:

  • scheduled deprecations and change actions

  • optimization of test collection speed

For last non-maintenance content updates, see 0.28.1.

Dependency changes#

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

Deprecations and removals#

Python 3.8 End-of-life#

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

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

Forecasting#

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

Transformations#

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

Contents#

  • [MNT] change cycle (0.29.0) for renaming cINNForecaster to CINNForecaster (#6238) @geetu040

  • [MNT] python 3.8 End-of-life and sktime support drop warning (#6348) @fkiraly

  • [MNT] speed up test collection - cache differential testing switch utilities (#6357) @fkiraly, @yarnabrina

  • [MNT] temporary skip of estimators involved in timeouts #6344 (#6361) @fkiraly

  • [MNT] 0.29.0 deprecations and change actions (#6350) @fkiraly

Contributors#

@fkiraly, @geetu040, @yarnabrina

Version 0.28.1 - 2024-04-25#

Highlights#

Dependency changes#

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

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

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

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

Core interface changes#

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

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

Enhancements#

BaseObject and base framework#

  • [ENH] PEP 508 environment markers for estimators (#6144) @fkiraly

  • [ENH] enhancements to tag system, systematic API docs for tags (#6289) @fkiraly

Benchmarking, Metrics, Splitters#

  • [ENH] instance splitter to apply sklearn splitter to panel data (#6055) @fkiraly

  • [ENH] efficient _evaluate_by_index for MSE and RMSE (MeanSquaredError) (#6248) @fkiraly

  • [ENH] implement efficient _evaluate_by_index for MedianAbsoluteError class (#6251) @mobley-trent

Forecasting#

  • [ENH] Hugging Face interface for pre-trained forecasters (#5796) @benHeid

  • [ENH] bagging/bootstrap forecaster extended to multivariate, exogeneous, hierarchical data (#6052) @fkiraly

  • [ENH] Minor neuralforecast related changes (#6312) @yarnabrina

  • [ENH] Option to use future-unknown exogenous variables in ForecastX if passed in predict (#6199) @yarnabrina

  • [ENH] Add optimizer param for neuralforecast models (#6235) @pranavvp16

  • [ENH] Update behavior of freq="auto" in neuralforecast facing estimators (#6237) @geetu040

  • [ENH] TBATS test parameters to cover doc example (#6292) @fkiraly

Neural networks#

Probability distributions and simulators#

Time series classification#

Time series clustering#

  • [ENH] clusterer test scenario with unequal length time series; fix clusterer tags (#6277) @fkiraly

Time series regression#

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

Transformations#

  • [ENH] make TabularToSeriesAdaptor compatible with sklearn transformers that accept only y, e.g., LabelEncoder (#5982) @fkiraly

Test framework#

  • [ENH] make get_examples side effect safe via deepcopy (#6259) @fkiraly

  • [ENH] refactor test scenario creation to be lazy rather than on module load (#6278) @fkiraly

Documentation#

  • [DOC] update installation instructions on conda soft dependencies (#6229) @fkiraly

  • [DOC] add missing import statements to the InvertAugmenter docstring example (#6236) @Anteemony

  • [DOC] Adding Usage Example in docstring (#6264) @MihirsinhChauhan

  • [DOC] improve docstring formatting in probabilistic metrics (#6256) @fkiraly

  • [DOC] authors tag - extension template instructions to credit 3rd party interfaced authors (#5953) @fkiraly

  • [DOC] Refactor examples directory and link to docs/source/examples (#6210) @duydl

  • [DOC] author credits to tslearn authors (#6269) @fkiraly

  • [DOC] author credits to pyts authors (#6270) @fkiraly

  • [DOC] Update README.md - time of Friday meetups (#6293) @fkiraly

  • [DOC] systematic API docs for tags (#6289) @fkiraly

  • [DOC] in extension templates, clarify handling of soft dependencies (#6325) @fkiraly

  • [DOC] author credits to pycatch22 authors, fix missing documentation page (#6300) @fkiraly

  • [DOC] added usage examples to multiple estimator docstrings (#6187) @MihirsinhChauhan

  • [DOC] Miscellaneous aesthetic improvements to docs UI (#6211) @duydl

  • [DOC] Remove redundant code in tutorial section 2.2.4 (#6267) @iamSathishR

  • [DOC] Added an example to WhiteNoiseAugmenter (#6200) @SamruddhiNavale

Maintenance#

  • [MNT] Basic fix and enhancement of doc local build process (#6128) @duydl

  • [MNT] temporary skip for failure #6260 (#6262) @fkiraly

  • [MNT] Update dask requirement from <2024.2.2 to <2024.4.2, add new required dataframe extra to pyproject.toml. (#6282) @yarnabrina

  • [MNT] fix isolation of mlflow soft dependencies (#6285) @fkiraly

  • [MNT] add @slavik57 as a maintenance contributor for fixing conda-forge sktime-all-extras 0.28.0 release (#6308) @tm-slavik57

  • [MNT] set GHA macos runner consistently to macos-13 (#6328) @fkiraly

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

  • [MNT] [Dependabot](deps): Update holidays requirement from <0.47,>=0.29 to >=0.29,<0.48 (#6302) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update arch requirement from <6.4.0,>=5.6 to >=5.6,<7.1.0 (#6307, #6309) @dependabot[bot]

  • [MNT] [Dependabot](deps): Update pytest-xdist requirement from <3.6,>=3.3 to >=3.3,<3.7 (#6316) @dependabot[bot]

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

  • [MNT] Update dask requirement from <2024.2.2 to <2024.4.2, add new required dataframe extra to pyproject.toml. (#6282) @yarnabrina

Fixes#

Data loaders#

Forecasting#

  • [BUG] Fix NaiveForecaster with sp>1 (#5923) @benHeid

  • [BUG] fix FallbackForecaster failing with ForecastByLevel when nan_predict_policy='raise' (#6231) @ninedigits

  • [BUG] Add regression test for bug 3177 (#6246) @benHeid

  • [BUG] fix failing test in neuralforecast auto freq, amid pandas freq deprecations (#6321) @geetu040

Probability distributions and simulators#

  • [BUG] fix var of Laplace distribution (#6324) @fkiraly

  • [BUG] fix Empirical index to be pd.MultiIndex for hierarchical data index (#6341) @fkiraly

Time series clustering#

Time series regression#

  • [BUG] in CNNRegressor, fix self.model not found error when verbose=True (#6232) @morestart

Transformations#

Contributors#

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

Version 0.28.0 - 2024-03-27#

Maintenance release:

  • scheduled deprecations and change actions

  • support for pandas 2.2.X

For last non-maintenance content updates, see 0.27.1.

Dependency changes#

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

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

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

Deprecations and removals#

Forecasting#

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

Transformations#

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

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

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

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

Contents#

  • [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) @XinyuWuu

  • [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, @XinyuWuu, @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#

  • [DOC] update docs on releasing conda packages (#3279) @lmmentel

  • [DOC] Add Format Specification for