Changelog#
All notable changes to this project beginning with version 1.0.0 are 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.12.0] - 2026-03-14#
Highlights#
Nadaraya Watson CDE regressor (#772) @patelchaitany
Mixture Density Network regressor (#796) @joshdunnlime
KernelMixturedistribution for kernel density estimation (#721) @amaydixit11zero-inflated probability distribution compositor (#648) @Khushmagrawal
new probability distributions: BurrIII, BurrXII, Cauchy, FDist, FatigueLife, GeneralizedPareto, Gumbel, Levy, Rayleigh, Skellam, TruncatedPareto (#690, #728, #754, #778) @an1k3sh, @arnavk23, @KaranSinghDev, @patelchaitany
Enhancements#
[ENH] Add explicit energy computations for multiple distributions (#688) @arnavk23
[ENH] Add BurrIII, BurrXII, FDist, FatigueLife, GeneralizedPareto, Levy, Skellam, TruncatedPareto distributions (#690) @arnavk23
[ENH] in
XGBoostLSS, expose underlying parameters whenn_trail=0(#672) @joshdunnlime[ENH] Optimize
EnbpiRegressorthrough faster sampling inEmpirical(#704) @marrov[ENH] analytic computations for energy of some distributions (#691) @arnavk23
[ENH]
_pmf_supportmethod forBaseDistributionreturning inspectable mass support (#711) @arnavk23[ENH] zero-inflated distribution (#648) @Khushmagrawal
[ENH] systematically move distribution author credits to tag system (#774) @fkiraly
[ENH] Cauchy probability distribution (#754) @patelchaitany
[ENH] exact
_log_pdfforUniformdistribution (#784) @Ashish-Kumar-Dash[ENH]
KernelMixturedistribution for kernel density estimation (#721) @amaydixit11[ENH] Delete dead code in legacy module
utils.py(#823) @Ahmed-Zahran02[ENH] Refactor registry tags to class-based system (#769) @codeit-ronit
[ENH] Gumbel Left and Gumbel Right Distributions (#728) @an1k3sh
[ENH]
MDNRegressor(Mixture Density Network) (#796) @joshdunnlime[ENH] Extend
KernelMixtureto support 2D per-instance weights (#841) @patelchaitany[ENH] Rayleigh Distribution with analytical energy calculation (#778) @KaranSinghDev
[ENH] Add pdfnorm to test coverage and fix handling in scalar case (#712) @arnavk23
[ENH] Nadaraya Watson CDE regressor (#772) @patelchaitany
[ENH] Update
TestAllRegressorsto check against parameter mutation in non-state changing methods (#872) @Ahmed-Zahran02[ENH] Remove invasive print statements from
BayesianLinearRegressor(#882) @krsatyamthakur-droid[ENH]
get_test_paramsusesselfinstead ofclsin several metric classes (#876) @OmAmbole009[ENH] move testing of
mapiebased classes to own vm (#911) @fkiraly[ENH] move testing of
ngboostbased classes to own vm (#912) @fkiraly
Documentation#
[DOC] add missing
Uniformdistribution to API reference (#702) @fkiraly[DOC] fix broken community links in README (#752) @kabirvashisht4-glitch
[DOC] Fix typo variancee → variance in BaseDistribution warning message (#734) @sabasiddique1
[DOC] Reorder API reference on composite distributions (#773) @fkiraly
[DOC] Fix typo in docstrings: “logartihms” -> “logarithms” (#813) @MayankSharma-2812
[DOC] Fix grammar: needs to be -> must be in error messages (#833) @MayankSharma-2812
[DOC] Fix incorrect sktime references in API reference docs (#844) @MBKKHAN
[DOC] API reference for tags (#877) @Mushfiqur719
[DOC] Fix broken sktime governance link in governance.rst (#873) @kabirvashisht4-glitch
[DOC] Fix broken Git documentation link in dependencies.rst (#888) @kabirvashisht4-glitch
[DOC] Fix typos across the docs (#904) @Ahmed-Zahran02
[DOC] Fix undefined variable
y_testin README quickstart (#820) @direkkakkar319-ops
Fixes#
[BUG] Fix
XGBoostLSSwrapper parameterization (#700) @marrov[BUG] Fix MultiIndex quantile bug in BaseDistribution.loc indexing (#697) @arnavk23
[BUG] Fix Laplace energy_self calculation and docstring typos (#720) @Ashish-Kumar-Dash
[BUG] Update GLM Normal and Gamma distribution parameter calculations to use self.scale_ (#718) @amaydixit11
[BUG] Replace assert with proper TypeError in head and tail methods (#739) @Abhishek242004
[BUG] Fix incorrect mean formula in Pareto distribution (#744) @Ashish-Kumar-Dash
[BUG]
BaseGridSearch: Ensure censoring data (C) is passed in all refit loops (#746) @ashnaaseth2325-oss[BUG] fix transformer chaining in regression pipeline (#780) @ashnaaseth2325-oss
[BUG] Fix ResidualDouble using wrong estimator in CV residuals (#781) @WHOIM1205
[BUG] fix NGBoostRegressor ignoring user-set natural_gradient param (#789) @patelchaitany
[BUG] Fix
_check_Cusing wrong converter store_y_converter_store->_C_converter_store(#750) @kindler-king[BUG] fix wrong converter stores in
predictand_check_C(#797) @WHOIM1205[BUG] Fix missing raise before TypeError in Pipeline._check_steps (#807) @Sanchit2662
[BUG] in
ResidualDouble.predict_proba, fix in place mutation ofdistr_params(#861) @WHOIM1205[BUG] Fix
Levydistribution to conform withscipyinterface (#880) @direkkakkar319-ops
Maintenance#
[MNT] [Dependabot](deps): Update numpy requirement from
<2.4,>=1.21.0to>=1.21.0,<2.5(#695) @dependabot[bot][MNT] [Dependabot](deps-dev): Update sphinx-gallery requirement from
<0.20.0to<0.21.0(#694) @dependabot[bot][MNT] [Dependabot](deps-dev): Update sphinx requirement from
!=7.2.0,<9.0.0to!=7.2.0,<10.0.0(#693) @dependabot[bot][MNT] [Dependabot](deps): Bump styfle/cancel-workflow-action from
0.12.1to0.13.0(#703) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/download-artifact from 7 to 8 (#775) @dependabot[bot]
[MNT] [Dependabot](deps): Bump actions/upload-artifact from 6 to 7 (#776) @dependabot[bot]
[MNT] Remove legacy
skpro/tests/utils.pymodule. (#902) @Ahmed-Zahran02
Contributors#
@Abhishek242004, @Ahmed-Zahran02, @amaydixit11, @an1k3sh, @arnavk23, @Ashish-Kumar-Dash, @ashnaaseth2325-oss, @codeit-ronit, @dependabot[bot], @direkkakkar319-ops, @fkiraly, @joshdunnlime, @kabirvashisht4-glitch, @KaranSinghDev, @Khushmagrawal, @kindler-king, @krsatyamthakur-droid, @marrov, @MayankSharma-2812, @MBKKHAN, @Mushfiqur719, @OmAmbole009, @patelchaitany, @sabasiddique1, @sakun15, @Sanchit2662, @WHOIM1205
[2.11.0] - 2025-12-17#
Highlights#
pygamGAM regressor interface (#636, #638) @ravjot07, @Omswastik-11glumGeneralized Linear Models (GlumRegressor) (#646) @Omswastik-11mapie>=1.0estimators (#665) @Omswastik-11new distributions: Geometric, Inverse Gaussian, Log-Gamma (#635, #663, #669) @ali-john, @aryabhatta-dey, @Omswastik-11
Enhancements#
[ENH] estimator dependency management and individual CI (#626) @fkiraly
[ENH]
pygamregressor interface (#636, #638) @ravjot07, @Omswastik-11[ENH]
glumGeneralized Linear Models (GlumRegressor) (#646) @Omswastik-11[ENH] Geometric Distribution (#663) @aryabhatta-dey
[ENH] Inverse Gaussian distribution (#635) @Omswastik-11
[ENH]
mapie>1.0interface (#665) @Omswastik-11[ENH] moved
BaseDistribution.samplemethod to boilerplate layered design (#650) @smilingprogrammer[ENH] move
scikit-survivalestimators to VM based testing (#664) @Omswastik-11[ENH] Add
interval_typefor configurable bounds inTruncatedDistribution(#667) @Khushmagrawal[ENH] estimator tag for extra testing dependencies (#681) @fkiraly
Documentation#
Maintenance#
[MNT] [Dependabot](deps): Update polars requirement from
<1.34.0to<1.35.0(#607) @dependabot[bot][MNT] [Dependabot](deps): Update polars requirement from
<1.35.0to<1.36.0(#627) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/upload-artifact from
4to5(#624) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/download-artifact from
5to6(#623) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/checkout from
5to6(#640) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/checkout from
5to6(#649) @dependabot[bot][MNT] [Dependabot](deps-dev): Update polars requirement from
<1.36.0to<1.37.0(#679) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/upload-artifact from
5to6(#684) @dependabot[bot][MNT] [Dependabot](deps): Bump actions/download-artifact from
6to7(#685) @dependabot[bot][MNT] remove conflicting dependencies from
all_extras(#625) @fkiraly[MNT] update notebook CI test python version to 3.11 (#642) @fkiraly
[MNT] Added allcontributors workflow (#632) @ParamThakkar123
Fixes#
[BUG] fix sporadic
GLMRegressorfailures (#628) @SimonBlanke[BUG] Fix
GLMRegressorclass (#655) @Omswastik-11[BUG] Handle
Hurdlevalues less than zero properly (#652) @tingiskhan[BUG]
XGBoostLSSdynamic dependencies: add optuna topython_dependencieswhenn_trials != 0(#643) @ravjot07[BUG] Ensure gamma/poission always get positive
yin doctest (#660) @Omswastik-11
Contributors#
@ali-john, @arnavk23, @aryabhatta-dey, @fkiraly, @Khushmagrawal, @neha222222, @Omswastik-11, @ParamThakkar123, @ravjot07, @SimonBlanke, @smilingprogrammer, @tingiskhan
[2.10.0] - 2025-10-09#
Python 3.14 compatibility, Python 3.9 end-of-life.
Feature, bugfix, and maintenance release.
Dependency changes#
skprois now compatible withpython 3.14.skprono longer supportspython 3.9.scikit-learnbounds have been updated to>=0.24.0,<1.8.0.scikit-basebounds have been updated to>=0.6.1,<0.14.0.
Enhancements#
[ENH]
TransformedDistributionandTransformedTargetRegressorcdfsupport (#611) @fkiraly, @joshdunnlime[ENH] export all distributions in
skpro.distributions, minor fixes to API reference (#598) @fkiraly[ENH] Add Beta Distribution to
XGBoostLSS(#599) @joshdunnlime[ENH] Allow
n_trials=0for fast optimisation-free training ofXGBoostLSS(#600) @joshdunnlime[ENH] extend
BaggingRegressorto survival models (#319) @fkiraly[ENH] distributions approximate
pdfandlog_pdfviacdfnumerical derivative if not implemented (#610) @fkiraly[ENH]
pandas.Multiindexsupport for distributions (#580) @fkiraly
Maintenance#
Documentation#
Fixes#
Contributors#
[2.9.4] - 2025-09-18#
Feature, maintenance, and bugfix release.
Enhancements#
[ENH] replace apply linalg norm with native pandas ufuncs (#592) @joshdunnlime
Maintenance#
[MNT] Check versions in wheels workflow (#583) @szepeviktor
[MNT] [Dependabot](deps): Update
polarsrequirement from<1.33.0to<1.34.0(#587) @dependabot[bot][MNT] [Dependabot](deps): Bump
actions/setup-pythonfrom 5 to 6 (#590) @dependabot[bot]
Documentation#
Fixes#
Contributors#
[2.9.3] - 2025-08-17#
Feature, maintenance, and bugfix release.
Enhancements#
[ENH] Moves epsilon offset logic to TruncatedDistribution from Hurdle (#577) @tingiskhan
Maintenance#
[MNT] [Dependabot](deps): Update
polarsrequirement from<1.32.0to<1.33.0by @dependabot[bot] in sktime/skpro#572[MNT] [Dependabot](deps): Bump
actions/download-artifactfrom 4 to 5 (#579) @dependabot[bot][MNT] [Dependabot](deps): Bump
actions/checkoutfrom 4 to 5 (#581) @dependabot[bot]
Documentation#
Fixes#
[BUG] correctly set tags for
Poissondistribution (#570) @fkiraly[BUG] fix
pdfandpmfdefault return type in scalar case (#574) @fkiraly[BUG] Addresses stochasticity of Hurdle tests (#568) @tingiskhan
[BUG] correctly set tags of
HurdleandTruncateddepending on inner distribution (#569) @fkiraly
Contributors#
[2.9.2] - 2025-07-23#
Feature release: transformed distribution, new distributions, and probabilistic TransformedTargetRegressor.
Enhancements#
[ENH]
HurdleandLeftTruncatedDiscretedistributions (#557) @tingiskhan[ENH] Negative Binomial distribution (#560) @tingiskhan
[ENH] probabilistic
TransformedTargetRegressor(#558) @fkiraly[ENH] verbose printout for
check_estimatorinraise_exceptionscase (#562) @fkiraly[ENH]
MAPIE<1.0bound for legacyMapieRegressor(#564) @fkiraly
Maintenance#
[MNT] [Dependabot](deps): Update polars requirement from
<1.25.0to<1.30.0(#550) @dependabot[bot][MNT] [Dependabot](deps): Update pandas requirement from
<2.3.0,>=1.1.0to>=1.1.0,<2.4.0(#551) @dependabot[bot][MNT] [Dependabot](deps): Update polars requirement from
<1.30.0to<1.32.0(#553) @dependabot[bot]
Fixes#
[2.9.1] - 2025-05-08#
Minor feature, maintenance, and bugfix release.
Enhancements#
Maintenance#
[MNT] [Dependabot](deps): Update
polarsrequirement from<1.21.0to<1.23.0(#528) @dependabot[MNT] [Dependabot](deps): Update
sphinx-galleryrequirement from<0.19.0to<0.20.0(#529) @dependabot[MNT] remove deprecated
pkg_import_aliasfrom private soft dependency checker tests (#539) @fkiraly[MNT] reduce dependencies in
all_extrasdependency sets (#541) @fkiraly[MNT] update release wheel build runner to
ubuntu-latest(#547) @fkiraly
Documentation#
Fixes#
[2.9.0] - 2025-01-26#
Feature and maintenance release.
Dependency changes#
scikit-learnbounds have been updated to>=0.24.0,<1.7.0.numpybounds have been updated to>=1.21.0,<2.3.polars(data container soft dependency) bounds have been updated to<1.21.0.
Enhancements#
Probability distributions#
[ENH] Erlang Distribution (#518) @RUPESH-KUMAR01
[ENH] Skew-Normal Distribution (#512) @spinachboul
Probabilistic regression#
Maintenance#
[MNT] replace
skprocopy of dependency checkers byskbase(#508) @fkiraly[MNT] [Dependabot](deps): Update
polarsrequirement from<1.14.0to<1.21.0(#511, #519) @dependabot[bot][MNT] [Dependabot](deps): Update
numpyrequirement from<2.2,>=1.21.0to>=1.21.0,<2.3(#505) @dependabot[bot][MNT] [Dependabot](deps): Update
scikit-learnrequirement from<1.6.0,>=0.24.0to>=0.24.0,<1.7.0(#506) @dependabot[bot]
Documentation#
Contributors#
[2.8.0] - 2024-11-17#
Feature and maintenance release.
Dependency changes#
scikit-basebounds have been updated to>=0.6.1,<0.13.0.pymcis now a soft dependency, for probabilistic regressors.polars(data container soft dependency) bounds have been updated to<1.14.0.
Enhancements#
[ENH] Creating a new Bayesian Regressor with
pymcas a backend (#358) @meraldoantonio[ENH] add suite test for docstring and
get_test_paramscoverage (#482) @fkiraly[ENH] Synchronize dependency checker with
sktimecounterpart (#490) @meraldoantonio
Maintenance#
[MNT] [Dependabot](deps): Update
scikit-baserequirement from<0.12.0,>=0.6.1to>=0.6.1,<0.13.0(#483) @dependabot[bot][MNT] [Dependabot](deps): Update
sphinx-galleryrequirement from<0.18.0to<0.19.0(#481) @dependabot[bot][MNT] [Dependabot](deps): Update
sphinx-issuesrequirement from<5.0.0to<6.0.0(#484) @dependabot[bot][MNT] [Dependabot](deps): Update
polarsrequirement from<1.10.0to<1.14.0(#491) @dependabot[bot][MNT] [Dependabot](deps): Bump codecov/codecov-action from
4to5(#494) @dependabot[bot]
Documentation#
Contributors#
[2.7.0] - 2024-10-08#
Maintenance release with python 3.13 support.
Also contains:
new
updateunified interface point for probabilistic regressors, to enable online learning and Bayesian updates in modelsdependency updates
Dependency changes#
skprois now compatible withpython 3.13.scikit-basebounds have been updated to>=0.6.1,<0.12.0.polars(data container soft dependency) bounds have been updated to<1.10.0.dead (unimported) soft dependencies have been removed:
attrs,tabulate,uncertainties.
Core interface changes#
Probabilistic regressors and time-to-event predictors now have an update method.
The update method is the unified interface point for incremental fitting strategies,
such as online learning, efficient re-fit strategies, or Bayesian updates.
Whether a non-trivial update method is implemented depends on the specific estimator,
this can be inspected via the capability:update tag of the estimator.
Estimators without a dedicated update method, that is, those with
capability:update=False, implement the trivial update where no update
is performed, with the internal estimator state remaining unchanged.
Enhancements#
[ENH] online update capability for probabilistic regressors (#462) @fkiraly
[ENH] online refitting strategy after N data points (#469) @fkiraly
[ENH]
datatypesexamples - docstrings, deepcopy (#466) @fkiraly[ENH] minor refactor - remove unnecessary __init__ methods in datatypes module (#475) @fkiraly
Maintenance#
[MNT]
python 3.13support, add3.13to CI test matrix (#471) @fkiraly[MNT] differential testing - handle non-package changes in
pyproject.toml(#472) @fkiraly[MNT] change macos runners to
macos-latestversion (#477) @fkiraly[MNT] [Dependabot](deps): Update
scikit-baserequirement from<0.10.0,>=0.6.1to>=0.6.1,<0.12.0(#468) @dependabot[bot][MNT] [Dependabot](deps): Update
polarsrequirement from<1.7.0to<1.10.0(#473) @dependabot[bot]
[2.6.0] - 2024-09-08#
Maintenance release with scheduled deprecations and updates.
Dependency changes#
numpybounds have been updated to>=1.21.0,<2.2.scikit-basebounds have been updated to>=0.6.1,<0.10.0.
Enhancements#
Maintenance#
[MNT] [Dependabot](deps): Update
scikit-baserequirement from<0.9.0,>=0.6.1to>=0.6.1,<0.10.0(#454) @dependabot[bot][MNT] [Dependabot](deps): Update
numpyrequirement from<2.1,>=1.21.0to>=1.21.0,<2.2(#453) @dependabot[bot]
[2.5.1] - 2024-09-07#
Minor feature and bugfix release.
Dependency changes#
polars(data container and parallelization back-end) bounds have been updated to<1.7.0
Enhancements#
[ENH] Polars adapter enhancements (#449) @julian-fong
Maintenance#
[MNT] [Dependabot](deps): Update polars requirement from
<1.5.0to<1.7.0(#456) @dependabot[bot]
Fixes#
Documentation#
Contributors#
[2.5.0] - 2024-08-02#
Maintenance release with scheduled deprecations and updates.
Kindly also note the python 3.8 End-of-life warning below.
Dependency changes#
polars(data container soft dependency) bounds have been updated to<1.5.0.
Deprecations and removals#
Python 3.8 End-of-life#
skpro now requires Python version >=3.9.
No errors will be raised on Python 3.8, but test coverage and support for
Python 3.8 has been dropped.
Kindly note for context: python 3.8 will reach end of life
in October 2024, and multiple skpro core dependencies,
including scikit-learn, have already dropped support for 3.8.
Probability distributions#
In QPD distributions, deprecated parameters
dist_shape,versionhave been removed entirely. Instead ofversion, users should usebase_dist. Instead ofdist_shape, users should pass anskprodistribution tobase_dist, with the desired shape parameters.
Probabilistic regression#
in probabilistic regressor tuners
GridSearchCV,RandomizedSearchCV, use ofjoblibbackend specific parametersn_jobs,pre_dispatchhave been removed. Users should pass backend parameters via thebackend_paramsparameter instead.in
GLMRegressor, parameters have been reordered to be consistent with the docstring, after a deprecation period.
Contents#
[MNT] python 3.8 end-of-life - remove 3.8 support and tags (#443) @fkiraly
[MNT] ensure
CyclicBoostingis consistent with deprecations inQPD_Johnson(#446) @fkiraly[MNT] [Dependabot](deps): Update
polarsrequirement from<1.3.0to ``<1.5.0``(#442) @dependabot[bot][MNT] release workflow: Upgrade deprecated pypa action parameter #6878 (#445) @szepeviktor
Contributors#
[2.4.2] - 2024-08-02#
Highlights#
Multiclass classification reduction using Histograms (#410) @ShreeshaM07
DummyProbaRegressor- probabilistic dummy regressor (#437) @julian-fongnew probability distributions interfaced: Inverse Gamma, Truncated Normal (#415, #421) @meraldoantonio, @ShreeshaM07
various
numpy 2compatibility fixes (#414, #436) @ShreeshaM07, @fkiraly
Enhancements#
Data types, checks, conversions#
[ENH] Syncing datatypes module
_check.pyand_convert.pywithsktime(#432) @julian-fong
Probability distributions#
[ENH] Inverse Gamma distribution (#415) @meraldoantonio
[ENH] Truncated Normal distribution (#421) @ShreeshaM07
Probabilistic regression#
[ENH] Multiclass classification reduction using Histograms (#410) @ShreeshaM07
[ENH]
DummyProbaRegressor- probabilistic dummy regressor (#437) @julian-fong
Test framework#
Fixes#
Probability distributions#
[BUG] Histogram Distribution: address
np.broadcast_arraysdeprecation of writable return innumpy 2.0.0(#414) @ShreeshaM07
Maintenance#
[MNT] [Dependabot](deps): Update scikit-survival requirement from
<0.23.0to<0.24.0(#419) @dependabot[bot][MNT] [Dependabot](deps): Update polars requirement from
<0.21.0to<1.1.0(#418) @dependabot[bot][MNT] [Dependabot](deps): Update polars requirement from
<1.1.0to<1.2.0(#420) @dependabot[bot][MNT] [Dependabot](deps): Update polars requirement from
<1.2.0to<1.3.0(#425) @dependabot[bot][MNT] [Dependabot](deps): Update sphinx-gallery requirement from
<0.17.0to<0.18.0(#431) @dependabot[bot][MNT] [Dependabot](deps): Update sphinx requirement from
!=7.2.0,<8.0.0to!=7.2.0,<9.0.0(#438) @dependabot[bot][MNT] sync differential testing utilities with
sktime(#434) @fkiraly[MNT] fix
numpy 2incompatibility ofParetodistribution (#436) @fkiraly
Contributors#
[2.4.1] - 2024-06-26#
Maintenance hotfix release with scipy 1.14.X compatibility.
[2.4.0] - 2024-06-23#
Maintenance release with numpy 2.0.X compatibility, scheduled
deprecations and updates.
Dependency changes#
numpybounds have been updated to>=1.21.0,<2.1.0.
Contents#
[2.3.2] - 2024-06-22#
Highlights#
GLMnow supports multipledistributionsandlinkfunction (#384) @ShreeshaM07new metrics: interval width, area under calibration curve (#391) @fkiraly
histogram distribution (#382) @ShreeshaM07
new distributions with non-negative support: Half Normal, Half Cauchy, Half Logistic, Log Laplace, Pareto (#363, #371, #373, #374, #396) @SaiRevanth25, @sukjingitsit
mean-scale family of distributions, composable with any real distribution (#282) @fkiraly
Enhancements#
Probability distributions#
[ENH] mean-scale family of distributions, composite (#282) @fkiraly
[ENH] Half Normal Distribution (#363) @SaiRevanth25
[ENH] Half Cauchy Distribution (#371) @SaiRevanth25
[ENH] Half Logistic Distribution (#373) @SaiRevanth25
[ENH] Log Laplace Distribution (#374) @SaiRevanth25
[ENH] Histogram distribution (#382) @ShreeshaM07
[ENH] Pareto distribution (#396) @sukjingitsit
Probabilistic regression#
[ENH]
GLMwith multipledistributionsandlinkfunction support (#384) @ShreeshaM07[ENH] interval width and area under calibration curve metrics (#391) @fkiraly
Test framework#
[ENH] Tests for polars support for estimators (#370) @julian-fong
Fixes#
Probability distributions#
[BUG] fix
test_methods_plogic whenshuffleisTrue(#381) @ShreeshaM07[BUG] ensure
indexandcolumnsare taken into account in broadcasting ifbc_paramsare set (#403) @fkiraly
Probabilistic regression#
[BUG] bugfix when
Nonewas specified formax_iterparameter in sklearn regressors (#386) @julian-fong
Survival and time-to-event prediction#
[BUG] bugfix on #387 - changed paramset 3 to use
ConditionUncensoredinstead ofCoxPH(#388) @julian-fong
Maintenance#
[MNT] Deprecation message for
CyclicBoostingchanges (#320) @setoguchi-naoki
Documentation#
Contributors#
@fkiraly, @julian-fong, @SaiRevanth25, @setoguchi-naoki, @ShreeshaM07, @sukjingitsit
[2.3.1] - 2024-05-26#
Maintenance release with scikit-learn 1.5.X and scikit-base 0.8.X
compatibility and minor enhancements.
Dependency changes#
scikit-basebounds have been updated to>=0.6.1,<0.9.0.scikit-learnbounds have been updated to>=0.24.0,<1.6.0.
Deprecations and removals#
in probabilistic regressor tuners
GridSearchCV,RandomizedSearchCV, use ofjoblibbackend specific parametersn_jobs,pre_dispatchhas been deprecated, and will be removed inskpro2.5.0. Users should pass backend parameters via thebackend_paramsparameter instead.
Enhancements#
[ENH] make
get_packages_with_changed_specssafe to mutation of return (#348) @fkiraly[ENH] EnbPI regressor for conformal prediction intervals (#343) @fkiraly
[ENH] improved default function to plot via
BaseDistribution.plot, depending on distribution type (#353) @fkiraly[ENH] Gamma Distribution (#355) @ShreeshaM07
[ENH] Alpha distribution (#356) @SaiRevanth25
Fixes#
Maintenance#
[MNT] isolate imports in
changelog.pybuild util (#339) @fkiraly[MNT] [Dependabot](deps): Update sphinx-design requirement from
<0.6.0to<0.7.0(#357) @dependabot[bot][MNT] [Dependabot](deps): Update scikit-learn requirement from
<1.5.0,>=0.24.0to>=0.24.0,<1.6.0(#354) @dependabot[bot][MNT] Update
scikit-baserequirement from<0.8.0,>=0.6.1to>=0.6.1,<0.9.0(#366) @fkiraly
Documentation#
Contributors#
[2.3.0] - 2024-05-16#
Highlights#
new tutorial notebooks for survival prediction and probability distributions (#303, #305) @fkiraly
interface to
ngboostprobabilistic regressor and survival predictor (#215, #301, #309, #332) @ShreeshaM07interface to Poisson regressor from
sklearn(#213) @nilesh05aprprobability 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")(#275) @fkiralymore distributions: beta, chi-squared, delta, exponential, uniform - @an20805, @malikrafsan, @ShreeshaM07, @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 ifindexandcolumnsare not passed and all parameters passed are scalar. or scalar-like. In this case, methods such aspdf,cdforsamplewill return scalar (float) values instead ofpd.DataFrame.ndimandshape- distributions now possess anndimproperty, which evaluates to 0 for scalar distributions, and 2 otherwise. Theshapeproperty evaluates to the empty tuple for scalar distributions, and to a 2-tuple with the shape for array-like distributions. This is in line withnumpyconventions.plot- distributions now have aplotmethod, which can be used to plot any method of the distribution. The method is called asmy_distr.plot("pdf")ormy_distribution.plot("cdf"), or similar. If the distribution is scalar, this will create a singlematplotlibplot in anaxobject. DataFrame-like distributions will create a plot for each marginal component, returningfigwith an array ofaxobjects, of same shape as the distribution object.head,tail- distributions now possessheadandtailmethods, which return the first and lastnrows of the distribution, respectively. This is useful for inspecting the distribution object in a Jupyter notebook, in particular when combined withplot.at,iat- distributions now possessatandiatsubsetters, 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 apdfandpmfmethod, for probability density function and probability mass function. These are available for all distributions, continuous, discrete, and mixed.pdfreturns the density of the continuous part of the distribution,pmfthe mass of the discrete part. Continuous distributions will return 0 forpmf, discrete distributions will return 0 forpdf. Logarithmic versions of these methods are available aslog_pdfandlog_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:paramtypetag - distributions are now annotated with a new public tag:distr:paramtypeindicates 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 methodsto_df,get_params_df, which allow to return distribution parameters coerced toDataFrame, ordictofDataFrame, 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 newskproextension template,extension_templates/distributions.py.
Deprecations and removals#
At version 2.4.0, the
boundparameter will be removed from theCyclicBoostingprobabilistic supervised regression estimator, and will be replaced by use oflowerorupper. To retain previous behaviour, users should replacebound="U"withupper=Noneandlower=None;bound="L"withupper=Noneandlowerset to the value of the lower bound; andbound="B"with bothupperandlowerset to the respective values. To silence the warnings and prevent exceptions occurring from 2.4.0, users should not explicitly setbounds, and ensure values for any subsequent parameters are set as keyword arguments, not positional arguments.
Enhancements#
Probability distributions#
[ENH] probability distributions - boilerplate refactor (#265) @fkiraly
[ENH] probability distributions: convenience feature to coerce
indexandcolumnstopd.Index(#276) @fkiraly[ENH] distribution
quantilemethod for scalar distributions (#277) @fkiraly[ENH] systematic suite tests for scalar probability distributions (#278) @fkiraly
[ENH] scalar test cases for probability distributions (#279) @fkiraly
[ENH] activate tests for distribution base class defaults (#266) @fkiraly
[ENH] probability distributions: illustrative and didactic plotting functionality (#275) @fkiraly
[ENH] Chi-Squared Distribution (#217) @sukjingitsit
[ENH] Adapter for Scipy Distributions (#287) @malikrafsan
[ENH] simplify coercion in
BaseDistribution._log_pdfand_pdfdefault (#293) @fkiraly[ENH] Beta Distribution (#298) @malikrafsan
[ENH] distributions: survival and hazard function and defaults (#294) @fkiraly
[ENH] improved
Empiricaldistribution - scalar mode, new API compatibility (#307) @fkiraly[ENH] increase distribution default
plotresolution (#308) @fkiraly[ENH] distribution
get_paramsin data frame format (#285) @fkiraly[ENH]
headandtailfor distribution objects (#310) @fkiraly[ENH] full support of hierarchical
MultiIndexindexinEmpiricaldistribution, tests (#314) @fkiraly[ENH]
atandiatsubsetters for distributions (#274) @fkiraly[ENH]
Exponentialdistribution (#325) @ShreeshaM07[ENH]
Mixturedistribution upgrade - refactor to new extension interface, support scalar case (#315) @fkiraly[ENH] native implementation of Johnson QPD family, explicit pdf (#327) @fkiraly
[ENH] improved defaults for
BaseDistribution_mean,_var, and_energy_x(#330) @fkiraly
Probabilistic regression#
[ENH] interface to
ngboost(#215) @ShreeshaM07[ENH] interfacing Poisson regressor from sklearn (#213) @nilesh05apr
[ENH] refactor
NGBoostRegressorto inheritNGBoostAdapter(#309) @ShreeshaM07[ENH]
Exponentialdist inNGBoostRegressor,NGBoostSurvival(#332) @ShreeshaM07
Survival and time-to-event prediction#
[ENH] Delta point prediction baseline regressor (#300) @fkiraly
[ENH] Interface
NGBSurvivalfromngboost(#301) @ShreeshaM07[ENH] in
ConditionUncensoredreducer, ensure coercion to float ofC(#318) @fkiraly
Test framework#
Fixes#
Probability distributions#
[BUG] bugfixes for distribution base class default methods (#281) @fkiraly
[BUG] fix
Empiricalindex to bepd.MultiIndexfor hierarchical data index (#286) @fkiraly[BUG] update Johnson QPDistributions with bugfixes and vectorization (cyclic-boosting ver.1.4.0) (#232) @setoguchi-naoki
[BUG]
BaseDistribution._var: fix missing factor 2 in Monte Carlo variance default method (#331) @fkiraly
Survival and time-to-event prediction#
Maintenance#
[MNT] [Dependabot](deps): Update
sphinx-galleryrequirement from<0.16.0to<0.17.0(#288) @dependabot[bot][MNT] move GHA runners consistently to
ubuntu-latest,windows-latest,macos-13(#272) @fkiraly[MNT] set macos runner for release workflow to
macos-13(#273) @fkiraly[MNT] moving ensemble regressors to
regression.ensemble(#302) @fkiraly[MNT] deprecation handling for
CyclicBoosting(#329) @fkiraly, @setoguchi-naoki[MNT] fix repository variables in changelog generator (#333) @fkiraly
Documentation#
[DOC] add missing contributors to
all-contributorsrc- @an20805, @duydl, @sukjingitsit (#284) @fkiraly[DOC] tutorial notebook for probability distributions (#303) @fkiraly
[DOC] tutorial notebook for survival prediction (#305) @fkiraly
[DOC] visualizations for first intro vignette in intro notebook and minor updates (#311) @fkiraly
[DOC] Fix typos throughout the codebase (#338) @szepeviktor
Contributors#
@an20805, @fkiraly, @malikrafsan, @nilesh05apr, @setoguchi-naoki, @ShreeshaM07, @sukjingitsit, @szepeviktor
[2.2.2] - 2024-04-20#
Highlights#
lifelinespredictive survival regressors are available asskproestimators: accelerated failure time (Fisk, Log-normal, Weibull), CoxPH variants, Aalen additive model (#247, #258, #260) @fkiralyscikit-survivalpredictive survival regressors are available asskproestimators: CoxPH variants, CoxNet, survival tree and forest, survival gradient boosting (#237) @fkiralyGLM regressor using
statsmodelsGLM, with Gaussian link (#222) @julian-fongvarious survival type distributions added: log-normal, logistic, Fisk (=log-logistic), Weibull (#218, #241, #242, #259) @bhavikar, @malikrafsan, @fkiraly
Core interface changes#
Probability distributions#
Probability distributions (
BaseDistribution) now have alenmethod, which returns the number of number of rows of the distribution, this is the same as thelenof apd.DataFramereturned bysample.the interface now supports discrete distributions and those with integer support. Such distributions implement
pmfandlog_pmfmethods.
Enhancements#
Probability distributions#
[ENH] make
Empiricaldistribution compatible with multi-index rows (#233) @fkiraly[ENH] empirical quantile parameterized distribution (#236) @fkiraly
[ENH] add
lenofBaseDistribution, testshape,len, indices (#239) @fkiraly[ENH] Logistic distribution (#241) @malikrafsan
[ENH] Weibull distribution (#242) @malikrafsan
[ENH] Johnson QP-distributions - add some missing capability tags (#253) @fkiraly
[ENH] remove stray
_get_bc_paramsfromLogNormal(#256) @fkiraly[ENH] Fisk distribution aka log-logistic distribution (#259) @fkiraly
Probabilistic regression#
[ENH]
GLMRegressorusing statsmodelsGLMwith 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-logistic/Fisk AFT model from
lifelines(#260) @fkiraly
Test framework#
Fixes#
Probability distributions#
Documentation#
Maintenance#
Contributors#
[2.2.1] - 2024-03-03#
Minor bugfix and maintenance release.
Contents#
[2.2.0] - 2024-02-08#
Highlights#
interface to
cyclic_boostingpackage (#144) @setoguchi-naoki, @FelixWickframework support for probabilistic survival/time-to-event prediction with right censored data (#157) @fkiraly
basic set of time-to-event prediction estimators and survival prediction metrics (#161, #198) @fkiraly
Johnson Quantile-Parameterized Distributions (QPD) with bounded and unbounded mode (#144) @setoguchi-naoki, @FelixWick
abstract parallelization backend, for benchmarking and tuning (#160) @fkiraly, @hazrulakmal
Dependency changes#
pandasbounds 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 inskproproper and compatible third party packages. It is also used to generate mini-package headers used in lookup functionality of theskprowebpage.the
model_selectionandbenchmarkingutilities now support abstract parallelization backends via thebackendandbackend_paramsarguments. This has been standardized to use the same backend options and syntax as the abstract parallelization backend insktime.
Probabilistic regression#
all probabilistic regressors now accept an argument
Cinfit, 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
Cif 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
Cargument to thefitmethods. Regressors that genuinely support survival prediction have thecapability: survivaltag set toTruein their metadata.an extension template for survival prediction has been added to the
skproextension templates, inextension_templatesthe interface for probabilistic performance metrics has been extended to also accept censoring information, which can be passed via the optional
C_trueargument, to all performance metrics. Metrics genuinely supporting survival prediction have thecapability: survivaltag set toTrue. Other metrics still take theC_trueargument, but ignore it. This corresponds to the naive reduction strategy of “ignoring censoring information”.for pipelining and tuning, the existing compositors in
model_selectionandregression.composecan be used, see above.for benchmarking, the existing benchmarking framework in
benchmarkingcan be used, it has been extended to support survival prediction and censoring information.
Enhancements#
BaseObject and base framework#
Probability distributions#
[ENH] Johnson Quantile-Parameterized Distributions (QPD) with bounded and unbounded mode (#144) @setoguchi-naoki, @FelixWick
Probabilistic regression#
[ENH] Cyclic boosting interface (#144) @setoguchi-naoki, @FelixWick
[ENH] abstract parallelization backend, refactor of
evaluateand tuners, extend evaluate and tuners to survival predictors (#160) @fkiraly, @hazrulakmal
Survival and time-to-event prediction#
Fixes#
Probabilistic regression#
Test framework#
Documentation#
Maintenance#
[MNT] [Dependabot](deps): Bump styfle/cancel-workflow-action from
0.12.0to0.12.1(#183) @dependabot[MNT] skip
CyclicBoostingand QPD tests until #189 failures are resolved (#193) @fkiraly[MNT] [Dependabot](deps-dev): Update pandas requirement from
<2.2.0,>=1.1.0to>=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.0to3.0.1(#202) @dependabot
Contributors#
[2.1.3] - 2023-01-22#
sklearn compatibility update:
compatibility with
sklearn 1.4.Xaddition of
feature_names_in_andn_features_in_default attributes toBaseProbaRegressor, written toselfinfit
Dependency changes#
sklearnbounds 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_andn_features_in_toselfinfit.feature_names_in_is an 1Dnp.ndarrayof feature names seen infit,n_features_in_is anint, and equal tolen(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_paramsinterface.
Enhancements#
[ENH] in
BaseRegressorProba.fit, use"feature_names"metadata field to store feature names and write toselfinfit(#180) @dependabot
Maintenance#
[MNT] [Dependabot](deps): Bump
actions/dependency-review-actionfrom 3 to 4 (#178) @dependabot[MNT] [Dependabot](deps-dev): Update polars requirement from
<0.20.0to<0.21.0(#176) @dependabot[MNT] [Dependabot](deps-dev): Update
sphinx-issuesrequirement from<4.0.0to<5.0.0(#179) @dependabot[MNT] [Dependabot](deps-dev): Update
scikit-learnrequirement from<1.4.0,>=0.24.0to>=0.24.0,<1.5.0(#177) @dependabot
[2.1.2] - 2024-01-07#
Highlights#
Dependency changes#
scikit-basebounds 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#
Probability distributions#
Probabilistic regression#
[ENH]
sklearnwrappers to str-coerce columns ofpd.DataFramebefore passing (#148) @fkiraly[ENH] clean up copy-paste leftovers in
BaseProbaRegressor(#156) @fkiraly[ENH] adapter for
sklearnprobabilistic regressors (#163) @fkiraly[ENH] interfacing all concrete
sklearnprobabilistic regressors (#166) @fkiraly
Test framework#
Fixes#
Probabilistic regression#
Documentation#
Maintenance#
[MNT] [Dependabot](deps): Bump
actions/upload-artifactfrom 3 to 4 (#154) @dependabot[MNT] [Dependabot](deps): Bump
actions/download-artifactfrom 3 to 4 (#153) @dependabot[MNT] [Dependabot](deps): Bump
actions/setup-pythonfrom 4 to 5 (#152) @dependabot[MNT] [Dependabot](deps-dev): Update
sphinx-galleryrequirement from<0.15.0to<0.16.0(#149) @dependabot[MNT] [Dependabot](deps-dev): Update
scikit-baserequirement from<0.7.0,>=0.6.1to>=0.6.1,<0.8.0(#169) @dependabot[MNT] adding
codecov.ymland turning coverage reports informational (#165) @fkiraly[MNT] handle deprecation of
pandas.DataFrame.applymap(#170) @fkiraly
[2.1.1] - 2023-11-02#
Highlights#
Enhancements#
Data types, checks, conversions#
Probabilistic regression#
Test framework#
Documentation#
Maintenance#
Fixes#
Contributors#
[2.1.0] - 2023-10-09#
Python 3.12 compatibility release.
Contents#
[MNT] [Dependabot](deps-dev): Update
numpyrequirement from<1.25,>=1.21.0to>=1.21.0,<1.27(#118) @dependabot[MNT] Python 3.12 support - for
skprorelease 2.1.0 (#109) @fkiraly
[2.0.1] - 2023-10-08#
Release with minor maintenance actions and enhancements.
Enhancements#
Documentation#
Maintenance#
[MNT] address deprecation of
skbase.testing.utils.deep_equals(#111) @fkiraly[MNT] activate
dependabotfor version updates and maintenance (#110) @fkiraly[MNT] [Dependabot](deps): Bump
styfle/cancel-workflow-actionfrom 0.9.1 to 0.12.0 (#113) @dependabot[MNT] [Dependabot](deps): Bump
actions/dependency-review-actionfrom 1 to 3 (#114) @dependabot[MNT] [Dependabot](deps): Bump
actions/checkoutfrom 3 to 4 (#115) @dependabot[MNT] [Dependabot](deps): Bump
actions/download-artifactfrom 2 to 3 (#116) @dependabot[MNT] [Dependabot](deps): Bump
actions/upload-artifactfrom 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#
[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.