• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于LSTM 模型的农作物市场数据智能分析与预测

张彤 雷好好 李萍 刘于菡 陈培瑜 王颖洁
  
新时代教育
2024年11期
陕西学前师范学院信息工程学院 陕西省 710100

打开文本图片集

摘要:随着人民生活水平的提高,人们也越来越追求蔬菜的品质以及品种的多样化。适度价格波动可以起到调节市场的作用,但过度波动却会产生许多消极影响,导致种植户和消费者的利益受到严重影响。因此,用数据模型预测蔬菜价格的波动便发挥了重要作用。基于LSTM 模型的农作物市场数据智能分析与预测,利用Python异步网络爬虫,从而获取数据构建LSTM模型来预测蔬菜价格,用Flask框架处理web请求,Echarts可视化工具生成可视化界面,更直观地研究蔬菜价格波动特征及预测蔬菜价格变动,以此来帮助农民和农业企业更好地制定生产和销售计划,保持市场的稳定。结果表明,基于LSTM 模型的农作物市场数据智能分析与预测在预期达到良好效果,其具有更为直观可视化图以及可准确地查询和预测蔬菜的价格波动。

关键词:LSTM模型;时序数据;蔬菜价格预测;ECharts可视化

引言

蔬菜是人们日常消费的主要副食品之一。而蔬菜价格波动是农产品市场的常态,但是过度的蔬菜价格波动却产生了许多消极的影响。因此,研究蔬菜价格波动特征及预测蔬菜价格变动对于种植户和消费者来说都极为重要。随着人工智能的进步与发展,基于时间序列的ARIMA预测模型、BP神经网络预测模型和LSTM神经网络预测模型被广泛应用。在国内外的研究中,LSTM预测模型已经被广泛应用于各个领域,包括自然语言处理,时间序列预测,图像处理等。

郑佳宁[1]在论文基于ARIMA和LSTM的混合模型在蔬菜价格预测中的应用中用混合模型的应用创新,将ARIMA模型与LSTM的混合方法应用于蔬菜价格的预测研究中,既提高了蔬菜时序预测结果的精度,又满足了模型的可解释性。

Saleti Sumalatha; Panchumarthi[7]等发表的论文Edible Mushroom Greenhouse Environment Prediction Model Based on Attention CNN-LSTM,将长短期记忆(LSTM)和自回归集成移动平均线(ARIMA)模型与移动平均线相结合。对于稳态时间序列的建模,使用 LSTM 模型,而非平稳时间序列的建模是使用 ARIMA 模型完成的。该研究还调查了不同超参数和模型配置对性能预测的影响,并提供了有关混合模型理想设置的信息。总体而言,所提出的具有移动平均线的ARIMA-LSTM混合模型是一种很有前途的准确可靠的股票价格预测方法,对财务决策和风险管理具有实际意义。

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的 RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。此研究用LSTM来研究和预测蔬菜价格的波动,同时引入了记忆和遗忘模块,使得LSTM在处理具有长期依赖关系的时间序列数据时具有显著优势,政府可以通过分析农产品价格的变化情况,了解农业生产的情况和市场的需求,从而制定更加科学合理的农业政策,促进农业的健康发展。

1 相关理论与方法

1.1 LSTM 模型

1.1.1 LSTM模型理解

长短期记忆模型(long-short term memory)是一种特殊的RNN模型,是为了解决RNN模型梯度弥散的问题而提出的;在传统的RNN中,训练算法使用的是BPTT,当时间比较长时,需要回传的残差会指数下降,导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,因此需要一个存储单元来存储记忆,LSTM模型被提出;如图1为RNN与LSTM的区别图:

1.1.2 LSTM的核心思想

理解LSTM的核心是“cell state”,暂且名为细胞状态,也就是上述图1中最顶的传送线,如图2:

cell state也可以理解为传送带,个人理解其实就是整个模型中的记忆空间,随着时间而变化的,当然,传送带本身是无法控制哪些信息是否被记忆,起控制作用的是下面将讲述的控制门(gate);

控制门的结构如下:主要由一个sigmoid函数跟点乘操作组成;sigmoid函数的值为0-1之间,点乘操作决定多少信息可以传送过去,当为0时,不传送,当为1时,全部传送;如图3:

1.1.3 LSTM工作原理

forget gate:选择忘记过去某些信息:

input gate:记忆现在的某些信息:

将过去与现在的记忆进行合并:

1.2LSTM 模型的特点以及适用性

