各类封装函数代码


计算相关系数,Filter方法,并筛选特征


def feature_select_pearson(train, test):"""利用pearson系数进行相关性特征选择:param train:训练集:param test:测试集:return:经过特征选择后的训练集与测试集"""print('feature_select...')features = train.columns.tolist()features.remove("card_id")features.remove("target")featureSelect = features[:]# 去掉缺失值比例超过0.99for fea in features:if train[fea].isnull().sum() / train.shape[0] >= 0.99:featureSelect.remove(fea)# 进行pearson相关性计算corr = []for fea in featureSelect:corr.append(abs(train[[fea, 'target']].fillna(0).corr().values[0][1]))# 取top300的特征进行建模,具体数量可选se = pd.Series(corr, index=featureSelect).sort_values(ascending=False)feature_select = ['card_id'] + se[:300].index.tolist()print('done')return train[feature_select + ['target']], test[feature_select]

```c
def param_grid_search(train):"""网格搜索参数调优:param train:训练集:return:网格搜索训练结果"""# Step 1.创建网格搜索空间print('param_grid_search')features = train.columns.tolist()features.remove("card_id")features.remove("target")parameter_space = {"n_estimators": [81], "min_samples_leaf": [31],"min_samples_split": [2],"max_depth": [10],"max_features": [80]}# Step 2.执行网格搜索过程print("Tuning hyper-parameters for mse")# 实例化随机森林模型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)# Step 3.输出网格搜索结果print("best_params_:")print(grid.best_params_)means = grid.cv_results_["mean_test_score"]stds = grid.cv_results_["std_test_score"]# 此处额外考虑观察交叉验证过程中不同超参数的for mean, std, params in zip(means, stds, grid.cv_results_["params"]):print("%0.3f (+/-%0.03f) for %r"% (mean, std * 2, params))return grid

在这里插入图片描述
4.随机森林交叉验证评估与中间结果保存
  在实际模型优化的过程中,有很多方法可以考虑,包括使用更加复杂高效的模型、进行模型融合、特征优化等等,但除此以外,还有一类经常被忽视但又同样高效优化的方法,那就是借助交叉验证进行多模型结果集成,当然此处所谓的多模型并不是采用了不同的评估器,而是同一个评估器(例如随机森林)在不同数据集上进行多次训练后生成多个模型,然后借助多个模型对测试集数据输出预测结果,最终通过取均值的方式来计算最终模型对测试集的预测结果。例如当前我们已经挑选了一组最优超参数,那么接下来就可以在这组超参数基础上进行五折交叉验证模型训练,该过程中对验证集的预测结果可以参与到后续Stacking融合过程中,而对测试集的预测结果则可以作为最终预测结果进行提交,相关过程如下所示:

image-20211208192640281
当然,交叉验证可以直接调用sklearn中评估器来实现,我们可以通过如下代码实现上述过程:

def train_predict(train, test, best_clf):"""进行训练和预测输出结果:param train:训练集:param test:测试集:param best_clf:最优的分类器模型:return:"""# Step 1.选择特征print('train_predict...')features = train.columns.tolist()features.remove("card_id")features.remove("target")# Step 2.创建存储器# 测试集评分存储器prediction_test = 0# 交叉验证评分存储器cv_score = []# 验证集的预测结果prediction_train = pd.Series()# Step 3.交叉验证# 实例化交叉验证评估器kf = KFold(n_splits=5, random_state=22, shuffle=True)# 执行交叉验证过程for train_part_index, eval_index in kf.split(train[features], train['target']):# 在训练集上训练模型best_clf.fit(train[features].loc[train_part_index].values, train['target'].loc[train_part_index].values)# 模型训练完成后,输出测试集上预测结果并累加至prediction_test中prediction_test += best_clf.predict(test[features].values)# 输出验证集上预测结果,eval_pre为临时变量eval_pre = best_clf.predict(train[features].loc[eval_index].values)# 输出验证集上预测结果评分,评估指标为MSEscore = np.sqrt(mean_squared_error(train['target'].loc[eval_index].values, eval_pre))# 将本轮验证集上的MSE计算结果添加至cv_score列表中cv_score.append(score)print(score)# 将验证集上的预测结果放到prediction_train中prediction_train = prediction_train.append(pd.Series(best_clf.predict(train[features].loc[eval_index]),index=eval_index)

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

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

相关文章

【每日刷题】Day54

【每日刷题】Day54 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 575. 分糖果 - 力扣(LeetCode) 2. 147. 对链表进行插入排序 - 力扣&#xf…

多源 BFS 详解

目录 一、多源与单源的区别 二、例题练习 2.1 例题1:01 矩阵 2.2 例题2:飞地的数量 2.3 例题3:地图中的最高点 2.4 例题4:地图分析 一、多源与单源的区别 单源最短路问题如何解决已经在上篇博客给出BFS 解决最短路问题&am…

最新版ERP进销存网络多仓版WEB源码

安装说明 环境要求: PHP5.6MYSQL5.6 1.恢复数据库.sql数据 2.配置sql参数连接路径:application\config\database.php 3.前台登录用户名:admin 密码:admin 源码免费下载地址抄笔记 (chaobiji.cn)

Spring Data JPA与Hibernate的关系是什么?

Spring Data JPA 和 Hibernate 的关系可以用术语“抽象层”和“实现”来描述。在这种关系中,Spring Data JPA 表现为一个更高级别的抽象层,而 Hibernate 是这一层下面的一个具体实现。 Hibernate Hibernate 是一个非常流行的 Java 持久化框架。它提供了…

解决sd-webui中rembg插件使用报错问题

stable-diffusion-webui-rembg是我非常喜欢的sd-webui插件,PS抠图手残党的福音,一键抠图太爽啦。对于主体明确线条简单的图片(如汽车、服饰简洁的人像等)效果相当好;即便对于毛茸茸的对象(如动物&#xff0…

C语言选择排序编程:深入剖析与实战指南

C语言选择排序编程:深入剖析与实战指南 在C语言编程中,选择排序是一种简单直观的排序算法。本文将通过四个方面、五个方面、六个方面和七个方面,深入剖析选择排序的原理、实现过程以及注意事项,帮助读者更好地掌握这一算法&#…

Elasticsearch安装与配置:快速搭建本地环境

Elasticsearch,作为当下最流行的开源搜索引擎和数据分析工具之一,其强大的全文搜索能力和丰富的数据分析功能,吸引了众多开发者和数据分析师的关注。本文将指导你如何快速在本地搭建Elasticsearch环境,以便你能够立即开始探索其强…

编译器屏障概述

文章目录 1. 前言2. 编译器内存屏障2.1 编译器内存访问重排序规则2.2 编译器屏障的几种形式2.2.1 显式编译器屏障2.2.2 隐式编译器屏障2.2.3 硬件内存屏障充当编译屏障2.2.4 编程语言内存模型提供的编译屏障 2.3 编译器内存屏障实例2.3.1 Linux spinlock 3. 结语4. 参考资料 1.…

Minio启动脚本-Windows版

MinIO 是一种高性能、S3 兼容的对象存储。 它专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储。 不需要购买任何专有硬件,就可以在云上和普通硬件上拥有分布式对象存储。 MinIO拥有开源 GNU AGPL v3 和商业企业许可证的双重许可。 ——摘自…

MySQL之创建高性能的索引(十二)

创建高性能的索引 支持多种过滤条件 这些索引将满足大部分最常见的搜索查询,但是如何为一些生僻的搜索条件(比如has_pictures、eye_color、hair_colr和education)来设计索引呢?这些列的选择性搞,使用也不频繁,可以选择忽略它们&…

云计算和雾计算

雾计算作为传统集中式数据存储系统(云)和边缘设备之间的中间层。雾扩展了云,使计算和数据存储更接近边缘。雾由多个节点(雾节点)组成,并创建一个本地网络,使其成为一个去中心化的生态系统——雾…

如何创建一个Angular项目(超简单)

1、安装Node.js(官网Node.js下载) 2、运行node -v和npm -v两条命令(检验是否下载成功Node.js) 3、npm i -g cnpm --registryhttps://registry.npmmirror.com(用npm安装cnpm,将镜像源设置为国内镜像源&…

ROS2 (python)构造服务端和客户端

要注意:服务端和客户端的名字要统一 什么是线程死锁 A需要等B把装满水的桶放下 才能把水桶提走 B需要等A把水桶提走才能把自己的装满 假设A和B都要站在位置C工作 A:站在工位C将小桶水倒进大桶里 B:从C位置将装满水的大桶拎走 那么假设时刻…

Next前端是什么

Next前端是什么 在前端开发的浩瀚星空中,Next前端如同一颗璀璨的明星,吸引着无数开发者的目光。那么,Next前端究竟是什么呢?它为何能在前端领域掀起如此波澜?接下来,我们将从四个方面、五个方面、六个方面…

制作一个简单HTML旅游网站(HTML+CSS+JS)云南旅游网页设计与实现5个页面

一、👨‍🎓网站题目 旅游,当地特色,历史文化,特色小吃等网站的设计与制作。 二、✍️网站描述 云南旅游主题的网页 一共七个个页面 - 旅游网页使用html css js制作 有banana图 - 页面可以相互跳转 包含表单 三级页面…

Laravel 富文本内容

Laravel 获取富文本的纯文本内容-CSDN博客 Laravel 富文本内容里面的图片添加前缀URL-CSDN博客 Laravel 富文本图片的style样式删除-CSDN博客. 富文本字体font-famly删除 $data preg_replace(/(<[^>])style["\][^"\]*font-family:[^"\]*["\]([^&…

Shopee爆款打造核心运营方法,下一个大卖就是你

课程下载&#xff1a;Shopee爆款打造核心运营方法&#xff0c;下一个大卖就是你-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载&#xff1a;关注我。 课程内容&#xff1a; 001.1-爆款产品的选择,mp4 002.2-依据宗教信仰和消费禁忌选品.mp4 003.3-刻画消费者画像…

C++设计模式-桥接模式

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 29. 桥接模式 桥接模式将抽象与实现分离&#xff0c;使二者可以独立地变化。 应用&#xff1a;如在游戏开发中&#xff0c;多个角色和多个武器交叉组合时。可以使用桥接模式&#xff0c;定义角色抽象类&#xff0c;武器抽象…

如何跨渠道分析销售数据 - 7年制造业销售经验小结

如何跨渠道分析销售数据 - 7年制造业销售经验小结&#xff08;1&#xff09; 【前言】 在我过去7年销售工作生涯中&#xff0c;从第一年成为公司销冠后&#xff0c;我当时的确自满的一段时间&#xff0c;认为自己很了不起。但是第一年的销售业绩并没有拿到提成&#xff0c;最…

2024-06-02 问AI: 在大语言模型中,什么是multi agent?

文心一言 在大语言模型中&#xff0c;Multi-Agent&#xff08;多智能体&#xff09;是指由多个具有自主决策和交互能力的智能体&#xff08;Agent&#xff09;组成的系统。这些智能体能够相互协作、竞争或协商&#xff0c;以完成共同或各自的任务。以下是关于Multi-Agent在大语…