6 回归集成:xgb、lgb、cat

 这个代码是从kaggle上拷贝过来的:

  1. 如何使用三个树模型模块化训练;
  2. 文本特征如何做,如何挖掘;
  3. 时间特征的处理;
  4. 模型权重集成;
import pandas as pd 
import math
import numpy as np 
import joblib 
import optunafrom lightgbm import LGBMRegressor
from catboost import CatBoostRegressor
from xgboost import XGBRegressor
from sklearn.preprocessing import *
from sklearn.metrics import *
from sklearn.model_selection import *from sklearn.decomposition import TruncatedSVD
from sklearn.feature_extraction.text import TfidfVectorizerimport datetime
import gc
from sklearn.base import clonepd.set_option('display.max_columns', None)import warnings
warnings.filterwarnings("ignore")d_s = pd.read_csv('/kaggle/input/rohlik-orders-forecasting-challenge/solution_example.csv')te_d = pd.read_csv('/kaggle/input/rohlik-orders-forecasting-challenge/test.csv')tr_d = pd.read_csv('/kaggle/input/rohlik-orders-forecasting-challenge/train.csv')tr_d.drop('id',axis=1,inplace=True)
te_d.drop('id',axis=1,inplace=True)tr_d['holiday_name'].fillna('None', inplace=True)
te_d['holiday_name'].fillna('None', inplace=True)def Process_Date(Df):Df['date'] = pd.to_datetime(Df['date'])Df['year'] = Df['date'].dt.yearDf['day'] = Df['date'].dt.dayDf['month'] = Df['date'].dt.monthDf['month_name'] = Df['date'].dt.month_name()Df['day_of_week'] = Df['date'].dt.day_name()Df['week'] = Df['date'].dt.isocalendar().weekDf['year_sin'] = np.sin(2 * np.pi * Df['year'])Df['year_cos'] = np.cos(2 * np.pi * Df['year'])Df['month_sin'] = np.sin(2 * np.pi * Df['month'] / 12) Df['month_cos'] = np.cos(2 * np.pi * Df['month'] / 12)Df['day_sin'] = np.sin(2 * np.pi * Df['day'] / 31)  Df['day_cos'] = np.cos(2 * np.pi * Df['day'] / 31)Df['group']=(Df['year']-2020)*48+Df['month']*4+Df['day']//7Df['total_holidays_month'] = Df.groupby(['year', 'month'])['holiday'].transform('sum')Df['total_shops_closed_week'] = Df.groupby(['year', 'week'])['shops_closed'].transform('sum')Df['group_sin'] = np.sin(2 * np.pi * Df['group'] / Df['group'].max())Df['group_cos'] = np.cos(2 * np.pi * Df['group'] / Df['group'].max())return Dftr_d = Process_Date(tr_d)
te_d = Process_Date(te_d)tr_d = tr_d[['warehouse', 'date', 'holiday_name', 'holiday', 'shops_closed','winter_school_holidays', 'school_holidays', 'year', 'day', 'month','month_name', 'day_of_week', 'week', 'year_sin', 'year_cos','month_sin', 'month_cos', 'day_sin', 'day_cos', 'group','total_holidays_month', 'total_shops_closed_week','group_sin', 'group_cos','orders']]le_month = LabelEncoder()
le_week = LabelEncoder()
le_war = LabelEncoder()tr_d['month_name'] = le_month.fit_transform(tr_d['month_name'])
tr_d['day_of_week'] = le_week.fit_transform(tr_d['day_of_week'])
tr_d['warehouse'] = le_war.fit_transform(tr_d['warehouse'])te_d['month_name'] = le_month.transform(te_d['month_name'])
te_d['day_of_week'] = le_week.transform(te_d['day_of_week'])
te_d['warehouse'] = le_war.transform(te_d['warehouse'])def apply_tfidf_svd(df, text_column, max_features=1000, n_components=10):vectorizer = TfidfVectorizer(max_features=max_features, stop_words='english')vectors = vectorizer.fit_transform(df[text_column])svd = TruncatedSVD(n_components)x_sv = svd.fit_transform(vectors)tfidf_df = pd.DataFrame(x_sv)cols = [(text_column + "_tfidf_" + str(f)) for f in tfidf_df.columns.to_list()]tfidf_df.columns = colsdf = df.reset_index(drop=True)df = pd.concat([df, tfidf_df], axis="columns")return dftr_d = apply_tfidf_svd(tr_d,'holiday_name')
te_d = apply_tfidf_svd(te_d,'holiday_name')tr_d.drop(['date','holiday_name'],axis=1,inplace=True)
te_d.drop(['date','holiday_name'],axis=1,inplace=True)print(f"Shape Of Train Data is {tr_d.shape}")
print(f"Shape Of Test Data is {te_d.shape}")%%time X = tr_d.drop('orders',axis=1)
y =tr_d['orders']def cross_validate(model, n_splits=15):scores = []test_preds = np.zeros(len(te_d))groups = X['group']kfold = GroupKFold(n_splits=n_splits)for fold, (train_index, valid_index) in enumerate(kfold.split(X, y, groups=groups)):X_train = X.iloc[train_index]y_train = y.iloc[train_index]X_val = X.iloc[valid_index]y_val = y.iloc[valid_index]m = clone(model)m.fit(X_train, y_train, eval_set=[(X_val, y_val)])y_pred = m.predict(X_val)score = mean_absolute_percentage_error(y_val, y_pred)scores.append(score)test_preds += m.predict(te_d) / n_splitsgc.collect()print(f" MAPE mean: {np.array(scores).mean():.7f} (+- {np.array(scores).std():.7f})")return test_preds%%timeSEED = 2375cat = CatBoostRegressor(verbose=0,learning_rate=0.01,iterations=2000,random_state = SEED)
cat_test_preds = cross_validate(cat)SEED = 1023
xgb = XGBRegressor(n_estimators=1000,learning_rate=0.05,verbosity=0,random_state=SEED)
xgb_test_preds = cross_validate(xgb)%%timelgb = LGBMRegressor(verbose=-1,random_state = SEED)
lgb_test_preds = cross_validate(lgb)%%time weights = {'cat_test_preds': 0.45,  'lgb_test_preds': 0.45,'xgb_test_preds': 0.1,}cat_test_preds_weighted = cat_test_preds * weights['cat_test_preds']
lgb_test_preds_weighted = lgb_test_preds * weights['lgb_test_preds']
xgb_test_preds_weighted = xgb_test_preds * weights['xgb_test_preds']ensemble_preds = cat_test_preds_weighted + lgb_test_preds_weighted + xgb_test_preds_weightedd_s['orders'] = ensemble_preds
d_s['id'] = d_s['id']d_s.to_csv('Submission.csv', index=False)print(d_s.head())

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

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

