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

本文共1500字,建議閱讀9分鐘 本文帶你沉浸式感受糖尿病遺傳風險預測賽題的從0到1的參賽過程。

賽題介紹
賽題任務
賽題數(shù)據(jù)
訓練集:共有5070條數(shù)據(jù),用于構(gòu)建您的預測模型 測試集:共有1000條數(shù)據(jù),用于驗證預測模型的性能。
評分標準



賽題Baseline
導入數(shù)據(jù)
import pandas as pdimport lightgbm
數(shù)據(jù)預處理
data1=pd.read_csv('比賽訓練集.csv',encoding='gbk')data2=pd.read_csv('比賽測試集.csv',encoding='gbk')#label標記為-1data2['患有糖尿病標識']=-1#訓練集和測試機合并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 0elif 18.5<=a<=24:return 1elif 24<a<=27:return 2elif 27<a<=32:return 3else:return 4data['BMI']=data['體重指數(shù)'].apply(BMI)data['出生年份']=2022-data['出生年份'] #換成年齡#糖尿病家族史"""無記錄叔叔或者姑姑有一方患有糖尿病/叔叔或姑姑有一方患有糖尿病父母有一方患有糖尿病"""def FHOD(a):if a=='無記錄':return 0elif a=='叔叔或者姑姑有一方患有糖尿病' or a=='叔叔或姑姑有一方患有糖尿病':return 1else:return 2data['糖尿病家族史']=data['糖尿病家族史'].apply(FHOD)data['舒張壓']=data['舒張壓'].fillna(-1)"""舒張壓范圍為60-90"""def DBP(a):if a<60:return 0elif 60<=a<=90:return 1elif a>90:return 2else:return adata['DBP']=data['舒張壓'].apply(DBP)data
訓練數(shù)據(jù)/測試數(shù)據(jù)準備
train=data[data['患有糖尿病標識'] !=-1]test=data[data['患有糖尿病標識'] ==-1]train_label=train['患有糖尿病標識']train=train.drop(['編號','患有糖尿病標識'],axis=1)test=test.drop(['編號','患有糖尿病標識'],axis=1)
構(gòu)建模型
def select_by_lgb(train_data,train_label,test_data,random_state=2022,metric='auc',num_round=300):clf=lightgbmtrain_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)
上分建議
評論
圖片
表情
