首页
/ scikit-survival v0.24.0发布:新增竞争风险分析与缺失值支持

scikit-survival v0.24.0发布:新增竞争风险分析与缺失值支持

2025-07-04 07:01:29作者:龚格成

scikit-survival是一个基于scikit-learn的Python生存分析库,它扩展了scikit-learn的功能,专门用于处理包含时间到事件数据(生存数据)的机器学习任务。生存分析在医学研究、工业设备故障预测、客户流失分析等领域有着广泛应用。

主要更新内容

竞争风险分析功能

本次v0.24.0版本最重要的新增功能是竞争风险分析支持。在生存分析中,竞争风险指的是研究对象可能经历多种不同类型的事件,而这些事件会相互"竞争"导致其他事件无法发生。

新版本引入了sksurv.nonparametric.cumulative_incidence_competing_risks()函数,这是一个非参数估计器,用于计算竞争风险情况下的累积发生率函数(CIF)。这个函数能够更准确地估计在存在多种竞争事件时,特定类型事件的发生概率。

为了便于用户学习和使用这一功能,项目还新增了两个包含竞争风险数据的示例数据集:

  • load_bmt():骨髓移植数据
  • load_cgvhd():慢性移植物抗宿主病数据

缺失值支持增强

在机器学习模型方面,ExtraSurvivalTrees现在支持缺失值处理,这是通过升级到scikit-learn 1.6.1实现的。这个增强使得模型能够更好地处理现实世界中常见的不完整数据。

随机生存森林改进

随机生存森林模型(RandomSurvivalForestExtraSurvivalTrees)新增了estimators_samples_属性,允许用户查看每个基学习器使用的样本子集,这对于模型解释和调试非常有帮助。

同时修复了一个参数校验问题:当bootstrap=False但设置了max_sample参数时,现在会正确报错而不是忽略这个不一致的参数组合。

技术细节优化

在底层实现上,项目进行了多项技术优化:

  1. 修正了Windows平台上C++代码中的类型不一致问题,将n_alphas的类型从int改为与Eigen库一致的VectorType::Index
  2. 改进了版本信息显示功能,修复了Python版本打印问题
  3. 全面升级到Python 3.10语法,放弃了旧版本Python的支持
  4. 测试环境升级到Python 3.12、matplotlib 3.9和seaborn 0.13

向后兼容性说明

需要注意的是,这个版本放弃了对scikit-learn 1.6.1之前版本的支持,同时也停止了对Python 3.10之前版本的支持。用户在升级时需要确保环境满足这些依赖要求。

应用价值

这些更新使得scikit-survival在以下场景中更具优势:

  1. 医学研究中需要分析多种可能结局(如疾病复发、死亡等)的竞争风险情况
  2. 工业领域需要处理带有缺失值的设备故障数据
  3. 需要更深入理解随机生存森林模型内部工作机制的研究场景

对于从事生存分析的研究人员和数据科学家来说,这个版本提供了更强大的工具来处理现实世界中复杂的生存数据分析问题。特别是竞争风险分析功能的加入,填补了之前版本在这方面的空白,使得分析结果更加准确可靠。

登录后查看全文
热门项目推荐
相关项目推荐