相关文章

【JS逆向课件:第八课:异常处理】

异常处理 首先我们要理解什么叫做**"异常”**? 在程序运行过程中,总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的: 比如语法错误、调用错误,甚至逻辑错误。 还有一些错误,则是不可预料的错误…

vst 算法R语言手工实现 | Seurat4 筛选高变基因的算法

1. vst算法描述 (1)为什么需要矫正 image source: https://ouyanglab.com/singlecell/basic.html In this panel, we observe that there is a very strong positive relationship between a gene’s average expression and its observed variance. I…

OpenAI 推出 GPT-4o mini,一种更小、更便宜的人工智能模型

OpenAI 最近推出了新型人工智能模型 GPT-4o mini,以其较小体积和低成本受到关注。这款模型在文本和视觉推理任务上性能优越,且比现有小型模型更快、更经济。GPT-4o mini 已向开发者和消费者发布,企业用户将在下周获得访问权限。 喜好儿网 在…

ubuntu22.04下YOLOv5 TensorRT模型部署

目录 Ubuntu22.04环境配置 1.1 安装工具链和opencv 1.2 安装Nvidia相关库 1.2.1 安装Nvidia显卡驱动 1.2.2 安装 cuda11.7 安装cuDNN 下载下载 tensorrt 下载仓库TensorRT-Alpha并设置 从yolov5源码中导出onnx文件 ​编辑 利用tensorrt编译onnx模型 编译执行yolov5-t…

spring 中的字节码文件访问 -- classreading 包

位于 spring-core 模块下的 org.springframework.core.type.classreading 包提供了读取类中元数据的功能。其实就是在不加载类的情况下,获取 class 文件中定义的类的相关信息:类名、接口、注解、方法及其注解、字段及其注解等。方便 spring 进行类型或指…

牛客0718B——Arraylist 和LinkedList static修饰变量和方法

目录 Q1:currentTimeMillis是什么? Q2:比较Arraylist 和LinkedList的查找时间 3、相关对比Vector和Arraylist 底层扩容的原理: Q4:static修饰静态代码块 修改1: 修改2: 修改3: 修改1: 修改2: Q5…

入坑树莓派(2)——树莓派4B与手机蓝牙通信

入坑树莓派(2)——树莓派4B与手机蓝牙通信 1、引言 在入坑树莓派(1)中已经搞掂了可视化问题。现在继续开展下一步,尝试与手机通信,一开始是想弄wifi连接的,但发现基于wifi的APP比较难弄,为了降低开发的难度,又因为树莓派板子自带蓝牙模块,所以直接选用蓝牙连接手机…

LabVIEW多串口通信

随着现代工业控制对数据采集和处理效率的要求不断提升,传统的单串口通信已无法满足多通道数据传输与大规模数据存取的需求。开发一种基于LabVIEW的多串口通信及数据存储系统,以提升数据处理速度和存储效率,保障生产线的稳定运行显得尤为重要。…

