1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 拓端tecdat|Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

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

时间:2023-03-25 13:36:18

相关推荐

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

原文链接:/?p=17748

原文出处:拓端数据部落公众号

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

相关视频:LSTM神经网络架构和工作原理及其在Python中的预测应用

LSTM神经网络架构和原理及其在Python中的预测应用

我将通过以下步骤:

探索性数据分析(EDA)

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

预测建模

LSTMXGBoost

问题定义

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

商店:每个商店的ID销售:特定日期的营业额(我们的目标变量)客户:特定日期的客户数量StateHoliday:假日SchoolHoliday:学校假期StoreType:4个不同的商店:a,b,c,dCompetitionDistance:到最近的竞争对手商店的距离(以米为单位)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 pltimport seaborn as snsfrom datetime import datetimeplt.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 FalseDayOfWeek FalseDate FalseSales FalseCustomers FalseOpen FalsePromo FalseStateHolidayFalseSchoolHoliday Falsedtype: bool

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

opened_sales = (train_df[(train_df.Open == 1) #如果商店开业opened_sales.Sales.describe()Out[6]:count 422307.000000mean 6951.782199std 3101.768685min 133.00000025% 4853.00000050% 6367.00000075% 8355.000000max 41551.000000Name: Sales, dtype: float64<matplotlib.axes._subplots.AxesSubplot at 0x7f7c38fa6588>

看一下顾客变量

In[9]:train_df.Customers.describe()Out[9]:count 1.017209e+06mean6.331459e+02std4.644117e+02min0.000000e+0025%4.050000e+0250%6.090000e+0275%8.370000e+02max7.388000e+03Name: Customers, dtype: float64<matplotlib.axes._subplots.AxesSubplot at 0x7f7c3565d240>

train_df[(train_df.Customers > 6000)]

我们看一下假期变量。

train_df.StateHoliday.value_counts()

0 8550870 131072a20260b6690c4100Name: StateHoliday, dtype: int64

train_df.StateHoliday_cat.count()

1017209

train_df.tail()

train_df.isnull().all() #检查缺失Out[18]:StoreFalseDayOfWeek FalseDateFalseSalesFalseCustomers FalseOpenFalsePromoFalseSchoolHoliday FalseStateHoliday_cat Falsedtype: bool

让我们继续进行商店分析

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

#缺失数据:Store0.000000StoreType 0.000000Assortment0.000000CompetitionDistance 0.269058CompetitionOpenSinceMonth 31.748879CompetitionOpenSinceYear31.748879Promo2 0.000000Promo2SinceWeek 48.789238Promo2SinceYear 48.789238PromoInterval48.789238dtype: float64In[21]:

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

petitionDistance.plot.box()

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

缺少数据,因为商店没有竞争。 因此,我建议用零填充缺失的值。

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的购物车数量最多。促销仅在工作日进行。客户倾向于在星期一(促销)和星期日(没有促销)购买更多商品。我看不到任何年度趋势。仅季节性模式。

最受欢迎的见解

1.在python中使用lstm和pytorch进行时间序列预测

2.python中利用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-模型时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列中的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

9.python3用arima模型进行时间序列预测

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。