各类封装函数代码


计算相关系数,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)

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

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

Minio启动脚本-Windows版

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

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

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

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

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

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

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

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

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

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

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

爱情的短视频短片:四川京之华锦信息技术公司

爱情的短视频短片:情感瞬间的浓缩与绽放 在数字化时代,短视频以其短小精悍、直击人心的特点,迅速占领了互联网的高地。而在这些纷繁复杂的短视频内容中,关于爱情的短视频短片更是以其独特的魅力,吸引了无数观众的目光…

【U-Net验证】逐元素乘积将特征投射到极高维隐式特征空间的能力

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需使用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言网络结构编码结构解码结构代码 实验实验设置w/o-ReLU的性能比较with-ReLU的性能比…

【Kotlin】简单介绍与使用kotlin

🍎个人博客:个人主页 🏆个人专栏:Kotlin ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 特点 变量和常量 数据类型和类型推断 函数 字符串模板 条件表达式 空安全 when 表达式 循环 我的其他博客 前言 Kotlin是…

适合技术小白学习的项目1840java swing社团管理系统myeclipse开发Mysql数据库CS结构java编程

一、源码特点 java swing社团管理系统 是一套完善的窗体设计系统,对理解SWING java 编程开发语言有帮助,系统具有完整的源代码和数据库,,系统主要采用C/S模式开发。 应用技术:javamysql 开发工具:Myecl…

Flutter开发效率提升1000%,Flutter Quick教程之对被遮挡的组件进行编辑

1,有些时候,有的widget会被其他widget所遮挡,那么,我们如何选中被遮挡的Widget?如下面这张图。上面是一个Text,外面包裹着一个Container,这时候点击事件会被Text所拦截,那么,如何选…

零基础画师文创运营变现课,从0基础到入门一步步提升(46节课)

课程下载:零基础画师文创运营变现课,从0基础到入门一步步提升(46节课)-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载:关注我。 课程内容: 01 我的二十五年,mp4 02 古法裁剪与新古法裁剪,mp4 …

动规算法-地下城游戏

在刷题练习专栏中,已经写了两篇文章实现对动态规划入门题目的讲解了,动态规划这类题目很难很好的掌握,今天给大家带来稍微深入的题目,帮助大家更好的理解动态规划的算法思想,加深对该算法的理解,建议看每道…

操作系统|进程和线程的上下文以及他们的上下文切换具体流程?

进程和线程已经是老生常谈的问题了,现在那么他们是如何进行切换的呢?他们之间的切换有什么区别呢?如果你不懂的话,就让我们一起来探讨一下吧! 进程上下文切换(context switch) 进程到底由哪些部分组成? …

GPT-4o vs. GPT-4 vs. Gemini 1.5 性能评测,谁更胜一筹!

OpenAI 最近推出了 GPT-4o,OpenAI有一次火爆了,其图像、音频、视频的处理能力非常强。 最令人印象深刻的是,它支持用户与 ChatGPT 实时互动,并且能够处理对话中断。 而且,OpenAI 免费开放了 GPT-4o API 的访问权限。…

finebi或者finereport发邮件

我们二次开发中,如果想利用产品自带的发邮件的功能,来发送自己的邮件内容。 首先 决策系统中邮件相关信息要配置好之后: 这里配好了发件人,以及默认发件人后, private void sendEmail(String content,String subject)…