Kaggle 便利店销量预测(xgboost附完整详细代码)

07- Rossmann商店销售预测 (Xgboost集成算法) (项目七) Rossmann在欧洲国家经营着3000多家日化用品超市。目前,Rossmann商店经理的任务是提前6周预测他们的日销售额。商店的销售受到许多因素的影响,包括促销、竞争、学校和国家假日、季节性和地域性。由于数以千计的管理者根据自己的特殊情况预测销售,结果的准确性可能会有很大的差异。 因此使用机器学习算法对销量进行预测,Rossmann要求预测德国1115家商店的6周日销售额。可靠的销售预测使商店经理能够制定有效的员工时间表,提高生产力和积极性。 阅读详情

项目背景介绍

Forecast sales using store, promotion, and competitor data
Rossmann operates over 3,000 drug stores in 7 European countries. Currently,
Rossmann store managers are tasked with predicting their daily sales for up to six weeks in advance. Store sales are influenced by many factors, including promotions, competition, school and state holidays, seasonality, and locality. With thousands of individual managers predicting sales based on their unique circumstances, the accuracy of results can be quite varied.

In their first Kaggle competition, Rossmann is challenging you to predict 6 weeks of daily sales for 1,115 stores located across Germany. Reliable sales forecasts enable store managers to create effective staff schedules that increase productivity and motivation. By helping Rossmann create a robust prediction model, you will help store managers stay focused on what’s most important to them: their customers and their teams!If you are interested in joining Rossmann at their headquarters near Hanover, Germany, please contact Mr. Frank König (Frank.Koenig {at} rossmann.de) Rossmann is currently recruiting data scientists at senior and entry-level positions.

数据
在这里插入图片描述
You are provided with historical sales data for 1,115 Rossmann stores. The task is to forecast the “Sales” column for the test set. Note that some stores in the dataset were temporarily closed for refurbishment.

Files

train.csv - historical data including Sales
test.csv - historical data excluding Sales
sample_submission.csv - a sample submission file in the correct format
store.csv - supplemental information about the stores

Data fields

Most of the fields are self-explanatory. The following are descriptions for those that aren’t.

Id - an Id that represents a (Store, Date) duple within the test set
Store - a unique Id for each store
Sales - the turnover for any given day (this is what you are predicting)
Customers - the number of customers on a given day
Open - an indicator for whether the store was open: 0 = closed, 1 = open
StateHoliday - indicates a state holiday. Normally all stores, with few exceptions, are closed on state holidays. Note that all schools are closed on public holidays and weekends. a = public holiday, b = Easter holiday, c = Christmas, 0 = None
SchoolHoliday - indicates if the (Store, Date) was affected by the closure of public schools
StoreType - differentiates between 4 different store models: a, b, c, d
Assortment - describes an assortment level: a = basic, b = extra, c = extended
CompetitionDistance - distance in meters to the nearest competitor store
CompetitionOpenSince[Month/Year] - gives the approximate year and month of the time the nearest competitor was opened
Promo - indicates whether a store is running a promo on that day
Promo2 - Promo2 is a continuing and consecutive promotion for some stores: 0 = store is not participating, 1 = store is participating
Promo2Since[Year/Week] - describes the year and calendar week when the store started participating in Promo2
PromoInterval - describes the consecutive intervals Promo2 is started, naming the months the promotion is started anew. E.g. “Feb,May,Aug,Nov” means each round starts in February, May, August, November of any given year for that store

简单说明:

本项目根据给定的训练数据及各商店的一些基本信息,提取相关特征,从而构建训练数据集。给定的有1115家商店的历史销售数据,来预测未来6周的销量,以给商店销售作为参考。

导入数据

#导入需要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import xgboost as xgb
from time import time

#导入数据集
store=pd.read_csv(r'E:\python\data\store.csv')
train=pd.read_csv(r'E:\python\data\train.csv',dtype={
   
   'StateHoliday':pd.np.string_})
test=pd.read_csv(r'E:\python\data\test.csv',dtype={
   
   'StateHoliday':pd.np.string_})
#可以看前几行观察下数据的基本情况
store.head()
train.head()
test.head()

查看数据缺失情况:

#train数据无缺失
train.isnull().sum()

#test数据Open列有缺失
test.isnull().sum()
'''
Id                0
Store             0
DayOfWeek         0
Date              0
Open             11
Promo             0
StateHoliday      0
SchoolHoliday     0
dtype: int64
'''
#查看test缺失列都来自于622号店
test[test['Open'].isnull()]
#通过查看train里622号店的营业情况发现,622号店周一到周六都是营业的
train[train['Store']==622]
#所以我们认为缺失的部分是应该正常营业的,用1填充
test.fillna(1,inplace=True)