1.2.1 LSTM模型的特点

长期依赖学习能力:LSTM通过其特殊的门控机制(输入门、遗忘门和输出门)和记忆细胞,能够有效地处理和记忆长期依赖信息。这使得LSTM在处理长序列数据时,相较于传统的RNN,能够更准确地捕捉和利用历史信息。

避免梯度消失和梯度爆炸:LSTM的设计有助于缓解RNN在训练过程中可能遇到的梯度消失和梯度爆炸问题。通过门控机制对信息的精确控制,LSTM能够在多个时间步上保持稳定的梯度,从而更容易进行训练。

灵活的门控机制:LSTM的门控机制使其能够灵活地控制信息的流入、存储、遗忘和输出。这种机制使得LSTM在处理复杂序列数据时具有更高的灵活性和表达能力。

广泛的应用场景:LSTM因其强大的序列处理能力,在多个领域都有广泛的应用,包括自然语言处理、语音识别、时间序列预测等。这使得LSTM成为一种非常通用和强大的深度学习模型。

1.2.2 LSTM模型的适用性

序列数据处理:LSTM特别适用于处理序列数据,如时间序列、文本数据等。其长期依赖学习能力使得LSTM在处理这类数据时能够捕捉到更多的历史信息,从而提高模型的性能。

长序列任务:对于需要处理长序列的任务,如长文本生成、长时间序列预测等,LSTM相较于传统的RNN具有更明显的优势。其能够更有效地处理和记忆长期依赖信息,使得模型在长序列任务上表现更好。

需要捕捉复杂模式的任务:对于需要捕捉序列数据中复杂模式的任务,如语音识别、自然语言处理等,LSTM也表现出强大的能力。其灵活的门控机制和记忆细胞使得LSTM能够更准确地捕捉和利用序列数据中的复杂模式。

对噪声和缺失数据具有一定的鲁棒性:由于LSTM具有长期依赖学习能力,它能够在一定程度上容忍序列数据中的噪声和缺失数据。这使得LSTM在实际应用中更加稳健和可靠。

1.3 Flask 框架

Flask是一个非常小的PythonWeb框架,被称为微型框架。Flask框架的搭建是一个相对简单且直接的过程,主要涉及安装Flask、创建项目结构、编写应用代码以及运行应用等步骤。

本项目主要采用了 Flask 框架来搭建 Web 应用,用于查询并展示蔬菜价格数据,通过导入Flask框架中的Flask类、render_template函数和request对象用于处理Web请求和渲染HTML模板。

1.4 ECharts 可视化

ECharts的特点与优势包含丰富的图表类型:ECharts提供了包括折线图、柱状图、饼图、散点图、雷达图、地图、热力图、关系图等在内的多种图表类型,满足不同的数据展示需求。同时,它还支持图与图之间的混搭,使得数据展示更加灵活多样。

灵活的配置项:ECharts的配置项非常灵活,用户可以自定义图表的颜色、字体、布局、提示信息等,以适应不同的设计需求和品牌风格。这种高度的自定义性使得ECharts在数据可视化项目中具有广泛的应用前景。

交互性:ECharts支持图表的交互操作,如数据缩放、拖拽、数据视图切换等,这些交互功能大大增强了用户体验,使得用户能够更深入地了解数据背后的信息。

ECharts通过简洁的API和强大的功能,帮助开发者快速构建出美观、实用的数据可视化图表。它支持多种数据格式(如JSON、数组等),并且可以与各种现代前端框架(如React、Vue.js、Angular等)无缝集成。ECharts广泛应用于企业报表、数据监控、网站数据展示等多种场景。

2 基于LSTM模型的蔬菜价格预测

2.1 数据来源