达梦+flowable改造

原项目springbootflowablemysql模式现需改造springbootflowable达梦&#xff0c; 1.在项目中引入达梦jpa包 引入高版本包已兼容flowable&#xff08;6.4.2&#xff09;liquibase&#xff08;3.6.2&#xff09; 我没有像网上做覆盖及达梦配置 <dependency> …

数据结构之树的存储结构详解与示例(C/C++)

文章目录 树的存储结构1. 顺序存储结构2. 链式存储结构结论 树&#xff08;Tree&#xff09;是一种非常常见的数据结构&#xff0c;它模拟了一种层级或分支结构。树由节点&#xff08;或称为顶点&#xff09;组成&#xff0c;每个节点包含一个值&#xff0c;并且可能有多个子节…

SpringDoc2问题汇总

在项目中尝试使用SpringDoc进行文档生成&#xff0c;在使用过程中遇到一系列的问题加以记录. 1.引入依赖 只是单纯的使用SpringDoc的话不需要引入一些乱七八糟的依赖&#xff0c;如今各种增强和拓展依赖层出不穷&#xff0c;但是随着这些依赖的出现带来的不仅是增强&#xff0…

在学习使用LabVIEW的过程中,需要注意哪些问题?

在学习使用LabVIEW的过程中&#xff0c;需要注意以下问题&#xff1a; 1. 基础知识 图形化编程思维&#xff1a; LabVIEW采用图形化编程方式&#xff0c;与传统的文本编程语言有很大不同&#xff0c;需要适应这种新的编程思维方式。数据流概念&#xff1a; 理解LabVIEW的核心数…

调用第三方接口-OkHttpClient

请求方式 POSTGET POST 单个新增 例如后端接口接收参数为 User user 使用OkHttpClient发送post请求 //封装body信息 JsonObject jsonObject new JsonObject(); jsonObject.put("userName","张三"); jsonObject.put("city","北京");…

服务器借助笔记本热点WIFI上网

一、同一局域网环境 1、当前环境&#xff0c;已有交换机组网环境&#xff0c;服务器已配置IP信息。 设备ip服务器125.10.100.12交换机125.10.100.0/24笔记本125.10.100.39 2、拓扑图 #mermaid-svg-D4moqMym9i0eeRBm {font-family:"trebuchet ms",verdana,arial,sa…

AFAC2024-基于保险条款的问答 比赛日记 llamafactory qwen npu 910B1

AFAC2024: 基于保险条款的问答挑战——我的实战日记 概述 在最近的AFAC2024竞赛中&#xff0c;我参与了基于保险条款的问答赛道。这是一次深度学习与自然语言处理的实战演练&#xff0c;旨在提升模型在复杂保险文本理解与问答生成方面的能力。本文将分享我的参赛过程&#xf…

Git技巧:如何重命名你的分支

0. 引言 本文将介绍如何在本地以及远程仓库中安全地重命名 Git 分支。 1. 在本地重命名分支 在本地重命名分支可以通过 git branch 命令完成&#xff0c;具体有两种方法&#xff1a; 方法1&#xff1a;当前分支重命名 如果你当前正在 old 分支上工作&#xff0c;想要将其重…

numpy的一些基本操作

文章目录 1.numpy数组的多种创建方式1.1使用np.array()创建1.2使用plt创建1.3使用np的routine函数创建 2.numpy的常用属性2.1shape2.2ndim2.3size2.4dtype 3.numpy的索引和切片3.1切出前两列数据3.2切出前两行数据3.3切出前两行的前两列的数据3.4数组数据翻转3.5练习&#xff1…

【权威发布】2024年生物技术与医学国际会议(IACBM 2024)

2024年生物技术与医学国际会议 2024 International Conference on Biotechnology and Medicine 【1】会议简介 2024年生物技术与医学国际会议旨在为全球生物技术与医学领域的专家学者提供一个交流最新研究成果、分享技术进展和探讨未来发展方向的平台。会议旨在加强国际间的学术…

阿里云 https证书部署

一.申请证书 二.查看状态 查看状态&#xff0c;已签发是完成了申请证书 三.部署 我在nginx服务器上部署 具体操作链接:阿里云文档 修改前 修改后 四.重启ngnix 五.验证是否成功 在浏览器输入域名查看

vue2关于Object.defineProperty实现响应式

实现步骤&#xff1a; 1. 初始化阶段 当 Vue 实例化时&#xff0c;会遍历data 选项中的属性&#xff0c;并使用 Object.defineProperty 将它们转换为 getter 和 setter。这样一来&#xff0c;每当访问或修改这些属性时&#xff0c; Vue就能捕获到这些操作&#xff0c;从而实现…