计算机毕设 基于机器学习的餐厅销量预测 -大数据 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()

在这里插入图片描述

最后

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day-03 基于TCP的服务器端/客户端

一.理解TCP和UDP TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常见的传输层协议,用于在计算机网络中提供可靠的数据传输。 1.TCP: 连接导向:TCP是一种面向连接的…

(笔记六)利用opencv进行图像滤波

(1)自定义卷积核图像滤波 import numpy as np import matplotlib.pyplot as plt import cv2 as cvimg_path r"D:\data\test6-6.png" img cv.imread(img_path)# 图像滤波 ker np.ones((6, 6), np.float32)/36 # 构建滤波器(卷积…

每天刷题五道RHCSA/1-5道(RedHat8.2)

1.第一题配置网络 nmcli con show #查看⽹卡信息 ​ nmcli con mod Wired connection 1 ipv4.method manual ipv4.addresses 172.25.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.254 #配置ip信息,中间⽤空格隔开 ​ nmcli con up Wired connection…

HCIP学习--扩展知识点

端口镜像-SPAN 抓包软件只能抓取经过本地的网卡的流量 也就是抓取流量只能抓取本设备的流量 [r1]observe-port interface GigabitEthernet 0/0/2 定义一个SPAN的会话,然后定义监控接口(也就是你要用的接口,你连接这个接口来对其他接口抓包…

PXE批量装机

目录 前言 一、交互式 (一)、搭建环境 (二)、配置dhcp服务 (三)、FTP服务 (四)、配置TFTP服务 (五)、准备pxelinx.0文件、引导文件、内核文件 &#…

Java版电子招投标管理系统源码-电子招投标认证服务平台-权威认证

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

汽车售后接待vr虚拟仿真实操演练作为岗位培训的重要工具和手段

汽车虚拟仿真教学软件是一种基于虚拟现实技术的教学辅助工具。它能够模拟真实的汽车环境和操作场景,让学生能够通过虚拟仿真来学习和实践汽车相关知识和技能。与传统的教学方式相比,汽车虚拟仿真教学软件具有更高的视觉沉浸感和互动性,能够更…

YOLOv5 如何计算并打印 FPS

文章用于学习记录 YOLO v5 FPS计算方法修改对应自己数据集的 yaml 文件以及训练好的 pt 文件以及batch-size1, FPS 1000ms/(0.311.91.0)pre-process:图像预处理时间,包括图像保持长宽比缩放和padding填充,通道变换(HWC->CHW&a…

软技能的重要性:在面试中展示团队合作与沟通能力

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

【base64】JavaScriptuniapp 将图片转为base64并展示

Base64是一种用于编码二进制数据的方法&#xff0c;它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中&#xff0c;通过将二进制数据转换为可打印字符的形式进行传输 JavaScript 压缩图片 <html><body><script src"https://code.j…

C#---第二十:不同类型方法的执行顺序(new / virtual / common / override)

本文介绍不同类型的方法&#xff0c;在代码中的执行顺序问题&#xff1a; 构造方法普通方法&#xff08;暂用common代替&#xff09;、虚方法&#xff08;Virtual修饰&#xff09;、New方法&#xff08;new修饰&#xff09;三个优先级相同overide方法&#xff08;会替换virtual…

Crontab定时任务运行Docker容器(Ubuntu 20)

对于一些离线预测任务&#xff0c;或者D1天的预测任务&#xff0c;可以简单地采用Crontab做定时调用项目代码运行项目 Crontab简介&#xff1a; Linux crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的指令。该命令从标准输入设备读取指令&…

重磅!GPT-3.5 Turbo推出微调功能,可以打造专属ChatGPT啦!

昨天的追友套路竟然没人看&#xff0c;太可惜了。虽然我知道大家都想快速成功&#xff0c;而且快速成功的秘诀很简单&#xff1a;MONEY&#xff01;&#xff08;钱&#xff09; 可是大伙缺的反而正是这个。 大清早&#xff0c;刷X&#xff0c;看到了一则推送。 OpenAI宣布推出G…

1.网络空间搜素引擎

网络空间搜素引擎 https://cybermap.kaspersky.com/cn 世界所以带有ip的网络设备互联组成的空间叫做网络空间 地址 &#xff1a;shodan.io 简介 &#xff1a; 这句话还是有点东西得 。 区别&#xff1a; 平常得搜素引擎主要搜网页&#xff0c;shadan可以搜所以带有ip地址…

Jmter生成MD5 jmter使用md5 jmter使用自定义参数 jmter生成自定义参数 jmter编写java代码

Jmter生成MD5 jmter使用md5 jmter使用自定义参数 jmter生成自定义参数 jmter编写java代码 1、创建一个线程组2、创建线程组 http请求3、在 http请求添加前置处理器(BeanShell)4、请求测试 是否生效4.1 GET请求4.2 POST请求 1、创建一个线程组 2、创建线程组 http请求 在线程组…

在外SSH远程连接macOS服务器【cpolar内网穿透】

文章目录 前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

Approaching (Almost) Any Machine Learning Problem中译版

前言 Abhishek Thakur&#xff0c;很多kaggler对他都非常熟悉&#xff0c;2017年&#xff0c;他在 Linkedin 发表了一篇名为Approaching (Almost) Any Machine Learning Problem的文章&#xff0c;介绍他建立的一个自动的机器学习框架&#xff0c;几乎可以解决任何机器学习问题…

AI 绘画Stable Diffusion 研究(十五)SD Embedding详解

大家好&#xff0c;我是风雨无阻。 本期内容&#xff1a; Embedding是什么&#xff1f;Embedding有什么作用&#xff1f;Embedding如何下载安装&#xff1f;如何使用Embedding&#xff1f; 大家还记得 AI 绘画Stable Diffusion 研究&#xff08;七&#xff09; 一文读懂 Stab…

5分钟看懂物料清单(BOM)的用途、类型及管理

管理物料可以提高制造和供应链流程的效率&#xff0c;例如生产、物流、调度、产品成本核算和库存计划。企业通常使用物料清单作为制造产品的组件、材料和流程的中央记录。 物料清单&#xff08;BOM&#xff09;是构建、制造或维修产品或服务所需的原材料、组件和说明的详细列表…

Linux线程控制

目录 一、线程的简单控制 1.多线程并行 2.线程结束 3.线程等待 &#xff08;1&#xff09;系统调用 &#xff08;2&#xff09;返回值 4.线程取消 5.线程分离 二、C多线程小组件 三、线程库TCB 1.tid 2.局部储存 一、线程的简单控制 1.多线程并行 我们之前学过pt…