基于农产品市场价格的数据挖掘预测分析*
2021-04-28赵宇兰
赵宇兰
(山西大学商务学院信息学院,山西 太原 030031)
0 引言
随着大数据时代的到来,人们对数据的获取、统计的需求日益增大。爬虫技术的不断成熟为人们获取互联网数据提供了极大的便利。在农业领域,人们开始将农业数据与大数据技术相结合,运用大数据的采集、存储、分析以及可视化等技术,帮助人们快速挖掘、分析出数据背后有价值的信息,降低农产品生产、销售过程中不必要的风险。本文以中国饲料行业信息网中玉米的销售价格为数据源,采用网络爬虫软件GeeSooker进行数据采集和存储,以玉米市场价格的历史时间序列建立价格预测的ARIMA模型[1],进一步分析玉米市场价格的波动状况和变化趋势。
1 预测技术的概述
1.1 网络爬虫技术
农产品市场价格挖掘预测是基于互联网农业数据,为了满足农产品市场价格数据挖掘预测的需求,本文采用网络爬虫技术获取互联网数据,数据获取过程如图1所示。
图1 数据获取组成图
其中,爬虫引擎[2]用于处理爬虫系统的数据流处理并触发事务;调度器用于接受引擎发送的请求,将其放入处理队列,并在引擎再次请求时返回;数据清洗模块是将下载下来的信息进行处理,剔除无效信息和冗余信息;下载器用于下载网站页面内容,并将其传递给下一个处理业务;爬虫规则用来指定下载网页,编写用于分析网站源码并听取信息。
1.2 数据的采集过程
本文采用GeeSooker爬虫浏览器对中国饲料信息网的2018年1月到2019年2月玉米销售价格进行采集,采集过程[3]如下:
1) 加载网页,定义加载规则、主题;
2) 点选待采信息生成标签,抓取内容并提交;
3) 测试,保存规则,开始爬取数据;
4) Data Scrape rworks文件夹中查看数据。
1.3 数据清洗
数据清洗是整个数据分析过程中不可或缺的一部分,结果的质量与模型的效果和最终结论直接相关。本文重点对采集数据进行缺失值清洗、逻辑错误清洗和关联性验证,最终得到表1中2018/1/2~2019/2/28玉米的销售价格数据。
表1 玉米的销售价格数据片段
2 模型建立的分析
2.1 ARIMA模型
ARIMA模型是差分整合移动平均自回归模型,它是时间序列预测分析方法之一。该模型可以通过时间序列数据了解数据或预测系列中的未来预测点。在数据显示非平稳性证据的一些情况下,可以应用初始差异步骤一次或多次消除非平稳性。
2.2 ARIMA模型运用流程
首先获得时间序列数据;观察模型可视化得到的原始时间序列图是否平稳,如果不平稳,可通过差分运算平稳化;通过差分运算后得到新的自相关图和偏自相关图来验证模型的稳定性;对模型进行参数检验,使结果更具合理性;利用已通过检验的模型进行预测。
差分平稳时间序列建模步骤如图2所示。
“Bin”这个词原指酒窖里存储葡萄酒的隔间或者格子,常以不同的序号来标记不同的隔间,因此,澳大利亚很多酒庄都喜欢用“Bin”+序号来为自己的酒款命名。后来,由于易记又顺口,隔间的序号慢慢成为葡萄酒的代号。1959年,Bin 28成为Penfolds Bin系列葡萄酒第一个以此命名的葡萄酒。自此以后,Bin组合层出,为消费者所记住和熟知,成了Penfolds旗下最为知名的受欢迎的一个系列。其中,价格由低到高,最受欢迎的王牌产品有:
图2 差分平稳时间序列建模步骤
3 模型的实现
3.1 建立模型
首先,利用Python语言将抓取数据对接[4],为后文模型的建立做铺垫,具体代码如下所示。
# arima时序模型
# 参数初始化
discfile = 'sun_C0.csv'
forecastnum = 31
# 读取数据,指定日期列为指标,Pandas自动将“日期”列识别名Datetime格式
data = pd.read_csv(discfile, index_col='date')
date_range = pd.date_range(start=min(data.index), end=max(data.index))
date_df = pd.DataFrame(index=date_range)
data = pd.merge(date_df, data, left_index=True, right_index=True, how=' left')
data = data.fillna(method=' ffill')
print(data)
从图3原始序列的时序图可以看出2018年1月~2019年2月玉米的历史销售价格波动情况呈现上升趋势,说明模型没有达到平稳化要求,需要进行处理。进一步利用Python语言建立原始序列的自相关图。图4原始序列的自相关图显示玉米销售价格波动具有很强的非平稳性。
图3 原始序列的时序图
图4 原始序列的自相关图
通过一阶差分运算对原始数据序列进行平稳化处理,使玉米销售价格波动趋向平稳,如图5所示。
图5 一阶差分之后序列的时序图
利用差分运算转化得到新的自相关图和偏自相关图,如图6和图7。结果显示玉米销售价格波动趋向稳定。
图6 一阶差分之后序列的自相关图
图7 一阶差分之后序列的偏自相关图
3.2 模型检验
利用表2原始序列的单位根检验所示,进一步证明数据趋向稳定性得到可靠的模型来提前预测短期玉米销售价格的实际情况,为农业预测合理数据,避免供大于求或供不应求的现象。差分序列的单位根检验如表3所示。
表2 原始序列的单位根检验
表3 差分序列的单位根检验
表2和表3数据显示,原始序列的单位根检验没有使模型平稳化。然后通过差分序列之后得到的单位根检验数据逐渐趋向平稳,通过P值可以看到其结果小于0.05,证明新的序列已达到平稳。
3.3 模型预测
建立的ARIMA模型进行短期预测,为了得到可靠合理的数据,使误差降到最小,我们只能做未来1个月的预测[5,6]。所以应用ARIMA模型对2019/3/1~2019/3/31玉米的销售价格数据做为期31天的预测,结果如表2所示。
表4 玉米的销售价格数据
4 结语
本文利用Python语言进行程序实现ARIMA模型,实现了玉米销售价格的预测。通过建立模型得到可视化预测图表以验证模型的可靠性,并形象直观表达价格波动情况,得到为期1个月的短期预测数据。该模型的优点是,在短期预测中误差较小、数据变化较稳定。但在长期预测中,由于时间延迟,数据波动较大,预测结果尚不稳定。