Agricultural Products Price Prediction and System Development Based on Python Technology
With the development of information technology and big data, agricultural product price forecasting plays an increasingly important role in market analysis and decision-making. This paper crawls the data of agricultural products from 1 January 2022 to 23 June 2024, and based on these data, three different models, linear regression model, ARIMA model, and random forest model, are established for prediction. The results of the study show that when time and place are used as independent variables to predict prices, the Random Forest Model predicts better than the other two models, effectively capturing price trends and providing decision support for market participants. Based on the Random Forest model, this paper constructs a web page using the FLASK framework, in which users only need to select the origin and time to see the predicted price on the same day directly.
Time Series
在全球化和市场经济背景下,农产品价格波动对经济体系产生深远影响。信息技术和大数据技术的发展为价格分析和预测提供了新的工具。价格的不稳定不仅影响农民的种植决策和收益,也关系到市场供需平衡和消费者的生活成本。随着信息技术的快速发展,大数据技术为农产品价格分析和预测提供了新的视角和工具。通过收集和分析历史价格数据,可以揭示价格变化的规律,为市场参与者提供决策支持。
现有的农产品价格研究主要集中在价格形成机制、影响因素分析以及价格波动特征等方面。刘峰
然而,将多元统计分析与机器学习技术相结合,考虑多种因素对农产品价格的影响,进行综合预测的研究还相对较少。本文首先利用Post请求,Josn接受技术访问与收集特定的数据。然后利用Descrip进行描述性统计分析,以掌握数据的基本特征,对异常值和缺失值进行处理。其次分析日期、产地、平均价、最低价、最高价对预测的影响,发现有平均价指标存在会导致过拟合,因此对平均价指标进行了剔除。此外,利用ACF和PACF图识别价格数据的内在相关性,选择合适的ARIMA模型参数进行时间序列分析。最后,选用随机森林模型和线性回归模型,通过交叉验证和参数调优,提高预测的准确性。通过对比分析,将日期和产地考虑为自变量,价格考虑为因变量,可以得到随机森林模型的精确度最高,其次是ARIMA模型,线性回归模型精度最差。在系统的实现上,本文采用FLASK-WEB框架,利用Templates文件建立Index. Html进行页面展示,Result. Html进行数据处理,static文件添加图片完善了WEB端。利用了Css,Javascript,Html技术简单实现了本系统的开发。
C.P. Box和G.M. Jenkins
中心化ARMA 模型可以简写为
其默认与AR模型、MA模型条件相同。引进延迟算子,ARMA 模型简记为
式中,
,为p阶自回归系数多项式,
,为q阶移动平均系数多项式
随机森林算法构建于决策树之上,通过集成多棵决策树的预测结果,对于回归任务,它采用所有树的结果平均值作为最终预测;对于分类任务,则采用多数投票原则确定最终类别。随机森林中的每棵决策树都是独立的,相互之间没有直接联系。当进行分类时,新样本会经过森林中每棵树的独立判断和分类,随机森林将选择出现次数最多的分类结果作为最终输出。以下是随机森林算法的实施步骤:
1) 在包含N个样本的数据集中,进行有放回的随机抽样,每次抽取一个样本后放回,共进行N次,以这批样本训练一棵决策树,这些样本将构成树的根节点。
2) 假设每个样本具有M个属性,在决策树节点分裂过程中,随机从这M个属性中抽取m个(m远小于M),并基于某种标准(例如信息增益最大化)从这m个属性中挑选出最佳属性用于节点分裂。
3) 在决策树的生长过程中,不断重复步骤2,直到节点无法进一步分裂,或达到预设的停止条件,如树的最大深度或叶子节点数量的限制。
重复步骤(1)至(3),生成大量的决策树,这些树共同构成了随机森林。
本研究采用农产品数据,通过相关性分析确定了影响平均价格的关键因素,并将其作为解释变量,以平均价格作为预测变量,建立了随机森林预测模型。模型的构建使用了Sklearn. Ensemble库中的Random Forest Regressor方法。
数据收集自指定接口,通过Python脚本自动获取并存储至CSV文件。数据预处理包括清洗无效数据、填充缺失值等。指标体系构建基于理论支撑,选择了关键指标进行全面分析。数据可视化通过Matplotlib库实现,包括趋势图、直方图和箱线图。模型构建与结果分析详细展示了线性回归、ARIMA模型拟合和随机森林回归模型的训练过程和预测效果。本部分将详细描述数据的收集、处理、指标体系构建、数据可视化以及模型的构建和结果分析过程。
数据收集是实证分析的第一步。通过编写Python脚本,利用Requests库从指定的接口自动获取农产品价格数据。数据包括2022年1月1日到2024年6月24日的商品名称、分类、平均价、最低价、最高价、发布时间、日期和产地等字段。数据收集后,使用Pandas库进行数据清洗和预处理,包括去除无效数据、填充缺失值、转换数据类型以及将时间戳转换为日期格式等。
在数据预处理的基础上,构建了一个包含多个关键指标的体系,以全面分析农产品价格的波动特征。这些指标包括但不限于平均价、最低价、最高价等。每个指标的选择都有其理论依据,例如平均价可以反映市场价格的整体水平,而最高价和最低价则可以揭示价格的波动范围。处理完后的数据出存在csv文件中打开的图如
图1. 数据展示图
名称 | 分类 | 平均价 | 最低价 | 最高价 | 时期 | 日期 | 时间 | 产地 |
大白菜 | 蔬菜 | 0.35 | 0.3 | 0.4 | 2024/6/9 0:00 | 2024/6/9 | 0:00:00 | 冀 |
大白菜 | 蔬菜 | 0.4 | 0.3 | 0.5 | 2024/6/8 0:00 | 2024/6/8 | 0:00:00 | 冀 |
大白菜 | 蔬菜 | 0.4 | 0.3 | 0.5 | 2024/6/7 0:00 | 2024/6/7 | 0:00:00 | 冀 |
大白菜 | 蔬菜 | 0.4 | 0.3 | 0.5 | 2024/6/6 0:00 | 2024/6/6 | 0:00:00 | 冀 |
大白菜 | 蔬菜 | 0.45 | 0.4 | 0.5 | 2024/6/5 0:00 | 2024/6/5 | 0:00:00 | 冀 |
大白菜 | 蔬菜 | 0.45 | 0.4 | 0.5 | 2024/6/4 0:00 | 2024/6/4 | 0:00:00 | 冀 |
为了更直观地理解数据,使用Matplotlib库对数据进行可视化分析。绘制了平均价随日期变化的趋势图,以及最高价和最低价的变化趋势图。此外,还通过直方图和箱线图展示了价格的分布情况,这些图表有助于初步理解价格数据的波动性和分布特征。平均价与日期关系如
根据
在数据可视化的基础上,进一步构建了多个统计模型来分析和预测农产品价格。
选择日期与产地为自变量,价格为因变量。对产地进行独热编码,确保模型的准确性和可靠性。通过输出ols. Summary,得到结果如
观察
根据
先通过ADF检验,得到结果如
由
根据ACF图和PACF图对模型进行定阶具有一定的主观性,因此本文根据AIC准则和BIC准则,来确定模型的阶数。本文确定p,q的范围[0, 3],通过循环网格搜索所有组合的AIC和BIC的值,得到结果见
模型 | AIC | BIC |
ARIMA (0, 0, 0) | −343.2 | −334.0 |
ARIMA (0, 0, 1) | −934.9 | −921.2 |
续表
ARIMA (0, 0, 2) | −1230.6 | −1212.2 |
ARIMA (0, 0, 3) | −1324.1 | −1301.2 |
ARIMA (1, 0, 0) | −1589.0 | −1575.2 |
ARIMA (1, 0, 1) | −1594.4 | −1576.0 |
ARIMA (1, 0, 2) | −1613.9 | −1591.0 |
ARIMA (1, 0, 3) | −1617.0 | −1589.5 |
ARIMA (2, 0, 0) | −1591.6 | −1573.3 |
ARIMA (2, 0, 1) | −1610.0 | −1587.0 |
ARIMA (2, 0, 2) | −1614.1 | −1586.6 |
ARIMA (2, 0, 3) | −1617.3 | −1585.2 |
ARIMA (3, 0, 0) | −1607.1 | −1584.2 |
ARIMA (3, 0, 1) | −1616.8 | −1589.2 |
ARIMA (3, 0, 2) | −1618.5 | −1586.4 |
ARIMA (3, 0, 3) | −1619.4 | −1582.7 |
通过对比各模型参数的AIC和BIC的值可以发现,0阶差分的ARMA模型为ARMA (1, 2)时,模型认为模型参数的AIC和BIC的值相对最小,所以当时为最佳 阶数。
根据选择的ARIMA (1, 0, 2)模型,得到ARIMA模型结果如
参数 | 交叉得分 |
N_Estimators: 100, Max_Depth: None, cv: 3 | 0.9255 |
…… | …… |
N_Estimators: 300, Max_Depth: 20, cv: 7 | 0.9286 |
…… | …… |
N_Estimators: 400, Max_Depth: 20, cv: 7 | 0.9277 |
随机森林模型划分训练集和测试集,测试集占原有数据的20%。为保证模型结果的可重复性,将随机种子设置为0。设定Parma_Grid的N_Estimators [100, 200, 300, 400]和Max_Depth [None, 5, 10, 15, 20]以及使用Grid Search CV Cv_Range [3, 5, 7]进行网格搜索,交叉验证找到最优参数如
通过
分别对比了线性回归模型,随机森林模型,ARIMA模型的准确度,结果如
模型 | 准确度 |
线性回归模型 | 0.412 |
ARIMA模型 | 0.512 |
随机森林模型 | 0.957 |
为了将本研究转化为可直观查看与交互的网页,降低读者学习以及使用成本,本文利用FLASK框架构造了一个轻量级的WEB。利用HTML语言编写前端的Index. Html,用于展示页面。然后用Result. Html进行后端处理。采用了Css,Javascript,Html技术,设计网页的按钮规格,颜色,展示动态等使页面更加美观简洁。用户只需选择日期以及预测的产地后点击预测后会接入前文调试好的随机森林模型,进行预测而后在页面返回给用户预测值。界面简单且操作简洁。具体操作如
本研究成功构建并对比了线性回归,随机森林,ARIMA模型在农产品价格预测中的有效性。不同的模型在捕捉价格变化趋势不同的效果,其中随机森林模型最好。为市场参与者提供了可靠的决策支持。研究的局限性在于数据集的时间范围和多样性,未来研究将扩大数据规模,探索更多机器学习算法,并结合经济学理论进行深入分析。本研究通过多元统计分析方法,结合时间序列和机器学习技术,对农产品价格趋势进行了深入的实证分析和预测。
本文利用Request库从新发地发起请求得到对象后进行Xpath获取到2022年1月至2024年6月每一种蔬菜,肉类,调料,水产的价格数据源,进行筛选获得2022年1月至2024年6月每天大白菜的发售价,后续进行数据重复的进行删除,这些操作为后续分析打下了坚实的基础。研究结果表明线性回归模型拟合效果不好准确率只有41.2%。ARIMA模型在分析平均价格趋势方面表现出了良好的性能,准确率达到为51.2%,精度高于线性回归模型。随机森林回归模型,在参数调优后,预测准确性高达95.7%,高于其他两个模型。
尽管本研究在农产品价格预测方面取得了一定的成果,但仍存在一些局限性:模型的选择和参数调优可能需要更多的实验来验证其稳健性;实证分析主要集中在统计和机器学习方法,对于经济学理论和市场机制的深入探讨不足。针对现有研究的局限性,提出以下未来研究方向:扩大数据集的规模和多样性,以提高模型的泛化能力和预测的准确性;探索更多的机器学习算法,如深度学习模型,以进一步提高预测性能;结合经济学理论,深入分析影响农产品价格的宏观经济因素和市场机制;考虑季节性因素和政策变动对农产品价格的影响,构建更为复杂的预测模型。
综上所述,本研究通过多元统计分析和机器学习方法,为农产品价格预测提供了一种新的视角和方法。研究成果不仅对市场参与者具有实际指导意义,也为相关领域的学术研究提供了参考。未来,将继续优化模型,拓展研究范围,并深化对市场机制的理解。
重庆对外经贸学院科学研究项目(KYKJ202205)。
*通讯作者。