计算机毕设 基于机器学习的餐厅销量预测 -大数据 python

文章目录

  • 0 前言
  • 餐厅销量预测
  • 模型简介
    • 2.ARIMA模型介绍
      • 2.1自回归模型AR
      • 2.2移动平均模型MA
      • 2.3自回归移动平均模型ARMA
  • 三、模型识别
  • 四、模型检验
    • 4.1半稳性检验
      • (1)用途
      • (1)什么是平稳序列?
      • (2)检验平稳性
    • ◆白噪声检验(纯随机性检验)
      • (1)用途
      • (1)什么是纯随机序列?
      • (2)检验纯随机性
  • 五、Python实战
    • (一)导入工具及数据
    • (二)原始序列的检验
    • (三)一阶差分序列的检验
    • (四)定阶(参数调优)
    • (五)建模与预测
  • 最后


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 **基于机器学习的餐厅销量预测 **

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:3分

餐厅销量预测

模型简介

2.ARIMA模型介绍

2.1自回归模型AR

自回归模型描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测。自回归模型必须满足平稳性的要求。

自回归模型首先需要确定一个阶数p,表示用几期的历史值来预测当前值。p阶自回归模型的公式定义为:
在这里插入图片描述

上式中yt是当前值,u是常数项,p是阶数
ri是自相关系数,et是误差。

自回归模型有很多的限制:
1、自回归模型是用自身的数据进行预测
2、时间序列数据必须具有平稳性
3、自回归只适用于预测与自身前期相关的现象

2.2移动平均模型MA

移动平均模型关注的是自回归模型中的误差项的累加 ,移动平均法能有效地消除预测中的随机波动,q阶自回归过程的公式定义如下:
在这里插入图片描述

2.3自回归移动平均模型ARMA

自回归模型AR和移动平均模型MA模型相结合,我们就得到了自回归移动平均模型ARMA(p,q),计算公式如下:
在这里插入图片描述

三、模型识别

在这里插入图片描述
自相关函数ACF:时间序列观测值与其过去的观测值之间的线性相关性。

偏自相关函数PACF:在给定中间观测值的条件下,时间序列观测值预期过去的观测值之间的线性相关性

拖尾和截尾
拖尾指序列以指数率单调递减或震荡衰减,而截尾指序列从某个时点变得非常小:
在这里插入图片描述

四、模型检验

4.1半稳性检验

(1)用途

建模之前,检验时间序列数据是否满足平稳性,才能进-步建模

(1)什么是平稳序列?

如果时间序列在某-常数附件波动且波 动范围有限,数学表达即常数均值和常数方差,并且延迟k期的序列变量的自协方差和自相关系数是相等的,则称该序列为平稳序列。

(2)检验平稳性

方法一:图检验(偏主观)
时序图检验:在某-常数附近波动且波动范围有限。
自相关图检验:平稳序列具有短期相关性,但随着延迟期数k的增加,自相关系数会快速衰减趋向于零。
方法二:单位根检验
不存在单位根即是平稳序列。

◆白噪声检验(纯随机性检验)

(1)用途

建模之前,检验数据是否满足白噪声检验,非白噪声才能进一步建模。
建模后,检验残差是否满足白噪声检验,通过检验,建模才成立。

(1)什么是纯随机序列?

如果-个序例是纯随机序列,那么序列值之间没有任何关系,则自相关系数为零(理论)或接近于零(实际) .

(2)检验纯随机性

方法- -:图检验
自相关图检验:自相关系数为零或接近于零
QQ图检验:大部分点在直线上,则数据符合正态分布
方法二: D-W检验或L .B统计量检验

五、Python实战

(一)导入工具及数据