目前市场上存在很多可以获取有关蔬菜相关信息的渠道,这些数据具有较高的准确度和信服力,能够给蔬菜价格的预测研究提供参考,本文的蔬菜的相关数据来源于CN蔬菜网,官方网站(http://www.cnveg.com)。通过异步网络爬虫获取的数据主要是陕西省蔬菜的品种,批发市场,最低价格,最高价格,日均价,采价日期6个常见指标,其中价格指标的单位均为“元/斤”。共爬取到数据13327条。形式如表2-1所示。

2.2数据处理

2.2.1数据排序去重

对读取的数据按照“采价日期”列进行升序排序,去除排序后的数据中的重复行,保留每个品种在每个采价日期下第一次出现的数据。将排序且去重后的7369条数据保存到新的文件“陕西_sorted.csv”中。数据排序去重后的数据如表2-2所示。

2.2.2数据分类处理

读取排序且去重后的数据文件“陕西_sorted.csv”。提取数据中的“品种”列,并将其转换为列表,以获取所有不同种类的蔬菜。遍历每种蔬菜,创建对应的价格情况文件,并将该蔬菜的数据写入文件中。对于每种蔬菜,首先构造对应的文件路径,然后打开原始数据文件和新创建的价格情况文件,并定义 CSV 读取器和写入器。写入 CSV 文件的首行,即列名。遍历原始数据文件的每一行,如果该行的蔬菜品种与当前蔬菜相同,则将该行写入新文件。最后输出分类完成的提示信息,将蔬菜品种分为49类。

2.2.3数据聚合处理

创建一个名为“各种蔬菜价格情况7days”的文件夹,用于保存处理后的结果文件。获取“各种蔬菜价格情况”文件夹下的所有文件列表。遍历每个文件,读取蔬菜数据文件,并按照日期格式化“采价日期”字段,按日期进行排序。定义一个处理函数用于对每7天的数据进行聚合计算最低价格、最高价格和日均价,并将结果保存为字典形式。使用groupby()方法按照日期分组,并将处理函数应用于每个分组。将处理后的数据保存为CSV文件,并存储到“各种蔬菜价格情况7days”文件夹中。

2.3模型构建

对处理后的每组蔬菜数据,将所取的训练数据投入模型中进行训练,使用双层LSTM神经网络,两层都为50个神经元。指定了模型的损失函数为均方误差,模型的优化器为Adam,并使用训练数据(X_train和Y_train)通过10个epoch和每个epoch中16个样本的批量大小来训练这个模型。

2.4模型评估

通过LSTM模型对多种蔬菜的训练集和测试集的均方根误差做出计算,由表2-3可以看出这几种蔬菜的训练集和测试集的均方误差都小于1,由此可以看出模型的预测性能较好,测试集RMSE几乎都小于训练集RMSE,不存在过拟合的现象,说明模型较好。

2.5预测结果

通过LSTM模型对多种蔬菜的价格进行预测后,常见蔬菜选出菠菜和土豆查看价格预测,整体预测曲线都是非常贴近真实曲线,结合表 2-3 的均方根误差可以得出LTSM的模型是比较准确的。

3 蔬菜价格可视化平台实现

3.1 总体架构

可视化部分中该项日主要采用了 Flask框架来搭建 Web 应用,用于查询并展示蔬菜价格数据,通过导入Flask框架中的 Flask类、render_template函数和request对象用于处理Web请求和渲染HTML模板,使用pandas和numpy库来处理数据,采用sklearn库进行数据归一化,使用TensorFlow库构建神经网络模型。首先设置了两页html页面。第一个是查询蔬菜价格进行提交的页面,第二个是通过Echarts来显示一个可视化大屏,Echarts会控制每一张图内部的样式,我们使用css控制图的整体样式即可,在 html页面中对其大屏进行设置,例如鼠标在价格变化情况滚动表上悬停时,滚动表会静止。当鼠标在最低占比图上时,会放大以及显示该蔬菜对应的价格和日期。

3.2 Flask框架的使用

Flask是一个使用python编写的轻量级Web应用框架,Flask也被称为microframework,因为它使用简单的核心,没有默认使用的数据库,窗体验证工具。Flask自由,灵活,可扩展性高,第三方库的选择面广,可能结合最流行最强大的python库。

在可视化平台实现中主要采用了pandas 和 numpy 库来处理数据,sklearn 库进行数据归一化,TensorFlow 库构建神经网络模型,matplotlib 库绘制数据可视化图表,以及 os 模块处理文件路径。

3.2.1 Flask 应用程序初始化

创建 Flask 应用程序实例,命名为 app。设置静态文件夹的路径为 static 文件夹下的 fonts 文件夹。

3.2.2路由设置

使用 @app.route()装饰器设置根路由 '/',支持 GET 和 POST 请求。当接收到 POST 请求时,从表单中获取用户提交的产品名称,调用 getdata 函数获取对应产品的数据,并渲染到 HTML 模板中。当接收到 GET 请求时,默认显示产品为'大蒜'的数据,同样调用 getdata 函数获取数据并渲染到 HTML 模板中。

3.2.3HTML 模板渲染

使用 render_template()函数渲染名为 'query.html' 的 HTML 模板,并将获取到的数据传递给模板中的 dict_return 变量。

3.3 echarts可视化工具的使用

JavaScript部分使用ECharts库来初始化一个图表,并设置了图表的标题、图例、提示框等组件的样式和功能。通过设置不同类型的系列(如雷达图、柱状图、饼图和折线图),动态地加载和展示陕西省蔬菜价格的数据。同时,还实现了一些交互功能,如数据滚动显示、数据缩放等,以提升用户体。Echarts工具的使用可以更直观地展示蔬菜价格的变化趋势和相关数据。

3.3.1饼状图模块

蔬菜最低价占比饼图用来展示黄瓜最低价在某个时 间段内(间隔7天)的占比情况。通过观察饼状图中各部分的面积大小,我们可以了解这五个月每间隔7天价格相对较 低的日期,即价格越高饼状图所占的面积越大,从而判断市场价格的分布情况。可以更好地看出该蔬菜在不同日期的价格占比。

3.3.2 柱状图模块

通过蔬菜最高价变化情况柱状图的高度差异,我们可以直观地比较各个时间点的黄瓜最低价、最 高价和日均价。这有助于我们发现价格异常点,分析价格变化的原因,为价格预测和决策提供有力支持。

3.3.3 动态滚动表模块

蔬菜价格变化情况动态滚动表包含了日期,最高价,最低价和日均价,每一天对应的最高价最低价和日均价以数值的形式展现,更加直观,这有助于我们对数据的统计。

3.3.4  雷达图模块

通过蔬菜最低价占比对比雷达图可以更直观的看出蔬菜最低价在不同日期具有的相似的值或异常值。

3.3.5 折线图模块

蔬菜最低价变化折线图:通过折线的上升和下降来表示蔬菜最低价的变化情况。

蔬菜日均价变化折线图:通过折线的上升和下降反应了日均价的变化趋势。

两个折线图用来展示黄瓜价格的变化情况,通过观察折线图的起伏变化,我们可以分析黄瓜价格在不同时间点的波动情况,了解价格的变化规律,预测未来价格趋势,从而做出更明智的决策。

4 结论

基于LSTM 模型的农作物市场数据智能分析与预测在试验中达到较高的分类准确类,并且能更为直观的感受到价格的波动,为农产品价格的预测提供了新思路,同时LSTM模型引入了记忆和遗忘模块,这种特性使得LSTM在处理具有长期依赖关系的时间序列数据时具有显著优势。然而,模型会受数据量,模型参数等的影响。未来,可以对此模型进行优化升级,与其他模型结合实现更为精确的预测,以帮助各方更好地应对市场变化,做出更明智的决策,保障居民生活,增加菜农收入具有重要的现实意义。

参考文献:

[1]郑佳宁.基于ARIMA和LSTM的混合模型在蔬菜价格预测中的应用[D],2014(12):12-16.

[2]张瑞瑜. 基于舆情分析的小宗农产品价格预测及系统原型设计[D]. 黑龙江:东北农业大学,2022.

[3]张艺萧. 基于时间序列的股票价格分析与预测[D]. 华北电力大学,2020.

[4]刘彦虹,刘合兵,尚俊平.基于深度学习的农产品期货价格预测研究[J].河南科学,2024.

[5]李丹,冯新玲,付国帅,等.基于长短期记忆网络的大蒜价格预测模型研究[J].乡村科技,2024.

[6]陈清龙.基于LSTM的农产品价格预测研究[D]. 福建:福建农林大学,2020.

[7]Huang S,Liu Q,Wu Y,et al. Edible Mushroom Greenhouse Environment Prediction Model Based on Attention CNN-LSTM[J]. Agronomy,2024,14(3).

[8]彭红星,郑楷航,黄国彬,等.基于BP、LSTM和ARIMA模型的蔬菜价格预测[J].中国农机化学报,2020.

[9]焦岗汉.基于机器学习的国际集装箱航运价格预测模型实证比较[J].浙江工商职业技术学院学报,2024,23(02):15-19.

[10]麻顺顺.基于LSTM的二手房价格预测模型研究及应用[D].郑州大学,2020.DOI:10.27466/d.cnki.gzzdu.2020.000376.

项目名称:基于LSTM模型的农作物市场数据智能分析与预测

基金项目:校级创新创业大赛(项目编号:2024DC103);省级创新创业大赛(项目编号:S2024143901)

*本文暂不支持打印功能

monitor