首届世界科学智能大赛:生命科学赛道——生物学年龄评价与年龄相关疾病风险预测(第一次笔记)

1.背景介绍

本次笔记参考Datawhale AI夏令营(第三期) - AI for Science 生命科学赛道学习手册

本次赛题全称为【首届世界科学智能大赛:生命科学赛道——生物学年龄评价与年龄相关疾病风险预测】 举办方:
请添加图片描述

【赛题背景】
生物学年龄评价是一种通过测量和分析生物体内特定指标或生理过程的状态,以评估个体的生理年龄和健康状况的方法。与传统的日历年龄相比,生物学年龄可以提供更准确的健康评估和疾病风险预测。随着 AI 技术的不断发展,计算科学与生命科学的整合与发展将为健康管理应用开发、衰老机制研究、抗衰老药物研发提供前沿的思路与方法。基于上述背景,举办基于甲基化测量数据预测生物学年龄的比赛。

【赛事安排】
https://tianchi.aliyun.com/s/6a1351ecd2a3987995a7bda7f62542d2

【赛事任务】
本次比赛提供健康人和年龄相关疾病患者的甲基化数据,选手通过分析甲基化数据的模式和特征建立预测模型,可以根据某个人的甲基化数据来预测其生物学年龄

【赛题数据集】
公开数据包含10296个样本,其中7833个样本为健康样本。每一个样本提供485512个位点的甲基化数据、年龄与患病情况,也就是有485512个特征。

训练策略:抽取80%作为训练样本,20%作为测试样本。

以训练集为例,一共包括8233样本,其中健康样本6266个,其余为患病样本,共涉及Alzheimer’s disease,schizophrenia,Parkinson’s disease,rheumatoid arthritis,stroke,Huntington’s disease,Graves’ disease,type 2 diabetes,Sjogren’s syndrome等类型。

【评价指标】
本次任务采用多个指标来进行评测,初赛和复赛评价指标有差异。初赛是将两个指标(健康样本MAE和患病样本MAE)进行计算,取平均得到最终分数。
请添加图片描述

【解题思路】
本题初赛任务是预测样本年龄,属于典型的回归问题。

  • 输入数据为每一个样本对应的485512个位点的甲基化数据与患病情况
  • 输出为样本对应年龄。

可以看到所提供的特征纬度非常高(485512维),可以考虑基本的特征选择,比如考虑覆盖率、相关性、特征重要性等。或者仅使用部分特征,快速跑通流程,后续在考虑如何添加更多特征,也是一个不错的选择。

模型方面可以选择机器学习模型或深度学习模型,如果使用类似 xgboost 这类机器学习模型,是不需要进行缺失值填充和数据标准化操作的,效果比较稳定。如果选择深度学习模型,则要进行缺失值填充和数据标准化操作,网络搭建也需要更多的尝试。

鉴于上面的对比,我们Baseline选择使用机器学习方法,在解决机器学习问题时,一般会遵循以下流程:
请添加图片描述

2.跑通baseline

2.1 环境配置

由于本次数据集过大,我们使用阿里云云环境,具体部署教程如下:

https://datawhaler.feishu.cn/docx/GIr5dWijEoGWRJxzSeCcZFmgnAe?from=from_copylink

2.2 baseline分析

导入库
Copy code
import numpy as np
import pandas as pd
import polars as pl
from collections import defaultdict, Counter
import xgboost as xgb
import lightgbm as lgb
from catboost import CatBoostRegressor
from sklearn.model_selection import StratifiedKFold, KFold, GroupKFold
from sklearn.metrics import mean_squared_log_error
import sys, os, gc, argparse, warnings

在这部分代码中,导入了各种用于数据处理、模型训练和评估的库,包括 NumPy、Pandas、Polars、collections、XGBoost、LightGBM、CatBoost、Scikit-learn 中的交叉验证模块和评估指标模块,以及其他用于处理命令行参数和警告信息的库

这是一个用于减少 DataFrame 内存使用的函数。它遍历 DataFrame 的每一列,根据数值类型对列的数据类型进行转换,从而减少内存使用
# 定义一个函数,用于减少DataFrame的内存使用
def reduce_mem_usage(df, verbose=True):
    numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'] # 定义数值类型列表
    start_mem = df.memory_usage().sum() / 1024**2    # 计算初始内存使用量
    for col in df.columns: # 遍历DataFrame的每一列
        col_type = df[col].dtypes # 获取该列的数据类型
        if col_type in numerics: # 如果该列是数值类型
            c_min = df[col].min() # 获取该列的最小值
            c_max = df[col].max() # 获取该列的最大值
            if str(col_type)[:3] == 'int': # 如果该列是整数类型
                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max: # 如果该列的数值范围在int8的范围内
                    df[col] = df[col].astype(np.int8) # 将该列的数据类型转换为int8
                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max: # 如果该列的数值范围在int16的范围内
                    df[col] = df[col].astype(np.int16) # 将该列的数据类型转换为int16
                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max: # 如果该列的数值范围在int32的范围内
                    df[col] = df[col].astype(np.int32) # 将该列的数据类型转换为int32
                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max: # 如果该列的数值范围在int64的范围内
                    df[col] = df[col].astype(np.int64) # 将该列的数据类型转换为int64  
            else: # 如果该列不是整数类型
                if c_min > np.finfo(np.float16).min and c_max < np.finfo(
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等 人工智能大赛参赛作品,供参赛人员学习参考,含设计文档、源代码等
挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考 挑战杯大赛相关代码、设计文档、使用说明,供备赛参赛人员参考
自从2010年首届山东省大学生软件设计大赛成功举办以来,已经走过了十年的时间。在这十年里,大赛不断创新,不断发展,成为了山东省大学生中颇具影响力的赛事之一。 大赛的初衷是为了促进大学生对软件设计的学习和研究,提高他们的实践能力和综合素质。在比赛中,参赛选手需要独立完成一个软件项目的设计和实现,并展示出自己的创新和才华。这不仅要求选手具备扎实的理论知识和技术能力,还需要他们具备良好的团队协作能力和创新意识。 十年来,大赛举办地点不断扩大,赛事规模不断壮大,参赛选手数量也逐年增加。同时,大赛的主题也不断变化,从最初的“互联网+”到现在的“智能化”,贴近时代发展,关注社会热点。参赛作品也从最初的简单应用程序,逐渐扩展到了各个领域的软件设计,如智能家居、虚拟现实、人工智能等。 十年来,大赛不仅为广大大学生提供了一个展示自己才华的平台,还为企业提供了一个挖掘人才的渠道。许多优秀的参赛作品得到了企业的关注和认可,有的作品甚至得到了企业的扶持和支持,成为了真正的商业产品。 在未来的十年里,山东省大学生软件设计大赛将继续发扬创新精神,关注时代发展,推动软件设计教育的发展,为大学生提供更多展示才华的机会。同时,也将为企业提供更多挖掘人才的机会,促进产学研紧密结合,共同推动社会的发展和进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值