• 最新数据挖掘赛事方案梳理!


     Datawhale赛事 

    作者:牧小熊,华中农业大学,Datawhale成员

    cc1b3ef7d3f53b5b5a1260a62ae762ed.png

    赛题介绍

    科大讯飞:糖尿病遗传风险检测挑战赛。背景:截至2022年,中国糖尿病患者近1.3亿。中国糖尿病患病原因受生活方式、老龄化、城市化、家族遗传等多种因素影响。同时,糖尿病患者趋向年轻化。

    糖尿病可导致心血管、肾脏、脑血管并发症的发生。因此,准确诊断出患有糖尿病个体具有非常重要的临床意义。糖尿病早期遗传风险预测将有助于预防糖尿病的发生。

    赛事地址:http://challenge.xfyun.cn/topic/info?type=diabetes&ch=ds22-dw-gzh01

    源代码:https://github.com/datawhalechina/competition-baseline

    赛题任务

    在这次比赛中,您需要通过训练数据集构建糖尿病遗传风险预测模型,然后预测出测试数据集中个体是否患有糖尿病,和我们一起帮助糖尿病患者解决这“甜蜜的烦恼”。

    赛题数据

    赛题数据由训练集和测试集组成,具体情况如下:

    • 训练集:共有5070条数据,用于构建您的预测模型

    • 测试集:共有1000条数据,用于验证预测模型的性能。

    其中训练集数据包含有9个字段:性别、出生年份、体重指数、糖尿病家族史、舒张压、口服耐糖量测试、胰岛素释放实验、肱三头肌皮褶厚度、患有糖尿病标识(数据标签)。

    评分标准

    采用二分类任务中的F1-score指标进行评价,F1-score越大说明预测模型性能越好,F1-score的定义如下:

    43f06929d791487699cb42ed33546f3f.png

    其中:

    46313f3b0a6bc81b0623a9d3dc3f9054.png bbb4dff13ab5589104d8404bfcbd6069.png

    赛题Baseline

    导入数据

    1. import pandas as pd
    2. import lightgbm

    数据预处理

    1. data1=pd.read_csv('比赛训练集.csv',encoding='gbk')
    2. data2=pd.read_csv('比赛测试集.csv',encoding='gbk')
    3. #label标记为-1
    4. data2['患有糖尿病标识']=-1
    5. #训练集和测试机合并
    6. data=pd.concat([data1,data2],axis=0,ignore_index=True)
    7. #特征工程
    8. """
    9. 人体的成人体重指数正常值是在18.5-24之间
    10. 低于18.5是体重指数过轻
    11. 在24-27之间是体重超重
    12. 27以上考虑是肥胖
    13. 高于32了就是非常的肥胖。
    14. """
    15. def BMI(a):
    16.     if a<18.5:
    17.         return 0
    18.     elif 18.5<=a<=24:
    19.         return 1
    20.     elif 24<a<=27:
    21.         return 2
    22.     elif 27<a<=32:
    23.         return 3
    24.     else:
    25.         return 4
    26.     
    27. data['BMI']=data['体重指数'].apply(BMI)
    28. data['出生年份']=2022-data['出生年份']  #换成年龄
    29. #糖尿病家族史
    30. """
    31. 无记录
    32. 叔叔或者姑姑有一方患有糖尿病/叔叔或姑姑有一方患有糖尿病
    33. 父母有一方患有糖尿病
    34. """
    35. def FHOD(a):
    36.     if a=='无记录':
    37.         return 0
    38.     elif a=='叔叔或者姑姑有一方患有糖尿病' or a=='叔叔或姑姑有一方患有糖尿病':
    39.         return 1
    40.     else:
    41.         return 2
    42.     
    43. data['糖尿病家族史']=data['糖尿病家族史'].apply(FHOD)
    44. data['舒张压']=data['舒张压'].fillna(-1)
    45. """
    46. 舒张压范围为60-90
    47. """
    48. def DBP(a):
    49.     if a<60:
    50.         return 0
    51.     elif 60<=a<=90:
    52.         return 1
    53.     elif a>90:
    54.         return 2
    55.     else:
    56.         return a
    57. data['DBP']=data['舒张压'].apply(DBP)
    58. data

    训练数据/测试数据准备

    1. train=data[data['患有糖尿病标识'] !=-1]
    2. test=data[data['患有糖尿病标识'] ==-1]
    3. train_label=train['患有糖尿病标识']
    4. train=train.drop(['编号','患有糖尿病标识'],axis=1)
    5. test=test.drop(['编号','患有糖尿病标识'],axis=1)

    构建模型

    1. def select_by_lgb(train_data,train_label,test_data,random_state=2022,metric='auc',num_round=300):
    2.     clf=lightgbm
    3.     train_matrix=clf.Dataset(train_data,label=train_label)
    4.     params={
    5.             'boosting_type''gbdt',  
    6.             'objective''binary',
    7.             'learning_rate'0.1,
    8.             'metric': metric,
    9.             'seed'2020,
    10.             'nthread':-1 }
    11.     model=clf.train(params,train_matrix,num_round)
    12.     pre_y=model.predict(test_data)
    13.     return pre_y

    模型验证

    1. test_data=select_by_lgb(train,train_label,test)
    2. pre_y=pd.DataFrame(test_data)
    3. pre_y['label']=pre_y[0].apply(lambda x:1 if x>0.5 else 0)
    4. result=pd.read_csv('提交示例.csv')
    5. result['label']=pre_y['label']
    6. result.to_csv('baseline.csv',index=False)

    上分建议

    本题中的模型部分用了相当简单的方法,lightgbm算法中没有进行交叉数据验证,同时也仅仅使用了默认参数,因此选手可以在这个Baseline的基础上进行进一步的参数优化于模型融合,同时注意到本公开的算法中特征工程构建进行了一部分的演示,选手可以根据糖尿病的相关医学特点进行对特征进一步挖掘,从而提升比赛的成绩~

    关注Datawhale公众号,回复“数据挖掘”可邀请进数据挖掘赛事交流群,已在的不用再加入。

    c26c145049505b3d3d43c6c0ba460272.png

    整理不易,三连

  • 相关阅读:
    AMBA总线相关知识记录
    IDEA用maven和Spring模板分别创建SpringMVC项目
    Python---函数练习:编写一个打招呼程序
    微信小程序开发01 双线程模型:为什么小程序不用浏览器的线程模型?
    React Native学习笔记----React Native简介与环境安装
    C++ 条件变量的使用
    Python---函数
    MySQL(一)——MySQL的一些概念、数据库操作、数据表操作、数据操作
    【附源码】计算机毕业设计JAVA家政服务网站
    mysql+redis+tomcat+nginx
  • 原文地址:https://blog.csdn.net/Datawhale/article/details/125454322