Python数据挖掘实用案例——自动售货机销售数据分析与应用(三)

简介: Python数据挖掘实用案例——自动售货机销售数据分析与应用(三)

Python数据挖掘实用案例——自动售货机销售数据分析与应用(二)+https://developer.aliyun.com/article/1384980

2.平稳性检验

  在使用ARIMA模型进行销售额预测之前,需要查看时间序列是否平稳,若数据非平稳,在数据分析挖掘的时候,则可能会产生“伪回归”等问题,从而影响分析结果。通过时间序列的时序图、自相关图及其单位根查看时间序列平稳性,时序图如图16所示,自相关图如图17所示,单位根检验结果如图18所示。

                                                               图16 原始序列的时序图

                                                       图17 原始序列的自相关图

                                               图18 原始序列的单位根检验结果

  由图16可知,时序图显示该序列具有明显的递增趋势,可以判断为原始序列数据是非平稳序列;图17的自相关图显示的自相关系数大部分均大于零,说明序列间具有一定的长期相关性。由图18可知,在单位根检验统计量中,p值为0.251134,其值显著大于0.05,可以推断出该序列为非平稳序列(非平稳序列一定不是白噪声序列)。

绘制时序图、自相关图并进行单位根检验如代码清单15所示。

代码清单15 绘制时序图、自相关图并进行单位根检验

 

# 平稳性检验
# 判断是否为时间序列
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 显示负号
plt.figure(figsize=(8, 5))
plt.plot(data_w)
plt.tick_params(labelsize=14)  # 设置坐标轴字体大小
plt.show()
# 定义绘制自相关图函数
def draw_acf(ts):
    plt.figure(facecolor='white', figsize=(10, 8))
    plot_acf(ts)
    plt.show()
# 定义单位根检验函数
def testStationarity(ts):
    dftest = ADF(ts)
    # 对ADF求得的值进行语义描述
    dfoutput = pd.Series(dftest[0:4], index = ['Test Statistic','p-value','#Lags Used',
                                               'Number of Observations Used'])
    for key, value in dftest[4].items():
        dfoutput['Critical Value (%s)'%key] = value
    return dfoutput
# 自相关
draw_acf(data_w)
# 单位根检验
print('单位根检验结果为:\n', testStationarity(data_w))

3.差分处理

  在进行平稳性检验后,发现原始序列数据属于非平稳序列,而在使用ARIMA模型进行销售额预测时,需要序列数据是平稳序列,以避免序列中的随机游走形势影响预测结果。在Python中,可以通过二阶差分处理对数据进行平稳化操作,并查看二阶差分之后序列的平稳性和白噪声,其中二阶差分后序列的时序图如图19所示,二阶差分后序列的自相关图如图20所示,二阶差分后序列的单位根检验结果如图21所示,二阶差分后序列的白噪声检验结果如图22所示。

                                                       图19 二阶差分后序列的时序图

                                               图20 二阶差分后序列的自相关图

                                               图21 二阶差分后序列的单位根检验结果

图22 二阶差分后序列的白噪声检验结果

  由图19可知,该序列无明显趋势,较为稳定;图20的自相关图显示自相关系数较为均匀,且较为接近于0,有较强的短期相关性。由图21可知,二阶差分后序列的单位根检验p值远小于0.05,可以判断出差分处理后的序列是平稳序列。由图22可知,在白噪声检验结果中,输出的p值小于0.05,同时结合单位根检验结果可以判断二阶差分之后的序列是平稳非白噪声序列。

差分处理并查看序列平稳性和白噪声如代码清单16所示。

代码清单16 差分处理并查看序列平稳性和白噪声

