首页 > 编程语言 >Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据

时间:2024-07-17 20:31:16浏览次数:9  
标签:False 预测 商店 Python xgboost df 神经网络 train lstm

全文下载链接:http://tecdat.cn/?p=17748

最近我们被客户要求撰写关于销售量时间序列建模的研究报告,包括一些图形和统计输出。

在本文中,在数据科学学习之旅中,我经常处理日常工作中的时间序列数据集,并据此做出预测

我将通过以下步骤:

探索性数据分析(EDA)

  • 问题定义(我们要解决什么)
  • 变量识别(我们拥有什么数据)
  • 单变量分析(了解数据集中的每个字段)
  • 多元分析(了解不同领域和目标之间的相互作用)
  • 缺失值处理
  • 离群值处理
  • 变量转换

预测建模

  • LSTM
  • XGBoost

问题定义

我们在两个不同的表中提供了商店的以下信息:

  • 商店:每个商店的ID
  • 销售:特定日期的营业额(我们的目标变量)
  • 客户:特定日期的客户数量
  • StateHoliday:假日
  • SchoolHoliday:学校假期
  • StoreType:4个不同的商店:a,b,c,d
  • CompetitionDistance:到最近的竞争对手商店的距离(以米为单位)
  • CompetitionOpenSince [月/年]:提供最近的竞争对手开放的大致年份和月份
  • 促销:当天促销与否
  • Promo2:Promo2是某些商店的连续和连续促销:0 =商店不参与,1 =商店正在参与
  • PromoInterval:描述促销启动的连续区间,并指定重新开始促销的月份。

利用所有这些信息,我们预测未来6周的销售量。

   
# 让我们导入EDA所需的库:

import numpy as np # 线性代数
import pandas as pd # 数据处理,CSV文件I / O导入(例如pd.read_csv)
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
plt.style.use("ggplot") # 绘图


#导入训练和测试文件:
train_df = pd.read_csv("../Data/train.csv")
test_df = pd.read_csv("../Data/test.csv")


