Skip to content

Commit

Permalink
Release 2.3.0 (#312)
Browse files Browse the repository at this point in the history
Release PR for 2.3.0

* changelog
* version bump
* updated time for meetup
  • Loading branch information
fkiraly authored May 16, 2024
1 parent 8682fb6 commit e424ce5
Show file tree
Hide file tree
Showing 5 changed files with 205 additions and 5 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<a href="https://skpro.readthedocs.io/en/latest"><img src="https://github.com/sktime/skpro/blob/main/docs/source/images/skpro-banner.png" width="500" align="right" /></a>

:rocket: **Version 2.2.2 out now!** [Read the release notes here.](https://skpro.readthedocs.io/en/latest/changelog.html).
:rocket: **Version 2.3.0 out now!** [Read the release notes here.](https://skpro.readthedocs.io/en/latest/changelog.html).

`skpro` is a library for supervised probabilistic prediction in python.
It provides `scikit-learn`-like, `scikit-base` compatible interfaces to:
Expand Down Expand Up @@ -59,7 +59,7 @@ We strongly believe in the value of sharing help publicly, as it allows a wider
| :woman_technologist: **Usage Questions** | [GitHub Discussions] · [Stack Overflow] |
| :speech_balloon: **General Discussion** | [GitHub Discussions] |
| :factory: **Contribution & Development** | `dev-chat` channel · [Discord] |
| :globe_with_meridians: **Community collaboration session** | [Discord] - Fridays 4 pm UTC, dev/meet-ups channel |
| :globe_with_meridians: **Community collaboration session** | [Discord] - Fridays 13 UTC, dev/meet-ups channel |

[github issue tracker]: https://github.com/sktime/skpro/issues
[github discussions]: https://github.com/sktime/skpro/discussions
Expand Down
7 changes: 6 additions & 1 deletion docs/source/_static/switcher.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
"url": "https://skpro.readthedocs.io/en/latest/"
},
{
"name": "2.2.2 (stable)",
"name": "2.3.0 (stable)",
"version": "stable",
"url": "https://skpro.readthedocs.io/en/v2.3.0/"
},
{
"name": "2.2.2",
"version": "stable",
"url": "https://skpro.readthedocs.io/en/v2.2.2/"
},
Expand Down
195 changes: 195 additions & 0 deletions docs/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,201 @@ You can also subscribe to ``skpro``'s
For planned changes and upcoming releases, see roadmap in the
`issue tracker <https://github.com/sktime/skpro/issues>`_.

[2.3.0] - 2024-05-16
====================

* new tutorial notebooks for survival prediction and probability distributions (:pr:`303`, :pr:`305`) :user:`fkiraly`
* interface to ``ngboost`` probabilistic regressor and survival predictor (:pr:`215`, :pr:`301`, :pr:`309`, :pr:`332`) :user:`ShreeshaM07`
* interface to Poisson regressor from ``sklearn`` (:pr:`213`) :user:`nilesh05apr`
* probability distributions rearchitecture, including scalar valued distributions, e.g., ``Normal(mu=0, sigma=1)`` - see "core interface changes"
* probability distributions: illustrative and didactic plotting functionality, e.g., ``my_normal.plot("pdf")`` (:pr:`275`) :user:`fkiraly`
* more distributions: beta, chi-squared, delta, exponential, uniform - :user:`an20805`,
:user:`malikrafsan`, :user:`ShreeshaM07`, :user:`sukjingitsit`

Core interface changes
~~~~~~~~~~~~~~~~~~~~~~

Probability distributions have been rearchitected with API improvements:

* all changes are fully downwards compatible with the previous API.
* distributions can now be scalar valued, e.g., ``Normal(mu=0, sigma=1)``.
More generally, all distributions behave as scalar distributions if
``index`` and ``columns`` are not passed and all parameters passed are scalar.
or scalar-like. In this case, methods such as ``pdf``,
``cdf`` or ``sample`` will return scalar (float) values instead of ``pd.DataFrame``.
* ``ndim`` and ``shape`` - distributions now possess an ``ndim`` property, which evaluates to 0 for
scalar distributions, and 2 otherwise. The ``shape`` property evaluates to
the empty tuple for scalar distributions, and to a 2-tuple with the shape for
array-like distributions. This is in line with ``numpy`` conventions.
* ``plot`` - distributions now have a ``plot`` method, which can be used to plot any
method of the distribution. The method is called as ``my_distr.plot("pdf")``
or ``my_distribution.plot("cdf")``, or simsilar.
If the distribution is scalar, this will create a single ``matplotlib`` plot in
an ``ax`` object. DataFrame-like distributions will create a plot for each
marginal component, returning ``fig`` with an array of ``ax`` objects, of same
shape as the distribution object.
* ``head``, ``tail`` - distributions now possess ``head`` and ``tail`` methods,
which return the first
and last ``n`` rows of the distribution, respectively. This is useful for
inspecting the distribution object in a Jupyter notebook, in particular when
combined with ``plot``.
* ``at``, ``iat`` - distributions now possess ``at`` and ``iat`` subsetters,
which can be used to
subset a DataFrame-like distribution to a scalar distribution at a given
integer index or location index, respectively.
* ``pdf``, ``pmf`` - all distributions
now possess a ``pdf`` and ``pmf`` method, for probability density
function and probability mass function. These are available for all distributions,
continuous, discrete, and mixed. ``pdf`` returns the density of the continuous part
of the distribution, ``pmf`` the mass of the discrete part. Continuous distributions
will return 0 for ``pmf``, discrete distributions will return 0 for ``pdf``.
Logarithmic versions of these methods are available as ``log_pdf`` and ``log_pmf``,
these may be more numerically stable.
* ``surv``, ``haz`` - distributions now possess
shorthand methods to return survival function evaluates,
``surv``, and hazard function evaluates, ``haz``. These are available for
all distributions. In case of mixed distributions, hazard is computed with the
continuous part of the distribution.
* ``distr:paramtype`` tag - distributions are now annotated with a new public tag:
``distr:paramtype`` indicates whether
the distribution is ``"parametric"``, ``"non-parametric"``, or ``"composite"``.
Parametric distributions have only numpy array-like or categorical parameters.
Non-parametric distributions may have further types of parameters such as data-like,
but no distributions. Composite distributions have other distributions as parameters.
* ``to_df``, ``get_params_df`` - parametric distributions
now provide methods ``to_df``, ``get_params_df``,
which allow to return distribution parameters coerced to ``DataFrame``, or ``dict``
of ``DataFrame``, keyed by parameter names, respectively.
* the extension contract for distributions has been changed to a boilerplate layered
design. Extenders will now implement private methods such as ``_pdf``, ``_cdf``,
instead of overriding the public interface. This allows for more flexibility in
boilerplate design, and ensures more consistent behavior across distributions.
The new extension contract is documented in the new ``skpro`` extension template,
``extension_templates/distribution_template.py``.

Deprecations and removals
~~~~~~~~~~~~~~~~~~~~~~~~~

* At version 2.4.0, the ``bound`` parameter will be removed
from the ``CyclicBoosting`` probabilistic
supervised regression estimator, and will be replaced by use of ``lower`` or
``upper``. To retain previous behaviour, users should replace ``bound="U"``
with ``upper=None`` and ``lower=None``; ``bound="L"`` with ``upper=None`` and
``lower`` set to the value of the lower bound; and ``bound="B"`` with both
``upper`` and ``lower`` set to the respective values.
To silence the warnings and prevent exceptions occurring from 2.4.0,
users should not explicitly set ``bounds``, and ensure values for any subsequent
parameters are set as keyword arguments, not positional arguments.

Enhancements
~~~~~~~~~~~~

Probability distributions
~~~~~~~~~~~~~~~~~~~~~~~~~

* [ENH] probability distributions - boilerplate refactor (:pr:`265`) :user:`fkiraly`
* [ENH] probability distributions: convenience feature to coerce ``index`` and ``columns`` to ``pd.Index`` (:pr:`276`) :user:`fkiraly`
* [ENH] distribution ``quantile`` method for scalar distributions (:pr:`277`) :user:`fkiraly`
* [ENH] systematic suite tests for scalar probability distributions (:pr:`278`) :user:`fkiraly`
* [ENH] scalar test cases for probability distributions (:pr:`279`) :user:`fkiraly`
* [ENH] activate tests for distribution base class defaults (:pr:`266`) :user:`fkiraly`
* [ENH] probability distributions: illustrative and didactic plotting functionality (:pr:`275`) :user:`fkiraly`
* [ENH] Uniform Continuous distribution (:pr:`223`) :user:`an20805`
* [ENH] Chi-Squared Distribution (:pr:`217`) :user:`sukjingitsit`
* [ENH] Adapter for Scipy Distributions (:pr:`287`) :user:`malikrafsan`
* [ENH] simplify coercion in ``BaseDistribution._log_pdf`` and ``_pdf`` default (:pr:`293`) :user:`fkiraly`
* [ENH] Beta Distribution (:pr:`298`) :user:`malikrafsan`
* [ENH] distributions: ``pmf`` and ``log_pmf`` method (:pr:`295`) :user:`fkiraly`
* [ENH] Delta distribution (:pr:`299`) :user:`fkiraly`
* [ENH] distributions: survival and hazard function and defaults (:pr:`294`) :user:`fkiraly`
* [ENH] improved ``Empirical`` distribution - scalar mode, new API compatibility (:pr:`307`) :user:`fkiraly`
* [ENH] increase distribution default ``plot`` resolution (:pr:`308`) :user:`fkiraly`
* [ENH] distribution ``get_params`` in data frame format (:pr:`285`) :user:`fkiraly`
* [ENH] ``head`` and ``tail`` for distribution objects (:pr:`310`) :user:`fkiraly`
* [ENH] full support of hierarchical ``MultiIndex`` ``index`` in ``Empirical`` distribution, tests (:pr:`314`) :user:`fkiraly`
* [ENH] ``at`` and ``iat`` subsetters for distributions (:pr:`274`) :user:`fkiraly`
* [ENH] ``Exponential`` distribution (:pr:`325`) :user:`ShreeshaM07`
* [ENH] ``Mixture`` distribution upgrade - refactor to new extension interface, support scalar case (:pr:`315`) :user:`fkiraly`
* [ENH] native implementation of Johnson QPD family, explicit pdf (:pr:`327`) :user:`fkiraly`
* [ENH] improved defaults for ``BaseDistribution`` ``_mean``, ``_var``, and ``_energy_x`` (:pr:`330`) :user:`fkiraly`

Probabilistic regression
~~~~~~~~~~~~~~~~~~~~~~~~

* [ENH] interface to ``ngboost`` (:pr:`215`) :user:`ShreeshaM07`
* [ENH] interfacing Poisson regressor from sklearn (:pr:`213`) :user:`nilesh05apr`
* [ENH] refactor ``NGBoostRegressor`` to inherit ``NGBoostAdapter`` (:pr:`309`) :user:`ShreeshaM07`
* [ENH] ``Exponential`` dist in ``NGBoostRegressor``, ``NGBoostSurvival`` (:pr:`332`) :user:`ShreeshaM07`

Survival and time-to-event prediction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* [ENH] Delta point prediction baseline regressor (:pr:`300`) :user:`fkiraly`
* [ENH] Interface ``NGBSurvival`` from ``ngboost`` (:pr:`301`) :user:`ShreeshaM07`
* [ENH] in ``ConditionUncensored`` reducer, ensure coercion to float of ``C`` (:pr:`318`) :user:`fkiraly`

Test framework
~~~~~~~~~~~~~~

* [MNT] faster collection of differential tests through caching, test if pyproject change (:pr:`296`) :user:`fkiraly`

Fixes
~~~~~

Probability distributions
~~~~~~~~~~~~~~~~~~~~~~~~~

* [BUG] bugfixes for distribution base class default methods (:pr:`281`) :user:`fkiraly`
* [BUG] fix ``Empirical`` index to be ``pd.MultiIndex`` for hierarchical data index (:pr:`286`) :user:`fkiraly`
* [BUG] update Johnson QPDistributions with bugfixes and vectorization (cyclic-boosting ver.1.4.0) (:pr:`232`) :user:`setoguchi-naoki`
* [BUG] ``BaseDistribution._var``: fix missing factor 2 in Monte Carlo variance default method (:pr:`331`) :user:`fkiraly`

Survival and time-to-event prediction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* [BUG] fix ``CoxPH`` handling of ``statsmodels`` ``status`` variable (:pr:`306`) :user:`fkiraly`
* [BUG] fix survival metrics if ``C_true=None`` is passed (:pr:`316`) :user:`fkiraly`

Maintenance
~~~~~~~~~~~

* [MNT] [Dependabot](deps): Update ``sphinx-gallery`` requirement from ``<0.16.0`` to ``<0.17.0`` (:pr:`288`) :user:`dependabot[bot]`
* [MNT] move GHA runners consistently to ``ubuntu-latest``, ``windows-latest``, ``macos-13`` (:pr:`272`) :user:`fkiraly`
* [MNT] set macos runner for release workflow to ``macos-13`` (:pr:`273`) :user:`fkiraly`
* [MNT] fix binder environment (:pr:`297`) :user:`fkiraly`
* [MNT] moving ensemble regressors to ``regression.ensemble`` (:pr:`302`) :user:`fkiraly`
* [MNT] remove ``findiff`` soft dependency (:pr:`328`) :user:`fkiraly`
* [MNT] deprecation handling for ``CyclicBoosting`` (:pr:`329`) :user:`fkiraly`, :user:`setoguchi-naoki`
* [MNT] fix repository variables in changelog generator (:pr:`333`) :user:`fkiraly`

Documentation
~~~~~~~~~~~~~

* [DOC] add ``zenodo`` citation badge in README (:pr:`262`) :user:`fkiraly`
* [DOC] fix typo in changelog link (:pr:`263`) :user:`fkiraly`
* [DOC] typo fixes in Fisk AFT docstring (:pr:`264`) :user:`fkiraly`
* [DOC] fix minor typos in the changelog (:pr:`268`) :user:`fkiraly`
* [DOC] fixes to extension templates (:pr:`270`) :user:`fkiraly`
* [DOC] remove legacy examples (:pr:`271`) :user:`fkiraly`
* [DOC] correcting 2024 changelog dates (:pr:`280`) :user:`fkiraly`
* [DOC] add missing contributors to ``all-contributorsrc`` - :user:`an20805`, :user:`duydl`, :user:`sukjingitsit` (:pr:`284`) :user:`fkiraly`
* [DOC] tutorial notebook for probability distributions (:pr:`303`) :user:`fkiraly`
* [DOC] tutorial notebook for survival prediction (:pr:`305`) :user:`fkiraly`
* [DOC] visualizations for first intro vignette in intro notebook and minor updates (:pr:`311`) :user:`fkiraly`
* [DOC] improve docstrings of metrics (:pr:`317`) :user:`fkiraly`

Contributors
~~~~~~~~~~~~

:user:`an20805`,
:user:`fkiraly`,
:user:`malikrafsan`,
:user:`nilesh05apr`,
:user:`setoguchi-naoki`,
:user:`ShreeshaM07`,
:user:`sukjingitsit`


[2.2.2] - 2024-04-20
====================

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "skpro"
version = "2.2.2"
version = "2.3.0"
description = "A unified framework for probability distributions and probabilistic supervised regression"
authors = [
{name = "skpro developers", email = "[email protected]"},
Expand Down
2 changes: 1 addition & 1 deletion skpro/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""skpro."""

__version__ = "2.2.2"
__version__ = "2.3.0"

__all__ = ["show_versions"]

Expand Down

0 comments on commit e424ce5

Please sign in to comment.