pycox
pycox 是一个基于 PyTorch 构建的 Python 开源库,专注于生存分析与事件时间预测。它主要解决了传统统计方法在处理高维数据或复杂非线性关系时的局限性,帮助开发者利用深度学习技术更精准地预测事件发生的时间概率(如患者生存期、设备故障时间等)。
该工具非常适合人工智能研究人员、数据科学家以及需要处理时间至事件数据的深度学习开发者使用。pycox 不仅封装了多种主流的生存分析模型算法,还提供了从数据预处理、神经网络构建、模型训练到效果评估的一站式解决方案。其独特的技术亮点在于依托 torchtuples 框架,极大地简化了 PyTorch 模型的训练流程,并内置了丰富的评估指标与标准数据集。此外,pycox 具有高度的灵活性,支持用户自定义网络架构和损失函数,甚至能将自编码器等结构与生存模型结合,为探索前沿算法提供了便捷的基础设施。无论是初学者通过示例笔记本快速上手,还是专家进行复杂的定制化研究,pycox 都能提供专业且友好的支持。
使用场景
某医疗科技公司的数据科学团队正在构建癌症患者术后复发风险预测系统,需要精准估算不同时间点的生存概率以辅助医生制定个性化随访方案。
没有 pycox 时
- 传统统计模型(如 Cox 比例风险模型)难以直接融合医学影像等非结构化数据,特征工程极其繁琐且信息损失严重。
- 缺乏基于深度学习的端到端训练框架,无法利用 PyTorch 的自动微分优势灵活定制复杂的神经网络架构来处理高维病历数据。
- 处理“删失数据”(即部分患者在观察期内未复发或失访)时需手动编写复杂的似然函数,代码易错且难以复现前沿算法。
- 评估模型性能时,缺少标准化的时间依赖性指标(如动态 C-index),导致难以客观对比不同时间点上的预测准确度。
使用 pycox 后
- 直接调用内置的
LogisticHazard或DeepHit等方法,轻松将 CNN 提取的影像特征与临床表格数据结合,实现多模态端到端建模。 - 依托 PyTorch 生态,团队可快速搭建包含自编码器或注意力机制的自定义网络,并利用
torchtuples简化训练循环与超参数调优。 - 内置模块自动处理删失数据的损失函数计算,无需重复造轮子,显著降低算法实现门槛并确保数学逻辑的严谨性。
- 提供开箱即用的评估工具包,一键生成时间依赖性的 ROC 曲线和 C-index,直观量化模型在整个随访周期内的表现。
pycox 通过将前沿生存分析算法与 PyTorch 深度整合,让医疗团队能高效构建高精度的动态风险预测模型,真正赋能临床决策。
运行环境要求
未说明
未说明

