# 预测商品销售数据
## 实验目的
通过使用一个具有挑战性的时间序列数据集,该数据集由每日销售数据,由俄罗斯最大的软件公司之一 1C 公司提供。
数据集中提供了 2013 年 1 月到 2015 年 10 月每日每个店铺中的商品历史销售数据。任务是为测试集预测每家商店销售的产品总量。请注意,商店和产品列表每个月都会略有变化。创建可以处理此类情况的强大模型是挑战的一部分。
要求:预测下个月(也就是 2015 年 11 月)一整个月每个商店中对应产品的的总销售额。
## 数据集分析
所有的数据都存储在/data 文件夹下,文件夹中共有六个文件,分别是
sales_train.csv- 训练数据集,包含了从 2013 年 1 月到 2015 年 10 月的销售历史数据。
test.csv- 测试数据集,该任务需要用训练集中的数据来预测 2015 年 11 月的销售数据。
sample_submission.csv- 一个提交样例。
items.csv- 关于商品的补充信息。
item_categories.csv - 关于商品类别的补充信息。
shops.csv- 关于店铺的补充信息。
文件中会包含以下条目:
ID-在测试集中表示(店铺,商品)的 id。
shop_id- 店铺的唯一标识符。
item_id-商品的唯一标识符。
item_category_id-商品类别的唯一标识符。
item_cnt_day- 商品的销售数量,需要预测商品的月销量。
item_price- 商品的现价。
date-以 dd/mm/yyyy 为格式的日期
date_block_num- 按照顺序的月份简写,期中 2013 年 1 月为 0,2013 年 2 月为 1,....,2015 年 10 月为 33。
item_name- 商品的名称。
shop_name- 店铺的名称。
item_category_name- 类别的名称。
在了解了各个条目的含义之后,我们需要对数据进行分析,来确定如何处理和使用这些数据,根据题目中对数据的介绍,我们需要训练的文件主要是 sales_train.csv,该 CSV 文件中包含了日期、月份、商店序号、商品序号、商品价格和每日的销售数量信息。
既然题目中要求我们预测 2015 年 11 月的销售数据,我们可以先将所有的训练数据按照店铺进行分类,在针对每个店铺按照不同商品进行分割,最后根据时间顺序训练出相关的预测模型。模型的预测可以按照月份进行预测,也可以根据每一天的预测数据进行累加。
因此整个实验的具体步骤为:
## 读取数据
按照商店序号对数据进行分割
按照商品序号对每个店铺中的商品进行分割
针对每个商品的销售数据进行拟合
预测每个商品的销售量
按照要求进行输出
## 实验内容
整个实验主要分为数据处理(数据分析、数据清洗)和模型搭建两个部分。
其中数据处理部分主要用于了解各类数据的分布情况,在通过对数据有一定的掌握之后,通过对数据集的调整操作来获取适合用于训练的训练数据。
模型搭建部分则需要根据数据的特点来选择适合的训练模型,并且对参数进行适当的调整,以获取最好的实验结果。
## 读取并分析数据
操作概述:通过 pandas 库读取 CSV 文件,使用 matplotlib 画出各类元素的分布情况,再根据分布图进行分析。
商品价格分布:
![](https://www.writebug.com/myres/static/uploads/2022/6/17/9d2193b3890d330eeebdfcd6009e1bf0.writebug)
分析:存在一些数值较大的干扰值,在清洗数据时应将 item price 限制在 10,000 以下。
商品销量分布:
![](https://www.writebug.com/myres/static/uploads/2022/6/17/afeff6e70c5f0e4874dfab96de4ef5d9.writebug)
分析:存在一些数值较大的干扰值,在清洗数据时应将 item cnt day 限制在 1,000 以下。
月份分布:
![](https://www.writebug.com/myres/static/uploads/2022/6/17/8c86b6e0af66e98c11bfb8c2aedf27f9.writebug)
分析:每个月份均有售卖的商品,无需进行特别的处理。
在对商品价格和商品的月份销量进行分析之后,我还对比了每月销售数据的和与均值信息。
销售数据月度分布:
![](https://www.writebug.com/myres/static/uploads/2022/6/17/d5f4e72f60b85d8b4f1278b02f87bae0.writebug)
分析:月均值与月销量和的走势基本保持一致。
## 数据内容分析
在对数据的整体分布进行分析之后,我通过观察数据表格发现,有一些商品在售卖几个月后就再也不售卖了。同时,有一些商品是在距离统计时间前几个月才开始售卖,我认为应该要对这些商品销售信息进行处理,不然会影响到预测的结果。
对于商品信息,我选择以最后六个月没有销售数据作为商品过期(outdated)的标准,通过按照商品编号统计商品在最后六个月的销售数据之和来判断商品的状态,根据统计,共有 12347 件商品属于过期状态。
除了商品会有销售数据的中断,店铺的销售数据也会中断。因此,我设计了两个集合,分别为 not_exist 和 outdated,not_exist 集合用来存放那些在前 k 个月份中没有售卖数据的店铺;outdated 集合用来存放那些在第 k 个月后没有售卖数据的店铺。在具体分析时需要使用到这些店铺信息。
## 数据的提取
在对数据集进行分析后,我发现,判断一个商品的销售情况,不仅需要考虑其商品编号,还要考虑其所在出售的店铺的信息,因此在进行统计的时候,应该采用(shop_id, item_id)的元组对来进行表示。
于是在数据处理之后,我首先按照日期的顺序对整个数据集进行排序,将 shop_id 和 item_id 两个列作为主键,让数据按照这两列进行排列,并且在排列完成后删去这两列元素,使用完全是按月结算的销售数据来进行模型的输入。
在训练时,训练数据应为数据集的前 n-1 列,而每行数据的标签应该就是改行的最后一个数值。在数据提取的操作中需要提前将训练集进行分割,提取到训练数据和训练标签。
## 建立模型
根据数据提取阶段获得的数据,可以非常直接明了地看出这是一个时序模型,数据间的转换是和时间高度相关的,第 n 天的销售数据会与前 n-1 天的销售数据有直接的影响,因此可以选择常用的用于处理时序数据的深度学习模型 LSTM(Long-Short Term Model)来对数据集进行训练,学习出商品销量间的关系,并用学习到的模型对验证集中的数据进行处理。
## 获取结果
通过以上几步,就可以获得对应的销售数据预测模型,根据这个模型以及题目中给出的测试集,可以很简单的生成出最终的提交结果“submission.csv”。
实验步骤和结果
## 读取数据
通过调用 pandas 库中的 read_csv 方法读取数据集文件。
分析数据分布
依次分析商品价格、商品销售数量、月份销售数量的分布情况
```c++
print("-----AnalyzeItemPrice")
# analyzethedistributionofprices
all_prices=[x[4]forxintqdm(sales_train_data_np)]
y=[0]*len(all_prices)
plt.scatter(all_prices,y,alpha=0.6,s=100)
plt.legend(["itemprice",""])
plt.savefig("distributionofitemprice")
print("-----AnalyzeItemCntDay")
# analyzethesalesofitem
all_cnt=[x[5]forxintqdm(sales_train_data_np)]
y=[0]*len(all_cnt)
plt.scatter(all_cnt,y,alpha=0.6,s=100)
plt.legend(["itemcntday",""])
plt.savefig("distributionofitemcntday")
plt.show()
print("-----AnalyzeDateBlock")
# analyzethedistributionindateblocks
all_blocks=[x[1]forxintqdm(sales_train_data_np)]
plt.hist(all_blocks,bins=max(all_blocks)+1,rwidth=0.7)
plt.xlabel("block")
plt.legend(["records"])
plt.savefig("./analysisresult/distributionofdateblock")
plt.show()
```
根据数据分布情况�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:设计报告word+项目源码及数据 整个实验主要分为数据处理(数据分析、数据清洗)和模型搭建两个部分。 其中数据处理部分主要用于了解各类数据的分布情况,在通过对数据有一定的掌握之后,通过对数据集的调整操作来获取适合用于训练的训练数据。 模型搭建部分则需要根据数据的特点来选择适合的训练模型,并且对参数进行适当的调整,以获取最好的实验结果。 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125334050
资源推荐
资源详情
资源评论
收起资源包目录
通过Python对商品销售数据预测.zip (72个子文件)
设计报告.doc 394KB
Expert_System_Experiment_2
output_generative.csv 205KB
data
main.py 7KB
Y_train 413KB
X_test 27.25MB
sample_submission.csv 205KB
train.csv 26.74MB
test_no_label.csv 13.35MB
X_train 53.53MB
acc.png 21KB
loss.png 17KB
output_logistic.csv 205KB
Work2.html 588KB
Expert_System_Experiment_1
best_model.pth 2KB
main.py 1KB
readme.md 640B
data
best_model.pth 2KB
prepare.py 266B
__init__.py 1024B
train.csv 450KB
test.csv 188KB
process.py 2KB
model
test.py 146B
train.py 910B
module.py 592B
__init__.py 1024B
1818401001.csv 3KB
__init__.py 1024B
Work1.pdf 483KB
plot.py 221B
config.py 279B
loss.png 2KB
Expert_System_Experiment_Final
data_analysis.py 1KB
main.py 858B
设计报告.doc 394KB
data
sales_train.csv 90.22MB
item_categories.csv 3KB
sample_submission.csv 2.14MB
items.csv 1.5MB
data.md 1KB
shops.csv 3KB
test.csv 3.04MB
prepare_data.py 2KB
__pycache__
shop_information.cpython-38.pyc 1KB
data_analysis.cpython-38.pyc 1KB
prepare_data.cpython-38.pyc 1KB
distribution of date block.png 15KB
提交截图2.jpg 8KB
shop_information.py 861B
create_sequential_data.py 296B
distribution of item cnt day.png 14KB
LSTM.py 2KB
__init__.py 139B
distribution analysis.py 1KB
提交截图1.jpg 40KB
submission.csv 1.53MB
analysis result
distribution of date block.png 15KB
distribution of item cnt day.png 14KB
analysis.md 748B
month analysis.png 31KB
distribution of item price.png 12KB
analysis.md 748B
month analysis.png 31KB
distribution of item price.png 12KB
LICENSE 1KB
.idea
Expert-System-Homework.iml 398B
misc.xml 192B
vcs.xml 180B
modules.xml 296B
inspectionProfiles
Project_Default.xml 881B
profiles_settings.xml 174B
README.md 8KB
共 72 条
- 1
shejizuopin
- 粉丝: 1w+
- 资源: 1300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 海外派遣员工管理守则.docx
- 警务处内务规定.docx
- 梳理高层管理者的面试提问.docx
- 派出所工作亮点汇报.docx
- 员工考勤管理制度.docx
- 某公司营销中心物流手册.docx
- 酷狗歌词字幕格式转化器
- PaddleMIX基于飞桨的多模态大模型开发套件,聚合图像、文本、视频等多种模态,覆盖多模态理解、多模态生成等丰富的多模态任务 它提供开箱即用的开发体验,同时支持灵活定制,高效完成各类多模态大模型任务
- 免费的防止锁屏小软件,可用于域统一管控下的锁屏机制
- sealos离线安装k8s集群镜像-part1
- 酷狗KGM转MP3或者FLAC
- java项目,毕业设计-基于Java的超市进销存系统
- 平安夜祝福代码html.zip
- 新建文本文档 (2).txt
- sealos离线安装k8s集群镜像-part2
- 数据分析-28-小红书消费情况分析(包含代码和数据)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页