Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现

机器学习大数据容器

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍:基于

Frontiers in Oncology 中

利用生存机器学习RSF模型预测患者预后进行模拟实现。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。

详细数据和代码将在稍后上传至交流群,付费群成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。

购买前请咨询,避免不必要的问题。

✨ 论文信息 ✨

picture.image

✨ 论文方法 ✨

picture.image

在这篇文献中,随机生存森林(RSF)模型被应用于胃癌患者的预后预测。通过对181名患者的代谢组学数据进行训练,然后通过训练的RSF模型选出了28个关键代谢物,以避免过拟合并提高预测准确性,最后针对

28个关键代谢物进行新的RSF模型构建,模型通过计算每个患者的风险评分,将患者分为高风险和低风险组,从而有效预测患者的生存结果。RSF模型在预测效果上优于传统的临床方法,如TNM分期和肿瘤外观,展示了其在处理复杂代谢数据和临床数据结合的强大能力,能够为胃癌患者提供精准的预后评估。

✨ 模拟实现 ✨

picture.image

模拟结果展示了通过和文献一样的方法在我们的模拟数据集上的一个实现,训练集和测试集的C-index随着选择的特征数量增加而提高,最终选择28个特征(实际运用中选择的是模型在测试集上的表现最佳的特征数,这里和文献一致选择28个特征),且AUROC为0.810(95% CI: 0.652-0.951)。这与文献中的方法一致,表明通过选择最具预测力的代谢物特征,能够构建出可靠的胃癌预后预测模型

✨ RSF代码基础案例 ✨


          
import matplotlib.pyplot as plt
          
import numpy as np
          
import pandas as pd
          

          
%matplotlib inline
          

          
from sklearn import set_config
          
from sklearn.model_selection import train_test_split
          
from sklearn.preprocessing import OrdinalEncoder
          

          
from sksurv.datasets import load_gbsg2
          
from sksurv.ensemble import RandomSurvivalForest
          
from sksurv.preprocessing import OneHotEncoder
          

          
set_config(display="text")  # displays text representation of estimators
          
X, y = load_gbsg2()
          

          
grade_str = X.loc[:, "tgrade"].astype(object).values[:, np.newaxis]
          
grade_num = OrdinalEncoder(categories=[["I", "II", "III"]]).fit_transform(grade_str)
          

          
X_no_grade = X.drop("tgrade", axis=1)
          
Xt = OneHotEncoder().fit_transform(X_no_grade)
          
Xt.loc[:, "tgrade"] = grade_num
          
random_state = 20
          

          
X_train, X_test, y_train, y_test = train_test_split(Xt, y, test_size=0.25, random_state=random_state)
          
rsf = RandomSurvivalForest(
          
    n_estimators=1000, min_samples_split=10, min_samples_leaf=15, n_jobs=-1, random_state=random_state
          
)
          
rsf.fit(X_train, y_train)
          
c_index = rsf.score(X_test, y_test)
          
f"{c_index:.5f}"
      

picture.image

使用RandomSurvivalForest模型来训练一个生存分析模型,预测基于GBSG2数据集的乳腺癌患者预后,并计算了测试集上的C指数(预测准确度),具体解读如下:

使用德国乳腺癌研究小组(GBSG-2)提供的关于淋巴结阳性乳腺癌患者治疗的数据,数据包含686名女性和8个预后因素,包括年龄、雌激素受体、是否接受激素治疗、绝经状态、阳性淋巴结数量、孕激素受体、肿瘤大小和肿瘤分级。目标是预测无复发生存时间。

首先,加载数据并将其转换为数值型数据。然后将数据分为75%的训练集和25%的测试集,以便我们评估模型的泛化能力。过去提出了几种分裂标准,其中最广泛使用的是基于对数秩检验(log-rank test),用于比较两个或多个组的生存曲线。使用训练数据,训练了一个包含1000棵树的随机生存森林。

通过在测试数据上评估模型,我们得到了0.68的C指数,这个值是一个不错的结果


          
X_test_sorted = X_test.sort_values(by=["pnodes", "age"])
          
X_test_sel = pd.concat((X_test_sorted.head(3), X_test_sorted.tail(3)))
          
pd.Series(rsf.predict(X_test_sel))
      

picture.image