快速开始
使用 PyTorch 进行事件发生时间预测
开始使用 • 方法 • 评估标准 • 数据集 • 安装 • 参考文献
pycox 是一个用于生存分析和事件发生时间预测的 Python 包,基于 PyTorch 构建,并依托于 torchtuples 包来训练 PyTorch 模型。该包的 R 版本可在 survivalmodels 中找到。
此包包含多种 生存模型 的实现、一些有用的 评估指标,以及一系列 事件时间数据集。此外,pycox.preprocessing 模块中还提供了一些实用的预处理工具。
开始使用
要开始使用,您首先需要安装 PyTorch。 然后可以通过 pip 安装 pycox:
pip install pycox
或者通过 conda 安装:
conda install -c conda-forge pycox
我们建议从 01_introduction.ipynb 开始,该笔记本以预处理、神经网络构建、模型训练和评估流程为例,详细介绍了包的基本用法。
虽然该笔记本以 LogisticHazard 方法为例进行说明,但其中的大部分原则同样适用于其他方法。
此外,examples 文件夹 中也列有许多示例,或者您可以按照基于 LogisticHazard 的教程进行学习:
01_introduction.ipynb:以预处理、神经网络构建、模型训练和评估流程为例,介绍包的一般用法。
02_introduction.ipynb:基于分位数的离散化方案、使用
tt.tuplefy的嵌套元组、分类变量的实体嵌入,以及循环学习率的应用。03_network_architectures.ipynb: 展示如何通过自定义网络和自定义损失函数扩展框架。该示例将自动编码器与生存网络相结合,并考虑一种同时包含自动编码器损失和
LogisticHazard损失的综合损失函数。04_mnist_dataloaders_cnn.ipynb: 使用数据加载器和卷积神经网络处理 MNIST 数据集。我们复现了 [8] 中的 模拟实验,其中每个数字定义了一个指数分布的比例参数。
方法
以下方法可在 pycox.methods 模块中找到。
连续时间模型:
| 方法 | 描述 | 示例 |
|---|---|---|
| CoxTime | Cox-Time 是一种相对风险模型,它将 Cox 回归扩展到了比例风险假设之外 [1]。 | 笔记本 |
| CoxCC | Cox-CC 是 Cox-Time 模型的比例版本 [1]。 | 笔记本 |
| CoxPH (DeepSurv) | CoxPH 是一种 Cox 比例风险模型,也被称为 DeepSurv [2]。 | 笔记本 |
| PCHazard | 分段常数风险(PC-Hazard)模型 [12] 假设连续时间的风险函数在预定义的区间内保持不变。 它类似于分段指数模型 [11] 和 PEANN [14], 不过使用的是 softplus 激活函数而非指数函数。 | 笔记本 |
离散时间模型:
| 方法 | 描述 | 示例 |
|---|---|---|
| LogisticHazard (Nnet-survival) | Logistic-Hazard 方法对离散风险进行参数化,并优化生存似然函数 [12] [7]。 它也被称为部分逻辑回归 [13] 和 Nnet-survival [8]。 | notebook |
| PMF | PMF 方法对概率质量函数 (PMF) 进行参数化,并优化生存似然函数 [12]。它是 DeepHit 和 MTLR 等方法的基础。 | notebook |
| DeepHit、DeepHitSingle | DeepHit 是一种基于 PMF 的方法,采用改进排序的损失函数,能够处理竞争风险 [3]。 | single competing |
| MTLR (N-MTLR) | (神经)多任务逻辑回归是一种由 [9] 和 [10] 提出的 PMF 方法。 | notebook |
| BCESurv | 该方法由一组二分类器组成,在个体被删失时将其移除 [15]。损失函数是在一组离散时间点上生存估计的二元交叉熵,其目标是每个时间点是否存活的指示变量。 | bs_example |
评估指标
以下评估指标可通过 pycox.evaluation.EvalSurv 获得。
| 指标 | 描述 |
|---|---|
| concordance_td | 在事件发生时间点上评估的时变一致性指数 [4]。 |
| brier_score | IPCW 布里尔评分(删失概率逆加权布里尔评分) [5][6][15]。 详情请参阅 [15] 第 3.1.2 节。 |
| nbll | IPCW(负)二项式对数似然 [5][1]。即这是二项式对数似然的负值,不应与负二项式分布混淆。 权重计算方式同 [15] 第 3.1.2 节所述。 |
| integrated_brier_score | 整合后的 IPCW 布里尔评分。对 `brier_score` 进行数值积分 [5][6]。 |
| integrated_nbll | 整合后的 IPCW(负)二项式对数似然。对 `nbll` 进行数值积分 [5][1]。 |
| brier_score_admin integrated_brier_score_admin | 行政性布里尔评分 [15]。适用于存在行政删失的数据,即所有删失时间均可观测。 请参阅此 示例 notebook。 |
| nbll_admin integrated_nbll_admin | 行政性(负)二项式对数似然 [15]。同样适用于存在行政删失的数据,即所有删失时间均可观测。 请参阅此 示例 notebook。 |
数据集
通过 pycox.datasets 模块可以获取一系列数据集。
例如,以下代码将下载 metabric 数据集并以 pandas 数据框的形式加载:
from pycox import datasets
df = datasets.metabric.read_df()
默认情况下,datasets 模块会将数据集存储在安装目录下。您可以通过设置环境变量 PYCOX_DATA_DIR 来指定其他目录。
真实数据集:
| 数据集 | 规模 | 数据集 | 数据来源 |
|---|---|---|---|
| flchain | 6,524 | 血清游离轻链(FLCHAIN)数据集。预处理方法见 [1]。 | 来源 |
| gbsg | 2,232 | 鹿特丹和德国乳腺癌研究小组的数据。 详情请参阅 [2]。 | 来源 |
| kkbox | 2,814,735 | 基于WSDM - KKBox 2017年客户流失预测挑战赛构建的生存数据集,包含行政删失信息。 详情请参阅 [1] 和 [15]。 与kkbox_v1相比,该数据集具有更多的协变量和删失时间。 注意:访问该数据集需要 Kaggle账号凭据。 | 来源 |
| kkbox_v1 | 2,646,746 | 基于WSDM - KKBox 2017年客户流失预测挑战赛构建的生存数据集。 详情请参阅 [1]。 这不是该数据集的首选版本,请使用kkbox。 注意:访问该数据集需要 Kaggle账号凭据。 | 来源 |
| metabric | 1,904 | 国际乳腺癌分子分类联盟(METABRIC)的数据。 详情请参阅 [2]。 | 来源 |
| nwtco | 4,028 | 来自全国威尔姆斯肿瘤研究组(NWTCO)的数据。 | 来源 |
| support | 8,873 | “理解治疗预后、偏好、结果及风险”研究(SUPPORT)。 详情请参阅 [2]。 | 来源 |
模拟数据集:
| 数据集 | 规模 | 数据集 | 数据来源 |
|---|---|---|---|
| rr_nl_nph | 25,000 | 来自 [1] 中模拟研究的数据集。 这是一项连续时间模拟研究,事件时间基于相对风险非线性非比例风险模型(RRNLNPH)生成。 | SimStudyNonLinearNonPH |
| sac3 | 100,000 | 来自 [12] 中模拟研究的数据集。 这是一个离散时间数据集,有1000种可能的事件时间。 | SimStudySACCensorConst |
| sac_admin5 | 50,000 | 来自 [15] 中模拟研究的数据集。 这也是一个离散时间数据集,有1000种可能的事件时间。 与`sac3`非常相似,但生存协变量较少,并且行政删失由5个协变量决定。 | SimStudySACAdmin |
安装
注意: 本包目前仍处于开发初期,如果您遇到任何问题,请随时报告。
该包仅支持Python 3.6及以上版本。
在安装pycox之前,请先安装PyTorch(版本≥1.1)。 随后可以通过以下命令安装该包:
pip install pycox
若需使用最新版本,可直接从GitHub安装(建议添加--force-reinstall参数):
pip install git+git://github.com/havakv/pycox.git
从源码安装
从源码安装依赖于PyTorch,因此请确保已安装PyTorch。 接下来,克隆并安装:
git clone https://github.com/havakv/pycox.git
cd pycox
pip install .
参考文献
[1] Håvard Kvamme、Ørnulf Borgan 和 Ida Scheel。基于神经网络和Cox回归的时间至事件预测。《机器学习研究期刊》,20(129):1–30,2019年。[论文](http://jmlr.org/papers/v20/18-424.html)\]
[2] Jared L. Katzman、Uri Shaham、Alexander Cloninger、Jonathan Bates、Tingting Jiang 和 Yuval Kluger。Deepsurv:使用Cox比例风险深度神经网络的个性化治疗推荐系统。《BMC医学研究方法学》,18(1),2018年。[论文](https://doi.org/10.1186/s12874-018-0482-1)\]
[3] Changhee Lee、William R Zame、Jinsung Yoon 和 Mihaela van der Schaar。Deephit:一种用于竞争风险生存分析的深度学习方法。《第三十二届人工智能协会会议论文集》,2018年。[论文](http://medianetlab.ee.ucla.edu/papers/AAAI_2018_DeepHit)\]
[4] Laura Antolini、Patrizia Boracchi 和 Elia Biganzoli。生存数据的时间依赖性判别指数。《统计在医学中》,24(24):3927–3944,2005年。[论文](https://doi.org/10.1002/sim.2427)\]
[5] Erika Graf、Claudia Schmoor、Willi Sauerbrei 和 Martin Schumacher。生存数据预后分类方案的评估与比较。《统计在医学中》,18(17-18):2529–2545,1999年。[论文](https://onlinelibrary.wiley.com/doi/abs/10.1002/%28SICI%291097-0258%2819990915/30%2918%3A17/18%3C2529%3A%3AAID-SIM274%3E3.0.CO%3B2-5)\]
[6] Thomas A. Gerds 和 Martin Schumacher。右删失事件时间下一般生存模型中期望Brier分数的一致估计。《生物计量学杂志》,48(6):1029–1040,2006年。[论文](https://onlinelibrary.wiley.com/doi/abs/10.1002/bimj.200610301?sid=nlm%3Apubmed)\]
[7] Charles C. Brown。关于在反应时间模型中使用指示变量研究参数时间依赖性的探讨。《生物计量学》,31(4):863–872,1975年。 [论文](https://www.jstor.org/stable/2529811?seq=1#metadata_info_tab_contents)\]
[8] Michael F. Gensheimer 和 Balasubramanian Narasimhan。一种适用于神经网络的可扩展离散时间生存模型。《PeerJ》,7:e6257,2019年。 [论文](https://peerj.com/articles/6257/)\]
[9] Chun-Nam Yu、Russell Greiner、Hsiu-Chin Lin 和 Vickie Baracos。将患者特异性癌症生存分布学习为一系列相关回归器。《神经信息处理系统进展24》,第1845–1853页。Curran Associates, Inc.,2011年。 [论文](https://papers.nips.cc/paper/4210-learning-patient-specific-cancer-survival-distributions-as-a-sequence-of-dependent-regressors)\]
[10] Stephane Fotso。基于多任务框架的生存分析深度神经网络。《arXiv预印本 arXiv:1801.05512》,2018年。 [论文](https://arxiv.org/pdf/1801.05512.pdf)\]
[11] Michael Friedman。带有协变量的生存数据分段指数模型。《统计年鉴》,10(1):101–113,1982年。 [论文](https://projecteuclid.org/euclid.aos/1176345693)\]
[12] Håvard Kvamme 和 Ørnulf Borgan。基于神经网络的连续与离散时间生存预测。《arXiv预印本 arXiv:1910.06724》,2019年。 [论文](https://arxiv.org/pdf/1910.06724.pdf)\]
[13] Elia Biganzoli、Patrizia Boracchi、Luigi Mariani 和 Ettore Marubini。用于删失生存数据分析的前馈神经网络:一种部分逻辑回归方法。《统计在医学中》,17(10):1169–1186,1998年。 [论文](https://onlinelibrary.wiley.com/doi/abs/10.1002/(SICI)1097-0258(19980530)17:10%3C1169::AID-SIM796%3E3.0.CO;2-D)\]
[14] Marco Fornili、Federico Ambrogi、Patrizia Boracchi 和 Elia Biganzoli。用于建模右删失数据危险函数的分段指数人工神经网络(PEANN)。《生物信息学与生物统计学的计算智能方法》,第125–136页,2014年。 [论文](https://link.springer.com/chapter/10.1007%2F978-3-319-09042-9_9)\]
[15] Håvard Kvamme 和 Ørnulf Borgan。行政删失下的Brier分数:问题与解决方案。《arXiv预印本 arXiv:1912.08581》,2019年。 [论文](https://arxiv.org/pdf/1912.08581.pdf)\]
版本历史
v0.3.02024/09/04v0.2.32022/01/14v0.2.22021/02/02v0.2.12020/04/30v0.2.02019/12/19v0.1.12019/12/17v0.1.02019/10/16常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器