糖尿病遗传风险检测挑战赛-权重融合

Posted 清浅岁月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了糖尿病遗传风险检测挑战赛-权重融合相关的知识,希望对你有一定的参考价值。

权重融合

糖尿病遗传风险检测挑战赛
模型融合的内容还挺多的,我只是尝试stacking这种,权重融合也是后期上分的一种手段。

基于上一篇,调参之后的进行权重融合。

我用的是lightgbm,xgboost,CatBoostRegressor,这三个模型融合的,融合方式用的是LogisticRegression,但是结果比之前差

from mlxtend.classifier import StackingCVClassifier

import lightgbm as lgb
import xgboost as xgb
from catboost import CatBoostRegressor as cat
from sklearn.linear_model import LogisticRegression
from sklearn import preprocessing
from xgboost.sklearn import XGBClassifier as xgb

lbl = preprocessing.LabelEncoder()


train['BMI'] = lbl.fit_transform(train['BMI'].astype(str))#将提示的包含错误数据类型这一列进行转换
train['DBP'] = lbl.fit_transform(train['DBP'].astype(str))#将提示的包含错误数据类型这一列进行转换
train['KFT'] = lbl.fit_transform(train['KFT'].astype(str))#将提示的包含错误数据类型这一列进行转换
train['KYD'] = lbl.fit_transform(train['KYD'].astype(str))#将提示的包含错误数据类型这一列进行转换
train['HST'] = lbl.fit_transform(train['HST'].astype(str))#将提示的包含错误数据类型这一列进行转换

test['BMI'] = lbl.fit_transform(test['BMI'].astype(str))#将提示的包含错误数据类型这一列进行转换
test['DBP'] = lbl.fit_transform(test['DBP'].astype(str))#将提示的包含错误数据类型这一列进行转换
test['KFT'] = lbl.fit_transform(test['KFT'].astype(str))#将提示的包含错误数据类型这一列进行转换
test['KYD'] = lbl.fit_transform(test['KYD'].astype(str))#将提示的包含错误数据类型这一列进行转换
test['HST'] = lbl.fit_transform(test['HST'].astype(str))#将提示的包含错误数据类型这一列进行转换


clf1 = lightgbm.LGBMClassifier(boosting_type='gbdt',  
                objective= 'binary',
                learning_rate= 0.02,
                seed=2020,
                nthread=-1,
                cat_smooth=0,                
                metric= 'auc',
                verbose=-1,
                max_depth=10,
                num_leaves =20, 
                min_data_in_leaf=3,
                min_sum_hessian_in_leaf =3, 
                feature_fraction=0.8,
                bagging_fraction=1,
                bagging_freq = 2,  
                lambda_l1 =0.3,
                lambda_l2=0.4,        
                        )
params = 'learning_rate': 0.2, 'depth': 5, 'l2_leaf_reg': 10, 'bootstrap_type': 'Bernoulli',
                      'od_type': 'Iter', 'od_wait': 50, 'random_seed': 11, 'allow_writing_files': False

clf2 = cat(iterations=2000, **params)

clf3 = xgb(n_estimators=400, learning_rate=0.05, gamma=0, subsample=0.8, colsample_bytree=0.9, max_depth=7)

lr = LogisticRegression()

sclf = StackingCVClassifier(classifiers=[clf1, clf2,clf3], meta_classifier=lr, cv=5)

sclf.fit(train, train_label)
test_data = sclf.predict(test)

pre_y=pd.DataFrame(test_data)
pre_y

预测结果是一个数组


把预测结果写入到文件中提交

result=pd.read_csv('./data/test_111.csv')
result['label']=pre_y
result.to_csv('result20.csv',index=False)
result.head()

权重融合,我只是接触力一点,正在深入了解。

可以看一下这个大佬的博客:

https://zhongqiang.blog.csdn.net/article/details/105012739
权重融合总结:
https://blog.csdn.net/xiayto/article/details/121231051?spm=1001.2014.3001.5502

以上是关于糖尿病遗传风险检测挑战赛-权重融合的主要内容,如果未能解决你的问题,请参考以下文章

糖尿病遗传风险检测挑战赛-权重融合

糖尿病遗传风险检测挑战赛

糖尿病遗传风险检测挑战赛

糖尿病遗传风险检测挑战赛

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

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