✨ 欢迎关注Python机器学习AI ✨
本节介绍: 生存机器学习时间依赖ROC曲线(Time-dependent ROC Curve)绘制 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 实现结果 ✨
✨ 背景 ✨
生存机器学习中的时间依赖ROC曲线(Time-dependent ROC Curve)是一种评估模型在不同时间点上预测事件发生风险的工具,它结合了生存数据中的时间因素,通过绘制ROC曲线并计算AUC值来衡量模型在特定时间点的分类性能,帮助了解模型在长期预测中的稳定性和准确性。该曲线对于生存分析中随时间变化的风险预测特别重要,有助于选择最合适的模型和阈值,并监控模型随时间变化的表现。
✨ 基础代码 ✨
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
# 读取训练和测试数据
X_train = pd.read_excel('X_train_selected.xlsx') # 读取训练数据的特征
y_train = pd.read_excel('ytrain.xlsx', index_col=0) # 读取训练数据的标签,第一列作为索引
X_test = pd.read_excel('X_test_selected.xlsx') # 读取测试数据的特征
y_test = pd.read_excel('ytest.xlsx', index_col=0) # 读取测试数据的标签,第一列作为索引
from sksurv.ensemble import GradientBoostingSurvivalAnalysis
##### settings #####
random_state = 20 # 控制随机性,确保结果可复现
n_estimators = 1000 # 树的数量
learning_rate = 0.1 # 学习率
max_depth = 3 # 树的最大深度
min_samples_split = 10 # 内部节点划分所需的最小样本数
min_samples_leaf = 15 # 叶节点所需的最小样本数
max_features = "sqrt" # 在寻找最佳划分时考虑的特征数量
# 使用生存梯度提升机拟合一个模型,并指定损失函数为"coxph"(Cox比例风险模型)
gbdt = GradientBoostingSurvivalAnalysis(n_estimators=n_estimators, # 树的数量
learning_rate=learning_rate, # 学习率
max_depth=max_depth, # 最大树深度
min_samples_split=min_samples_split, # 最小样本数
min_samples_leaf=min_samples_leaf, # 最小叶子节点样本数
max_features=max_features, # 每次分裂时考虑的最大特征数
random_state=random_state, # 随机种子,确保结果可复现
loss="coxph") # 指定使用Cox比例风险模型作为损失函数
# 训练模型
gbdt.fit(X_train, y_train) # 使用训练数据(Xtrain 和 ytrain)训练生存梯度提升机模型
通过使用生存梯度提升机(Gradient Boosting Survival Analysis)模型,基于训练数据 X_train 和标签 y_train 来训练一个生存分析模型,并指定损失函数为 Cox 比例风险模型(coxph),用于预测个体的生存概率
# 使用训练后的模型来预测测试集的风险分数
y_pred = gbdt.predict(X_test) # 返回每个样本的风险预测值(风险分数)
y_pred
使用训练后的生存梯度提升机模型(gbdt)来预测测试集(X_test)中每个样本的风险分数,y_pred 返回每个样本的风险值。这些风险分数表示每个样本在测试集中的相对风险,通常用于生存分析中预测某事件(例如死亡、失败等)的发生风险。
在结果中,正值表示较高的风险,负值表示较低的风险。这些值可以用来比较不同个体的风险水平,从而帮助预测某些事件在未来发生的概率。
# 定义时间点列表
time_points = [10, 20, 30, 40]
# 调用绘制ROC曲线的函数,并传入必要的参数
# time_points: 时间点列表
# y_test: 测试集的真实标签
# y_pred: 模型对测试集的预测值
# time_unit: 时间单位,这里设置为 "Week"(周)
# colors: 每个时间点对应的颜色列表
# file_name: 输出文件的名称,这里设置为 "roc_curve.pdf"
plot_time_dependent_roc(
time_points, # 时间点
y_test, # 真实标签
y_pred, # 预测值
time_unit="Week", # 设置时间单位为“周”
colors=['blue', 'green', 'orange', 'purple'], # 设置每个时间点对应的颜色
file_name="roc_curve.pdf" # 输出文件名称
)
这段代码的作用是调用自定义的 plot_time_dependent_roc 函数,根据指定的时间点列表、真实标签、预测值等参数绘制时间依赖性ROC曲线,并将图表保存为 PDF 文件
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现
期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考