全文下载链接: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 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 FalseStateHoliday FalseSchoolHoliday 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+06mean 6.331459e+02std 4.644117e+02min 0.000000e+0025% 4.050000e+0250% 6.090000e+0275% 8.370000e+02max 7.388000e+03Name: Customers, dtype: float64<matplotlib.axes._subplots.AxesSubplot at 0x7f7c3565d240>
train_df[(train_df.Customers > 6000)]
咱们看一下**假期** 变量。
train_df.StateHoliday.value_counts()
0 8550870 131072a 20260b 6690c 4100Name: StateHoliday, dtype: int64
train_df.StateHoliday_cat.count()
1017209
train_df.tail()
train_df.isnull().all() #查看缺失Out[18]:Store FalseDayOfWeek FalseDate FalseSales FalseCustomers FalseOpen FalsePromo FalseSchoolHoliday FalseStateHoliday_cat Falsedtype: bool
让咱们持续进行商店剖析
store_df.head().append(store_df.tail())
#缺失数据:Store 0.000000StoreType 0.000000Assortment 0.000000CompetitionDistance 0.269058CompetitionOpenSinceMonth 31.748879CompetitionOpenSinceYear 31.748879Promo2 0.000000Promo2SinceWeek 48.789238Promo2SinceYear 48.789238PromoInterval 48.789238dtype: float64In [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神经网络分类