​ #导入数据
​ sale=pd.read_excel(“C://Python//分享资料2//arima_data.xls”)
​ print(sale.head())
​ print(sale.info())

查看数据
在这里插入图片描述
在这里插入图片描述

共有37个整数型样本数据

(二)原始序列的检验


​ #时序图观看是否平稳序列
​ plt.figure(figsize=(10,5))
​ sale[‘销量’].plot()
​ plt.legend([‘销量’])
​ plt.show()

在这里插入图片描述

上图为一个单调递增的序列,说明数据是不平稳的。

自相关图


​ # 查看自相关图
​ sale[‘销量’]=sale[‘销量’].astype(‘float’)
​ plot_acf(sale[‘销量’],lags=35).show()
​ #解读:自相关系数长期大于零,没有趋向于零,说明序列间具有很强的长期相关性。

在这里插入图片描述

平稳性检验


​ print(‘原始序列的ADF检验结果为’,ADF(sale[‘销量’]))
​ #解读:P值(第二个)大于显著性水平α(0.05),接受原假设(非平稳序列),说明原始序列是非平稳序列。

在这里插入图片描述

(三)一阶差分序列的检验


​ #方法:单位根检验
​ # print(‘原始序列的ADF检验结果为’,ADF(sale[‘销量’]))

d1_sale=sale.diff(periods=1, axis=0).dropna()
d1_sale=d1_sale['销量']
#时序图
plt.figure(figsize=(10,5))
d1_sale.plot()
plt.show()
#解读:在均值附件比较平稳波动#自相关图
plot_acf(d1_sale,lags=34).show()
#解读:有短期相关性,但趋向于零。#平稳性检验
print('原始序列的ADF检验结果为:',ADF(d1_sale))#解读:P值小于显著性水平α(0.05),拒绝原假设(非平稳序列),说明一阶差分序列是平稳序列。

在这里插入图片描述

在这里插入图片描述
平稳性检验ADF小于0.05,说明一阶差分是平稳的
在这里插入图片描述

白噪声检验


​ print(‘一阶差分序列的白噪声检验结果为:’,acorr_ljungbox(d1_sale,lags=1))#返回统计量、P值
​ #解读:p值小于0.05,拒绝原假设(纯随机序列),说明一阶差分序列是非白噪声。

在这里插入图片描述
p值小于0.05,拒绝原假设(纯随机序列),说明一阶差分序列是非白噪声。

(四)定阶(参数调优)

确定P值和Q值


​ # 参数调优:BIC
​ # # 模型调优的方法:AIC和BIC
​ # # 值越小越好
​ # # 参数调优的方法非常多,用不同方法得出的结论可能不同
​ # from pandas.core.frame import DataFrame
​ # pmax=int(len(d1_sale)/10) #一般阶数不超过length/10
​ # qmax=int(len(d1_sale)/10) #一般阶数不超过length/10
​ # bic_matrix=[]
​ # for p in range(pmax+1):
​ # tmp=[]
​ # for q in range(qmax+1):
​ # try:
​ # tmp.append(ARIMA(sale,(p,1,q)).fit().bic)
​ # except:
​ # tmp.append(None)
​ # bic_matrix.append(tmp)
​ # p,q=DataFrame(bic_matrix).stack().idxmin() #最小值的索引
​ # print(‘用BIC方法得到最优的p值是%d,q值是%d’%(p,q))

# pmax=int(len(d1_sale)/10) #一般阶数不超过length/10
# qmax=int(len(d1_sale)/10) #一般阶数不超过length/10# aic_matrix=[]
# for p in range(pmax+1):
#     tmp=[]
#     for q in range(qmax+1):
#         try:
#             tmp.append(ARIMA(sale,(p,1,q)).fit().aic)
#         except:
#             tmp.append(None)
#     aic_matrix.append(tmp)
# aic_matrix=pd.DataFrame(aic_matrix)
# p,q=aic_matrix.stack().idxmin() #最小值的索引
# print('用AIC方法得到最优的p值是%d,q值是%d'%(p,q))

用AIC和BIC方法得到的最优的P值和Q值为0,1

(五)建模与预测


​ #构建模型
​ model=ARIMA(sale[‘销量’],(0,1,1)).fit()
​ #查看模型报告
​ print(model.summary2())

在这里插入图片描述

残差检验


​ #残差检验
​ #自相关图
​ resid=model.resid
​ plot_acf(resid,lags=35).show()

#解读:有短期相关性,但趋向于零。#偏自相关图
plot_pacf(resid,lags=20).show()#偏自相关图
plot_pacf(resid,lags=35).show()
# 

在这里插入图片描述

如图所示一阶,二阶,三阶都是非常小的数,说明它们之间的相关性比较小,可能是一个纯随机序列


​ #qq图:线性即正态分布
​ qqplot(resid, line=‘q’, fit=True).show()
​ #解读:残差服从正态分布,均值为零,方差为常数

在这里插入图片描述

上图可以看出数据均匀的落在直线的周围,说明数据服从正态分布:均值为0,方差为常数,是一个纯随机序列。

预测


​ print(‘未来七天的销量数据:\n’)
​ print(model.forecast(7))

在这里插入图片描述


​ #预测
​ # print(‘未来七天的销量数据:\n’)
​ # print(model.forecast(7))
​ forecast=pd.Series(model.forecast(7)[0],index=pd.date_range(‘2015-2-7’,periods=7,freq=‘D’))
​ data=pd.concat((sale,forecast),axis=0)
​ data.columns=[‘日期’,‘销量’,‘未来7天销量’]
​ plt.figure(figsize=(10,5))
​ data[[‘销量’,‘未来7天销量’]].plot()
​ plt.show()

在这里插入图片描述

最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/113963.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9. 解谜游戏

目录 题目 Description Input Notes 思路 暴力方法 递归法 注意事项 C代码(递归法) 关于DFS 题目 Description 小张是一个密室逃脱爱好者,在密室逃脱的游戏中,你需要解开一系列谜题最终拿到出门的密码。现在小张需要打…

海面漂浮物垃圾识别检测算法

海面漂浮物垃圾识别检测算法通过yolo系列网络框架模型算法,海面漂浮物垃圾识别检测算法一旦识别到海面的漂浮物垃圾,海面漂浮物垃圾识别检测算法立即发出预警信号。目标检测架构分为两种,一种是two-stage,一种是one-stage&#xf…

IDEA全局统一设置Maven

原来每次打开新建的项目都需要经过 File-> Settings 重新配置maven,这样很不爽 然而经过 File-> New Projects Setup -> Settings for New Projects 后,再如上图配置后就全局设置好了

C语言控制语句——循环语句

什么是循环 重复执行代码 为什么需要循环 循环的实现方式 whiledo…whilefo while语句 语法格式&#xff1a; while (条件) {循环体…… }需求&#xff1a;跑步5圈 示例代码&#xff1a; #include <stdio.h>int main() {// 需求跑步5圈// 1. 条件变量的定义int i 1;…

头歌MYSQL——课后作业6 函数

第1关&#xff1a;数值函数 任务描述 本关任务&#xff1a;对表达式取整 相关知识 四舍五入的函数 ROUND(X,D) 返回X&#xff0c;其值保留到小数点后D位&#xff0c;而第D位的保留方式为四舍五入。 若D的值为0,则对小数部分四舍五入。 若将D设为负值&#xff0c;保留X值小数…

研磨设计模式day14模板方法模式

目录 场景 原有逻辑 有何问题 解决方案 解决思路 代码实现 重写示例 模板方法的优缺点 模板方法的本质 何时选用 场景 现在模拟一个场景&#xff0c;两个人要登录一个系统&#xff0c;一个是管理员一个是用户&#xff0c;这两个不同身份的登录是由后端对应的两个接…

lnmp架构-PHP

08 PHP源码编译 09 php初始化配置 nginx 的并发能力强 phpinfo函数 就是 显示php信息 10 php的功能模块 编译memcache模块 php的动态模块方式 mamcache 就是内存 直接从内存中命中 所以性能非常好 但是 这还不是最好的方式 工作流程 关键看后端的 php 什么时候处理完 mamcac…

五、多表查询-3.4连接查询-联合查询union

一、概述 二、演示 【例】将薪资低于5000的员工&#xff0c;和 年龄大于50岁的 员工全部查询出来 1、查询薪资低于5000的员工 2、查询年龄大于50岁的员工 3、将薪资低于5000的员工&#xff0c;和 年龄大于50岁的 员工全部查询出来&#xff08;把上面两部分的结果集直接合并起…

Unity碰撞检测(3D和2D)

Unity碰撞检测3D和2D 前言准备材料3D2D 代码3D使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 2D使用OnCollisionEnter2D()进行碰撞Collider2D状态代码 使用OnTriggerEnter2D()进行碰撞Collider2D状态代码 区别3D代码OnCollisi…

力扣141. 环形链表

141. 环形链表 简单 2K 相关企业 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链…

gRPC-Gateway 快速实战

今天来分享一波 gRPC-Gateway &#xff0c; 之前咱们有分享过什么是 gRPC 及其使用方式&#xff0c;可以看看这些关于 gRPC 的历史文章&#xff1a; gRPC介绍 gRPC 客户端调用服务端需要连接池吗&#xff1f; gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I 今天主要是分…

React面向组件编程

往期回顾&#xff1a;# React基础入门之虚拟Dom【一】 面向组件编程 react是面向组件编程的一种模式&#xff0c;它包含两种组件类型&#xff1a;函数式组件及类式组件 函数式组件 注&#xff1a;react17开始&#xff0c;函数式组件成为主流 一个基本的函数组件长这个样子 …

Meta语言模型LLaMA解读:模型的下载部署与运行代码

文章目录 llama2体验地址模型下载下载步骤准备工作什么是Git LFS下载huggingface模型 模型运行代码 llama2 Meta最新语言模型LLaMA解读&#xff0c;LLaMA是Facebook AI Research团队于2023年发布的一种语言模型&#xff0c;这是一个基础语言模型的集合。 体验地址 体验地址 …

Nacos基础(2)——nacos的服务器和命名空间 springBoot整合nacos 多个nacos配置的情况

目录 引出nacos服务器和命名空间Nacos服务器命名空间 springBoot整合nacosspringcloud Alibaba 版本与springcloud对应关系引包配置maincontroller 报错以及解决【报错】错误&#xff1a;缺少服务名称报错&#xff1a;9848端口未开放 启动测试引入多个nacos配置多个配置的情况没…

Linux土遁术之监测监测进程打开文件

分析问题过程中&#xff0c;追踪进程打开的文件可以在许多不同情况下有用&#xff0c;体现在以下几个方面&#xff1a; 故障排除和调试&#xff1a; 当程序出现问题、崩溃或异常行为时&#xff0c;追踪进程打开的文件可以帮助您找出问题的根本原因。这有助于快速定位错误&…

手机盖板IR油墨透光率检测仪T03

手机盖板作为手机最外层玻璃面板&#xff0c;其加工一般有落料、倒边、抛光、镀膜、丝印等多道加工工序组成&#xff0c;其中任何一个工序出现差错&#xff0c;都有可能导致手机盖板产生缺陷&#xff0c;例如漏油、透光、IR孔不良、视窗划伤、油墨区划伤、內污、边花等&#xf…

【java安全】FastJson反序列化漏洞浅析

文章目录 【java安全】FastJson反序列化漏洞浅析0x00.前言0x01.FastJson概述0x02.FastJson使用序列化与反序列化 0x03.反序列化漏洞0x04.漏洞触发条件0x05.漏洞攻击方式JdbcRowSetImpl利用链TemplatesImpl利用链**漏洞版本**POC漏洞分析 【java安全】FastJson反序列化漏洞浅析 …

Ansible 自动化运维工具的使用

目录 一、Ansible简介 Ansible 总结 二、Ansible 的安装和使用 下载 使用 三、Ansible命令和模块 1.命令格式 2.命令行模块 &#xff08;1&#xff09;command 模块 &#xff08;2&#xff09;shell 模块 &#xff08;3&#xff09;cron 模块 present添加 absent删…

高速公路自动驾驶汽车超车控制方法研究

目录 摘要 ............................................................................................................ I Abstract ...................................................................................................... II 目录 ...............…

图转超图 Graph convert toHypergraph

图转超图 DHT 介绍那么它有啥用呢&#xff1f; 这个实在太好玩了&#xff0c;参考的这个论文&#xff1a; EHGNN 采用的方法叫 Dual Hypergraph Transformation (DHT)&#xff0c;主要就是把一个 graph 转为 hypergraph DHT 介绍 如何将 graph 转 hypergraph 的呢&#xff1…