iFLYTEK2023健康成人脑龄预测挑战赛暨多种算法预测

一、赛题描述

赛题:健康成人脑龄预测挑战赛
主办方:首都师范大学、安徽大学、阿尔茨海默症防治协会人工智能应用专业委员会
主页:https://challenge.xfyun.cn/topic/info?type=adult-brain-age&ch=Hzqp0VZ

背景

我国已进入人口老龄化社会,这将是我国本世纪面临的一项重要挑战。异常老化引起的各种疾病(如阿尔茨海默病、帕金森病)已带来了日益严重的经济和社会问题。基于结构磁共振的大脑年龄被广泛应用于刻画大脑的老化过程,预测脑龄和实际生理年龄的差值(Predicted Age Difference,PAD),即偏离正常大脑老化轨迹的程度,可作为衡量个体异常老化的客观指标。研究表明,多种类型的神经系统疾病、代谢性疾病等都与大脑异常老化相关。老人的PAD值越大,则其出现神经精神问题的风险就越高。

脑龄预测为探索大脑在老化过程中的异常变化及神经精神疾病如何影响正常老化提供了一种新方法,为研究大脑老化的个体差异提供了新视角。

任务

为研究基于脑结构图像预测大脑年龄,本次大赛提供了数千例T1加权结构磁共振图像全脑分割后的脑区结构相关指标,包括体积、表面积、厚度等,参赛队伍依据提供的结构磁共振图像相关指标,设计算法自动预测大脑年龄。

二、数据集说明

数据说明

数据来自一项全国大规模多中心研究,来自全国15所大学医院应用1.5 T MR共采集3000名正常成年志愿者的全脑结构磁共振图像。该数据已被用于中国人脑图Chinese2020的构建以及不同脑结构的常模(https://www.nature.com/articles/srep18216)。

本次竞赛数据为经过严格质控后的健康成年人近2000例,受试者资料包括性别、年龄、体积、表面积、厚度、平均曲率、高斯曲率以及MRI扫描仪类型。采用随机抽取的方式,将数据分为训练集和测试集。训练集提供上述所有信息,测试集不提供年龄信息。

入组与排除标准

入组标准:健康成人;

排除标准:1)各种神经精神疾病;2)磁共振数据质量差。

数据集版权许可协议

CC BY-NC-SA 4.0
https://aistudio.baidu.com/datasetdetail/233139

三、解决方案样例

导入相关系统库

import pandas as pd
import glob
from sklearn.tree import DecisionTreeRegressor
from lightgbm import LGBMRegressor
from catboost import CatBoostRegressor
from xgboost import XGBRegressor
import warnings

【本样例运行环境的关键版本信息】

python 3.12.3

lightgbm 3.3.0

catboost 1.2.7

xgboost 1.6.0

sklearn-compat 0.1.3

读入数据集

train_path = glob.glob('./data/Train/*.csv')
train_path.sort()
train_set = pd.concat([
    pd.read_csv(x).sort_values(by='subject_ID').drop('subject_ID', axis=1)
    for x in train_path
], axis=1)
train_set = train_set.drop('注:性别(1=Female, 2=Male)', axis=1)

test_path = glob.glob('./data/Test/*.csv')
test_path.sort()
test_set = pd.concat([
    pd.read_csv(x, encoding='latin-1').sort_values(by='subject_ID').drop('subject_ID', axis=1)
    for x in test_path
], axis=1)

使用 DecisionTree 训练并预测脑龄

m = DecisionTreeRegressor()
m.fit(
    train_set.drop('年龄', axis=1),
    train_set['年龄']
)

submit['年龄'] = m.predict(test_set)
submit.to_csv('submit_dt.csv', index=None)

使用 LightGBM/CatBoost/XGBoost 训练并预测脑龄

# 确保数据中没有缺失值
X_train = train_set.drop('年龄', axis=1).values
y_train = train_set['年龄'].values
X_test = test_set.values

# 创建并训练模型
m = LGBMRegressor()
m.fit(X_train, y_train)

# 进行预测
submit['年龄'] = m.predict(X_test)

m = CatBoostRegressor()
m.fit(X_train, y_train)
submit['年龄'] += m.predict(test_set.values)

m = XGBRegressor()
m.fit(X_train, y_train)
submit['年龄'] += m.predict(test_set.values)
submit['年龄'] = (submit['年龄'] / 3).round(1)
submit.to_csv('submit_gbdt.csv', index=None)

源码开源协议

GPL-v3
https://zhuanlan.zhihu.com/p/608456168

四、获取案例套件

需要登录后才允许下载文件包。登录

发表评论