#store列缺失值较多,但数量看来比较一致,看一下是否同步缺失
store.isnull().sum()
'''
Store                          0
StoreType                      0
Assortment                     0
CompetitionDistance            3
CompetitionOpenSinceMonth    354
CompetitionOpenSinceYear     354
Promo2                         0
Promo2SinceWeek              544
Promo2SinceYear              544
PromoInterval                544
dtype: int64
'''
#下面是观察store缺失的情况
a1='CompetitionDistance'
a2='CompetitionOpenSinceMonth'
a3='CompetitionOpenSinceYear'
a4='Promo2SinceWeek'
a5='Promo2SinceYear'
a6='PromoInterval'
#a2和a3是同时缺失
store[(store[a2].isnull())&(store[a3].isnull())].shape
'''
(354, 10)
'''
#a4,a5,a6也是同时缺失
store[(store[a4].isnull())&(store[a5].isnull())&(store[a6].isnull())].shape
'''
(544, 10)
'''
#a4,a5,a6列缺失是因为没有活动
set(store[(store[a4].isnull())&(store[a5].isnull())&(store[a6].isnull())]['Promo2'])
'''
{0}
'''
#下面对缺失数据进行填充
#店铺竞争数据缺失,而且缺失的都是对应的。原因不明,而且数量也比较多,如果用中值或均值来填充,有失偏颇。暂且填0,解释意义就是刚开业
#店铺促销信息的缺失是因为没有参加促销活动,所以我们以0填充
store.fillna(0,inplace=True)

下面了解下销量随时间变化的情况:

#分析店铺销量随时间的变化
strain=train[train['Sales']>0]
strain.loc[strain['Store']==1,['Date','Sales']].plot(x='Date',y='Sales',title='Store1',figsize=(16,4))
#从图中可以看出店铺的销售额是有周期性变化的,一年中11,12月份销量相对较高,可能是季节因素或者促销等原因
#此外从2014年6-9月份的销量来看,6,7月份的销售趋势与8,9月份类似,而我们需要预测的6周在2015年8,9月份,因此我们可以把2015年6,7月份最近6周的1115家店的数据留出作为测试数据,用于模型的优化和验证

在这里插入图片描述
合并数据集:

上面需要的三个数据集缺失值也都处理完了,下面进行合并

#我们只需要销售额大于0的数据
train=train[train['Sales']>0]
#把store基本信息合并到训练和测试数据集上
train=pd.merge(train,store,on='Store',how='left')
test=pd.merge(test,store,on='Store',how='left')

train.info()
'''
<class 'pandas.core.frame.DataFrame'>
Int64Index: 844338 entries, 0 to 844337
Data columns (total 18 columns):
Store                        844338 non-null int64
DayOfWeek                    844338 non-null int64
Date                         844338 non-null object
Sales                        844338 non-null int64
Customers                    844338 non-null int64
Open                         844338 non-null int64
Promo                        844338 non-null int64
StateHoliday                 844338 non-null object
SchoolHoliday                844338 non-null int64
StoreType                    844338 non-null object
Assortment                   844338 non-null object
CompetitionDistance          844338 non-null float64
CompetitionOpenSinceMonth    844338 non-null float64
CompetitionOpenSinceYear     844338 non-null float64
Promo2                       844338 non-null int64
Promo2SinceWeek              844338 non-null float64
Promo2SinceYear              844338 non-null float64
PromoInterval                844338 non-null object
dtypes: float64(5), int64(8), object(5)
memory usage: 122.4+ MB
'''

特征工程