# 二阶差分处理
data_w_T1 = data_w.diff().dropna()
data_w_T2 = data_w_T1.diff().dropna()
# 差分后的时间序列图
plt.figure(figsize=(8, 5))
plt.plot(data_w_T2)
plt.tick_params(labelsize=14)
plt.show()
# 差分自相关
draw_acf(data_w_T2)
# 差分单位根检验
print('差分单位根检验结果为:\n', testStationarity(data_w_T2))
# 白噪声检验
print('差分白噪声检验结果为:\n', acorr_ljungbox(data_w_T2, lags=1))

4.模型定阶

  通常情况下,在进行模型预测前,需要寻找最优模型,以提高预测结果的准确性。针对ARIMA模型,可以通过BIC矩阵进行模型定阶。由于4.4.3小节进行了二阶差分处理,所以d=2。通过计算ARIMA(p,2,q)中所有组合的BIC信息量,取最小BIC信息量所对应的模型阶数,进而确定p值和q值,结果如图23所示。

图23 模型定阶

由操作结果可知,当p值为0、q值为1时,BIC值最小,到此p、q定阶完成。

模型定阶如代码清单17所示。

代码清单17 模型定阶

# 通过BIC矩阵进行模型定阶
data_w = data_w.astype(float)
pmax = 3
qmax = 3
bic_matrix = []  # 初始化BIC矩阵
for p in range(pmax+1):
    tmp = []
    for q in range(qmax+1):
        try:
            tmp.append(ARIMA(data_w, (p, 2, q)).fit().bic)
        except:
            tmp.append(None)
        bic_matrix.append(tmp)
bic_matrix = pd.DataFrame(bic_matrix)
# 找出最小值位置
p, q = bic_matrix.stack().idxmin()
print('当BIC最小时,p值和q值分别为: ', p, q)

5.模型预测

应用ARIMA(0, 2, 1)模型对未来4周内商品的销售额进行预测,结果如图24所示。

                                                       图24预测未来4周的销售额

预测未来4周内商品的销售额如代码清单18所示。

代码清单18 预测未来4周内商品的销售额

# 构建ARIMA(0, 2, 1)模型
model = ARIMA(data_w, (p, 2, q)).fit()
# 预测未来4周的销售额
print('预测未来4周的销售额,其预测结果、标准误差、置信区间如下。\n', model.forecast(4))

注:利用ARIMA模型向前预测的周期越长,其误差越大。

八、推荐阅读



正版链接:京东安全

《Python数据挖掘:入门、进阶与实用案例分析》是一本以项目实战案例为驱动的数据挖掘著作,它能帮助完全没有Python编程基础和数据挖掘基础的读者快速掌握Python数据挖掘的技术、流程与方法。在写作方式上,与传统的“理论与实践结合”的入门书不同,它以数据挖掘领域的知名赛事“泰迪杯”数据挖掘挑战赛(已举办10届)和“泰迪杯”数据分析技能赛(已举办5届)(累计1500余所高校的10余万师生参赛)为依托,精选了11个经典赛题,将Python编程知识、数据挖掘知识和行业知识三者融合,让读者在实践中快速掌握电商、教育、交通、传媒、电力、旅游、制造等7大行业的数据挖掘方法。

  本书不仅适用于零基础的读者自学,还适用于教师教学,为了帮助读者更加高效地掌握本书的内容,本书提供了以下10项附加价值:

(1)建模平台:提供一站式大数据挖掘建模平台,免配置,包含大量案例工程,边练边学,告别纸上谈兵

(2)视频讲解:提供不少于600分钟Python编程和数据挖掘相关教学视频,边看边学,快速收获经验值

(3)精选习题:精心挑选不少于60道数据挖掘练习题,并提供详细解答,边学边练,检查知识盲区

(4)作者答疑:学习过程中有任何问题,通过“树洞”小程序,纸书拍照,一键发给作者,边问边学,事半功倍

(5)数据文件:提供各个案例配套的数据文件,与工程实践结合,开箱即用,增强实操性

(6)程序代码:提供书中代码的电子文件及相关工具的安装包,代码导入平台即可运行,学习效果立竿见影

