Releases: sebp/scikit-survival
v0.23.1
This release adds support for Python 3.13. The minimum required version for pandas has been bumped to pandas 1.4.0.
Bug fixes
- Add SurvivalAnalysisMixin base class to
sksurv.ensemble.ExtraSurvivalTrees
to enable thesksurv.ensemble.ExtraSurvivalTrees.score()
method that has been unintentionally removed in 0.23.0 (#488).
Enhancements
- Improve performance of
sksurv.metrics.concordance_index_censored()
andsksurv.metrics.concordance_index_ipcw()
(#465).
Backwards incompatible changes
- Support for pandas versions before 1.4.0 has been dropped.
Full Changelog: v0.23.0...v0.23.1
v0.23.0
This release adds support for scikit-learn 1.4 and 1.5, which includes missing value support for sksurv.ensemble.RandomSurvivalForest.
Moreover, this release fixes critical bugs. When fitting sksurv.tree.SurvivalTree, the sample_weight
is now correctly considered when computing the log-rank statistic for each split. This change also affects sksurv.ensemble.RandomSurvivalForest and sksurv.ensemble.ExtraSurvivalTrees which pass sample_weight
to the individual trees in the ensemble.
This release fixes a bug in sksurv.ensemble.ComponentwiseGradientBoostingSurvivalAnalysis and sksurv.ensemble.GradientBoostingSurvivalAnalysis when dropout is used. Previously, dropout was only applied starting with the third iteration, now dropout is applied in the second iteration too.
Finally, this release adds compatibility with numpy 2.0 and drops support for Python 3.8.
Bug fixes
- Fix issue with dropout in sksurv.ensemble.ComponentwiseGradientBoostingSurvivalAnalysis and sksurv.ensemble.GradientBoostingSurvivalAnalysis, where it was only applied starting with the third iteration.
- Fix LogrankCriterion in sksurv.tree.SurvivalTree to handle
sample_weight
correctly (#464).
Enhancements
- Fix deprecations with pandas 2.2.
- Drop importlib-resources dependency.
- Add support for scikit-learn 1.4 (#441).
- Add
warm_start
support to sksurv.ensemble.ComponentwiseGradientBoostingSurvivalAnalysis. - Add missing values support to sksurv.ensemble.RandomSurvivalForest.
- Add
require_y
tag to sksurv.base.SurvivalAnalysisMixin. - Upgrade to ruff 0.4.3 (#456).
- Add support for scikit-learn 1.5 (#461).
Documentation
- Fix sksurv.nonparametric.kaplan_meier_estimator() documentation to give correct default value for
conf_type
(#430). - Fix allowed values for kernel in sksurv.svm.FastSurvivalSVM and sksurv.svm.MinlipSurvivalAnalysis (#444).
- Fix typo in API doc of sksurv.ensemble.RandomSurvivalForest and sksurv.ensemble.ExtraSurvivalTrees (#446).
- Fix API doc for the
criterion
parameter of sksurv.ensemble.GradientBoostingSurvivalAnalysis (#449). - Update links to scipy, pandas and numpy documentation.
- Fix letter of hyper-parameter used in the formula for sksurv.linear_model.IPCRidge (#454).
- Upgrade Sphinx to 7.3 and pydata-sphinx-theme to 0.15 (#455).
Backwards incompatible changes
- Drop support for Python 3.8 (#427).
New Contributors
- @CaderIdris made their first contribution in #430
Full Changelog: v0.22.2...v0.23.0
v0.22.2
This release adds support for Python 3.12.
Bug fixes
- Fix invalid escape sequence in Introduction of user guide.
Enhancements
- Mark Cython functions as noexcept (#418).
- Add support for Python 3.12 (#422).
- Do not use deprecated is_categorical_dtype() of Pandas API.
Documentation
- Add section Building Cython Code to contributing guidelines (#379).
- Improve the description of the estimate parameter in sksurv.metrics.brier_score() and sksurv.metrics.integrated_brier_score() (#424).
Full Changelog: v0.22.1...v0.22.2
v0.22.1
v0.22.0
This release adds support for scikit-learn 1.3, which includes missing value support for sksurv.tree.SurvivalTree. Support for previous versions of scikit-learn has been dropped.
Moreover, a low_memory option has been added to sksurv.ensemble.RandomSurvivalForest, sksurv.ensemble.ExtraSurvivalTrees, and sksurv.tree.SurvivalTree which reduces the memory footprint of calling predict, but disables the use of predict_cumulative_hazard_function
and predict_survival_function
.
Bug fixes
- Fix issue where an estimator could be fit to data containing negative event times (#410).
Enhancements
- Expand test_stacking.py coverage w.r.t.
predict_log_proba
(#380). - Add
low_memory
option to sksurv.ensemble.RandomSurvivalForest, sksurv.ensemble.ExtraSurvivalTrees, and sksurv.tree.SurvivalTree. If set, predict computations use less memory, butpredict_cumulative_hazard_function
andpredict_survival_function
are not implemented (#369). - Allow calling sksurv.meta.Stacking.predict_cumulative_hazard_function() and sksurv.meta.Stacking.predict_survival_function() if the meta estimator supports it (#388).
- Add support for missing values in sksurv.tree.SurvivalTree based on missing value support in scikit-learn 1.3 (#405).
- Update bundled Eigen to 3.4.0.
Documentation
- Add sksurv.meta.Stacking.unique_times_ to API docs.
- Upgrade to Sphinx 6.2.1 and pydata_sphinx_theme 0.13.3 (#390).
Backwards incompatible changes
-
The
loss_
attribute of sksurv.ensemble.ComponentwiseGradientBoostingSurvivalAnalysis and sksurv.ensemble.GradientBoostingSurvivalAnalysis has been removed (#402). -
Support for
max_features='auto'
in sksurv.ensemble.GradientBoostingSurvivalAnalysis and sksurv.tree.SurvivalTree has been removed (#402).
Full Changelog: v0.21.0...v0.22.0
v0.21.0
This is a major release bringing new features and performance improvements.
- sksurv.nonparametric.kaplan_meier_estimator() can estimate pointwise confidence intervals by specifying the
conf_type
parameter. - sksurv.ensemble.GradientBoostingSurvivalAnalysis supports early-stopping via the monitor parameter of sksurv.ensemble.GradientBoostingSurvivalAnalysis.fit().
- sksurv.metrics.concordance_index_censored() has a significantly reduced memory footprint. Memory usage now scales linear, instead of quadratic, in the number of samples.
- Fitting of sksurv.tree.SurvivalTree, sksurv.ensemble.RandomSurvivalForest, or sksurv.ensemble.ExtraSurvivalTrees is about 3x faster.
- Finally, the release adds support for Python 3.11 and pandas 2.0.
Bug fixes
- Fix bug where times passed to sksurv.metrics.brier_score() was downcast, resulting in a loss of precision that may lead to duplicate time points (#349).
- Fix inconsistent behavior of evaluating functions returned by
predict_cumulative_hazard_function
orpredict_survival_function
(#375).
Enhancements
- sksurv.nonparametric.kaplan_meier_estimator() and sksurv.nonparametric.CensoringDistributionEstimator support returning confidence intervals by specifying the
conf_type
parameter (#348). - Configure package via pyproject.toml (#347).
- Add support for Python 3.11 (#350).
- Add support for early-stopping to sksurv.ensemble.GradientBoostingSurvivalAnalysis (#354).
- Do not use deprecated pkg_resources API (#353).
- Significantly reduce memory usage of sksurv.metrics.concordance_index_censored() (#362).
- Set criterion attribute in sksurv.tree.SurvivalTree such that sklearn.tree.plot_tree() can be used (#366).
- Significantly improve speed to fit a sksurv.tree.SurvivalTree, sksurv.ensemble.RandomSurvivalForest, or sksurv.ensemble.ExtraSurvivalTrees (#371).
- Expose
_predict_risk_score
attribute in sklearn.pipeline.Pipeline if the final estimator of the pipeline has such property (#374). - Add support for pandas 2.0 (#373).
Documentation
- Fix wrong number of selected features in the guide Introduction to Survival Analysis (#345).
- Fix broken links with nbsphinx 0.9.2 (#367).
Backwards incompatible changes
- The attribute
event_times_
of estimators has been replaced byunique_times_
to clarify that these are all the unique times points, not just the once where an event occurred (#371). - Functions returned by
predict_cumulative_hazard_function
andpredict_survival_function
of sksurv.tree.SurvivalTree, sksurv.ensemble.RandomSurvivalForest, and sksurv.ensemble.ExtraSurvivalTrees are over all unique time points passed as training data, instead of all unique time points where events occurred (#371). - Evaluating a function returned by
predict_cumulative_hazard_function
orpredict_survival_function
will no longer raise an exception if the specified time point is smaller than the smallest time point observed during training. Instead, the value atStepFunction.x[0]
will be returned (#375).
New Contributors
- @dor132 made their first contribution in #345
- @cpoerschke made their first contribution in #358
Full Changelog: v0.20.0...v0.21.0
v0.20.0
This release adds support for scikit-learn 1.2 and drops support for previous versions.
Enhancements
- Raise more informative error messages when a parameter does not have a valid type/value (see sklearn#23462).
- Add positive and random_state parameters to sksurv.linear_model.IPCRidge.
Documentation
- Update API docs based on scikit-learn 1.2 (where applicable).
Backwards incompatible changes
-
To align with the scikit-learn API, many parameters of estimators must be provided with their names, as keyword arguments, instead of positional arguments.
-
Remove deprecated
normalize
parameter from sksurv.linear_model.IPCRidge. -
Remove deprecated
X_idx_sorted
argument from sksurv.tree.SurvivalTree.fit(). -
Setting
kernel="polynomial"
in sksurv.svm.FastKernelSurvivalSVM, sksurv.svm.HingeLossSurvivalSVM, and sksurv.svm.MinlipSurvivalAnalysis has been replaced withkernel="poly"
.
Full Changelog: v0.19.0.post1...v0.20.0
v0.19.0.post1
This release raises the install requirement of scikit-learn to 1.1.2 to avoid binary incompatibility with previous releases (#316).
Full Changelog: v0.19.0...v0.19.0.post1
v0.19.0
This release adds sksurv.tree.SurvivalTree.apply() and sksurv.tree.SurvivalTree.decision_path(), and support for sparse matrices to sksurv.tree.SurvivalTree. Moreover, it fixes build issues with scikit-learn 1.1.2 and on macOS with ARM64 CPU.
Bug fixes
- Fix build issue with scikit-learn 1.1.2, which is binary-incompatible with previous releases from the 1.1 series.
- Fix build from source on macOS with ARM64 by specifying numpy 1.21.0 as install requirement for that platform (#313).
Enhancements
- sksurv.tree.SurvivalTree: Add sksurv.tree.SurvivalTree.apply() and sksurv.tree.SurvivalTree.decision_path() (#290).
- sksurv.tree.SurvivalTree: Add support for sparse matrices (#290).
Full Changelog: v0.18.0...v0.19.0
v0.18.0
This release adds support for scikit-learn 1.1, which includes more informative error messages.
Support for Python 3.7 has been dropped, and the minimum supported versions of dependencies are updated to
- numpy 1.17.3
- Pandas 1.0.5
- scikit-learn 1.1.0
- scipy 1.3.2
Enhancements
- Add
n_iter_
attribute to all estimators in sksurv.svm (#277). - Add
return_array
argument to all models providing
predict_survival_function
andpredict_cumulative_hazard_function
(#268).
Deprecations
- The
loss_
attribute of ComponentwiseGradientBoostingSurvivalAnalysis and GradientBoostingSurvivalAnalysis has been deprecated. - The default for the
max_features
argument has been changed from'auto'
to'sqrt'
for RandomSurvivalForest and ExtraSurvivalTrees.'auto'
and'sqrt'
have the same effect.
Full Changelog: v0.17.2...v0.18.0