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+企业合作,包含华为、京东、美的等知名企业

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

相关文章
|
7月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
8月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
599 0
|
10月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
11月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
474 0
Python 3D数据可视化:7个实用案例助你快速上手
|
机器学习/深度学习 数据可视化 算法
销售易CRM:移动端应用与数据分析双轮驱动企业增长
销售易CRM移动端应用助力企业随时随地掌控业务全局。销售人员可实时访问客户信息、更新进展,离线模式确保网络不佳时工作不中断。实时协作功能提升团队沟通效率,移动审批加速业务流程。强大的数据分析与可视化工具提供深度洞察,支持前瞻性决策。客户行为分析精准定位需求,优化营销策略。某中型制造企业引入后,业绩提升30%,客户满意度提高25%。
|
搜索推荐 算法 程序员
6个案例15分钟让你了解Python套路
Python以其简洁易读的语法,成为编程初学者的首选。本文通过7个经典代码案例,带你快速了解Python编程的核心概念和常用技巧: 1. **九九乘法口诀**:使用嵌套循环打印乘法表。 2. **列表求和**:展示两种方法(for循环和内置函数sum())计算列表元素之和。 3. **素数判断**:编写函数判断一个数是否为素数。 4. **斐波那契数列**:生成指定长度的斐波那契数列。 5. **冒泡排序**:实现简单的冒泡排序算法。 6. **汉诺塔问题**:通过递归解决经典的汉诺塔问题。 这些案例不仅展示了Python的基础语法,更体现了编程思维的重要性,帮助初学者逐步掌握编程套路。
427 2
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
1850 4
数据分析的 10 个最佳 Python 库
|
机器学习/深度学习 数据采集 DataWorks
数据分析经典案例重现:使用DataWorks Notebook 实现Kaggle竞赛之房价预测,成为数据分析大神!
Python是目前当之无愧的数据分析第一语言,大量的数据科学家使用Python来完成各种各样的数据科学任务。本文以Kaggle竞赛中的房价预测为例,结合DataWorks Notebook,完成数据加载、数据探索、数据可视化、数据清洗、特征分析、特征处理、机器学习、回归预测等步骤,主要Python工具是Pandas和SKLearn。本文中仅仅使用了线性回归这一最基本的机器学习模型,读者可以自行尝试其他更加复杂模型,比如随机森林、支持向量机、XGBoost等。
|
数据采集 前端开发 NoSQL
Python编程异步爬虫实战案例
Python编程异步爬虫实战案例
515 2
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。

热门文章

最新文章

推荐镜像

更多