kaggle竞赛实战9——模型融合

有三种方法,

第一种:均值融合,代码如下

  data = pd.read_csv(\  result/submission_randomforest.csv\  ) 
      data['randomforest'] = data['target'].values 
       
      temp = pd.read_csv(\  result/submission_lightgbm.csv\  ) 
      data['lightgbm'] = temp['target'].values 
       
       
      temp = pd.read_csv(\  result/submission_xgboost.csv\  ) 
      data['xgboost'] = temp['target'].values 

   data['target'] = (data['randomforest'] + data['lightgbm'] + data['xgboost']) / 3  

data[['card_id','target']].to_csv("result/voting_avr.csv", index=False)  

发现简单的均值融合不能使模型效果提升

第二种:加权融合

加权融合的思路并不复杂,从客观计算流程上来看我们将赋予不同模型训练结果以不同权重,而具体权重的分配,我们可以根据三组模型在公榜上的评分决定,即假设模型A和B分别是2分和3分(分数越低越好的情况下),则在实际加权过程中,我们将赋予A模型结果3/5权重,B模型2/5权重,因此,加权融合过程如下:  
    data['target'] = data['randomforest']*0.2+data['lightgbm']*0.3 + data['xgboost']*0.5 
      data[['card_id','target']].to_csv('  result/voting_wei1.csv'  , index=False)

发现结果略有改善,但实际结果不如但模型结果

第三种:stacking

思路:比如你用了三种模型(XGBOOST,LIGHTGBM,RANDOMFOREST),每个模型都会将数据集分成五份进行交叉验证,并在验证集上进行预测得到五个验证结果,拼起来就是一个完整的验证结果,把三个模型验证结果竖向拼起来就是一个完整的验证结果,同理在测试集上做这个操作,得到的prediction_train和prediction_test就是二阶段训练的训练集和测试集

be18727607304102b98189224d5d1b57.png

  读入数据:oof是训练数据集的预测结果(也就是上面的prediction_train),而predictions则是单模型预测结果。

 oof_rf  = pd.read_csv('./preprocess/train_randomforest.csv') 
      predictions_rf  = pd.read_csv('./preprocess/test_randomforest.csv') 
       
      oof_lgb  = pd.read_csv('./preprocess/train_lightgbm.csv') 
      predictions_lgb  = pd.read_csv('./preprocess/test_lightgbm.csv') 
       
      oof_xgb  = pd.read_csv('./preprocess/train_xgboost.csv') 
      predictions_xgb  = pd.read_csv('./preprocess/test_xgboost.csv')  

  def stack_model(oof_1, oof_2, oof_3, predictions_1, predictions_2, predictions_3, y): 
          
          # Part 1.数据准备 
          # 按行拼接列,拼接验证集所有预测结果 
          # train_stack就是final model的训练数据 
          train_stack = np.hstack([oof_1, oof_2, oof_3]) 
          # 按行拼接列,拼接测试集上所有预测结果 
          # test_stack就是final model的测试数据 
          test_stack = np.hstack([predictions_1, predictions_2, predictions_3]) 

         # 创建一个和测试集行数相同的全零数组 
          predictions = np.zeros(test_stack.shape[0]) 
           
          # Part 2.多轮交叉验证 
          from sklearn.model_selection import RepeatedKFold 
          folds = RepeatedKFold(n_splits=5, n_repeats=2, random_state=2020) #5折交叉验证,两轮

          
          # fold_为折数,trn_idx为每一折训练集index,val_idx为每一折验证集index 
          for fold_, (trn_idx, val_idx) in enumerate(folds.split(train_stack, y)): 
              # 打印折数信息 
              print('  fold n°{}'  .format(fold_+1)) 
              # 训练集中划分为训练数据的特征和标签 
              trn_data, trn_y = train_stack[trn_idx], y[trn_idx] 
              # 训练集中划分为验证数据的特征和标签 
              val_data, val_y = train_stack[val_idx], y[val_idx] 
              # 采用贝叶斯回归作为结果融合的模型(final model) 
              clf = BayesianRidge() 
              # 在训练数据上进行训练 
              clf.fit(trn_data, trn_y) 
              # 在验证数据上进行预测,并将结果记录在oof对应位置 
              # oof[val_idx] = clf.predict(val_data) 
              # 对测试集数据进行预测,每一轮预测结果占比额外的1/10 
              predictions += clf.predict(test_stack) / (5 * 2) 
           
          # 返回测试集的预测结果 
          return predictions  

最终得到私榜分数3.627,公榜3.72,即staking比voting更有效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/696622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch index 设置 false,为什么还可以被检索到?

在 Elasticsearch 中,mapping 定义了索引中的字段类型及其处理方式。 近期有球友提问,为什么设置了 index: false 的字段仍能被检索。 本文将详细探讨这个问题,并引入列式存储的概念,帮助大家更好地理解 Elasticsearch 的存储和查…

Python 基础语法详解(三)

Python 基础语法详解(三) Python 运算符Python 算术运算符①理论讲解:②实操讲解: Python 比较运算符①理论讲解:②实操讲解: Python 赋值运算符Python 位运算符①理论讲解:②实操讲解&#xff…

Android——热点开关(优化中)

SoftAP打开与关闭 目录 1.三个名词的解释以及关系 Tethering——网络共享,WiFi热点、蓝牙、USB SoftAp——热点(无线接入点),临时接入点 Hostapd——Hostapd是用于Linux系统的软件,,支持多种无线认证和加密协议,将任…

矩阵杯2024 Re wp 前两题

1. packpy UPX壳,但不能直接脱,应该是修改了头文件(l_info) 改一下就能脱了 脱完是个elf文件 进IDA看一眼 明显的Py打包标志,用pyinstxtractor解包出来(最好用对应的python3.8) 可以得到packpy.pyc文件&a…

Vue14-监视属性

一、天气案例 1-1、方式一:{{三目运算符}} 1-2、方式二:计算属性 1-3、方式三:click中写简单逻辑 click里面可以写简单的逻辑语句。不用this 解决方式: 小结: 绑定事件的时候,xxx"yyy" xxx&…

RISC-V MCU IDE MRS(MounRiver Studio)开发 编译后打印FLASH及RAM使用占比信息

以RISC-V MCU IDE MounRiver Studio(MRS)为例,首先我们选中目标工程,点击工具栏工程属性按钮,打开工程属性配置页: 在C/C Build->Settings->Tool Settings选项列表中单击GNU RISC-V Cross C Linker->Miscellaneous&#…

【PowerDesigner】创建和管理CDM之使用实体间关系

目录 🌊1. PowerDesigner简介 🌍1.1 常用模型文件 🌍1.2 PowerDesigner使用环境 🌊2. 创建和管理CDM 🌍​​​​​​2.1 新建CDM 🌍2.2 使用实体间关系 🌌a. 使用联系 🌌b. …

Kafka的分区副本机制

目录 生产者的分区写入策略 轮询策略 随机策略 按key分配策略 乱序分区 自定义分区策略 实现步骤: 消费者组Rebalance机制 Rebalance触发时机 Rebalance的不良影响 消费者分区分配策略 Range范围分配策略 RoundRobin轮询策略 Stricky粘性分配策略 生产…

【机器学习】基于卷积LSTM的视频预测

1. 引言 1.1 LSTM是什么 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)变体,旨在解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制和细胞状态的概念,使得…

JavaScript基础用法(变量定义、输入输出、转义符、注释和编码规范)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

三极管十大品牌

三极管十大品牌-三极管品牌-晶体三极管哪个品牌好-Maigoo品牌榜

攻防世界---misc---gif

1、题目描述 2、下载附件,是一堆黑白图片,看到这里我一头雾水 3、看别人写的wp,说是白色表示0,黑色表示1。按照顺序写出来后得到 4、解码的时候,把逗号去掉。二进制转字符串得到: 5、 flag{FuN_giF}

C语言之main函数的返回值(在linux中执行shell脚本并且获取返回值)

一:函数为什么要返回值 (1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是数据的输出 (2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)…

LabVIEW汽车电机测试系统

1. 背景 随着电动汽车的快速发展,汽车电机作为电动汽车的核心部件,其性能评估变得尤为重要。电机的功率、效率、转速等参数直接影响着电动汽车的性能和续航里程。因此,设计一套全面、准确的汽车电机测试系统对于提高电动汽车的性能和安全性具…

Redis 双写一致原理篇

前言 我们都知道,redis一般的作用是顶在mysql前面做一个"带刀侍卫"的角色,可以缓解mysql的服务压力,但是我们如何保证数据库的数据和redis缓存中的数据的双写一致呢,我们这里先说一遍流程,然后以流程为切入点来谈谈redis和mysql的双写一致性是如何保证的吧 流程 首先…

【Python】pandas中的read_excel()和to_excel()函数解析与代码实现

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

SQL159 每个创作者每月的涨粉率及截止当前的总粉丝量

描述 用户-视频互动表tb_user_video_log iduidvideo_idstart_timeend_timeif_followif_likeif_retweetcomment_id110120012021-09-01 10:00:002021-09-01 10:00:20011NULL210520022021-09-10 11:00:002021-09-10 11:00:30101NULL310120012021-10-01 10:00:002021-10-01 10:00…

-31-()

在终端运行时消除输入空格对程序的影响可以使用{在scanf后加“getchar()”或者在scanf(“空格%d”,&a)} 按位与和移位操作符只能用于整数且都要转位二进制后进行相应操作 不创建临时变量,实现两个数的交换:1——使用加减法&…

【全开源】多功能投票小程序系统源码(ThinkPHP+FastAdmin+Uniapp)

🚀 多功能投票小程序,让决策变得更简单! 基于ThinkPHPFastAdminUniapp开发的多功能系统,支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署&#xff0c…

本周重磅日程:美联储决议、中美通胀、苹果AI和英伟达拆股

当周重磅看点颇多:美联储FOMC将公布最新利率“点阵图”,中国5月金融数据、中美通胀数据将出炉,日本央行购债计划是否变动成为市场焦点,苹果2024全球开发者大会一系列AI功能将亮相;特斯拉2024股东大会上马斯克560亿美元…