代谢组数据分析(十五):基于python构建PLS-DA预测模型的流程

文摘   2024-07-16 12:04   贵州  

介绍

本教程描述了一个具有二元分类结果的研究的典型代谢组学数据分析工作流程。主要步骤包括:

  1. 从Excel表格导入代谢物和实验数据。

  2. 基于汇总QC的数据清洗。

  3. 利用主成分分析可视化来检查数据质量。

  4. 两类单变量统计。

  5. 使用偏最小二乘判别分析(PLS-DA)进行多变量分析,包括:

  • 模型优化(R2 vs Q2)。

  • 置换测试,模型预测指标。

  • 特征重要性。

  • 模型预测数据可视化。

  • 将统计表格导出到Excel表格。

  • 本教程中使用的研究已由Chan等人(2016年)作为开放获取文章发表在《英国癌症杂志》上,并且已将解析和注释的数据文件存储在代谢组学工作台数据存储库(项目ID PR000699)。

    导入包/模块

    本教程的第一个代码单元格(在这段文本框下方)将包和模块导入到Jupyter环境中。包和模块提供了额外的函数和工具,这些工具扩展了Python语言的基本功能。我们将需要以下工具来分析本教程中的数据:

    • numpy:Python科学计算的基本包,提供处理数组和线性代数的工具

    • pandas:提供高性能、易于使用的数据结构和数据分析工具

    • sklearn:Python中的机器学习工具

      • train_test_split:一种将数组分割成随机测试/训练子集的方法,用于交叉验证

    • cimcb_lite:由作者提供的有用函数库 (https://pypi.org/project/cimcb-lite/)

    import numpy as np
    import pandas as pd

    from sklearn.model_selection import train_test_split


    import cimcb_lite as cb

    加载数据和峰值表

    此工作流程需要将数据作为Microsoft Excel文件上传,使用整洁数据框架(即每个列是一个变量,行是一个观测值)。因此,Excel文件应包含一个数据表和一个峰值表。数据表包含与每个观测值相关的所有代谢物浓度和元数据(需要包含列:Idx, SampleID, 和 Class)。峰值表包含与每个测量的代谢物相关的所有元数据(需要包含列:Idx, Name, 和 Label)。在继续之前,请检查本教程中使用的Excel文件。所需要的数据见下载链接:

    百度网盘链接: https://pan.baidu.com/s/16aqVYAnjQAqHEV_Ofv-wGQ

    提取码: 请关注WX公zhong号_生信学习者_后台发送 代谢组数据 获取提取码

    下面的代码单元格从Excel文件加载数据和峰值表,使用CIMCB辅助函数load_dataXL()。当此操作完成后,您应该看到确认Peak(存储在Excel文件的Peak工作表中)和Data(存储在Excel文件的Data工作表中)表已加载:

    # The path to the input file (Excel spreadsheet)
    filename = 'GastricCancer_NMR.xlsx'

    # Load Peak and Data tables into two variables
    dataTable, peakTable = cb.utils.load_dataXL(filename, DataSheet='Data', PeakSheet='Peak')
    Loadings PeakFile: Peak
    Loadings DataFile: Data
    Data Table & Peak Table is suitable.
    TOTAL SAMPLES: 140 TOTAL PEAKS: 149
    Done!

    探索数据表格

    dataTable表格可以交互式显示,以便我们可以检查和验证导入的值。为此,我们使用display()函数。在这个例子中,导入的数据包括140个样本和149个代谢物。

    请注意,每一行描述了一个单一的尿液样本,其中:

    • M1 ... M149:描述了代谢物的浓度。

    • SampleType:指示样本是汇总的QC样本还是研究样本。

    • Class:指示该个体观察到的临床结果:GC = 胃癌,BN = 良性肿瘤,HE = 健康对照。

    display(dataTable) # View and check the dataTable

    显示峰值表

    峰值表也可以交互式显示,以便我们可以检查和验证导入的值。为此,我们再次使用display()函数。在这个例子中,导入的数据包括149个代谢物(与dataTable数据中的数量相同)。

    每一行描述了一个单一的代谢物,其中:

    • Idx列:是代谢物的唯一索引。

    • Name列:是dataTable表中对应于这个代谢物的列标题。

    • Label列:提供了代谢物的唯一名称(或uNNN标识符)。

    • Perc_missing列:表示有多少百分比的样本不包含这个代谢物的测量值(缺失数据)。

    • QC_RSD列:是一个质量得分,表示这个代谢物在所有样本中的测量变异性。

    生信学习者
    生信教程分享,专注数据分析和科研绘图方向欢迎大家关注,也可一起探讨生信问题