for data in [train,test]:
	#将时间特征进行拆分和转化
    data['year']=data['Date'].apply(lambda x:x.split
数据分析: kaggle比赛 - 销量预测 继之前的Kaggle比赛实战记录,参考其他kaggler的经验,总结一篇数据分析,以作日后参考。 Part I: 数据读取 import pandas as pd import numpy as np import matplotlib.pylab as plt import seaborn as sns from itertools import cycle pd.set_option('max_columns', 50) plt.style.use('bmh') color_pal = plt.r 阅读详情

相关推荐

XGBoost的基本使用应用&Kaggle便利店销量预测

XGBoost的基本使用应用 导入XGBoost等相关包: from numpy import loadtxt from xgboost import XGBClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score 加载数据,提取特征集和标签: dataset = loadtxt('pima-indians-diabetes.csv', delimit

Grateful_Dead424的博客 2901

零售销量预测实战:从数据清洗到业务落地的完整链路

销量预测是零售与快消行业最基础也最关键的预测任务之一,其本质是通过历史销售数据建模,揭示商品、门店、时间等多维因素与未来销量间的统计规律。其技术核心在于探索性数据分析(EDA)识别数据质量与业务逻辑,特征工程将业务知识转化为机器可学习信号(如商品大类提取、门店年限构造、价格分箱),并选择兼顾可解释性与鲁棒性的算法(如线性回归、LightGBM)。技术价值不仅体现在RMSE等指标精度,更在于支撑采购计划、库存优化与促销决策等真实业务场景。本文以Big Mart Sales Prediction为案例,系统拆解

weixin_34343308的博客 457

销售预测实战:从沃尔玛数据到可落地的业务决策

销售预测是供应链与运营决策的核心技术能力,其本质是将业务逻辑转化为可计算的数据模型。它既不是玄学算命,也不是纯算法竞赛,而是围绕具体决策场景(如门店补货、人力排班、促销投放)构建的时间序列+业务特征融合建模过程。关键技术价值在于提升预测方向准确率、峰值捕捉率与置信区间覆盖率,从而降低库存浪费、人力冗余和资源错配。典型应用场景覆盖零售销量预判、快消品动销管理、SaaS客户留存趋势推演等。本文以沃尔玛周销数据为蓝本,聚焦特征工程中的业务信号挖掘、XGBoost模型的可解释性调优及预测结果向一线动作的自然转化,直

bangtuo9862的博客 591

数学建模预测全流程解析:从ARIMA到LSTM的模型选型与实战避坑

时间序列预测是数据分析与机器学习领域的核心基础技术,其本质是基于历史数据构建数学模型,以推断未来趋势。从原理上看,预测模型通过捕捉数据中的趋势、季节性和周期性等内在规律,将不确定性转化为量化估计。在技术价值层面,精准的预测能为决策提供科学依据,广泛应用于销量预估、负荷预测、风险控制等关键场景。实现有效预测需系统掌握从问题定义、数据预处理、模型选型到评估优化的完整流程。其中,ARIMA等经典统计模型以假设清晰、可解释性强见长,而LSTM等深度学习模型则擅长处理复杂非线性时序关系。本文聚焦数学建模竞赛中的预测问

weixin_34095889的博客 419

机器学习基本设定:从问题定义到数据契约的实战指南

机器学习不是从写代码开始,而是从清晰定义问题、约定数据责任、选择匹配算法和构建评估闭环起步。‘基本设定’是模型落地前必须完成的认知校准与协作契约,它决定了项目是否解决真实业务问题,而非技术幻觉。本文围绕问题定义层(目标变量、预测对象、时间锚点、成败标准)、数据契约层(源系统归属、更新延迟、缺失值权责)、算法选型层(可解释性、延迟预算、特征演化成本)和评估闭环层(时间序列验证、负样本策略、线上监控)展开,融合‘数据契约’‘问题定义’等核心热词,面向零基础转行者、业务方与技术负责人,提供可直接复用的工业级启动框

clugcpne10995的博客 374

机器学习新手五大问题驱动方向:从监督学到批处理

机器学习本质上是解决现实问题的思维范式,而非算法堆砌。其核心围绕输入与输出的关系建模(监督学习)、在无标签数据中发现结构(无监督学习)、通过试错优化序列决策(强化学习)、构建可复现的确定性流程(批处理学习)等基础范式展开。这些方向共同构成AI落地的底层逻辑框架,具备清晰的问题边界、可解释的评估指标和强业务耦合性。尤其在工业场景中,监督学习依赖高质量标签定义,无监督学习重在识别业务断层点,二者协同支撑从数据洞察到策略生成的闭环。本文聚焦新手真正该建立的五大问题驱动型认知路径,避开术语陷阱,直指工程落地本质。

weixin_34014555的博客 354

机器学习建模的认知校准:从问题定义到业务落地的七步法

机器学习建模的本质不是追求指标极致,而是在真实业务约束下实现可解释、可维护、可演进的最优妥协。其核心挑战往往不在算法调参,而在问题形式化定义是否精准、数据生成机制是否被穿透理解、评估体系是否与业务终局对齐、模型复杂度是否匹配部署成本。本文聚焦‘建模认知断层’这一高频痛点,系统拆解问题定义偏差、数据溯源缺失、评估脱钩、模型过载四大根源,并基于实战提炼出覆盖需求映射、数据压力测试、防御性评估、最小可行模型(MVP)、渐进式升级、说明书编写与健康度监控的七步校准法,助力工程师跨越‘训得出来但不敢上线’的临界点。

weixin_30596343的博客 366

数据科学适配性自测:14个行为问题揭示真实从业潜力

数据科学不是单纯的技术工种,而是一种融合数据思维、工程耐受力与业务翻译能力的复合型实践。其核心在于能否将模糊业务需求转化为可量化分析、在脏数据中坚持调试、用非技术语言传递技术价值。‘数据科学适配性’和‘数据思维真实性’并非抽象概念,而是体现在日常是否习惯数字表达、面对报错是查文档还是发群、能否接受70%时间处理沟通与协调等具体行为中。这些能力决定你是在Kaggle刷榜,还是真正驱动业务决策。本文基于87位零基础学员的真实成长轨迹,提炼出14个穿透表象的行为锚点,帮你判断自己是否具备穿越入门焦虑、扎根真实场景

weixin_34050005的博客 412

kaggle——销量预测 Top1%

这个比赛当时是在jupyter notebook上编程的,这篇博客是之前自己整理的代码和流程记录。 但是很可惜,notebook转markdown显示效果很不好,下面给出目录和代码。 # coding: utf-8 # # 数据分析 # In[59]: # 一般一起用才会管用,否则可能会显示混乱 get_ipython().run_line_magic(&#39;config&#39;, ZMQInteractiveShell.ast_node_interactivity=&#39;all&#39;) get_ipython().run_line_magic(&#39;pprint&#39;, &#39;&#39;) # In[60]: # cod

实用电路精讲系列---快速精密桥式放大器电路

快速精密桥式放大器通过惠斯通电桥转换物理量为差分信号,经仪表放大器精密放大,具有高共模抑制、低噪声和宽带宽特性。其核心包含:电桥传感器转换、仪表放大器信号调理(增益可调、温漂补偿)、输出级适配ADC。典型应用包括智能断路器监测、胎压检测、电池安全预警等10大领域,需注意传感器-放大器-ADC最短路径布局。实用电路采用LT1057S和LT1010构建,实现稳定供电、差分处理、功率放大和桥式驱动,满足高精度、快速响应需求。该技术在工业控制、医疗设备等领域具有重要价值。

weixin_40590799的博客 1404

Polars简明基础教程一:Polars快速入门

在这个例子中,我们将添加一个列,其中包含每个舱位中乘客的最大年龄。在Python中(而不是特指Polars),当我们将代码包裹在括号中时,我们可以在新行上调用一个新方法——在这种情况下是select。在这里,我们看到一个使用表达式API的简单示例,其中我们在select语句中选择Pclass、Name和Age列(我们将在第3节中深入了解select语句)。表达式是一个函数,它接受一个Series(或DataFrame中的列)作为输入,并返回一个Series(或DataFrame中的列)。

sosogod的博客 3865

麒麟系统无法进入单用户模式该怎么办?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 1812

流媒体服务软件-LiveNVR channeltree 未授权访问

LiveNVR 能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机 IPCamera、NVR 等具有 RTSP/Onvif 协议输出的设备接入到 LiveNVR,LiveNVR 能够将这些设备源的音/视频数据进行采集、转换、输出,进行全平台终端直播(PC、Android、iOS、微信、H5),并且LiveNVR能够将视频源的直播数据对接到第三方 CDN 网络,实现安防设备互联网级别的直播分发。对channeltree接口加上权限校验。直接访问接口即可获取数据。

iSee857的博客 1025

复旦微实现串口在线升级BOOT.BIN

将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash

wangjie36的博客 3161

Codex入门19-数据库操作(解放双手:用自然语言写SQL、建表和数据迁移)

写 SQL 是后端开发的日常,但复杂的 JOIN、子查询、窗口函数总让人头疼。本文教你用 Codex CLI 实现:自然语言直接生成 CREATE TABLE、复杂 SQL 查询、数据库迁移脚本(Prisma/Knex/Alembic)、ORM 模型代码(SQLAlchemy/TypeORM)、甚至自动生成数据库文档。重点强调安全红线——永远不要让 AI 直接连接生产数据库。从需求描述到完整数据库层代码,一篇搞定。

yueyeguzhuo的专栏 229

数据分析案例-车辆二氧化碳排放量数据可视化分析

本实验数据集来源于Kaggle,该数据集捕获了车辆二氧化碳排放量随不同特征变化的详细信息。数据集取自加拿大政府官方开放数据网站。其中包含 7 年期间的数据。总共有 7385 行和 12 列。各列变量含义解释如下:Make:车辆的品牌或制造商。Model:车辆的具体车型名称。Vehicle Class:车辆的分类,如紧凑型、SUV等。Engine Size(L):车辆发动机的尺寸,以升为单位。Cylinders:车辆发动机的气缸数。

m0_64336780的博客 1万+

从 Integrated Configuration 到 Integration Flow,SAP PI/PO 老配置迁移的一次温和重构

很多还在运行 SAP PI/PO 的系统,Integration Directory 里都积累了不少 Integrated Configuration,也就是日常项目里常说的 ICO。它们可能稳定运行了多年,负责把采购订单、物料主数据、客户主数据、发票、发货通知从一个系统送到另一个系统。问题在于,ICO 这种对象很实用,却不够直观。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 80

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: Kaggle_Titanic生存预测
下一篇: 文本挖掘(TF-IDF)小案例《每日新闻预测金融市场变化》
Daryl_Li
博客等级 码龄7年 73粉丝 21原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值