=========
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 (:pr:`247`, :pr:`258`, :pr:`260`) :user:`fkiraly`
* ``scikit-survival`` predictive survival regressors are available as ``skpro`` estimators:
CoxPH variants, CoxNet, survival tree and forest, survival gradient boosting (:pr:`237`) :user:`fkiraly`
* GLM regressor using ``statsmodels`` ``GLM``, with Gaussian link (:pr:`222`) :user:`julian-fong`
* various survival type distributions added: log-normal, logistic, Fisk (=log-logistic), Weibull
(:pr:`218`, :pr:`241`, :pr:`242`, :pr:`259`) :user:`bhavikar`, :user:`malikrafsan`, :user:`fkiraly`
* Poisson distribution added (:pr:`226`) :user:`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
~~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] Log-normal probability distribution (:pr:`218`) :user:`bhavikar`
* [ENH] Poisson distribution (:pr:`226`) :user:`fkiraly`
* [ENH] make ``Empirical`` distribution compatible with multi-index rows (:pr:`233`) :user:`fkiraly`
* [ENH] empirical quantile parameterized distribution (:pr:`236`) :user:`fkiraly`
* [ENH] add ``len`` of ``BaseDistribution``, test ``shape``, ``len``, indices (:pr:`239`) :user:`fkiraly`
* [ENH] Logistic distribution (:pr:`241`) :user:`malikrafsan`
* [ENH] Weibull distribution (:pr:`242`) :user:`malikrafsan`
* [ENH] delegator class for distributions (:pr:`252`) :user:`fkiraly`
* [ENH] Johnson QP-distributions - add some missing capability tags (:pr:`253`) :user:`fkiraly`
* [ENH] remove stray ``_get_bc_params`` from ``LogNormal`` (:pr:`256`) :user:`fkiraly`
* [ENH] Fisk distribution aka log-logistic distribution (:pr:`259`) :user:`fkiraly`
Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] ``GLMRegressor`` using statsmodels ``GLM`` with Gaussian link (:pr:`222`) :user:`julian-fong`
* [ENH] added test parameters for probabilistic metrics (:pr:`234`) :user:`fkiraly`
Survival and time-to-event prediction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] adapter to ``scikit-survival``, all distributional survival regressors interfaced (:pr:`237`) :user:`fkiraly`
* [ENH] adapter to ``lifelines``, most distributional survival regressors interfaced (:pr:`247`) :user:`fkiraly`
* [ENH] log-normal AFT model from ``lifelines`` (:pr:`258`) :user:`fkiraly`
* [ENH] log-logistic/Fisk AFT model from ``lifelines`` (:pr:`260`) :user:`fkiraly`
Test framework
~~~~~~~~~~~~~~
* [ENH] refactor test scenario creation to be lazy rather than on module load (:pr:`245`) :user:`fkiraly`
Fixes
-----
Probability distributions
~~~~~~~~~~~~~~~~~~~~~~~~~
* [BUG] bugfixes to QPD distributions - ``QPD_U``, ``QPD_S`` (:pr:`194`) :user:`fkiraly`
* [BUG] fixes to lognormal distribution (:pr:`261`) :user:`fkiraly`
Documentation
-------------
* [DOC] documentation improvement for probabilistic metrics (:pr:`234`) :user:`fkiraly`
* [DOC] add :user:`julian-fong` to ``all-contributorsrc`` (:pr:`238`) :user:`fkiraly`
* [DOC] docstring with mathematical description for ``QPD_Empirical`` (:pr:`253`) :user:`fkiraly`
Maintenance
-----------
* [MNT] fix version pointer in readthedocs ``json`` (:pr:`225`) :user:`fkiraly`
* [MNT] fix broken api source links in latest docs version (:pr:`243`) :user:`duydl`
Contributors
------------
:user:`bhavikar`,
:user:`duydl`,
:user:`fkiraly`,
:user:`julian-fong`,
:user:`malikrafsan`
[2.2.1] - 2024-03-03
====================
Minor bugfix and maintenance release.
Contents
--------
* [ENH] migrate tests of distribution prediction metrics to ``skbase`` class
(:pr:`208`) :user:`fkiraly`
* [BUG] fix dispatching of censoring information in probabilistic metrics
(:pr:`208`) :user:`fkiraly`
* [BUG] fix missing location/scale in ``TDistribution`` (:pr:`210`) :user:`ivarzap`
[2.2.0] - 2024-02-08
====================
Highlights
----------
* interface to ``cyclic_boosting`` package (:pr:`144`) :user:`setoguchi-naoki`, :user:`FelixWick`
* framework support for probabilistic survival/time-to-event prediction with right censored data (:pr:`157`) :user:`fkiraly`
* basic set of time-to-event prediction estimators and survival prediction metrics (:pr:`161`, :pr:`198`) :user:`fkiraly`
* Johnson Quantile-Parameterized Distributions (QPD) with bounded and unbounded mode (:pr:`144`) :user:`setoguchi-naoki`, :user:`FelixWick`
* abstract parallelization backend, for benchmarking and tuning (:pr:`160`) :user:`fkiraly`, :user:`hazrulakmal`
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
------------
BaseObject and base framework
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* [ENH] author and maintainer tags, tags documented in regressor extension template
(:pr:`187`) :user:`fkiraly`
Probability distributions
~~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] Johnson Quantile-Parameterized Distributions (QPD) with bounded and
unbounded mode (:pr:`144`) :user:`setoguchi-naoki`, :user:`FelixWick`
Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] Cyclic boosting interface (:pr:`144`) :user:`setoguchi-naoki`, :user:`FelixWick`
* [ENH] abstract parallelization backend, refactor of ``evaluate`` and tuners,
extend evaluate and tuners to survival predictors (:pr:`160`) :user:`fkiraly`, :user:`hazrulakmal`
Survival and time-to-event prediction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] support for survival/time-to-event prediction, statsmodels Cox PH model
(:pr:`157`) :user:`fkiraly`
* [ENH] survival prediction compositor - reducers to tabular probabilistic regression
(:pr:`161`) :user:`fkiraly`
* [ENH] survival prediction metrics - framework support and tests, SPLL, Harrell C
(:pr:`198`) :user:`fkiraly`
Fixes
-----
Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~
* [BUG] fix API non-compliance in ``sklearn`` variance prediction adapter (:pr:`192`) :user:`fkiraly`
* [BUG] fix defaulting logic for ``_predict_interval`` and ``_predict_quantiles`` when only ``_predict_var`` is implemented (:pr:`191`) :user:`fkiraly`
* [BUG] fix ``CyclicBoosting._predict_quantiles`` (:pr:`195`) :user:`fkiraly`
* [BUG] fix fallback for ``pdfnorm`` method, add metrics to tests (:pr:`204`) :user:`fkiraly`
Test framework
~~~~~~~~~~~~~~
* [BUG] fix lookup for specialized test classes (:pr:`189`) :user:`fkiraly`
Documentation
-------------
* [DOC] API reference for performance metrics (:pr:`206`) :user:`fkiraly`
* [DOC] README update for 2.2.0 (:pr:`207`) :user:`fkiraly`
Maintenance
-----------
* [MNT] [Dependabot](deps): Bump styfle/cancel-workflow-action from ``0.12.0`` to ``0.12.1`` (:pr:`183`) :user:`dependabot`
* [MNT] skip ``CyclicBoosting`` and QPD tests until #189 failures are resolved (:pr:`193`) :user:`fkiraly`
* [MNT] [Dependabot](deps-dev): Update pandas requirement from ``<2.2.0,>=1.1.0`` to ``>=1.1.0,<2.3.0`` (:pr:`182`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump codecov/codecov-action from 3 to 4 by (:pr:`201`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump pre-commit/action from ``3.0.0`` to ``3.0.1`` (:pr:`202`) :user:`dependabot`
Contributors
------------
:user:`FelixWick`,
:user:`fkiraly`,
:user:`hazrulakmal`,
:user:`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``
Dependency changes
~~~~~~~~~~~~~~~~~~
* ``sklearn`` bounds have been updated to ``<1.4.0,>=0.24.0``.
Core interface changes
~~~~~~~~~~~~~~~~~~~~~~
Probabilistic regression
^^^^^^^^^^^^^^^^^^^^^^^^
* 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`` (:pr:`180`) :user:`dependabot`
Maintenance
-----------
* [MNT] [Dependabot](deps): Bump ``actions/dependency-review-action``
from 3 to 4 (:pr:`178`) :user:`dependabot`
* [MNT] [Dependabot](deps-dev): Update polars requirement from ``<0.20.0``
to ``<0.21.0`` (:pr:`176`) :user:`dependabot`
* [MNT] [Dependabot](deps-dev): Update ``sphinx-issues`` requirement
from ``<4.0.0`` to ``<5.0.0`` (:pr:`179`) :user:`dependabot`
* [MNT] [Dependabot](deps-dev): Update ``scikit-learn`` requirement
from ``<1.4.0,>=0.24.0`` to ``>=0.24.0,<1.5.0`` (:pr:`177`) :user:`dependabot`
[2.1.2] - 2024-01-07
====================
Highlights
----------
* ``sklearn`` based probabilistic regressors - Gaussian processes, Bayesian linear regression (:pr:`166`) :user:`fkiraly`
* ``SklearnProbaReg`` - general interface adapter to ``sklearn`` regressors with variance prediction model (:pr:`163`) :user:`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 (:pr:`150`) :user:`fkiraly`
* [ENH] ``check_is_mtype`` dict type return, improved input check error messages in ``BaseRegressorProba`` (:pr:`151`) :user:`fkiraly`
Probability distributions
~~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] adapter from ``scipy`` ``rv_discrete`` to ``skpro`` ``Empirical`` (:pr:`155`) :user:`fkiraly`
Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] ``sklearn`` wrappers to str-coerce columns of ``pd.DataFrame`` before passing (:pr:`148`) :user:`fkiraly`
* [ENH] clean up copy-paste leftovers in ``BaseProbaRegressor`` (:pr:`156`) :user:`fkiraly`
* [ENH] adapter for ``sklearn`` probabilistic regressors (:pr:`163`) :user:`fkiraly`
* [ENH] add tags to ``SklearnProbaReg`` (:pr:`168`) :user:`fkiraly`
* [ENH] interfacing all concrete ``sklearn`` probabilistic regressors (:pr:`166`) :user:`fkiraly`
Test framework
~~~~~~~~~~~~~~
* [ENH] scenario tests for mixed ``pandas`` column index types (:pr:`145`) :user:`fkiraly`
* [ENH] scitype inference utility, test class register, test class test condition (:pr:`159`) :user:`fkiraly`
Fixes
-----
Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~
* [BUG] in probabilistic regressors, ensure correct index treatment if ``X: pd.DataFrame`` and ``y: np.ndarray`` are passed (:pr:`146`) :user:`fkiraly`
Documentation
-------------
* [DOC] update ``AUTHORS.rst`` file (:pr:`147`) :user:`fkiraly`
Maintenance
-----------
* [MNT] [Dependabot](deps): Bump ``actions/upload-artifact`` from 3 to 4 (:pr:`154`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump ``actions/download-artifact`` from 3 to 4 (:pr:`153`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump ``actions/setup-python`` from 4 to 5 (:pr:`152`) :user:`dependabot`
* [MNT] [Dependabot](deps-dev): Update ``sphinx-gallery`` requirement from ``<0.15.0`` to ``<0.16.0`` (:pr:`149`) :user:`dependabot`
* [MNT] [Dependabot](deps-dev): Update ``scikit-base`` requirement from ``<0.7.0,>=0.6.1`` to ``>=0.6.1,<0.8.0`` (:pr:`169`) :user:`dependabot`
* [MNT] adding ``codecov.yml`` and turning coverage reports informational (:pr:`165`) :user:`fkiraly`
* [MNT] handle deprecation of ``pandas.DataFrame.applymap`` (:pr:`170`) :user:`fkiraly`
* [MNT] handle ``polars`` deprecations (:pr:`171`) :user:`fkiraly`
[2.1.1] - 2023-11-02
====================
Highlights
----------
* probabilistic regressor: multiple quantile regression (:pr:`108`) :user:`Ram0nB`
* probabilistic regressor: interface to ``MapieRegressor`` from ``mapie`` package
(:pr:`136`) :user:`fkiraly`
* framework support for ``polars`` via mtypes (:pr:`130`) :user:`fkiraly`
Enhancements
------------
Data types, checks, conversions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] ``polars`` mtypes for data tables (:pr:`130`) :user:`fkiraly`
Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~
* [ENH] probabilistic regressors - input checks and support for more input types
(:pr:`129`) :user:`fkiraly`
* [ENH] multiple quantile regression (:pr:`108`) :user:`Ram0nB`
* [ENH] interface ``MapieRegressor`` from ``mapie`` (:pr:`136`) :user:`fkiraly`
Test framework
~~~~~~~~~~~~~~
* [ENH] integrate ``check_estimator`` with ``TestAllEstimators`` and
``TestAllRegressors`` for python command line estimator testing
(:pr:`138`) :user:`fkiraly`
* [ENH] improved conditional testing (:pr:`140`) :user:`fkiraly`
Documentation
-------------
* [DOC] fix math in ``plotting`` docstrings (:pr:`121`) :user:`fkiraly`
* [DOC] improved probabilistic tabular regressor extension template
(:pr:`137`) :user:`fkiraly`
* [DOC] typo fixes in regression extension template (:pr:`139`) :user:`fkiraly`
Maintenance
-----------
* [MNT] point readthedocs ``json`` switcher variable to GitHub
(:pr:`125`) :user:`fkiraly`
* [MNT] change test OS versions to latest (:pr:`126`) :user:`fkiraly`
Fixes
-----
* [BUG] fix test fixture generation logic (:pr:`142`) :user:`fkiraly`
* [BUG] fix retrieval in ``all_objects`` if ``filter_tags`` is provided
(:pr:`141`) :user:`fkiraly`
Contributors
------------
:user:`fkiraly`,
:user:`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`` (:pr:`118`) :user:`dependabot`
* [MNT] Python 3.12 support - for ``skpro`` release 2.1.0 (:pr:`109`) :user:`fkiraly`
[2.0.1] - 2023-10-08
====================
Release with minor maintenance actions and enhancements.
Enhancements
------------
* [ENH] basic "test all estimators" suite (:pr:`89`) :user:`fkiraly`
Documentation
-------------
* [DOC] improvements to notebook 1 (:pr:`106`) :user:`fkiraly`
Maintenance
-----------
* [MNT] address deprecation of ``skbase.testing.utils.deep_equals``
(:pr:`111`) :user:`fkiraly`
* [MNT] activate ``dependabot`` for version updates and maintenance
(:pr:`110`) :user:`fkiraly`
* [MNT] [Dependabot](deps): Bump ``styfle/cancel-workflow-action`` from 0.9.1 to 0.12.0
(:pr:`113`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump ``actions/dependency-review-action`` from 1 to 3
(:pr:`114`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump ``actions/checkout`` from 3 to 4
(:pr:`115`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump ``actions/download-artifact`` from 2 to 3
(:pr:`116`) :user:`dependabot`
* [MNT] [Dependabot](deps): Bump ``actions/upload-artifact`` from 2 to 3
(:pr:`117`) :user:`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
------------
:user:`Alex-JG3`,
:user:`fkiraly`,
:user:`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``.