kaggle竞赛实战5

接下来将两套方案得结果做数据拼接

读数据

   train_dict = pd.read_csv(\ preprocess/train_dict.csv\ ) 
     test_dict = pd.read_csv(\ preprocess/test_dict.csv\ ) 
     train_groupby = pd.read_csv(\ preprocess/train_groupby.csv\ ) 
     test_groupby = pd.read_csv(\ preprocess/test_groupby.csv\ ) 

删除重复项

     for co in train_dict.columns: 
         if co in train_groupby.columns and co!='card_id': 
             del train_groupby[co] 
     for co in test_dict.columns: 
         if co in test_groupby.columns and co!='card_id': 
             del test_groupby[co] 

拼接特征

     train = pd.merge(train_dict, train_groupby, how='left', on='card_id').fillna(0) 
     test = pd.merge(test_dict, test_groupby, how='left', on='card_id').fillna(0) 

数据保存与内存管理

     train.to_csv(\ preprocess/train.csv\ , index=False) 
     test.to_csv(\ preprocess/test.csv\ , index=False) 
      
     del train_dict, test_dict, train_groupby, test_groupby 
     gc.collect() 

开始建模部分!!!!!!!!!!!

先用随机森林

    train = pd.read_csv("preprocess/train.csv") 
     test = pd.read_csv("preprocess/test.csv") 

#提取特征名称

    features = train.columns.tolist() 
     features.remove(\ card_id\ ) 
     features.remove(\ target\ ) 
     featureSelect = features[:] 

#用person系数筛选,默认把这些都看成连续变量(只要不做独热编码就可以这么看)

     for fea in featureSelect: 
         corr.append(abs(train[[fea, 'target']].fillna(0).corr().values[0][1])) #从内向外依次取出这两列,填充0,计算相关矩阵,然后只要取右上角那个值就可以

     # 取top300的特征进行建模,具体数量可选 
     se = pd.Series(corr, index=featureSelect).sort_values(ascending=False) #以featureSelect为索引,按照值排序
     feature_select = ['card_id'] + se[:300].index.tolist() 

     # 输出结果 
     train = train[feature_select + ['target']] 
     test = test[feature_select] 

#用网格搜索进行参数调优

#导入包

  from sklearn.metrics import mean_squared_error 
     from sklearn.ensemble import RandomForestRegressor #随机森林分类器
     from sklearn.model_selection import GridSearchCV #网格搜索评估器

随机森林的参数有

     |criterion|规则评估指标或损失函数,默认基尼系数,可选信息熵|  
     |splitter|树模型生长方式,默认以损失函数取值减少最快方式生长,可选随机根据某条件进行划分| 
     |max_depth|树的最大生长深度,类似max_iter,即总共迭代几次|  
     |min_samples_split|内部节点再划分所需最小样本数|  
     |min_samples_leaf|叶节点包含最少样本数|  
     |min_weight_fraction_leaf|叶节点所需最小权重和|  
     |max_features|在进行切分时候最多带入多少个特征进行划分规则挑选| 
     |random_state|随机数种子|  
     |max_leaf_nodes|叶节点最大个数|  
     |min_impurity_decrease|数据集再划分至少需要降低的损失值|  
     |min_impurity_split|数据集再划分所需最低不纯度,将在0.25版本中移除|  
     |class_weight|各类样本权重|  

我们挑选n_estimators\ 几棵树、\ min_samples_leaf\ 、\ min_samples_split\ 、\ max_depth\ 和\ max_features\ 每次进行特征选择时所纳入考虑的最大特征数 这几个进行参数搜索

调参思路:用halving方法,其思路为凉凉比对,然后逐层筛选参数组合

   features = train.columns.tolist() 
     features.remove("card_id") 
     features.remove("target")

     parameter_space = { 
         " n_estimators" : [79, 80, 81],  
        ” min_samples_leaf”: [29, 30, 31], 
         "min_samples_split“: [2, 3], 
         "max_depth” : [9, 10], 
        "max_features“: [\ auto\ , 80] 
     } 

#构建参数评估其,然后输入其它参数取值

 clf = RandomForestRegressor( 
         criterion="mse" , 
         n_jobs=15, 
         random_state=22) 

#进行网格搜索

grid = GridSearchCV(clf, parameter_space, cv=2, scoring="neg_mean_squared_error") 
     grid.fit(train[features].values, train['target'].values) 

#拿最佳参数

grid.best_params_ 

#查看最优参数评估器

grid.best_estimator_

#查看在训练集上的最终评分

np.sqrt(-grid.best_score_)

目前评分3.69样子

#然后预测测试集结果并写入csv

test['target']=grid.best_estimator_.predict(test[features])

