任务:模型融合,模型融合方式任意,并结合Task5给出你的最优结果。
例如Stacking融合,用你目前评分最高的模型作为基准模型,和其他模型进行stacking融合,得到最终模型及评分结果。
一、模型融合简介
1、Voting
从最简单的Voting说起,这也可以说是一种模型融合。假设对于一个二分类问题,有3个基础模型,那么就采取投票制的方法,投票多者确定为最终的分类。
2、Averaging
对于回归问题,进行加权平均,权值可以用排序的方法确定,比如A、B、C三种基本模型,模型效果进行排名,假设排名分别是1,2,3,那么给这三个模型赋予的权值分别是3/6、2/6、1/6
3、Stacking
是指训练一个模型用于组合(combine)其他各个模型。即首先我们先训练多个不同的模型,然后再以之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。
二、Stacking代码实现
# 导入包跑模型
from mlxtend.classifier import StackingClassifier
model_list = [models_grid[model] for model in models_grid if model != 'log_clf']
stacking_clf = StackingClassifier(classifiers=model_list,meta_classifier=models_grid['log_clf'])
models_ensembel = models_grid
# 评估模型
results_test_ensembel,results_train_ensembel = metrics(models_ensembel,X_train_scaled,X_test_scaled,y_train,y_test)
训练集:
测试集: