基于Prophet时间序列的监测值预测

 留全部代码备份

通过facebook开源模型Prophet对未来时间内某基坑变形监控值进行预测,但该模型好像并不适用于这种施工过程中的数据预测,但是至少能预测,交差总没问题吧。预测10天。

import pandas as pd
from matplotlib import pyplot as plt
from fbprophet import Prophet
import numpy as np
import matplotlib
import tkinter as tk
from  tkinter import ttk
from matplotlib.pylab import mpl
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2Tk
from mpldatacursor import datacursor
import datetime
import time
import threading  
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
plt.rcParams['font.sans-serif'] = ['SimHei']
#  用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False
def forecast(ax2):# 用来正常显示负号df = pd.read_csv('data.csv')df.head()m = Prophet(daily_seasonality=True)m.fit(df)future = m.make_future_dataframe(periods=10)future.tail()forecast = m.predict(future)forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()alltime = forecast['ds']histtime = m.history['ds']futuretime = alltime[m.params['Y'].size:]alldata = forecast['yhat']histdata = m.history['y']futuredata = alldata[m.params['Y'].size:]xlabel='日期'ylabel='监测值'figsize=(10, 6)fig = plt.figure(facecolor='w', figsize=figsize)ax2.clear()line1, = ax2.plot(histtime, histdata, marker='+',ls='-', c='#0072B2')ax2.plot([histtime[histtime.size-1],futuretime[histtime.size]], [histdata[histdata.size-1],futuredata[histdata.size]], ls='-', c='#F072B2')line2, = ax2.plot(futuretime, futuredata, marker='+',ls='-', c='#F072B2')ax2.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)ax2.set_xlabel(xlabel)ax2.set_ylabel(ylabel)ax2.legend(handles = [line1, line2,], labels = ['历史值', '预测值'], loc = 'best')fig.tight_layout()return [fig,[histtime,histdata,futuretime,futuredata]]def update_tk(tk_root,ax,canvas):tk_root.title('预测计算中...')[figure,data] = forecast(ax)canvas.draw_idle()fm2 =tk_root.children['!frame2']fm21 = fm2.children['!frame']scrollBar22 = fm21.children['!scrollbar']treehist = fm21.children['!treeview']histtime = np.array(data[0],dtype=np.datetime64).tolist()for i in range(len(histtime)):treehist.insert("",'end',text="" ,values=(i+1,time.strftime("%Y-%m-%d",time.localtime(histtime[i]/1000000000)),data[1][i])) #插入数据,fm22 = fm2.children['!frame2']treefutrue = fm22.children['!treeview']scrollBar22 = fm22.children['!scrollbar']futuretime = np.array(data[2],dtype=np.datetime64).tolist()futuredata = np.array(data[3],dtype=np.float64).tolist()for i in range(len(futuretime)):treefutrue.insert("",'end',text="" ,values=(i+1,time.strftime("%Y-%m-%d",time.localtime(futuretime[i]/1000000000)),futuredata[i])) #插入数据,scrollBar22.config(command=treefutrue.yview)tk_root.title('检测值预测完成')if __name__ == '__main__':root = tk.Tk()root.title('检测值预测窗口')fm1 = tk.Frame(root)# 进入消息循环xlabel='日期'ylabel='监测值'figsize=(10, 6)figure = plt.figure(facecolor='w', figsize=figsize)ax2 = figure.add_subplot(111)ax2.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)ax2.set_xlabel(xlabel)ax2.set_ylabel(ylabel)figure.tight_layout()canvas=FigureCanvasTkAgg(figure,fm1)canvas.draw()  #以前的版本使用show()方法,matplotlib 2.2之后不再推荐show()用draw代替,但是用show不会报错,会显示警告canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=tk.YES)#把matplotlib绘制图形的导航工具栏显示到tkinter窗口上toolbar =NavigationToolbar2Tk(canvas, fm1) #matplotlib 2.2版本之后推荐使用NavigationToolbar2Tk,若使用NavigationToolbar2TkAgg会警告toolbar.update()canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=tk.YES)fm1.pack(side=tk.LEFT, fill=tk.BOTH, expand=tk.YES)fm2 = tk.Frame(root)fm21 = tk.Frame(fm2)scrollBar21 = tk.Scrollbar(fm21)scrollBar21.pack(side=tk.RIGHT, fill=tk.Y)treehist=ttk.Treeview(fm21,show="headings",yscrollcommand=scrollBar21.set)#表格treehist["columns"]=("id","time","data")treehist.column("id",width=30)   #表示列,不显示treehist.column("time",width=100)   #表示列,不显示treehist.column("data",width=100)treehist.heading("id",text="序号")  #显示表头        treehist.heading("time",text="历史日期")  #显示表头treehist.heading("data",text="历史监测值")histtime = []histdata = []for i in range(len(histtime)):treehist.insert("",'end',text="" ,values=(i+1,time.strftime("%Y-%m-%d",time.localtime(histtime[i]/1000000000)),histdata[i])) #插入数据,treehist.pack(side=tk.TOP, fill=tk.BOTH, expand=1)fm21.pack(side=tk.LEFT, fill=tk.BOTH, expand=tk.YES)scrollBar21.config(command=treehist.yview)fm22 = tk.Frame(fm2)scrollBar22 = tk.Scrollbar(fm22)scrollBar22.pack(side=tk.RIGHT, fill=tk.Y)treefutrue=ttk.Treeview(fm22,show="headings",yscrollcommand=scrollBar22.set)#表格treefutrue["columns"]=("id","time","data")treefutrue.column("id",width=30)   #表示列,不显示treefutrue.column("time",width=100)   #表示列,不显示treefutrue.column("data",width=100)treefutrue.heading("id",text="序号")  #显示表头    treefutrue.heading("time",text="预测日期")  #显示表头treefutrue.heading("data",text="预测监测值")futuretime = []futuredata = []for i in range(len(futuretime)):treefutrue.insert("",'end',text="" ,values=(i+1,time.strftime("%Y-%m-%d",time.localtime(futuretime[i]/1000000000)),futuredata[i])) #插入数据,treefutrue.pack(side=tk.TOP, fill=tk.BOTH, expand=1)fm22.pack(side=tk.RIGHT, fill=tk.BOTH, expand=tk.YES)scrollBar22.config(command=treefutrue.yview)fm2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=tk.YES)th=threading.Thread(target=update_tk,args=(root,ax2,canvas,))  th.setDaemon(True)#守护线程  th.start()  root.mainloop() 

结果如下图:

 

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

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

相关文章

facebook时间序列预测算法prophet解读+实战

facebook时间序列预测算法prophet解读实战 原理解读一、时间序列的分解二、趋势项模型基于逻辑回归的趋势项定义变点(change point) 基于线性回归的趋势项变点的选择 三、季节性趋势四、节假日影响 模型实战 原理解读 prophet与常用的自回归时间序列预测…

Kaggle系列之预测泰坦尼克号人员的幸存与死亡(随机森林模型)

Kaggle是开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台,本节是对于初次接触的伙伴们一个快速了解和参与比赛的例子,快速熟悉这个平台。当然提交预测结果需要注册,这个可能需要科学上网了。 我们选择一个预测的入…

【时间序列预测】人口数量预测神经网络程序

下载完整代码 clc;clear; %导入1949年至2010年人口数据 dataimportdata(population_data.txt); lag3; %利用前3年数据做为输入,去预测下一年人口数量 nlength(data); %计算数据长度 %% %准备输入和输出数据 inputszeros(lag,n-lag); for i1:n-lag inpu…

Prophet:一种大规模时间序列预测模型

前言 Prophet是由facebook开发的开源时间序列预测程序,擅长处理具有季节性特征大规模商业时间序列数据。本文主要介绍了Prophet模型的设计原理,并与经典的时间序列模型ARIMA进行了对比。 1. Prophet模型原理 Prophet模型把一个时间序列看做由3种主要成分…

时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer)

时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer) Arima1. 算法原理2. 算法实现 Prophet1. 优点2. 算法实现3.算法api实现(fbprophet调api) Nbeats1. Nbeats优点2. Nbeats模型结构 NbeatsXInformer参考&#xff…

Prophet 时间序列预测

Prophet 允许使用具有指定承载能力的物流增长趋势模型进行预测。 我们必须在列中指定承载能力cap。在这里,我们将假设一个特定的值,但这通常是使用有关市场规模的数据或专业知识来设置的。 # Python df[cap] 8.5需要注意的重要事项是cap必须为数据框中…

时间序列预测方法之 DeepAR

本文链接:个人站 | 简书 | CSDN 版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。 最近打算分享一些基于深度学习的时间序列预测方法。这是第一篇。 DeepAR 是 Amazon 于 2017 年提出的基于深度学习的时间序列预…

【时间序列】初识时间序列预测神器 NeuralProphet 实战预测股票指数

历经神奇的2022年,终于迎来曙光的2023年,新的一年,MyEncyclopedia 会和小伙伴们一同学习思考实践。长风破浪会有时,直挂云帆济沧海!共勉之 NeuralProphet深度学习Prophet NeuralProphet 负有盛名,是 Facebo…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测

时序预测 | Python实现TCN时间卷积神经网络时间序列预测 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测预测效果基本介绍环境准备模型描述程序设计学习小结参考资料预测效果 基本介绍 递归神经网络 (RNN),尤其是 LSTM,非常适合时间序列处理。 作为研究相关技术…

使用sklearn.ensemble.RandomForestRegressor和GridSearchCV进行成人死亡率预测

原文链接:https://blog.csdn.net/weixin_44491423/article/details/127011461 本文借鉴博主hhhcbw实现方法完成随机森林回归预测成人死亡率,使用训练数据测试模型的最优得分R20.8161,在测试集上得分R20.5825 成年人死亡率指的是每一千人中15岁…

基于TCN时间序列预测Python程序

基于TCN预测模型 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,MAPE等) 5、数据从excel文件中读取,更换简单…

时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测

时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测 目录 时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测预测效果基本介绍环境配置程序设计模型效果参考资料预测效果 基本介绍 使用时间注意卷积神经网络进行…

AI预测死亡时间,准确率95%

(本内容转载自公众号“科技与Python”) 日前,谷歌新出炉的一项研究报告称,该公司已开发出一种新人工智能(AI)算法,可预测人的死亡时间,且准确率高达95%。最近,谷歌的这项研究发表在了《自然》杂…

FACEBOOK 时间序列预测算法 PROPHET 的研究

1.思想 在时间序列分析领域,有一种常见的分析方法叫做时间序列的分解(Decomposition of Time Series),它把时间序列 分成几个部分,分别是季节项 ,趋势项 ,剩余项 。也就是说对所有的 &#xff…

python 用LSTM预测时间序列之预测新冠肺炎疫情

用到的模块 import numpy import matplotlib.pyplot as plt from pandas import read_csv import math from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from sklearn.metrics import mean_squared_error from keras.call…

基于self-attention-TCN时间序列预测Python程序

基于self-attention-TCN时间序列预测Python程序 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,M…

Kaggle_Titanic生存预测 -- 详细流程吐血梳理

作者: 大树先生 博客: http://blog.csdn.net/koala_tree 知乎:https://www.zhihu.com/people/dashuxiansheng GitHub:https://github.com/MrLeeTree 2017 年 12 月 5 日 一直想在Kaggle上参加一次比赛,奈何被各种事情所…

python攻陷米哈游《元神》数据?详情请看文章。。

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 《原神》是由米哈游自研的一款全新开放世界冒险RPG。 里面拥有许多丰富得角色,让玩家为之着迷~ 今天,我们就来用python探索一下原神游戏角色信息! 标题大家看看就好了哈~&#xff08…

米哈游技术总监详解《原神》画面效果的技术实现

11月17日,中国Unity线上技术大会游戏专场迎来米哈游技术总监弋振中的分享,此次他围绕“从手机走向主机-《原神》主机版渲染技术”为主题,细致地讲解了《原神》在主机上渲染技术实现的重点内容。 以下是演讲内容(有节选&#xff09…

原神反调试分析

打开CE,打开原神启动器。 至此,游戏未加载驱动。启动器可以被CE正常读写。 打开原神,CE中选择YuanShen.exe,发现原神并不能被读写。 尝试分析不能读写的原因。 CE调用的读取内存函数是NtReadVirtualMemory 猜测有三种可能 1.NtReadVirtu…