test[['card_id,'target']].to_csv("submission_randomforest.csv" , index=False)

结果大约3.4样子,至此完成了这个竞赛,后续更新优化方案

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逻辑这回事(三)----功耗优化

低功耗设计概述 低功耗设计动机 功耗的增加影响芯片Power grid(电源网格)的设计;功耗的增加导致芯片温度的上升,进而带来一系列影响。如Leakage Power增加;电路时序可能变差;IR Drop(IR压降)变大;功耗的增加导致芯片封装成本和散热成本的增加(packing cost、cooling cost)功耗…

window本地域名映射修改

位置 C:\Windows\System32\drivers\etc 文件名 hosts 修改方法 复制一份到桌面 修改桌面的文件 # 前面为ip 后面为域名,域名-》ip的映射 127.0.0.1 link.com最后将修改后的文件保存,复制到C:\Windows\System32\drivers\etc替换

Mysql 8.0.37 安装教程

图片有点长,慢慢来 安装教程 安装地址:MySQL :: MySQL Downloads 进入官网 下载社区版 此处有两个版本,我们下载的是8.0.37版本 第一个需要联网安装,我们现在第二个离线安装 server only:仅安装MySQL server clien…

Java18+前端html+后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍

Java18前端html后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍 家政服务用户端是一个为家庭用户提供便捷、高效家政服务的应用程序。 以下是家政服务用户端的详细功能描述: 一、注册与登录&#…

day46 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 01背包内嵌的循环是从…

BearPi-HM Nano开发笔记

小熊派 简单介绍 BearPi-HM Nano开发板是一块专门为鸿蒙OS设计的HarmonyOS开发板,板载高度集成的2.4GHz WLAN SoC芯片Hi3861,并板载NFC电路及标准的E53接口可拓展 E53接口 介绍 E53接口标准为“物联网俱乐部”联合国内多家开发板厂家制定的物联网案…

80个GitHub上c/c++学习项目推荐——拎几个出来写进简历

1.《30天自制C服务器》 ①语言:c ②来源:GitHub 目前star:4.8k ③项目地址:https://github.com/yuesong-feng/30dayMakeCppServer ④类型:免费 2.《btop》(命令行资源监视器) ①语言:c ②…

【六一儿童节】的科技奇幻旅程:解锁【机器学习】与【人工智能】的无限创意

目录 一、机器学习与人工智能简介 二、六一儿童节的特殊意义 三、项目概述:智能绘画助手 四、技术栈和工具 五、数据准备 六、模型训练 1. 数据预处理 2. 构建和训练模型 七、智能绘画助手的实现 1. 搭建Flask应用 2. 客户端界面 八、扩展功能与优化 1…

Flutter 中的 SliverToBoxAdapter 小部件:全面指南

Flutter 中的 SliverToBoxAdapter 小部件:全面指南 Flutter 是一个流行的 UI 框架,它提供了多种灵活的组件来构建丰富和交互式的用户界面。在 Flutter 的滚动和布局组件中,SliverToBoxAdapter 是一个特殊的小部件,它允许将 BoxWi…

Message的复用

前言 在Android开发中,Message作为Handler通信机制的核心组件之一,其创建方式的选择直接影响着应用的性能表现。传统的新建实例方式(new Message())虽然直观,但在频繁的消息传递场景下可能会引发大量的对象创建与销毁,进而增加垃…

图像交换部分区域或帧

生成一个boundingbox,或区间 给定矩形框占图像的面积比例,和图像的宽W高H,生成矩形框。根据给定的矩形框,交换两张图像的部分区域。 这里为了方便展示,简化问题,给定一个图像数组mels,对第 i …

【第2章】SpringBoot实战篇之接口参数校验和全局异常处理

文章目录 前言一、参数校验1. 引入库2. 全局异常处理3. 控制器类4. 响应 二、对象校验1.实体类2.控制器类3. 全局异常处理4. 响应 总结 前言 对接口请求参数校验是每一个开发人员都必须熟知且善用的功能,是保证程序健壮性的基石。 除引入方式不同,使用…

从零到一的程序猿-day2-yoloV4训练及免环境易语言调用

简介 本项目功能介绍:针对4位英文数字随机组合的验证码抽象图片进行分类识别,识别结果为验证码内容 训练 没有难度,手动标注,样本为150张,首先识别出图片中每个英数的位置,再由分类器进行标注识别&#x…

Github:ChatTTS从下载到使用

前言 本文使用工具: Anaconda :直接进行包管理,用来自定义生成python解释器,虚拟环境vscode:用来执行代码 注:我使用的Ubuntu,使用win,mac等,需要额外配置 简介 Chat…

【环境栏Composer】Composer常见问题(持续更新)

1、执行composer install提示当前目录中没有 composer.lock 文件时 No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Composer 在执行 install 命令时会…

浅谈大模型的优缺点以及优化方法

引言 人工智能大模型,如深度学习模型、神经网络模型等,已经改变了我们对数据处理和分析的方式。然而,尽管它们在各种应用中表现出色,但也存在一些挑战和限制。本文将详细探讨人工智能大模型的优点和缺点,并提出一些方…

【第六节】C++中的模板

目录 前言 一、函数模板 二、模块特化 三、重载函数模板 四、类模板 五、总结 前言 模板是C编程中的一种强大工具,它允许程序员创建具有通用数据类型的函数库和类库。作为支持参数多态性的机制,模板极大地增强了代码的复用性和灵活性。 在C语言中&#x…

Pytorch线性回归

使用pytorch来重现线性模型的过程,构造神经网络module,构造损失函数loss,构造随机梯度下降的优化器sgd。 一 revise 首先确定我们的模型,我们希望完成的目标就是得到较小的loss,所以我们就需要一个标量值的loss。 那…

YOLOv10(2):网络结构及其检测模型代码部分阅读

YOLOv10(1):初探,训练自己的数据-CSDN博客 目录 1. 写在前面 2. 局部模块 (1)SCDown (2)C2fCIB (3)PSA(partial self-attention) 3. 代码解读 &#x…

手把手教大家如何使用Kaggle平台的免费GPU资源跑深度学习模型

如果手头没有GPU资源是没法很好进行学习和实操各种深度学习模型的,所幸有一些平台提供了GPU资源供广大兴趣爱好者进行免费使用。 一、免费GPU资源的平台 1. Google Colab 地址:https://colab.research.google.com/ 简介:Google Colab&…