Changelog#

All notable changes to this project beggining with version 0.1.0 will be documented in this file. The format is based on Keep a Changelog and we adhere to Semantic Versioning. The source code for all releases is available on GitHub.

You can also subscribe to skpro’s PyPi release.

For planned changes and upcoming releases, see roadmap in the issue tracker.

[2.2.2] - 2024-04-20#

Highlights#

  • lifelines predictive survival regressors are available as skpro estimators: accelerated failure time (Fisk, Log-normal, Weibull), CoxPH variants, Aalen additive model (#247, #258, #260) @fkiraly

  • scikit-survival predictive survival regressors are available as skpro estimators: CoxPH variants, CoxNet, survival tree and forest, survival gradient boosting (#237) @fkiraly

  • GLM regressor using statsmodels GLM, with Gaussian link (#222) @julian-fong

  • various survival type distributions added: log-normal, logistic, Fisk (=log-logistic), Weibull (#218, #241, #242, #259) @bhavikar, @malikrafsan, @fkiraly

  • Poisson distribution added (#226) @fkiraly

Core interface changes#

Probability distributions#

  • Probability distributions (BaseDistribution) now have a len method, which returns the number of number of rows of the distribution, this is the same as the len of a pd.DataFrame returned by sample.

  • the interface now supports discrete distributions and those with integer support. Such distributions implement pmf and log_pmf methods.

Enhancements#

Probability distributions#

Probabilistic regression#

  • [ENH] GLMRegressor using statsmodels GLM with Gaussian link (#222) @julian-fong

  • [ENH] added test parameters for probabilistic metrics (#234) @fkiraly

Survival and time-to-event prediction#

  • [ENH] adapter to scikit-survival, all distributional survival regressors interfaced (#237) @fkiraly

  • [ENH] adapter to lifelines, most distributional survival regressors interfaced (#247) @fkiraly

  • [ENH] log-normal AFT model from lifelines (#258) @fkiraly

  • [ENH] log-logistic/Fisk AFT model from lifelines (#260) @fkiraly

Test framework#

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

Fixes#

Probability distributions#

  • [BUG] bugfixes to QPD distributions - QPD_U, QPD_S (#194) @fkiraly

  • [BUG] fixes to lognormal distribution (#261) @fkiraly

Documentation#

Maintenance#

  • [MNT] fix version pointer in readthedocs json (#225) @fkiraly

  • [MNT] fix broken api source links in latest docs version (#243) @duydl

Contributors#

@bhavikar, @duydl, @fkiraly, @julian-fong, @malikrafsan

[2.2.1] - 2024-03-03#

Minor bugfix and maintenance release.

Contents#

  • [ENH] migrate tests of distribution prediction metrics to skbase class (#208) @fkiraly

  • [BUG] fix dispatching of censoring information in probabilistic metrics (#208) @fkiraly

  • [BUG] fix missing location/scale in TDistribution (#210) @ivarzap

[2.2.0] - 2024-02-08#

Highlights#

Dependency changes#

  • pandas bounds have been updated to >=1.1.0,<2.3.0.

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 skpro proper and compatible third party packages. It is also used to generate mini-package headers used in lookup functionality of the skpro webpage.

  • the model_selection and benchmarking utilities now support abstract parallelization backends via the backend and backend_params arguments. This has been standardized to use the same backend options and syntax as the abstract parallelization backend in sktime.

Probabilistic regression#

  • all probabilistic regressors now accept an argument C in fit, to pass censoring information. This is for API compatibility with survival and is ignored when passed to non-survival regressors, corresponding to the naive reduction strategy of “ignoring censoring information”.

  • existing pipelines, tuners and ensemble methods have been extended to support survival prediction - if C if passed, it is passed to the underlying components.

Survival and time-to-event prediction#

  • support for probabilistic survival or time-to-event prediction estimators with right censored data has been introduced. The interface and base class is identical to the tabular probabilistic regression interface, with the addition of a C argument to the fit methods. Regressors that genuinely support survival prediction have the capability: survival tag set to True in their metadata.

  • an extension template for survival prediction has been added to the skpro extension templates, in extension_templates

  • the interface for probabilistic performance metrics has been extended to also accept censoring information, which can be passed via the optional C_true argument, to all performance metrics. Metrics genuinely supporting survival prediction have the capability: survival tag set to True. Other metrics still take the C_true argument, but ignore it. This corresponds to the naive reduction strategy of “ignoring censoring information”.

  • for pipelining and tuning, the existing compositors in model_selection and regression.compose can be used, see above.

  • for benchmarking, the existing benchmarking framework in benchmarking can be used, it has been extended to support survival prediction and censoring information.

Enhancements#

  • [ENH] author and maintainer tags, tags documented in regressor extension template (#187) @fkiraly

Probability distributions#

Probabilistic regression#

Survival and time-to-event prediction#

  • [ENH] support for survival/time-to-event prediction, statsmodels Cox PH model (#157) @fkiraly

  • [ENH] survival prediction compositor - reducers to tabular probabilistic regression (#161) @fkiraly

  • [ENH] survival prediction metrics - framework support and tests, SPLL, Harrell C (#198) @fkiraly

Fixes#

Probabilistic regression#

  • [BUG] fix API non-compliance in sklearn variance prediction adapter (#192) @fkiraly

  • [BUG] fix defaulting logic for _predict_interval and _predict_quantiles when only _predict_var is implemented (#191) @fkiraly

  • [BUG] fix CyclicBoosting._predict_quantiles (#195) @fkiraly

  • [BUG] fix fallback for pdfnorm method, add metrics to tests (#204) @fkiraly

Test framework#

  • [BUG] fix lookup for specialized test classes (#189) @fkiraly

Documentation#

Maintenance#

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

  • [MNT] skip CyclicBoosting and QPD tests until #189 failures are resolved (#193) @fkiraly

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

  • [MNT] [Dependabot](deps): Bump codecov/codecov-action from 3 to 4 by (#201) @dependabot

  • [MNT] [Dependabot](deps): Bump pre-commit/action from 3.0.0 to 3.0.1 (#202) @dependabot

Contributors#

@FelixWick, @fkiraly, @hazrulakmal, @setoguchi-naoki

[2.1.3] - 2023-01-22#

sklearn compatibility update:

  • compatibility with sklearn 1.4.X

  • addition of feature_names_in_ and n_features_in_ default attributes to BaseProbaRegressor, written to self in fit

  • sklearn bounds have been updated to <1.4.0,>=0.24.0.

  • probabilistic regressors will now always save attributes feature_names_in_ and n_features_in_ to self in fit. feature_names_in_ is an 1D np.ndarray of feature names seen in fit, n_features_in_ is an int, and equal to len(feature_names_in_).

  • this ensures compatibility with sklearn, where these attributes are expected.

  • the new attributes can also be queried via the existing get_fitted_params interface.

Enhancements#

  • [ENH] in BaseRegressorProba.fit, use "feature_names" metadata field to store feature names and write to self in fit (#180) @dependabot

Maintenance#

  • [MNT] [Dependabot](deps): Bump actions/dependency-review-action from 3 to 4 (#178) @dependabot

  • [MNT] [Dependabot](deps-dev): Update polars requirement from <0.20.0 to <0.21.0 (#176) @dependabot

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

  • [MNT] [Dependabot](deps-dev): Update scikit-learn requirement from <1.4.0,>=0.24.0 to >=0.24.0,<1.5.0 (#177) @dependabot

[2.1.2] - 2024-01-07#

Highlights#

  • sklearn based probabilistic regressors - Gaussian processes, Bayesian linear regression (#166) @fkiraly

  • SklearnProbaReg - general interface adapter to sklearn regressors with variance prediction model (#163) @fkiraly

Dependency changes#

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

  • polars (data container soft dependency) bounds have been updated to allow python 3.12.

Enhancements#

Data types, checks, conversions#

  • [ENH] n_features and feature_names metadata field for table mtypes (#150) @fkiraly

  • [ENH] check_is_mtype dict type return, improved input check error messages in BaseRegressorProba (#151) @fkiraly

Probability distributions#

  • [ENH] adapter from scipy rv_discrete to skpro Empirical (#155) @fkiraly

Probabilistic regression#

  • [ENH] sklearn wrappers to str-coerce columns of pd.DataFrame before passing (#148) @fkiraly

  • [ENH] clean up copy-paste leftovers in BaseProbaRegressor (#156) @fkiraly

  • [ENH] adapter for sklearn probabilistic regressors (#163) @fkiraly

  • [ENH] add tags to SklearnProbaReg (#168) @fkiraly

  • [ENH] interfacing all concrete sklearn probabilistic regressors (#166) @fkiraly

Test framework#

  • [ENH] scenario tests for mixed pandas column index types (#145) @fkiraly

  • [ENH] scitype inference utility, test class register, test class test condition (#159) @fkiraly

Fixes#

Probabilistic regression#

  • [BUG] in probabilistic regressors, ensure correct index treatment if X: pd.DataFrame and y: np.ndarray are passed (#146) @fkiraly

Documentation#

Maintenance#

  • [MNT] [Dependabot](deps): Bump actions/upload-artifact from 3 to 4 (#154) @dependabot

  • [MNT] [Dependabot](deps): Bump actions/download-artifact from 3 to 4 (#153) @dependabot

  • [MNT] [Dependabot](deps): Bump actions/setup-python from 4 to 5 (#152) @dependabot

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

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

  • [MNT] adding codecov.yml and turning coverage reports informational (#165) @fkiraly

  • [MNT] handle deprecation of pandas.DataFrame.applymap (#170) @fkiraly

  • [MNT] handle polars deprecations (#171) @fkiraly

[2.1.1] - 2023-11-02#

Highlights#

  • probabilistic regressor: multiple quantile regression (#108) @Ram0nB

  • probabilistic regressor: interface to MapieRegressor from mapie package (#136) @fkiraly

  • framework support for polars via mtypes (#130) @fkiraly

Enhancements#

Data types, checks, conversions#

Probabilistic regression#

  • [ENH] probabilistic regressors - input checks and support for more input types (#129) @fkiraly

  • [ENH] multiple quantile regression (#108) @Ram0nB

  • [ENH] interface MapieRegressor from mapie (#136) @fkiraly

Test framework#

  • [ENH] integrate check_estimator with TestAllEstimators and TestAllRegressors for python command line estimator testing (#138) @fkiraly

  • [ENH] improved conditional testing (#140) @fkiraly

Documentation#

  • [DOC] fix math in plotting docstrings (#121) @fkiraly

  • [DOC] improved probabilistic tabular regressor extension template (#137) @fkiraly

  • [DOC] typo fixes in regression extension template (#139) @fkiraly

Maintenance#

  • [MNT] point readthedocs json switcher variable to GitHub (#125) @fkiraly

  • [MNT] change test OS versions to latest (#126) @fkiraly

Fixes#

  • [BUG] fix test fixture generation logic (#142) @fkiraly

  • [BUG] fix retrieval in all_objects if filter_tags is provided (#141) @fkiraly

Contributors#

@fkiraly, @Ram0nB

[2.1.0] - 2023-10-09#

Python 3.12 compatibility release.

Contents#

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

  • [MNT] Python 3.12 support - for skpro release 2.1.0 (#109) @fkiraly

[2.0.1] - 2023-10-08#

Release with minor maintenance actions and enhancements.

Enhancements#

  • [ENH] basic “test all estimators” suite (#89) @fkiraly

Documentation#

Maintenance#

  • [MNT] address deprecation of skbase.testing.utils.deep_equals (#111) @fkiraly

  • [MNT] activate dependabot for version updates and maintenance (#110) @fkiraly

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

  • [MNT] [Dependabot](deps): Bump actions/dependency-review-action from 1 to 3 (#114) @dependabot

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

  • [MNT] [Dependabot](deps): Bump actions/download-artifact from 2 to 3 (#116) @dependabot

  • [MNT] [Dependabot](deps): Bump actions/upload-artifact from 2 to 3 (#117) @dependabot

[2.0.0] - 2023-09-13#

Re-release of skpro, newly rearchitected using skbase!

Try out skpro v2 on Binder!

Contributions, bug reports, and feature requests are welcome on the issue tracker

or on the community Discord.

Contributors#

@Alex-JG3, @fkiraly, @frthjf

[1.0.1] - 2019-02-18#

First stable release of skpro, last release before hiatus.

[1.0.0b] - 2017-12-08#

First public release (beta) of skpro.