Changelog#

All notable changes to this project will be documented in this file. We keep track of changes in this file since v0.4.0. The format is based on Keep a Changelog and we adhere to Semantic Versioning. The source code for all releases is available on GitHub.

Note

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

For upcoming changes and next releases, see our milestones. For our long-term plan, see our Roadmap.

Version 0.13.3 - 2022-09-25#

Highlights#

Dependency changes#

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

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

Deprecations and removals#

Data types, checks, conversions#

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

Enhancements#

Data types, checks, conversions#

  • [ENH] support for xarray DataArray & mtypes (#3255) @benHeid

  • [ENH] avoid metadata computation in scitype utility (#3357) @fkiraly

  • [ENH] check_is_scitype error message return changed to dict (#3466) @fkiraly

  • [ENH] soft dependency handling for mtypes (#3408) @fkiraly

  • [ENH] Optimize from_3d_numpy_to_nested converter function (#3339) @paulbauriegel

  • [ENH] simplify convert_to_scitype logic, fix export and docstring omissions in scitype converter module (#3358) @fkiraly

Data loaders#

  • [ENH] test for correct return type of load_basic_motions (#3458) @fkiraly

Forecasting#

  • [ENH] pmdarima 2.0.0 compatibility fix - use absolute index in return (#3302) @fkiraly

  • [ENH] global/local setting for DirectReductionForecaster (#3327) @fkiraly

  • [ENH] consistent sp handling in parameter estimators and AutoARIMA (#3367) @fkiraly

  • [ENH] enable default get_fitted_params for forecasters and delegated estimators (#3381) @fkiraly

  • [ENH] prevent vectorization in forecaster multiplexer (#3391) @fkiraly

  • [ENH] prevent vectorization in update wrappers and ForecastX (#3393) @fkiraly

  • [ENH] added missing data input check in forecasters (#3405) @fkiraly

  • [ENH] Add parallel fit and predict_residuals for calculation of residuals_matrix in ConformalIntervals (#3414) @bethrice44

  • [ENH] predictive variance and quantiles for naive forecaster (#3435) @topher-lo

Time series annotation#

Time series classification#

Time series distances and kernels#

Transformations#

Testing framework#

  • [ENH] testing transformers with transform data different from fit data (#3341) @fkiraly

  • [ENH] reduce legacy logic in test framework and refactor to scenarios (#3342) @fkiraly

  • [ENH] second param sets for selected estimators (#3428) @fkiraly

Fixes#

Data types, checks, conversions#

  • [BUG] ensure nested_univ metadata inference passes for scalar columns present (#3463) @fkiraly

Forecasting#

  • [BUG] Fix default conformal intervals initial_window parameter (#3383) @bethrice44

Time series annotation#

Time series classification#

  • [BUG] fixes missing super.__init__ call in MLPNetwork (#3350) @fkiraly

Transformations#

Maintenance#

Documentation#

  • [DOC] updated extension templates - tags explained, soft dependencies (#3334) @fkiraly

  • [DOC] API reference for dists_kernels module (#3312) @fkiraly

  • [DOC] fix notebook/example symlinks (#3379) @khrapovs

  • [DOC] Some tips on getting virtual environments to work (#3331) @miraep8

  • [DOC] changed wrong docstring default value of start_with_window in SlidingWindowSplitter to actual default value (#3340) @bugslayer-332

  • [DOC] Correct minor typos in examples/AA_datatypes_and_datasets.ipynb (#3349) @achieveordie

  • [DOC] updated extension templates - transformer tags explained (#3377) @fkiraly

  • [DOC] correcting and clarifying BaseSplitter docstrings (#3440) @fkiraly

  • [DOC] Fix docstring of TransformerPipeline (#3401) @aiwalter

  • [DOC] Expired slack link under “Where to ask questions” (#3449) @topher-lo

  • [DOC] Instructions for how to skip tests for new soft dependencies. (#3416) @miraep8

  • [DOC] replace legacy estimator overview with links (#3407) @fkiraly

  • [DOC] Update core dev list (#3415) @aiwalter

  • [DOC] Expired slack link under “Where to ask questions” (#3449) @topher-lo

  • [DOC] Added example to plot_series & fixed example for plot_lags (#3400) @shagn

Contributors#

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

Version 0.13.2 - 2022-08-23#

Highlights#

  • new forecaster: statsmodels ARDL interface (#3209) @kcc-lion

  • new transformer: channel/variable selection (Dhariyal et al 2021) for multivariate time series classification (#3248) @haskarb

  • new dunders: trafo ** forecaster = apply to exogeneous data; -trafo = OptionalPassthrough; ~trafo = invert (#3243, #3273, #3274) @fkiraly

  • pairwise transformations (time series distances, kernels) are now fully integrated with the check_estimator utility (#3254) @fkiraly

Dependency changes#

  • pmdarima is bounded <2.0.0 until compatibility issues are resolved

Core interface changes#

Forecasting#

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

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

Time series distances and kernels#

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

Transformations#

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

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

Deprecations and removals#

Transformations#

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

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

Enhancements#

BaseObject#

  • [ENH] robustify BaseObject.set_tags against forgotten __init__ (#3226) @fkiraly

Data types, checks, conversions#

  • [ENH] treat non nested cols in conversion nested_univ to pd-multiindex (#3250) @fkiraly

Forecasting#

  • [ENH] statsmodels ARDL interface (#3209) @kcc-lion

  • [ENH] ** dunder for applying transformers to exogeneous data in forecasters (#3243) @fkiraly

  • [ENH] test pd.Series with name attribute in forecasters (#3297, #3323) @fkiraly

  • [ENH] set default ignores-exogeneous-X to False (#3260) @fkiraly

  • [ENH] forecasting pipeline test case with Detrender (#3270) @fkiraly

  • [ENH] test hierarchical forecasters with hierarchical data (#3321) @fkiraly

Time series annotation#

  • [ENH] Data generator for annotation - normal multivariate mean shift (#3114) @KatieBuc

Time series distances and kernels#

Transformations#

  • [ENH] channel selection (Dhariyal et al 2021) for multivariate time series classification (#3248) @haskarb

  • [ENH] channel selection (Dhariyal et al 2021) - compatibility with arbitrary distance (#3256) @fkiraly

  • [ENH] in Lag, make column naming consistent between single-lag and multi-lag case (#3261) @KishManani

  • [ENH] deprecate transformations.series.compose in favour of transformations.compose (#3271) @fkiraly

  • [ENH] inversion of transformer wrapper and dunder (#3274) @fkiraly

  • [ENH] correctness test for OptionalPassthrough (#3276) @aiwalter

  • [ENH] OptionalPassthrough wrapping via neg dunder (#3273) @fkiraly

  • [ENH] refactor of OptionalPassthrough as a delegator (#3272) @fkiraly

Testing framework#

  • [ENH] test super.__init__ call in objects and estimators (#3309) @fkiraly

Governance#

  • [GOV] sktime as a “library”, not a “curated selection” (#3155) @fkiraly

Fixes#

Data sets and data loaders#

Data types, checks, conversions#

  • [BUG] fix failure of some conversions in _load_provided_dataset() (#3231) @achieveordie

  • [BUG] fix recurring instances of forgotten list comprehension brackets inside np.all (#3245) @achieveordie, @fkiraly

  • [BUG] fix _enforce_infer_freq private utility for short time series (#3287) @fkiraly

Forecasting#

  • [BUG] Delay trimming in ForecastingGridSearchCV until after transforming (#3132) @miraep8

  • [BUG] Fix tag in DirectReductionForecaster (#3257) @KishManani

  • [BUG] ensure that forecasters do not add pd.Series.name attribute (#3290) @fkiraly

  • [BUG] removes superfluous UserWarning in AutoETS.fit if auto=True and additive_only=True #3311 (#3317) @chillerobscuro

  • [BUG] fix ColumnEnsembleForecaster for hierarchical input (#3324) @fkiraly

  • [BUG] fix bug where default forecaster _update empties converter store (#3325) @fkiraly

  • [BUG] (temporary fix) remove hierarchical datatypes from recursive reduction forecasters (#3326) @fkiraly

Parameter estimation#

  • [BUG] fixed concat dunder for ParamFitterPipeline (#3262) @fkiraly

Time series annotation#

Time series classification#

Transformations#

Maintenance#

  • [MNT] Deprecation of row transformers (#2370) @fkiraly

  • [MNT] add soft dependency tag to CNNClassifier (#3252) @fkiraly

  • [MNT] bound pmdarima < 2.0.0 (#3301) @fkiraly

  • [MNT] fix merge accident that deleted DtwDist export (#3304) @fkiraly

  • [MNT] move transformers in transformations.series.compose to transformations.compose (#3310) @fkiraly

Contributors#

@achieveordie, @aiwalter, @chillerobscuro, @chrisholder, @fkiraly, @haskarb, @KatieBuc, @kcc-lion, @KishManani, @miraep8, @patrickzib, @paulbauriegel

Version 0.13.1 - 2022-08-11#

Highlights#

  • forecasting reducers constructed via make_reduction now fully support global/hierarchical forecasting (#2486) @danbartl

  • forecasting metric classes now fully support hierarchical data and hierarchy averaging via multilevel argument (#2601) @fkiraly

  • probabilisitic forecasting functionality for DynamicFactor, VAR and VECM (#2925, #3105) @AurumnPegasus, @lbventura

  • update features for AutoARIMA, BATS, TBATS, and forecasting tuners (#3055, #3068, #3086) @fkiraly, @jelc53

  • new transformer: ClearSky transformer for solar irradiance time series (#3130) @ciaran-g

  • new transformer: Filter transformer for low/high-pass and band filtering, interfaces mne filter_data (#3067) @fkiraly, @sveameyer13

Dependency changes#

  • new soft dependency mne, from Filter transformer

  • new developer dependency pytest-randomly

Core interface changes#

All Estimators#

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

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

Forecasting#

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

Parameter estimation#

  • new estimator type - parameter estimators, base class BaseParamFitter

Deprecations and removals#

Time series classification#

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

    Interfaces will not be downwards compatible.

Enhancements#

BaseObject#

  • [ENH] remove custom __repr__ from BaseTask, inherit from BaseObject (#3049) @fkiraly

  • [ENH] default implementation for get_fitted_params and nested fitted params interface (#3077) @fkiraly

  • [ENH] remove _required_parameters interface point from BaseObject (#3152) @fkiraly

Data sets and data loaders#

Data types, checks, conversions#

  • [ENH] add check for unique column indices to mtype checks (#2971) @fkiraly

  • [ENH] Adapter from pd-multiindex to gluonts ListDataset (#2976) @TNTran92

  • [ENH] add check for non-duplicate indices in nested_univ mtype (#3029) @fkiraly

  • [BUG] Remove redundant computations in datatypes._utilities.get_cutoff (#3070) @shchur

Forecasting#

  • [ENH] Reworked make_reduction for global forecasting (#2486) @danbartl

  • [ENH] flexible update behaviour of forecasting tuners (#3055) @fkiraly

  • [ENH] flexible update behaviour of AutoARIMA (#3068) @fkiraly

  • [ENH] Reducer prototype rework - experimental (#2833) @fkiraly

  • [ENH] better ForecastingHorizon construction error message (#3236) @fkiraly

  • [ENH] metrics rework part IV - hierarchical metrics (#2601) @fkiraly

  • [ENH] Reducer prototype rework - experimental (#2833) @fkiraly

  • [ENH] predict_interval capability for VECM (#2925) @AurumnPegasus

  • [ENH] “dont refit or update” option in evaluate (#2954) @fkiraly

  • [ENH] regular update for stream forecasting, and “no update” wrappers (#2955) @fkiraly

  • [ENH] Implement get_fitted_params for tuning forecasters (#2975) @ZiyaoWei

  • [ENH] allow sp=None in the NaiveForecaster (#3043) @fkiraly

  • [MNT] remove custom __repr__ from BaseSplitter (#3048) @fkiraly

  • [ENH] dedicated update for BATS and TBATS (#3086) @jelc53

  • [ENH] DynamicFactor predict_interval and predict_quantiles (#3105) @lbventura

  • [ENH] Added error_score to evaluate and forecasting tuners (#3135) @aiwalter

  • [ENH] Refactor CutoffSplitter using get_window function (#3145) @khrapovs

  • [ENH] Refactor SingleWindowSplitter using get_window function (#3146) @khrapovs

  • [ENH] Allow lists to be cutoff argument in CutoffSplitter (#3147) @khrapovs

  • [ENH] Adding VAR._predict_intervals (#3149) @lbventura

Parameter estimation#

  • [ENH] Parameter estimators and “plug in parameter” compositors (#3041) @fkiraly

Time series annotation#

Time series classification#

Time series regression#

Transformations#

  • [ENH] refactored ColumnConcatenator, rewrite using pd-multiindex inner mtype (#2379) @fkiraly

  • [ENH] __getitem__ aka [ ] dunder for transformers, column subsetting (#2907) @fkiraly

  • [ENH] YtoX transformer to use transform endogeneous data as exogegneous (#2922) @fkiraly

  • [BUG] fixes RandomIntervalFeatureExtractor to have unique column names (#3001) @fkiraly

  • [BUG] fix for Differencer.inverse_transform not having access to data index freq (#3007) @fkiraly

  • [ENH] Refactor transformers in _deseasonalize module (#3040) @fkiraly

  • [ENH] Filter transformer from sktime-neuro (#3067) @fkiraly

  • [ENH] increase stateless scope of FunctionTransformer and TabularToSeriesAdaptor (#3087) @fkiraly

  • [ENH] ClearSky transformer for solar irradiance time series (#3130) @ciaran-g

  • [ENH] move simple ShapeletTransform from _contrib to transformations module (#3136) @fkiraly

Testing framework#

  • [ENH] test that transformer output columns are unique (#2969) @fkiraly

  • [ENH] test estimator fit without soft dependencies (#3039) @fkiraly

  • [ENH] test all BaseObject descendants for sklearn compatibility (#3122) @fkiraly

  • [ENH] functools wrapper to preserve docstrings in estimators wrapped by make_mock_estimator (#3228) @ltsaprounis

  • [ENH] refactoring test params for FittedParamExtractor to get_test_params (#2995) @mariamjabara

  • [ENH] refactored test params for ColumnTransformer (#3008) @kcc-lion

  • [ENH] complete refactor of all remaining test params left in _config to get_test_params (#3123) @fkiraly

  • [ENH] partition design for test matrix to reduce test time to a third (#3137) @fkiraly

Documentation#

Fixes#

Data types, checks, conversions#

  • [BUG] fix stray args in one from_multi_index_to_3d_numpy (#3239) @fkiraly

Forecasting#

  • [BUG] fix forecaster default predict_quantiles for multivariate data (#3106) @fkiraly

  • [BUG] ExpandingWindowSplitter constructor sklearn conformace fix (#3121) @fkiraly

  • [BUG] fix override/defaulting of “prediction intervals” adders (#3129) @bethrice44

  • [BUG] fix check_equal_time_index with numpy arrays as input (#3160, #3167) @benHeid

  • [BUG] fix broken AutoEnsembleForecaster inverse variance method (#3208) @AnH0ang

  • [BUG] fixing bugs in metrics base classes and custom performance metric (#3225) @fkiraly

Time series classification#

  • [BUG] fix HIVE-COTE2 sporadic test failure (#3094) @MatthewMiddlehurst

  • [BUG] fixes to BaseClassifier._predict_proba default and SklearnClassifierPipeline in case predict_proba is not implemented (#3104) @fkiraly

  • [BUG] allowing single class case in sklearn classifiers (trees/forests) (#3204) @fkiraly

  • [BUG] skip check for no. estimators in contracted classifiers (#3207) @fkiraly

Transformations#

  • [BUG] fixed inverse transform logic in transformer pipelines (#3085) @fkiraly

  • [BUG] fixed DateTimeFeatures inconsistent output type formats (#3223) @danbartl

  • [BUG] fixed Datetimefeatures day_of_year option not working (#3223) @danbartl

Testing framework#

  • [BUG] address shadowing of object in _check_soft_dependencies (#3116) @fkiraly

  • [BUG] prevent circular imports in all_estimators (#3198) @fkiraly

Maintenance#

Contributors#

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

Version 0.13.0 - 2022-07-14#

Highlights#

Dependency changes#

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

  • sktime now allows numpy 1.22.

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

  • indirect soft dependency on pystan has been removed.

  • soft dependency on hcrystalball has been removed.

Core interface changes#

Data types, checks, conversions#

  • VectorizedDF now supports vectorization over columns

Dependency handling#

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

Forecasting#

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

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

Transformations#

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

Deprecations and removals#

Forecasting#

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

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

  • removed: class HCrystalBallForecaster, see #2677.

Performance metrics#

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

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

Time series classification#

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

Transformations#

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

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

Enhancements#

Data types, checks, conversions#

  • [ENH] VectorizedDF to support vectorization across columns/variables (#2864) @fkiraly

  • [ENH] preserve index.freq in get_cutoff (#2908) @fkiraly

  • [ENH] extend get_cutoff to pd.Index input (#2939) @fkiraly

Forecasting#

Transformations#

  • [ENH] extend ColumnSubset to work for scalar columns parameter (#2906) @fkiraly

  • [ENH] transformer vectorization: ensure unique column names if unvectorized output is multivariate (#2958) @fkiraly

Fixes#

Data loaders#

  • [BUG] load_UCR_UEA_dataset checks for existence of files rather than just directories (#2899) @TonyBagnall

Data types, checks, conversions#

  • [BUG] fixing get_time_index for 1D and 2D numpy formats (#2852) @fkiraly

  • [BUG] Fixing broken conversions from nested data frame (#2375) @fkiraly

  • [BUG] preserve pd-multiindex index names (#2999) @fkiraly

Forecasting#

  • [BUG] loosen index check related tags and fix incorrect pipeline tag inference (#2842) @fkiraly

  • [BUG] remove non-standard score function in BaseGridSearch (#2752) @fkiraly

  • [BUG] fix Prophet to have correct output column names (#2973) @fkiraly

  • [BUG] fixing grid/random search broken delegation (#2945) @fkiraly

  • [BUG] forecaster vectorization for update and proba prediction, bugfixes (#2960) @fkiraly

  • [BUG] fix pipeline vectorization for univariate estimators (#2959) @fkiraly

Time series classification#

Transformations#

  • [BUG] ensure IntervalSegmenter unique column output (#2970) @fkiraly

  • [BUG] fix NaN columns in bootstrap transformers (#2974) @fkiraly

  • [BUG] ensure TruncationTransformer.transform output now has same columns as input (#2999) @fkiraly

Refactored#

  • [ENH] NaiveForecaster: remove manual vectorization layer in favour of base class vectorization (#2874) @fkiraly

  • [ENH] remove old multiindex-df index convention hack from VectorizedDF (#2863) @fkiraly

  • [ENH] delete duplicate classifier tests (#2912) @fkiraly

Maintenance#

Documentation#

  • [DOC] updated forecasting tutorial with multivariate vectorization (#3000) @fkiraly

  • [DOC] all_estimators authors variable (#2861) @fkiraly

  • [DOC] added missing credits in naive.py (#2876) @fkiraly

  • [DOC] add _is_vectorized to forecaster extension template exclusion list (#2878) @fkiraly

  • [DOC] replace AyushmaanSeth name with GitHub ID (#2911) @fkiraly

  • [DOC] Added docstrings code showing example of using metrics with evaluate (#2850) @TNTran92

  • [DOC] updated release process to current de-facto process (#2927) @fkiraly

Contributors#

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

Version 0.12.1 - 2022-06-28#

Highlights#

  • new ReconcilerForecaster estimator for reconciling forecasts using base model residuals (#2830) @ciaran-g

  • | dunder for multiplexing and autoML, shorthand for MultiplexTransformer (#2810) @miraep8

  • lagging transformer Lag for easy generation of lags (#2783) @fkiraly

Dependency changes#

  • upper bound prophet < 1.1 due to cmdstanpy incompatibility

Core interface changes#

BaseObject#

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

Enhancements#

BaseObject#

  • [ENH] set_params to call reset, to comply with sklearn parameter interface assumptions (#2835) @fkiraly

Forecasting#

  • [ENH] make get_cutoff compatible with all time series formats, fix bug for VectorizedDF input (#2870) @fkiraly

  • [ENH] more informative error messages to diagnose wrong input format to forecasters (#2824) @fkiraly

Transformations#

Fixes#

Forecasting#

  • [BUG] fixed forecasters not updating cutoff when in vectorization mode (#2870) @fkiraly

  • [BUG] Fixing type conversion bug for probabilistic interval wrappers NaiveVariance and ConformalInterval (#2815) @bethrice44

  • [BUG] fix Lag transformer when numpy.int was passed as lag integers (#2832) @fkiraly

  • [ENH] fix get_window utility when window_length was None (#2866) @fkiraly

Transformations#

  • [BUG] Vectorization in transformers overwrote y with X if y was passed (#2844) @fkiraly

  • [BUG] output type check fix for ambiguous return types in vectorized Panel case (#2843) @fkiraly

Documentation#

  • [DOC] add missing Sajaysurya references (#2800) @fkiraly

  • [DOC] add missing TonyBagnall to contributors of 0.12.0 in changelog (#2803) @fkiraly

  • [DOC] adds solution to “no matches found” to troubleshoot section of install guide (#2786) @AurumnPegasus

  • [DOC] cleaning up transformer API reference (#2818) @fkiraly

  • [DOC] team update: remove TonyBagnall from CC (#2794) @fkiraly

  • [DOC] Added diviner by Databricks and statsforecast by Nixtla to related software (#2873) @aiwalter

Maintenance#

Contributors#

@aiwalter, @AurumnPegasus, @bethrice44, @ciaran-g, @fkiraly, @khrapovs, @miraep8

Version 0.12.0 - 2022-06-12#

Highlights#

  • Time series classification: deep learning based algorithms, port of sktime-dl into sktime (#2447) @TonyBagnall

  • forecasting data splitters now support hierarchical data (#2599) @fkiraly

  • Updated forecasting and classification notebooks (#2620, #2641) @fkiraly

  • frequently requested algorithm: Kalman filter transformers (#2611) @NoaBenAmi @lielleravid

  • frequently requested algorithm: top-down reconciler based on forecast proportions (#2664) @ciaran-g

  • frequently requested algorithm: empirical and conformal prediction intervals after Stankeviciute et al, 2021 (#2542, #2706) @bethrice44 @fkiraly

Dependency changes#

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

Core interface changes#

BaseObject#

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

  • all estimators now possess a clone method which is function equivalent to sklearn’s’ clone (#2565) @fkiraly.

Forecasting#

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

Performance metrics#

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

Time series regression#

  • TSR base class was updated to an interface that parallels BaseClassifier (#2647) @fkiraly. See the base class docstrings for specification details.

Deprecations and removals#

Data types, checks, conversions#

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

Forecasting#

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

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

Performance metrics#

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

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

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

Time series classification#

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

Transformations#

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

  • removed: FeatureUnion’s preserve_dataframe parameter

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

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

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

Enhancements#

BaseObject#

Data types, checks, conversions#

  • [ENH] Add support to get_slice for multi-index and hierarchical data (#2761) @bethrice44

Distances, kernels#

Forecasting#

  • [ENH] early fit for NaiveVariance (#2546) @fkiraly

  • [ENH] empirical and conformal probabilistic forecast intervals (Stankeviciute et al, 2021) (#2542 #2706) @bethrice44 @fkiraly

  • [ENH] BaseSplitter extension: hierarchical data, direct splitting of series (#2599) @fkiraly

  • [ENH] Top-down reconciler based on forecast proportions (#2664) @ciaran-g

  • [ENH] HCrystalBallForecaster deprecation (#2675) @aiwalter

  • [ENH] add int handling to Prophet (#2709) @fkiraly

  • [ENH] Compositor for forecasting of exogeneous data before using in exogeneous forecaster (#2674) @fkiraly

  • [ENH] add ExpandingWindowSplitter as default cv in BaseForecaster.update_predict (#2679) @fkiraly

Performance metrics#

  • [ENH] new probabilistic metrics for interval forecasts - empirical coverage, constraint violation (#2383) @eenticott-shell

  • [ENH] metrics rework part II - metrics internal interface refactor (#2500) @fkiraly

  • [ENH] metrics rework part III - folding metric mixins into intermediate class, interface consolidation (#2502) @fkiraly

  • [ENH] tests for probabilistic metrics (#2683) @eenticott-shell

Pipelines#

  • [ENH] make_pipeline utility to create linear pipelines of any type (#2643) @fkiraly

Time series classification and regression#

  • [ENH] Transfer deep learning classifiers and regressors from sktime-dl (#2447) @TonyBagnall

  • [ENH] Proximity forest, removal of legacy conversion (#2518) @fkiraly

  • [ENH] update TSR base class, kNN time series regression (#2647) @fkiraly

  • [ENH] DummyClassifier, naive classifier baseline (#2707) @ZiyaoWei

  • [ENH] pipeline for time series classification from sktime transformers and sklearn classifiers (#2718) @fkiraly

Transformations#

Testing framework#

  • [ENH] allow different import and package names in soft dependency check (#2545) @fkiraly

  • [ENH] option to exclude tests/fixtures in check_estimator (#2756) @fkiraly

  • [ENH] make_mock_estimator passing constructor args for the mocked class (#2686) @ltsaprounis

  • [ENH] test_update_predict_predicted_index for continuous data (#2701) @ltsaprounis

  • [ENH] interface compliance test to ensure sklearn compliance of constructor (#2732) @fkiraly

  • [ENH] check_estimators to run without soft dependencies (#2779) @fkiraly

  • [ENH] forecasting pipeline test which triggers conversions and failure condition in #2739 (#2790) @fkiraly

  • [ENH] expose estimator method iteration in TestAllEstimators as test fixture (#2781) @fkiraly

Governance#

Fixes#

Clustering#

  • [BUG] fixed constructor non-compliance with sklearn: TimeSeriesKMeans (#2773) @fkiraly

Data types, checks, conversions#

  • [BUG] fix pd.Series to pd.DataFrame mtype conversion in case series has a name (#2607) @fkiraly

  • [BUG] corrected Series to Panel conversion for numpy formats (#2638) @fkiraly

Distances, kernels#

Forecasting#

  • [BUG] Fix incorrect update_predict arg default and docstring on cv arg (#2589) @aiwalter

  • [BUG] Fix Prophet with logistic growth #1079 (#2609) @k1m190r

  • [BUG] ignores-exogeneous-X tag correction for UnobservedComponents (#2666) @fkiraly

  • [BUG] fixed StackingForecaster for exogeneous data (#2667) @fkiraly

  • [BUG] fixed pmdarima interface index handling if X index set is strictly larger than y index set (#2673) @fkiraly

  • [BUG] Fix duration to int coercion for pd.tseries.offsets.BaseOffset (#2726) @khrapovs

  • [BUG] fixed overlap in NaiveVariance train/test set due to inclusive indexing for timestamp limits (#2760) @bethrice44

  • [BUG] fixed constructor non-compliance with sklearn: AutoETS (#2736) @fkiraly

  • [BUG] fixed constructor non-compliance with sklearn: UnobservedComponents (#2773) @fkiraly

  • [BUG] fixed sarimax_kwargs in ARIMA and AutoARIMA being incompliant with scikit-learn interface (#2731, #2773) @fkiraly

  • [BUG] add patch to ensure column/name preservation in NaiveForecaster (#2793) @fkiraly

Time series classification and regression#

  • [BUG] fixing constructor non-compliance with sklearn: KNeighborsTimeSeriesClassifier and KNeighborsTimeSeriesRegressor (#2737, #2773) @fkiraly

Transformations#

  • [BUG] Fixed fit method of Imputer (#2362) @aiwalter

  • [BUG] fix typo in author variable for boxcox module (#2642) @fkiraly

  • [BUG] TransformerPipeline fix for vectorization edge cases and sklearn transformers (#2644) @fkiraly

  • [BUG] SummaryTransformer multivariate output fix and tests for series-to-primitives transform output (#2720) @fkiraly

  • [BUG] fixing constructor non-compliance with sklearn: PCATransformer (#2734) @fkiraly

Maintenance#

  • [MNT] Added pytest flags to setup.cfg (#2535) @aiwalter

  • [MNT] Added deprecation warning for HCrystalBallForecaster (#2675) @aiwalter

  • [MNT] Replace deprecated argument squeeze with the method .squeeze(“columns”) in pd.read_csv (#2693) @khrapovs

  • [MNT] Replace pandas.DataFrame.append with pandas.concat to address future deprecation (#2723) @khrapovs

  • [MNT] Add [MNT] tag to PR template (#2727) @khrapovs

  • [MNT] Removed redundant todo from transformer_simple extension template (#2740) @NoaBenAmi

  • [MNT] Address various future warnings from pandas and numpy (#2725) @khrapovs

  • [MNT] testing sktime without softdeps (#2719) @fkiraly

  • [MNT] remove accidental codecov overwrite from nosoftdeps (#2782) @fkiraly

  • [MNT] deprecation actions scheduled for 0.12.0 release (#2747) @fkiraly

Refactored#

Documentation#

Contributors#

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

Version 0.11.4 - 2022-05-13#

Highlights#

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

Dependency changes#

  • Added defensive upper bound scikit-learn<1.2.0

Maintenance#

Enhancements#

BaseObject#

  • [ENH] components retrieval utility and default BaseForecaster._update(update_params=False) for composites (#2596) @fkiraly

Clustering#

Data types, checks, conversions#

  • [ENH] more informative error message from mtype if no mtype can be identified (#2606) @fkiraly

Distances, kernels#

Forecasting#

  • [ENH] Extended sliding and expanding window splitters to allow timdelta forecasting horizon (#2551) @khrapovs

  • [ENH] Removed interval_width parameter of Prophet (#2630) @phershbe

Time series classification#

Transformations#

Fixes#

BaseObject#

Clustering#

Forecasting#

  • [BUG] Forecasting pipeline get/set params fixed for dunder generated pipelines (#2619) @fkiraly

Testing framework#

  • [BUG] fixing side effects between test runs of the same test in the test suite (#2558) @fkiraly

Contributors#

@chrisholder, @ciaran-g, @fkiraly, @khrapovs, @miraep8, @phershbe, @Ris-Bali, @TonyBagnall

Version 0.11.3 - 2022-04-29#

Highlights#

  • sktime is now compatible with scipy 1.8.X versions (#2468, #2474) @fkiraly

  • dunder method for forecasting pipelines: write trafo * forecaster * my_postproc for TransformedTargetForecaster pipeline (#2404) @fkiraly

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

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

  • prediction intervals for UnobservedComponents forecaster (#2454) @juanitorduz

  • new argument return_tags of all_estimators allows listing estimators together with selected tags (#2410) @miraep8

Dependency changes#

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

Core interface changes#

All Estimators#

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

Forecasting#

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

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

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

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

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

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

Deprecations#

Forecasting#

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

Transformations#

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

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

Enhancements#

BaseObject#

Data types, checks, conversions#

  • [ENH] new _make_panel utility, separate from _make_panel_X, with arbitrary return mtype (#2505) @fkiraly

Forecasting#

  • [ENH] prediction intervals for UnobservedComponents forecaster (#2454) @juanitorduz

  • [ENH] remove error message on exogeneous X from DirRec reducer (#2463) @fkiraly

  • [ENH] replace np.arange by np.arghwere in splitters to enable time based indexing and selection (#2394) @khrapovs

  • [ENH] Test SingleWindowSplitter with Timedelta forecasting horizon (#2392) @khrapovs

  • [ENH] Aggregator: remove index naming requirement (#2479) @ciaran-g

  • [ENH] MultiplexForecaster compatibility with multivariate, probabilistic and hierarchical forecasting (#2458) @fkiraly

  • [ENH] Differencer NA handling - “fill zero” parameter (#2487) @fkiraly

  • [ENH] Add random_state to statsmodels adapter and estimators (#2440) @ris-bali

  • [ENH] Added tests for MultiplexForecaster (#2520) @miraep8

  • [ENH] Added | dunder method for MultiplexForecaster (#2540) @miraep8

Registry#

  • [ENH] add new argument return_tags to all_estimators (#2410) @miraep8

Testing framework#

Transformations#

Fixes#

Clustering#

  • [BUG] Fixed medoids in kmedoids being taken across all data instead of cluster-wise (#2548) @chrisholder

Data types, checks, conversions#

  • [BUG] fixing direct conversions from/to numpyflat mtype being overriden by indirect ones (#2517) @fkiraly

Distances, kernels#

  • [BUG] Distances fixed bug where bounding matrix was being rounded incorrectly (#2549) @chrisholder

Forecasting#

  • [BUG] refactor _predict_moving_cutoff and bugfix, outer update_predict_single should be called (#2466) @fkiraly

  • [BUG] fix ThetaForecaster.predict_quantiles breaking on pd.DataFrame input (#2529) @fkiraly

  • [BUG] bugfix for default _predict_var implementation (#2538) @fkiraly

  • [BUG] ensure row index names are preserved in hierarchical forecasting when vectorizing (#2489) @fkiraly

  • [BUG] Fix type checking error due to pipeline type polymorphism when constructing nested pipelines (#2456) @fkiraly

  • [BUG] fix for update_predict state handling bug, replace detached cutoff by deepcopy (#2557) @fkiraly

  • [BUG] Fixes the index name dependencies in WindowSummarizer (#2567) @ltsaprounis

  • [BUG] Fix non-compliant output of ColumnEnsembleForecaster.pred_quantiles, pred_interval (#2512) @eenticott-shell

Time series classification#

  • [BUG] fixed ColumnEnsembleClassifier handling of unequal length data (#2513) @fkiraly

Transformations#

  • [BUG] remove alpha arg from _boxcox, remove private method dependencies, ensure scipy 1.8.0 compatibility (#2468) @fkiraly

  • [BUG] fix random state overwrite in MiniRocketMultivariate (#2563) @fkiraly

Testing framework#

  • [BUG] fix accidental overwrite of default method/arg sequences in test scenarios (#2457) @fkiraly

Refactored#

  • [ENH] changed references to fit-in-transform to fit_is_empty (#2494) @fkiraly

  • [ENH] cleaning up _panel._convert module (#2519) @fkiraly

  • [ENH] Legacy test refactor - move test_data_processing, mtype handling in test_classifier_output (#2506) @fkiraly

  • [ENH] MockForecaster without logging, MockUnivariateForecaster clean-up (#2539) @fkiraly

  • [ENH] metrics rework part I - output format tests (#2496) @fkiraly

  • [ENH] simplify load_from_tsfile, support more mtypes (#2521) @fkiraly

  • [ENH] removing dead args and functions post _predict_moving_cutoff refactor (#2470) @fkiraly

Maintenance#

  • [MNT] upgrade codecov uploader and cleanup coverage reporting (#2389) @tarpas

  • [MNT] fix soft dependency handling for esig imports (#2414) @fkiraly

  • [MNT] Make the contrib module private (#2422) @MatthewMiddlehurst

  • [MNT] disabling aggressive dtw_python import message (#2439) @KatieBuc

  • [MNT] loosen strict upper bound on scipy to 1.9.0 (#2474) @fkiraly

  • [MNT] Remove accidentally committed prob integration notebook (#2476) @eenticott-shell

  • [MNT] speed up Facebook Prophet tests (#2497) @fkiraly

  • [MNT] Proximity forest faster test param settings (#2525) @fkiraly

  • [MNT] Fix tests to prevent all guaranteed check_estimator failures (#2411) @danbartl

  • [MNT] added pytest-timeout time limit of 10 minutes (#2532, #2541) @fkiraly

  • [MNT] turn on tests for no state change in transform, predict (#2536) @fkiraly

  • [MNT] switch scipy mirror to anaconda on windows to resolve gfortran FileNotFoundError in all CI/CD (#2561) @fkiraly

  • [MNT] Add a script to generate changelog in rst format (#2449) @lmmentel

Documentation#

  • [DOC] Added clustering module to API docs (#2429) @aiwalter

  • [DOC] updated datatypes notebook (#2492) @fkiraly

  • [DOC] Broken Links in Testing Framework Doc (#2450) @Tomiiwa

  • [DOC] remove GSoC announcement from landing page after GSoC deadline (#2543) @GuzalBulatova

  • [DOC] fix typo in sktime install instructions, causes “invalid requirement error” if followed verbatim (#2503) @Samuel-Oyeneye

Contributors#

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

Version 0.11.2 - 2022-04-11#

Fixes#

  • [BUG] temp workaround for unnamed levels in hierarchical X passed to aggregator (#2432) @fkiraly

  • [BUG] forecasting pipeline dunder fix by (#2431) @fkiraly

  • [BUG] fix erroneous direct passthrough in ColumnEnsembleForecaster (#2436) @fkiraly

  • [BUG] Incorrect indices returned by make_reduction on hierarchical data fixed by (#2438) @danbartl

Version 0.11.1 - 2022-04-10#

Highlights#

  • GSoC 2022 application instructions - apply by Apr 19 for GSoC with sktime! (#2373) @lmmentel @Lovkush-A @fkiraly

  • enhancements and bugfixes for probabilistic and hierarchical forecasting features introduced in 0.11.0

  • reconciliation transformers for hierarchical predictions (#2287, #2292) @ciaran-g

  • pipeline, tuning and evaluation compabitility for probabilistic forecasting (#2234, #2318) @eenticott-shell @fkiraly

  • interface to statsmodels SARIMAX (#2400) @TNTran92

  • reduction with transform-on-y predictors (e.g., lags, window summaries), and for hierarchical data (#2396) @danbartl

Core interface changes#

Data types, checks, conversions#

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

Forecasting#

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

  • probabilistic forecasting interface now compatible with hierarchical forecasting interface

Enhancements#

Data types, checks, conversions#

  • [ENH] tsf loader to allow specification of return mtype (#2103) @ltsaprounis

  • [ENH] relax name rules for multiindex - fixed omission in from_multi_index_to_nested (#2384) @ltsaprounis

Forecasting#

  • [ENH] require uniqueness from multiple alpha/coverage in interval/quantile forecasts (#2326) @fkiraly

  • [ENH] Adding fit parameters to VAR constructor #1850 (#2304) @TNTran92

  • [ENH] vectorization for probabilistic forecasting methods that return pd.DataFrame (#2355) @fkiraly

  • [ENH] adding compatibility with probabilistic and hierarchical forecasts to ForecastingPipeline and TransformedTargetForecaster (#2318) @fkiraly

  • [ENH] Allow pd.Timedelta values in ForecastingHorizon (#2333) @khrapovs

  • [ENH] probabilistic methods for ColumnEnsembleForecaster (except predict_proba) (#2356) @fkiraly

  • [ENH] NaiveVariance: verbose arg and extended docstring (#2395) @fkiraly

  • [ENH] Grid search with probabilistic metrics (#2234) @eenticott-shell

  • [ENH] wrapper for stream forecasting (update_predict use) to trigger regular refit (#2305) @fkiraly

  • [ENH] post-processing in TransformedTargetForecaster, dunder method for (transformed y) forecasting pipelines (#2404) @fkiraly

  • [ENH] suppressing deprecation messages in all_estimators estimator retrieval, address dtw import message (#2418) @katiebuc

  • [ENH] improved error message in forecasters when receiving an incompatible input (#2314) @fkiraly

  • [ENH] NaiveVariance: verbose arg and extended docstring (#2395) @fkiraly

  • [ENH] Prohibit incompatible splitter parameters (#2328) @khrapovs

  • [ENH] added interface to statsmodels SARIMAX (#2400) @TNTran92

  • [ENH] extending reducers to hierarchical data, adding transformation (#2396) @danbartl

Time series classification#

  • [ENH] Faster classifier example parameters (#2378) @MatthewMiddlehurst

  • [ENH] BaseObject.is_composite utility, relax errors in BaseClassifier input checks to warnings for composites (#2366) @fkiraly

  • [ENH] Capability inference for transformer and classifier pipelines (#2367) @fkiraly

Transformations#

  • [ENH] Implement reconcilers for hierarchical predictions - transformers (#2287) @ciaran-g

  • [ENH] Hierarchy aggregation transformer (#2292) @ciaran-g

  • [ENH] memory for WindowSummarizer to enable transform windows to reach into the fit time period (#2325) @fkiraly

Maintenance#

  • [MNT] Remove jinja2 version (#2330) @aiwalter

  • [ENH] test generation error to raise and not return (#2298) @fkiraly

  • [ENH] Remove pd.Int64Index due to impending deprecation (#2339, #2390) @khrapovs

  • [MNT] removing unused imports from tests._config (#2358) @fkiraly

  • [ENH] scenarios for hierarchical forecasting and tests for probabilistic forecast methods (#2359) @fkiraly

  • [MNT] fixing click/black incompatibility in CI (#2353, #2372) @fkiraly

  • [ENH] tests for check_estimator` tests passing (#2408) @fkiraly

  • [ENH] Fix tests to prevent guaranteed check_estimator failure (#2405) @danbartl

Refactored#

  • [ENH] remove non-compliant fit_params kwargs throughout the code base (#2343) @fkiraly

  • [ENH] Classification expected output test updates (#2295) @MatthewMiddlehurst

  • [ENH] Transformers module full refactor - part III, panel module (2nd batch) (#2253) @fkiraly

  • [ENH] Transformers module full refactor - part IV, panel module (3rd batch) (#2369) @fkiraly

  • [ENH] test parameter refactor: TSInterpolator (#2342) @NoaBenAmi

  • [ENH] move “sktime forecaster tests” into TestAllForecasters class (#2311) @fkiraly

  • [ENH] upgrade BasePairwiseTransformer to use datatypes input conversions and checks (#2363) @fkiraly

  • [ENH] extend _HeterogeneousMetaEstimator estimator to allow mixed tuple/estimator list (#2406) @fkiraly

  • [MNT] test parameter refactor: forecasting reducers and ColumnEnsembleClassifier (#2223) @fkiraly

  • [ENH] refactoring test_all_transformers to test class architecture (#2252) @fkiraly

Fixes#

Forecasting#

  • [BUG] fix _update default for late fh pass case (#2362) @fkiraly

  • [ENH] Extract cached ForecastingHorizon methods to functions and avoid B019 error (#2364) @khrapovs

  • [ENH] AutoETS prediction intervals simplification (#2320) @fkiraly

  • [BUG] fixed get_time_index for most mtypes (#2380) @fkiraly

Transformations#

  • [BUG] TSInterpolator and nested_univ check fix (#2259) @fkiraly

  • [BUG][ENH] WindowSummarizer offset fix, easier lag specification (#2316) @danbartl

  • [BUG] FeatureUnion output column names fixed (#2324) @fkiraly

  • [ENH][BUG] fixes and implementations of missing inverse_transform in transformer compositions (#2322) @fkiraly

Documentation#

  • [DOC] fix 0.11.0 release note highlights formatting (#2310) @fkiraly

  • [DOC] typo fix contsructor -> constructor in extension templates (#2348) @fkiraly

  • [DPC] fixed the issue with 'docs/source/developer_guide/testing_framework.rst' (#2335) @0saurabh0

  • [DOC] Updated conda installation instructions (#2365) @RISHIKESHAVAN

  • [DOC] updated extension templates: link to docs and reference to check_estimator (#2303) @fkiraly

  • [DOC] Improved docstrings in forecasters (#2314) @fkiraly

  • [DOC] Added docstring examples to load data functions (#2393) @aiwalter

  • [DOC] Added platform badge to README (#2398) @aiwalter

  • [DOC] Add GSoC 2022 landing page and announcement (#2373) @lmmentel

  • [DOC] In interval_based_classification example notebook, use multivariate dataset for the multivariate examples (#1822) @ksachdeva

Contributors#

@0saurabh0, @aiwalter, @ciaran-g, @danbartl, @eenticott-shell, @fkiraly, @katiebuc, @khrapovs, @ksachdeva, @lmmentel, @ltsaprounis, @MatthewMiddlehurst, @NoaBenAmi, @RISHIKESHAVAN, @TNTran92

Version 0.11.0 - 2022-03-26#

Highlights#

  • multivariate forecasting, probabilistic forecasting section in forecasting tutorial (#2041) @kejsitake

  • hierarchical & global forecasting: forecaster and transformer interfaces are now compatible with hierarchical data, automatically vectorize over hierarchy levels (#2110, #2115, #2219) @danbartl @fkiraly

  • probabilistic forecasting: predict_var (variance forecast) and predict_proba (full distribution forecast) interfaces; performance metrics for interval and quantile forecasts (#2100, #2130, #2232) @eenticott-shell @fkiraly @kejsitake

  • dunder methods for transformer and classifier pipelines: write my_trafo1 * my_trafo2 for pipeline, my_trafo1 + my_trafo2 for FeatureUnion (#2090, #2251) @fkiraly

  • Frequently requested: AutoARIMA from statsforecast package available as StatsforecastAutoARIMA (#2251) @FedericoGarza

  • for extenders: detailed “creating sktime compatible estimator” guide

  • for extenders: simplified extension templates for forecasters and transformers (#2161) @fkiraly

Dependency changes#

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

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

  • new soft dependency: statsforecast (required for StatsforecastAutoARIMA)

Core interface changes#

Data types, checks, conversions#

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

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

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

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

Forecasting#

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

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

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

  • new probabilistic forecasting interface for probabilistic forecasts:

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

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

Time series classification#

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

Transformations#

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

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

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

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

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

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

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

Deprecations and removals#

Data types, checks, conversions#

Forecasting#

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

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

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

Transformations#

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

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

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

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

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

Enhancements#

Data types, checks, conversions#

  • [ENH] cutoff getter for Series, Panel, and Hierarchical mtypes (#2115) @fkiraly

  • [ENH] Gettimeindex to access index of hierarchical data (#2110) @danbartl

  • [ENH] datatypes support for interval and quantile based probabilistic predictions (#2130) @fkiraly

  • [ENH] sklearn typing util (#2208) @fkiraly

  • [ENH] Relaxing pd-multiindex mtype to allow string instance index (#2262) @fkiraly

Data sets and data loaders#

Clustering#

  • [ENH] tslearn added as soft dependency and used to add new clusterers. (#2048) @chrisholder

  • [ENH] Add user option to determine return type in single problem clustering/classification problems (#2139) @TonyBagnall

Distances, kernels#

  • [ENH] minor changes to Lcss distance (#2119) @TonyBagnall

  • [ENH] factory to add 3D capability to all distances exported by distances module (#2051) @fkiraly

Forecasting#

Time series classification#

Transformations#

  • [ENH] Univariate time series bootstrapping (#2065) @ltsaprounis

  • [ENH] changed FunctionTransformer._fit to common signature (#2205) @fkiraly

  • [ENH] Upgrade of BaseTransformer to use vectorization utility, hierarchical mtype compatibility (#2219) @fkiraly

  • [ENH] WindowSummarizer to deal with hierarchical data (#2154) @danbartl

  • [ENH] Transformer pipeline and dunder method (#2090) @fkiraly

  • [ENH] Tabular transformer adaptor “fit in transform” parameter (#2209) @fkiraly

  • [ENH] dunder pipelines sklearn estimator support (#2210) @fkiraly

Testing framework#

Governance#

Fixed#

  • [BUG] fixed state change caused by ThetaForecaster.predict_quantiles (#2108) @fkiraly

  • [BUG] _make_hierachical is renamed to _make_hierarchical (typo/bug) issue #2195 (#2196) @Vasudeva-bit

  • [BUG] fix wrong output type of PaddingTransformer._transform (#2217) @fkiraly

  • [BUG] fixing nested_dataframe_has_nans (#2216) @fkiraly

  • [BUG] Testing vectorization for forecasters, plus various bugfixes (#2188) @fkiraly

  • [BUG] fixed ignores-exogeneous-X tag for forecasting reducers (#2230) @fkiraly

  • [BUG] fixing STLBootstrapTransformer error message and docstrings (#2260) @fkiraly

  • [BUG] fix conversion interval->quantiles in BaseForecaster, and fix ARIMA.predict_interval (#2281) @fkiraly

  • [DOC] fix broken link to CoC (#2104) @mikofski

  • [BUG] Fix windows bug with index freq in VectorizedDF.__getitem__ (#2279) @ltsaprounis

  • [BUG] fixes duplication of Returns section in _predict_var docstring (#2306) @fkiraly

  • [BUG] Fixed bug with check_pdmultiindex_panel (#2092) @danbartl

  • [BUG] Fixed crash of kmeans, medoids when empty clusters are generated (#2060) @chrisholder

  • [BUG] Same cutoff typo-fix (#2193) @cdahlin

  • [BUG] Addressing doc build issue due to failed soft dependency imports (#2170) @fkiraly

  • Deprecation handling: sklearn 1.2 deprecation warnings (#2190) @hmtbgc

  • Deprecation handling: Replacing normalize by use of StandardScaler (#2167) @KishenSharma6

Documentation#

  • [DOC] forecaster tutorial: multivariate forecasting, probabilistic forecasting (#2041) @kejsitake

  • [DOC] New estimator implementation guide (#2186) @fkiraly

  • [DOC] simplified extension templates for transformers and forecasters (#2161) @fkiraly

  • [DOC] contributing page: concrete initial steps (#2227) @fkiraly

  • [DOC] adding “troubleshooting” link in sktime installation instructions (#2121) @eenticott-shell

  • [DOC] enhance distance doc strings (#2122) @TonyBagnall

  • [DOC] updated soft dependency docs with two tier check (#2182) @fkiraly

  • [DOC] replace gitter mentions by appropriate links, references (#2187) @TonyBagnall

  • [DOC] updated the environments doc with python version for sktime, added python 3.9 (#2199) @Vasudeva-bit

  • [DOC] Replaced youtube link with recent PyData Global (#2191) @aiwalter

  • [DOC] extended & cleaned docs on dependency handling (#2189) @fkiraly

  • [DOC] migrating mentoring form to sktime google docs (#2222) @fkiraly

  • [DOC] add scitype/mtype register pointers to docstrings in datatypes (#2160) @fkiraly

  • [DOC] improved docstrings for HIVE-COTE v1.0 (#2239) @TonyBagnall

  • [DOC] typo fix and minor clarification in estimator implementation guide (#2241) @fkiraly

  • [DOC] numpydoc compliance fix of simple forecasting extension template (#2284) @fkiraly

  • [DOC] typos in developer_guide.rst (#2131) @theanorak

  • [DOC] fix broken link to CoC (#2104) @mikofski

  • [DOC] minor update to tutorials (#2114) @ciaran-g

  • [DOC] various minor doc issues (#2168) @aiwalter

Maintenance#

  • [MNT] Update release drafter (#2096) @lmmentel

  • speed up EE tests and ColumnEnsemble example (#2124) @TonyBagnall

  • [MNT] add xfails in test_plotting until #2066 is resolved (#2144) @fkiraly

  • [MNT] add skips to entirety of test_plotting until #2066 is resolved (#2147) @fkiraly

  • [ENH] improved deep_equals return message if dict`s are discrepant (:pr:`2107) @fkiraly

  • [BUG] Addressing doc build issue due to failed soft dependency imports (#2170) @fkiraly

  • [ENH] extending deep_equals for ForecastingHorizon (#2225) @fkiraly

  • [ENH] unit tests for deep_equals utility (#2226) @fkiraly

  • [MNT] Faster docstring examples - ForecastingGridSearchCV, MultiplexForecaster (#2229) @fkiraly

  • [BUG] remove test for StratifiedGroupKFold (#2244) @TonyBagnall

  • [ENH] Classifier type hints (#2246) @MatthewMiddlehurst

  • Updated pre-commit link and also grammatically updated Coding Style docs (#2285) @Tomiiwa

  • Update .all-contributorsrc (#2286) @Tomiiwa

  • [ENH] Mock estimators and mock estimator generators for testing (#2197) @ltsaprounis

  • [MNT] Deprecation removal 0.11.0 (#2271) @fkiraly

  • [BUG] fixing pyproject and jinja2 CI failures (#2299) @fkiraly

  • [DOC] Update PULL_REQUEST_TEMPLATE.md so PRs should start with [ENH], [DOC] or [BUG] in title (#2293) @aiwalter

  • [MNT] add skips in test_plotting until #2066 is resolved (#2146) @fkiraly

Refactored#

Contributors#

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

[0.10.1] - 2022-02-20#

Highlights#

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

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

  • New forecaster: STLForecaster (#1963) @aiwalter

  • New transformer: lagged window summarizer transformation (#1924) @danbartl

  • Loaders for .tsf data format (#1934) @rakshitha123

Dependency changes#

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

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

Added#

Documentation#

Data sets and data loaders#

Data types, checks, conversions#

  • [ENH] convert store reset/freeze behaviour & fix of bug 1976 (#1977) @fkiraly

  • [ENH] new Table mtypes: pd.Series based, list of dict (as used in bag of words transformers) (#2076) @fkiraly`

Forecasting#

  • [ENH] Added STLForecaster (#1963) @aiwalter

  • [ENH] moving forecaster test params from _config into classes - all forecasters excluding reduction (#1902) @fkiraly

Transformations#

Maintenance#

Fixed#

Contributors#

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

[0.10.0] - 2022-02-02#

Highlights#

Dependency changes#

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

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

  • sktime Prophet interface now uses prophet instead of deprecated fbprophet

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

Core interface changes#

Forecasting#

New probabilistic forecasting interface for quantiles and predictive intervals:

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

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

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

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

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

  • see forecaster base API and forecaster extension template

Convenience method to return residuals:

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

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

Transformations#

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

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

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

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

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

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

  • see transformer base API and transformer extension template

Deprecations and removals#

Data types, checks, conversions#

  • deprecated, scheduled for removal in 0.11.0: check_is renamed to check_is_mtype, check_is to be removed in 0.11.0 (#1692) @mloning

Forecasting#

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

Time series classification#

Transformations#

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

Added#

Documentation#

Data types, checks, conversions#

  • [ENH] check_is_scitype, cleaning up dists_kernels input checks/conversions (#1704) @fkiraly

  • [ENH] Table scitype and refactor of convert module (#1745) @fkiraly

  • [ENH] estimator scitype utility (#1838) @fkiraly

  • [ENH] experimental: hierarchical time series scitype hierarchical_scitype (#1786) @fkiraly

  • [ENH] upgraded mtype_to_scitype to list-like args (#1807) @fkiraly

  • [ENH] check_is_mtype to return scitype (#1789) @fkiraly

  • [ENH] vectorization/iteration utility for sktime time series formats (#1806) @fkiraly

Data sets and data loaders#

Clustering#

Distances, kernels#

  • [ENH] Composable distances interface prototype for numba distance module (#1858) @fkiraly

Forecasting#

  • [ENH] Scaled Logit Transformer (#1913, #1965) @ltsaprounis.

  • [ENH] add fit parameters to statsmodels Holt-Winters exponential smoothing interface (#1849) @fkiraly

  • [ENH] Add predict_quantiles to FBprophet (#1910) @kejsitake

  • [ENH] Add `predict_quantiles to ets, pmdarima adapter (#1874) @kejsitake

  • [ENH] Defaults for _predict_interval and _predict_coverage (#1879, #1961) @fkiraly

  • [ENH] refactored column ensemble forecaster (#1764) @Aparna-Sakshi

  • [ENH] Forecaster convenience method to return forecast residuals (#1770) @fkiraly

  • [ENH] Update extension template for predict_quantiles (#1780) @kejsitake

  • [ENH] Prediction intervals refactor: BATS/TBATS; bugfix for #1625; base class updates on predict_quantiles (#1842) @k1m190r

  • [ENH] Change _set_fh to a _check_fh that returns self._fh (#1823) @fkiraly

  • [ENH] Generalize splitters to accept timedeltas (equally spaced) (#1758) @khrapovs

Time series classification#

Transformations#

  • [ENH] Transformers module full refactor - part I, series module (#1795) @fkiraly

  • [ENH] Transformer base class DRY-ing, and inverse_transform (#1790) @fkiraly

  • [ENH] transformer base class to allow multivariate output if input is always univariate (#1706) @fkiraly

Testing module#

  • [ENH] Test refactor with scenarios (#1833) @fkiraly

  • [ENH] Test scenarios for advanced testing (#1819) @fkiraly

  • [ENH] pytest conditional fixtures (#1839) @fkiraly

  • [ENH] Test enhacements documentation (#1922) @fkiraly

  • [ENH] split tests in series_as_features into classification and regression (#1959) @tonybagnall

  • [ENH] Testing for metadata returns of check_is_mtype (#1748) @fkiraly

  • [ENH] Extended deep_equals, with precise indication of why equality fails (#1844) @fkiraly

  • [ENH] test for test_create_test_instances_and_names fixture generation method (#1829) @fkiraly

  • [ENH] Utils module housekeeping varia utils-housekeeping (#1820) @fkiraly

  • [ENH] Extend testing framework to test multiple instance fixtures per estimator (#1732) @fkiraly

Governance#

Maintenance#

  • [MNT] Switch the extra dependency from fbprophet to prophet (#1958) @lmmentel

  • [MNT] Updated code dependency version, i.e. numpy and statsmodels to reduce dependency conflicts (#1921) @lmmentel

  • [MNT] Move all the CI/CD worfklows over to github actions and drop azure pipelines and appveyor (#1620, #1920) @lmemntel

  • [MNT] Refactor legacy test config (#1792) @lmmentel

  • [FIX] Add missing init files (#1695) @mloning

  • [MNT] Add shellcheck to pre-commit (#1703) @mloning

  • [MNT] Remove assign-contributor workflow (#1702) @mloning

  • [MNT] Fail CI on missing init files (#1699) @mloning

  • [ENH] replace deprecated np.int, np.float (#1734) @fkiraly

  • [MNT] Correct the bash error propagation for running notebook examples (#1816) @lmmentel

Fixed#

  • [DOC] Fixed a typo in transformer extension template (#1901) @rakshitha123

  • [DOC] Fix typo in Setting up a development environment section (#1872) @shubhamkarande13

  • [BUG] Fix incorrect “uses X” tag for ARIMA and TrendForecaster (#1895) @ngupta23

  • [BUG] fix error when concatenating train and test (#1892) @tonybagnall

  • [BUG] Knn bugfix to allow GridsearchCV and usage with column ensemble (#1903) @tonybagnall

  • [BUG] Fixes various bugs in DrCIF, STSF, MUSE, Catch22 (#1869) @MatthewMiddlehurst

  • [BUG] fixing mixup of internal variables in detrender (#1863) @fkiraly

  • [BUG] transformer base class changes and bugfixes (#1855) @fkiraly

  • [BUG] fixed erroneous index coercion in convert_align_to_align_loc (#1911) @fkiraly

  • [BUG] bugfixes for various bugs discovered in scenario testing (#1846) @fkiraly

  • [BUG] 1523 fixing ForecastHorizon.to_absolute for freqs with anchorings (#1830) @eenticott-shell

  • [BUG] remove duplicated input checks from BaseClassifier.score (#1813) @fkiraly

  • [BUG] fixed mtype return field in check_is_scitype (#1805) @fkiraly

  • [BUG] fix fh -> self.fh in predict_interval and predict_quantiles (#1775) @fkiraly

  • [BUG] fix incorrect docstrings and resolving confusion unequal length/spaced in panel metadata inference (#1768) @fkiraly

  • [BUG] hotfix for bug when passing multivariate y to boxcox transformer (#1724) @fkiraly

  • [BUG] fixes CIF breaking with CIT, added preventative test (#1709) @MatthewMiddlehurst

  • [BUG] Correct the examples/catch22.ipynb call to transform_single_feature (#1793) @lmmentel

  • [BUG] Fixes prophet bug concerning the internal change of exogenous X (#1711) @kejsitake

  • [BUG] Fix DeprecationWarning of pd.Series in sktime/utils/tests/test_datetime.py:21 (#1743) @khrapovs

  • [BUG] bugfixes in BaseClassifier, updated base class docstrings (#1804) @fkiraly

Contributors#

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

[0.9.0] - 2021-12-08#

Highlights#

  • frequently requested: AutoARIMA get_fitted_params access for fitted order and seasonal order (#1641) @AngelPone

  • Numba distance module - efficient time series distances (#1574) @chrisholder

  • Transformers base interface refactor - default vectorization to panel data @fkiraly

  • new experimental module: Time series alignment, dtw-python interface (#1264) @fkiraly

Core interface changes#

Data types, checks, conversions#

  • check_is renamed to check_is_mtype, check_is to be deprecated in 0.10.0 (#1692) @mloning

Time series classification#

  • time series classifiers now accept 2D np.ndarray by conversion to 3D rather than throwing exception (#1604) @TonyBagnall

Transformations#

Base interface refactor (#1365, #1663, #1706):

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

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

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

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

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

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

  • see new transformer extension template

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

New deprecations for 0.10.0#

Data types, checks, conversions#

  • check_is renamed to check_is_mtype, check_is to be deprecated in 0.10.0 (#1692) @mloning

Time series classification#

Transformations#

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

Added#

Documentation#

Data types, checks, conversions#

  • [ENH] added check_is_scitype for scitype checks, cleaning up dists_kernels input checks/conversions (#1704) @fkiraly

Forecasting#

  • [ENH] Auto-ETS checks models to select from based on non-negativity of data (#1615) @chernika158

  • [DOC] meta-tuning examples for docstring of ForecastingGridSearchCV (#1656) @aiwalter

Time series alignment#

  • [ENH] new module: time series alignment; alignment distances (#1264) @fkiraly

Time series classification#

Time series distances#

Governance#

Maintenance#

Fixed#

Estimator registry#

  • [BUG] Fixes to registry look-up, test suite for registry look-up (#1648) @fkiraly

Forecasting#

  • [BUG] Facebook prophet side effects on exogenous data X (#1711) @kejsitake

  • [BUG] fixing bug for _split, accidental removal of pandas.Index support (#1582) @fkiraly

  • [BUG] Fix convert and _split for Numpy 1D input (#1650) @fkiraly

  • [BUG] issue with update_y_X when we refit forecaster by (#1595) @ltsaprounis

Performance metrics, evaluation#

Time series alignment#

Time series classification#

Transformations#

Maintenance#

Contributors#

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

Full changelog#

https://github.com/alan-turing-institute/sktime/compare/v0.8.1…v0.9.0

[0.8.1] - 2021-10-28#

Highlights#

New deprecations for 0.10.0#

Forecasting#

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

Core interface changes#

Forecasting#

  • new interface points for probabilistic forecasting, predict_interval and predict_quantiles (#1421) @SveaMeyer13

  • changed forecasting univariate-only tag to ignores-exogeneous-X (#1358) @fkiraly

Added#

BaseEstimator/BaseObject#

Forecasting#

Time series classification#

Transformers#

Annotation: change-points, segmentation#

  • Clasp for time series segmentation (CIKM’21 publication) (#1352) @patrickzib

Documentation#

Governance#

Testing framework#

  • Tests refactor: using pytest_generate_tests instead of loops (#1407) @fkiraly

  • Tests refactor: Adding get_test_params method to extension template (#1395) @Aparna-Sakshi

  • Changed defaults in make_forecasting_problem (#1477) @aiwalter

Fixed#

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

[0.8.0] - 2021-09-17#

Highlights#

Core interface changes#

BaseEstimator/BaseObject#

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

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

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

In-memory data types#

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

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

Forecasting#

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

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

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

  • further tags have been introduced, see registry/all_tags

Time series classification#

  • tags have been introduced, see registry/all_tags

Added#

Forecasting#

Time series classification#

Transformers#

Benchmarking and evaluation#

Documentation#

Testing framework#

  • unit test for absence of side effects in estimator methods (#1078) @fkiraly

Fixed#

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

[0.7.0] - 2021-07-12#

Added#

Changed#

Fixed#

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

[0.6.1] - 2021-05-14#

Fixed#

Changed#

Added#

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

[0.6.0] - 2021-04-15#

Fixed#

Changed#

Added#

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

[0.5.3] - 2021-02-06#

Fixed#

Changed#

Added#

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

[0.5.2] - 2021-01-13#

Fixed#

All contributors: @Hephaest, @MatthewMiddlehurst, @TonyBagnall, @aiwalter and @dhirschfeld

[0.5.1] - 2020-12-29#

Added#

Fixed#

  • Pin pandas version to fix pandas-related AutoETS error on Linux (#581) @mloning

  • Fixed default argument in docstring in SlidingWindowSplitter (#556) @ngupta23

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

[0.5.0] - 2020-12-19#

Added#

Changed#

Fixed#

Removed#

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

[0.4.3] - 2020-10-20#

Added#

Changed#

Fixed#

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

[0.4.2] - 2020-10-01#

Added#

Fixed#

Changed#

  • Move documentation to ReadTheDocs with support for versioned documentation (#395) @mloning

  • Refactored SFA implementation (additional features and speed improvements) (#389) @patrickzib

  • Move prediction interval API to base classes in forecasting framework (#387) @big-o

  • Documentation improvements (#364) @mloning

  • Update CI and maintenance tools (#394) @mloning

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

[0.4.1] - 2020-07-09#

Added#

Changed#

Fixed#

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

[0.4.0] - 2020-06-05#

Added#

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

  • Consistent unit testing of all estimators

  • Consistent input checks

  • Enforced PEP8 linting via flake8

  • Changelog

  • Support for Python 3.8

  • Support for manylinux wheels

Changed#

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

Removed#

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

  • HomogeneousColumnEnsembleClassifier in favour of more flexible ColumnEnsembleClassifier

Fixed#

  • Deprecation and future warnings from scikit-learn

  • User warnings from statsmodels