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