(7)教学课件:提供配套的PPT课件,使用本书作为教材的老师可以申请,节省备课时间

(8)模型服务:提供不少于10个数据挖掘模型,模型提供完整的案例实现过程,助力提升数据挖掘实践能力

(9)教学平台:泰迪科技为本书提供的附加资源提供一站式数据化教学平台,附有详细操作指南,边看边学边练,节省时间

(10)就业推荐:提供大量就业推荐机会,与1500+企业合作,包含华为、京东、美的等知名企业

通过学习本书,读者可以理解数据挖掘的原理,迅速掌握大数据技术的相关操作,为后续数据分析、数据挖掘、深度学习的实践及竞赛打下良好的技术基础。

相关文章
|
4天前
|
数据挖掘 大数据 数据处理
Python在数据分析中的应用
【2月更文挑战第7天】传统的数据分析方法已经不能满足当今大数据环境下的需求,Python作为一种高效、灵活的编程语言,被广泛应用于数据分析领域。本文将介绍Python在数据分析中的优势以及其常用库和工具,并结合实际案例说明Python在数据分析中的应用。
|
4天前
|
机器学习/深度学习 人工智能 数据挖掘
Python在数据分析中的应用及未来发展趋势
【2月更文挑战第7天】传统的数据分析方法已经无法满足当今大数据时代的需求,Python作为一种高效、灵活的编程语言,在数据分析领域扮演着越来越重要的角色。本文将探讨Python在数据分析中的应用现状,并对其未来发展趋势进行展望。
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python技术应用:数据分析与可视化的利器
【2月更文挑战第7天】在当今信息爆炸的时代,数据分析和可视化已经成为各行业的核心竞争力。Python作为一种简洁、高效的编程语言,为数据分析带来了全新的可能性。本文将介绍Python在数据分析和可视化领域的应用,探讨其在实际工作中的重要性和价值。
13 2
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python在数据分析中的应用及其优势
【2月更文挑战第7天】 本文将探讨Python在数据分析领域的应用及其优势,着重介绍了Python在处理大规模数据、可视化分析和机器学习等方面的特点。通过实际案例和技术原理的介绍,帮助读者深入了解Python在数据分析中的价值和作用。
15 0
|
1天前
|
机器学习/深度学习 人工智能 数据挖掘
Python 应用领域
Python 应用领域
9 2
|
1天前
|
机器学习/深度学习 Python
神经网络回归案例(python
神经网络回归案例(python
5 0
|
1天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python在数据分析中的强大应用
【2月更文挑战第10天】 数据分析作为当今信息时代的重要技术手段,已经成为各行各业的核心竞争力所在。本文将深入探讨Python在数据分析领域的强大应用,从数据处理到可视化分析,展现了Python作为一种高效、灵活的编程语言在数据分析中的无限潜力。
|
1天前
|
数据可视化 数据挖掘 Python
Python数据可视化库Matplotlib应用实践
【2月更文挑战第10天】 在数据分析和可视化领域,Python语言的Matplotlib库无疑是一把强大的利器。本文将介绍Matplotlib库的基本用法以及在数据可视化中的应用实践,通过示例代码演示如何利用Matplotlib库创建各种类型的图表,帮助读者更好地理解和运用这一强大工具。
5 0
|
1天前
|
缓存 测试技术 Python
Python中的装饰器应用及原理解析
【2月更文挑战第10天】在Python编程中,装饰器是一种强大的工具,能够在不改变原有函数代码的情况下,为函数添加额外的功能。本文将深入探讨Python中装饰器的应用场景以及其背后的原理,帮助读者更好地理解和运用这一特性。
|
1天前
|
缓存 测试技术 Python
Python中的装饰器技巧与应用
装饰器是Python中一种强大的编程工具,本文将重点介绍装饰器的基本概念、语法和常见应用场景,帮助读者更好地理解和利用装饰器提升代码的可复用性和可维护性。

热门文章

最新文章