1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        最新數(shù)據(jù)挖掘賽事方案梳理!

        共 4321字,需瀏覽 9分鐘

         ·

        2022-06-28 00:30

         Datawhale賽事 
        作者:牧小熊,華中農(nóng)業(yè)大學(xué),Datawhale成員

        賽題介紹

        科大訊飛:糖尿病遺傳風(fēng)險檢測挑戰(zhàn)賽。背景:截至2022年,中國糖尿病患者近1.3億。中國糖尿病患病原因受生活方式、老齡化、城市化、家族遺傳等多種因素影響。同時,糖尿病患者趨向年輕化。

        糖尿病可導(dǎo)致心血管、腎臟、腦血管并發(fā)癥的發(fā)生。因此,準(zhǔn)確診斷出患有糖尿病個體具有非常重要的臨床意義。糖尿病早期遺傳風(fēng)險預(yù)測將有助于預(yù)防糖尿病的發(fā)生。

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

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

        賽題任務(wù)

        在這次比賽中,您需要通過訓(xùn)練數(shù)據(jù)集構(gòu)建糖尿病遺傳風(fēng)險預(yù)測模型,然后預(yù)測出測試數(shù)據(jù)集中個體是否患有糖尿病,和我們一起幫助糖尿病患者解決這“甜蜜的煩惱”。

        賽題數(shù)據(jù)

        賽題數(shù)據(jù)由訓(xùn)練集和測試集組成,具體情況如下:

        • 訓(xùn)練集:共有5070條數(shù)據(jù),用于構(gòu)建您的預(yù)測模型
        • 測試集:共有1000條數(shù)據(jù),用于驗證預(yù)測模型的性能。

        其中訓(xùn)練集數(shù)據(jù)包含有9個字段:性別、出生年份、體重指數(shù)、糖尿病家族史、舒張壓、口服耐糖量測試、胰島素釋放實驗、肱三頭肌皮褶厚度、患有糖尿病標(biāo)識(數(shù)據(jù)標(biāo)簽)。

        評分標(biāo)準(zhǔn)

        采用二分類任務(wù)中的F1-score指標(biāo)進(jìn)行評價,F(xiàn)1-score越大說明預(yù)測模型性能越好,F(xiàn)1-score的定義如下:

        其中:

        賽題Baseline

        導(dǎo)入數(shù)據(jù)

        import pandas as pd
        import lightgbm

        數(shù)據(jù)預(yù)處理

        data1=pd.read_csv('比賽訓(xùn)練集.csv',encoding='gbk')
        data2=pd.read_csv('比賽測試集.csv',encoding='gbk')
        #label標(biāo)記為-1
        data2['患有糖尿病標(biāo)識']=-1
        #訓(xùn)練集和測試機(jī)合并
        data=pd.concat([data1,data2],axis=0,ignore_index=True)

        #特征工程
        """
        人體的成人體重指數(shù)正常值是在18.5-24之間
        低于18.5是體重指數(shù)過輕
        在24-27之間是體重超重
        27以上考慮是肥胖
        高于32了就是非常的肥胖。
        """

        def BMI(a):
            if a<18.5:
                return 0
            elif 18.5<=a<=24:
                return 1
            elif 24<a<=27:
                return 2
            elif 27<a<=32:
                return 3
            else:
                return 4
            
        data['BMI']=data['體重指數(shù)'].apply(BMI)
        data['出生年份']=2022-data['出生年份']  #換成年齡
        #糖尿病家族史
        """
        無記錄
        叔叔或者姑姑有一方患有糖尿病/叔叔或姑姑有一方患有糖尿病
        父母有一方患有糖尿病
        """

        def FHOD(a):
            if a=='無記錄':
                return 0
            elif a=='叔叔或者姑姑有一方患有糖尿病' or a=='叔叔或姑姑有一方患有糖尿病':
                return 1
            else:
                return 2
            
        data['糖尿病家族史']=data['糖尿病家族史'].apply(FHOD)
        data['舒張壓']=data['舒張壓'].fillna(-1)
        """
        舒張壓范圍為60-90
        """

        def DBP(a):
            if a<60:
                return 0
            elif 60<=a<=90:
                return 1
            elif a>90:
                return 2
            else:
                return a
        data['DBP']=data['舒張壓'].apply(DBP)
        data

        訓(xùn)練數(shù)據(jù)/測試數(shù)據(jù)準(zhǔn)備

        train=data[data['患有糖尿病標(biāo)識'] !=-1]
        test=data[data['患有糖尿病標(biāo)識'] ==-1]
        train_label=train['患有糖尿病標(biāo)識']
        train=train.drop(['編號','患有糖尿病標(biāo)識'],axis=1)
        test=test.drop(['編號','患有糖尿病標(biāo)識'],axis=1)

        構(gòu)建模型

        def select_by_lgb(train_data,train_label,test_data,random_state=2022,metric='auc',num_round=300):
            clf=lightgbm
            train_matrix=clf.Dataset(train_data,label=train_label)

            params={
                    'boosting_type''gbdt',  
                    'objective''binary',
                    'learning_rate'0.1,
                    'metric': metric,
                    'seed'2020,
                    'nthread':-1 }
            model=clf.train(params,train_matrix,num_round)
            pre_y=model.predict(test_data)
            return pre_y

        模型驗證

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

        上分建議

        本題中的模型部分用了相當(dāng)簡單的方法,lightgbm算法中沒有進(jìn)行交叉數(shù)據(jù)驗證,同時也僅僅使用了默認(rèn)參數(shù),因此選手可以在這個Baseline的基礎(chǔ)上進(jìn)行進(jìn)一步的參數(shù)優(yōu)化于模型融合,同時注意到本公開的算法中特征工程構(gòu)建進(jìn)行了一部分的演示,選手可以根據(jù)糖尿病的相關(guān)醫(yī)學(xué)特點(diǎn)進(jìn)行對特征進(jìn)一步挖掘,從而提升比賽的成績~

        關(guān)注Datawhale公眾號,回復(fù)“數(shù)據(jù)挖掘”可邀請進(jìn)數(shù)據(jù)挖掘賽事交流群,已在的不用再加入。

        整理不易,點(diǎn)三連


        瀏覽 60
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            局长含着花蒂啃咬高潮 | 国产精品一区在线 | 波多野吉衣高清无码 | 亚洲精品国偷拍自产在线观看91 | 草久久久久久久久久久久 | 性爱二区 | 性欧洲美女与动交zoz0z | 欧美成人性爱视频 | 久久成人av | 九色影院|