首先按“阳性淋巴结数量”(pnodes)和“年龄”(age)对测试数据(X_test)进行排序,然后选择排序后前3个和后3个样本,将它们合并并用训练好的随机生存森林模型(rsf)进行预测,最后返回预测结果,

预测的风险评分表明,最后 3 名患者的风险比前 3 名患者高出很多


          
surv = rsf.predict_survival_function(X_test_sel, return_array=True)
          

          
for i, s in enumerate(surv):
          
    plt.step(rsf.unique_times_, s, where="post", label=str(i))
          
plt.ylabel("Survival probability")
          
plt.xlabel("Time in days")
          
plt.legend()
          
plt.grid(True)
          
plt.savefig("3.pdf", format='pdf', bbox_inches='tight', dpi=1200)
          
plt.show()
      

picture.image

使用随机生存森林(rsf)模型预测测试数据(X_test_sel)中每个样本的生存函数,并绘制了每个样本的生存曲线,显示了不同组别(标签0到5)在不同时间点的生存概率。结果是一张展示不同组别生存曲线的图,X轴表示时间(以天为单位),Y轴表示生存概率,每条曲线代表一个组的生存情况,

表明,最大的差异大约发生在前 750 天内


          
surv = rsf.predict_cumulative_hazard_function(X_test_sel, return_array=True)
          

          
for i, s in enumerate(surv):
          
    plt.step(rsf.unique_times_, s, where="post", label=str(i))
          
plt.ylabel("Cumulative hazard")
          
plt.xlabel("Time in days")
          
plt.legend()
          
plt.grid(True)
          
plt.savefig("4.pdf", format='pdf', bbox_inches='tight', dpi=1200)
          
plt.show()
      

picture.image

使用随机生存森林(rsf)模型预测测试数据(X_test_sel)中每个样本的累积风险函数,并绘制了每个样本的累积风险曲线,显示了不同组别(标签0到5)在不同时间点的累积风险。结果是一张展示不同组别累积风险变化的图,X轴表示时间(以天为单位),Y轴表示累积风险,每条曲线代表一个组的风险情况。


          
from sklearn.inspection import permutation_importance
          

          
result = permutation_importance(rsf, X_test, y_test, n_repeats=15, random_state=random_state)
          
pd.DataFrame(
          
    {
          
        k: result[k]
          
        for k in (
          
            "importances_mean",
          
            "importances_std",
          
        )
          
    },
          
    index=X_test.columns,
          
).sort_values(by="importances_mean", ascending=False)
      

picture.image

最后使用permutation_importance方法来评估随机生存森林(rsf)模型中各个特征对预测结果的重要性,并通过对测试数据(X_test)进行多次重复计算,得出了每个特征的重要性均值(importances_mean)和标准差(importances_std)。结果是一个表格,展示了每个特征的重要性排序,pnodes(阳性淋巴结数量)被认为是最重要的特征,而estrec(雌激素受体)在模型中的重要性最低

上面案例展示了一个基础的生存机器学习案例,主要通过随机生存森林(RSF)模型来预测基于GBSG2数据集的乳腺癌患者预后,以帮助理解生存分析在机器学习中的应用,后续可以通过这一基础案例来理解文献复现中的RSF模型在患者预后预测中的使用,完整案例代码可以通过文末提供的购买方式获取包括文献复现部分代码。

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 购买介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到 淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系 ,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。

更新的内容包含数据、代码、注释和参考资料。

作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤

购买前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信 deep_ML联系

避免淘宝客服漏掉信息

,希望能为您的学习之路提供帮助!

往期推荐

GeoShapley算法:基于地理数据的Shapley值在空间效应测量中的应用——位置重要性与特征交互作用分析

期刊配图:基于‘UpSet图’展示不同数据预处理对模型性能的影响

期刊配图:结合残差分析的模型预测性能可视化

J Clean Prod:结合K-means聚类确定样本分组方式再结合shap初步解释模型的模拟实现

文献配图:如何通过雷达图全面评估机器学习模型的预测性能

nature communications:结合LightGBM特征选择与RF模型的机器学习方法及SHAP解释

期刊配图:SHAP特征重要性与相关系数的联合可视化

期刊配图:结合lightgbm回归模型与K折交叉验证的特征筛选可视化

Nature新算法:准确的小数据预测与表格基础模型TabPFN分类实现及其模型解释

Nature新算法:准确的小数据预测与表格基础模型TabPFN回归实现及其模型解释

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论