You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v0.6.0 drop Python 3.9, breaking API changes and enhancements
This commit was created on GitHub.com and signed with GitHub’s verified signature.
RELEASE NOTES
Version 0.6.0
Breaking changes
Drop support for Python 3.9, which reached end-of-life in October 2025. The minimum supported version is now Python 3.10
NGBoost.score now returns the negative of the average scoring rule (the mean log-likelihood for LogScore), so that higher is better as scikit-learn expects. Previously, GridSearchCV and cross_val_score without an explicit scoring argument selected the worst model (issue #418, PR #423)
Base learners are now seeded from the model random_state, so fits are reproducible and independent of n_jobs. Output for the default base learner shifts relative to 0.5.x (PR #417)
New features
Add optional n_jobs parameter to fit base learners in parallel with threads (PR #416)
Support a distinct base learner for each distribution parameter, including scikit-learn nested parameters and feature importances for all-tree configurations (issue #338, PR #411)
Add validation_fraction and early_stopping_rounds to NGBClassifier and NGBSurvival for API parity with NGBRegressor (issue #402, PR #407)
Report fitted status to scikit-learn's check_is_fitted via __sklearn_is_fitted__, fixing NotFittedError in Pipeline.predict on sklearn >= 1.8 (PR #429)
Set scikit-learn classifier metadata on NGBClassifier so that scikit-learn correctly identifies it as a classifier (PR #413)
Handle array-like sample weights positionally and validate them at fit time; weights with wrong length, shape, NaN, or inf now raise ValueError (PR #425)
Document saving and loading models with skops and test the round trip (PR #427)
Bug fixes
Fix the CRPScore metric of Normal, NormalFixedMean, and LogNormal, which was off by a factor of the predicted scale. Fits using CRPScore with these distributions now produce correct natural gradients (issue #421, PR #424)
Fix the scale gradient of the LaplaceCRPScore, which dropped a 0.75 * scale term (PR #419)
Fix censored scores and gradients for Exponential and LogNormal, which swapped censored and observed rows and had sign and extra-term errors (PR #420)
Fix the log-scale Fisher information of TFixedDf and Cauchy, which was off by a factor of 4 * var (PR #422)
Reset validation iteration metadata on refit so that re-calling fit on the same model behaves identically to fitting a fresh one (PR #426)
Keep random_state as given and seed a fresh generator in fit, so that get_params returns the original value and clones behave identically (PR #417)
Replace the deprecated friedman_mse criterion with squared_error for the default tree learner (issue #408, PR #409)
Documentation and CI
Build the user guide with Jupyter Book 2 in GitHub Actions and deploy on push to master (PR #428)
Remove the old prebuilt docs site generated by jupyter-book 0.x in 2020 (PR #430)
Run user guide notebooks during the docs build with --execute, replacing removed load_boston calls with load_diabetes (PR #431)
Mark observed rows as events in the survival examples (PR #436)
Run the test matrix once per commit and cancel stale PR runs via concurrency groups (PR #444)
Fix scikit-learn wheel resolution on Python 3.14 (PR #414)