#文件中有多少数据:
print("在训练集中,我们有", train_df.shape[0], "个观察值和", train_df.shape[1], 列/变量。")
print("在测试集中,我们有", test_df.shape[0], "个观察值和", test_df.shape[1], "列/变量。")
print("在商店集中,我们有", store_df.shape[0], "个观察值和", store_df.shape[1], "列/变量。")

在训练集中,我们有1017209个观察值和9列/变量。
在测试集中,我们有41088个观测值和8列/变量。
在商店集中,我们有1115个观察值和10列/变量。

首先让我们清理  训练数据集。

   
#查看数据
train_df.head().append(train_df.tail()) #显示前5行。

图片

   
train_df.isnull().all()
Out[5]:

Store            False
DayOfWeek        False
Date             False
Sales            False
Customers        False
Open             False
Promo            False
StateHoliday     False
SchoolHoliday    False
dtype: bool

让我们从第一个变量开始->  销售量

   
opened_sales = (train_df[(train_df.Open == 1) #如果商店开业
opened_sales.Sales.describe()
Out[6]:

count    422307.000000
mean       6951.782199
std        3101.768685
min         133.000000
25%        4853.000000
50%        6367.000000
75%        8355.000000
max       41551.000000
Name: Sales, dtype: float64


<matplotlib.axes._subplots.AxesSubplot at 0x7f7c38fa6588>

图片

看一下顾客变量

   
In [9]:

train_df.Customers.describe()
Out[9]:

count    1.017209e+06
mean     6.331459e+02
std      4.644117e+02
min      0.000000e+00
25%      4.050000e+02
50%      6.090000e+02
75%      8.370000e+02
max      7.388000e+03
Name: Customers, dtype: float64

<matplotlib.axes._subplots.AxesSubplot at 0x7f7c3565d240>

图片

   
train_df[(train_df.Customers > 6000)]

图片

我们看一下**假期** 变量。

   
train_df.StateHoliday.value_counts()
   
0    855087
0    131072
a     20260
b      6690
c      4100
Name: StateHoliday, dtype: int64
   
train_df.StateHoliday_cat.count()
   
1017209
   
train_df.tail()

图片

   
train_df.isnull().all() #检查缺失
Out[18]:

Store               False
DayOfWeek           False
Date                False
Sales               False
Customers           False
Open                False
Promo               False
SchoolHoliday       False
StateHoliday_cat    False
dtype: bool

让我们继续进行商店分析

   
store_df.head().append(store_df.tail())

图片

   
#缺失数据:


Store                         0.000000
StoreType                     0.000000
Assortment                    0.000000
CompetitionDistance           0.269058
CompetitionOpenSinceMonth    31.748879
CompetitionOpenSinceYear     31.748879
Promo2                        0.000000
Promo2SinceWeek              48.789238
Promo2SinceYear              48.789238
PromoInterval                48.789238
dtype: float64
In [21]:

让我们从缺失的数据开始。第一个是 CompetitionDistance

   
store_df.CompetitionDistance.plot.box()

让我看看异常值,因此我们可以在均值和中位数之间进行选择来填充NaN

图片


点击标题查阅往期内容

图片

Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

   
缺少数据,因为商店没有竞争。 因此,我建议用零填充缺失的值。
   
store_df["CompetitionOpenSinceMonth"].fillna(0, inplace = True)

让我们看一下促销活动。

   
store_df.groupby(by = "Promo2", axis = 0).count()

图片

如果未进行促销,则应将“促销”中的NaN替换为零 

我们合并商店数据和训练集数据,然后继续进行分析。

第一,让我们按销售量、客户等比较商店。

   
f, ax = plt.subplots(2, 3, figsize = (20,10))

plt.subplots_adjust(hspace = 0.3)
plt.show()

图片

从图中可以看出,StoreType A拥有最多的商店,销售和客户。但是,StoreType D的平均每位客户平均支出最高。只有17家商店的StoreType B拥有最多的平均顾客。

我们逐年查看趋势。

   
sns.factorplot(data = train_store_df, 
# 我们可以看到季节性,但看不到趋势。 该销售额每年保持不变


<seaborn.axisgrid.FacetGrid at 0x7f7c350e0c50>

图片
图片

我们看一下相关图。

   
  "CompetitionOpenSinceMonth", "CompetitionOpenSinceYear", "Promo2

<matplotlib.axes._subplots.AxesSubplot at 0x7f7c33d79c18>

图片

我们可以得到相关性:

  • 客户与销售(0.82)
  • 促销与销售(0,82)
  • 平均顾客销量 vs促销(0,28)
  • 商店类别 vs 平均顾客销量 (0,44)

我的分析结论:

  • 商店类别 A拥有最多的销售和顾客。

  • 商店类别 B的每位客户平均销售额最低。因此,我认为客户只为小商品而来。

  • 商店类别 D的购物车数量最多。

  • 促销仅在工作日进行。

  • 客户倾向于在星期一(促销)和星期日(没有促销)购买更多商品。

  • 我看不到任何年度趋势。仅季节性模式。


图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析》。

图片

本文中分析的数据****分享到会员群,扫描下面二维码即可加群!

图片

点击标题查阅往期内容

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

标签:False,预测,商店,Python,xgboost,df,神经网络,train,lstm
From: https://www.cnblogs.com/tecdat/p/18308220

相关文章

  • python环境配置及基础学习
    python环境配置及基础学习Miniconda安装及使用创建环境condacreate-nnamepython=3.10进入环境condaactivatename退出环境condadeactivateVSCode安装安装成功后,在左边“extensions”搜索Chinese语音包点击install,按照提示重启VSCode在左边“拓展”搜索python,安装......
  • 企业级环境部署:在 Linux 服务器上如何搭建和部署 Python 环境?
     在大部分企业里,自动化测试框架落地都肯定会集成到Jenkins服务器上做持续集成测试,自动构建以及发送结果到邮箱,实现真正的无人值守测试。不过Jenkins搭建一般都会部署在公司的服务器上,不会在私人电脑里,而服务器大部分都是Linux操作系统的。所以,我们如果要在Linux上的Jenkins服......
  • Python函数基础编写定义
    目录1、函数目的2、函数定义3、函数声明4、函数调用5、函数形参6、函数实参7、函数返回值8、函数的参数类型9、匿名函数1、函数目的函数又叫方法,能减少重复代码的编写,提升代码的复用。函数封装了一定的功能,方便不断使用,可以达到简化代码、重复调用的效果,比如系......
  • python 模拟电力系统
    要模拟一个电力系统,你需要使用Python编写一个程序来建立系统的模型,包括发电机、变压器、输电线路、负载等组件,并模拟它们之间的相互作用。这是一个复杂的任务,通常需要使用数学建模和模拟技术,以便分析电力系统的运行情况。以下是一个简单的示例,展示了如何使用Python模拟电力系......
  • Python电力系统PyPsa
    PyPsa是一款电力系统分析包,其可以进行稳态潮流计算(使用非线性/线性网络方程);线性最优潮流计算(线性网络约束下,计算电厂和储能分布的最小成本,使用线性网络方程);安全约束下线性最优潮流计算全电力/能源系统最小投资成本优化(使用线性网络方程,对发电、储能分布、投资优化)等操作。本文主......
  • Python文件与数据处理:掌握I/O操作与序列化的艺术
    在Python编程的世界里,文件操作和数据序列化犹如画家手中的画笔和调色板,是构建强大应用程序不可或缺的工具。本文将深入探讨open()函数的巧妙使用、JSON和pickle模块的序列化魔法,以及os模块在文件系统操作中的关键角色。让我们一同揭开Python文件与数据处理的神秘面纱,掌握I/O操......
  • python ssl报错 aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot
    报错信息原代码:asyncwithsession.post(url,headers=headers,data=payload)asresponse:print(f"{id}签到结果:",awaitresponse.text())原因:在使用aiohttp进行HTTPS请求时,如果没有设置正确的SSL证书验证,就可能会出现以上问题解决办法忽略SSL......
  • python 利用simpy工具包设计一个仿真应用
    这里仿真了一个直行红绿灯路口。假设有一条红绿灯路口的直行车道(假设只有一条,一条和多条相似),现在有一些车要过红绿灯,绿灯20s,黄灯5s,路口40m这里采用网上五菱宏光s的加速度和刹车数据,零百14.3s左右,100码刹车42m,仪器显示加速度数值约为40km/h我们假设均匀加减速,启动加速度取2m/s^2,......
  • 第二课堂笔记:python入门
    数据类型和操作python的常见数据类型标准数据类型不可变数据Number(数字)String(字符串)Tuple(元组)可变数据List(列表)Set(集合)Dictionary(字典)其他Type(类型)Numberint(整数)离散的数据类型float(浮点数)浮点数误差:​ 精确计算浮点数importdecimala=decimal.......
  • [oeasy]python0025_ 顺序执行过程_流水_流程_执行次序
    顺序执行过程_流水_流程_执行次序......