prophet时间序列模型水质预测应用

前言

此前已经分析了,ARIMA 模型在水质预测中的应用,今天用 prophet 模型测试下在水质预测中的效果。

Prophet 简介

Prophet 是 Facebook 于2017年开源的一个时间序列预测框架,特别适合于处理具有明显趋势性和季节性的数据。该模型设计初衷是为了让非专业的数据科学家也能轻松上手进行复杂的时间序列分析,同时也能满足专业人士对于模型灵活性和准确性的需求,总之,就很香。

Prophet 模型特点

易用性:Prophet 提供了一个高度封装的 API,用户只需要提供时间戳(ds,通常为日期)和观测值(y,即随时间变化的目标变量),就可以快速构建预测模型,而无需深入理解复杂的统计或机器学习理论。 自动特征提取:模型自动识别并处理时间序列中的趋势(长期增长或下降)、季节性(如周、月、年等周期性模式)以及节假日效应。用户可以轻松地添加自定义的季节性模式和节假日信息。
灵活性:模型允许用户调整多种参数来控制预测的行为,比如趋势的平滑程度、季节性模式的复杂度等,以适应不同数据的特点。
异常值和缺失值处理:Prophet模型对于数据中的异常值和缺失值具有一定的鲁棒性,能够在不影响整体预测的情况下处理这些问题。
changepoints:模型能够自动检测并适应时间序列中的变化点,即数据中的非平稳部分,这对于预测具有突然变化的时间序列尤为重要。
可视化:Prophet还提供了丰富的可视化工具,帮助用户直观地理解模型的各个组成部分(如趋势、季节性)以及预测结果,便于模型诊断和结果解释。
Python 和 R 支持:Prophet 在 Python 和 R 两种语言中都有实现,方便不同背景的用户使用。

从上面的特点看出,完美适配水质预测。

Prophet python 安装

在网上能看到很多奇奇怪怪的安装指令,比如 fbprophet 库,已经不能用了,以官网为准,下面是最新可用的安装方法。

pip install prophet

image.png

Python Prophet 实践

环境准备

import pandas as pd  
from prophet import Prophet  
from prophet.plot import add_changepoints_to_plot  
import numpy as np  
import matplotlib.pyplot as plt

准备数据

每个项目的数据准备不一样,可以是在线数据,也可以是本地数据,具体略过。 数据结构为时间和值,Prophet 格式形式为 ds 和 y。

数据粒径和数据集尺寸

Prophet 非常适合做周期数据,也适应多种粒径,所以无需担心他无法识别小时或者日的尺度, 还有因为他适合做周期数据,因此给数据集时,应给他至少一个周期的数据,不然预测出来效果差很多。 比如同一个站点,同一个因子,给一个月的数据集和一年的数据集结果分别如下图所示: 一个月的数据集预测结果 

Figure_5.png

 一年的数据结果 

Figure_2.png

由上面 2 个图可以看出,完全是天差地别,也能看出这个模型非常厉害,处理周期波动数据非常精准,在一年的尺度下,准确的预测了 4 月后水质将继续升高,并没有被短期下降数据而干扰。

原始数据集预览

综上,我们选择一年的数据集,开始预测。原始数据如下: 

 可以看到数据集质量一般,这也是实际生成环境中的数据,但是 Prophet 能够识别异常值,不用担心他会报错。

模型搭建预览结果

模型接口非常简单,代码如下:

# 初始化Prophet模型  
model = Prophet()  
# 拟合模型  
model.fit(df)  
# 定义未来预测的时间段,例如预测未来7天的水质  
future = model.make_future_dataframe(periods=7)  # 7天预测期  
future.tail()  # 查看预测数据框的末尾几行以确认预测时间段  
# 进行预测  
forecast = model.predict(future)  
# 绘制预测结果  
fig1 = model.plot(forecast)  
plt.title('Water Quality Prediction')  
plt.show()  
# 添加变化点到图表中(如果需要)  
fig2 = model.plot(forecast)  
ax = fig2.gca()  
add_changepoints_to_plot(ax, model, forecast)  
plt.title('Water Quality Prediction with Changepoints')  
plt.show()  
# 打印预测数据框查看预测详情  
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])

预测结果为图 2 所示,变化点如下图,模型将每次突变点都标记出来了。 

Figure_3.png

预测结果 forecast 

image.png

结束语

相比 arima,Prophet 更加简单易用,成熟接口更多,出图预览更方便,本文还没有对添加节假日进行测试,但已经非常够用了。 对比 LSTM,预测时间少非常多,配置也更简单,真的很不错,如果有兴趣可以深入尝试。 
如果有帮助请关注我,点赞收藏支持下。我的微信公众号是[环境猫er],目前关注的人不多,请支持下,谢谢。

python 水质日历热力图_python日历热力图-CSDN博客

python 数据整理与清洗 在水质自动监测数据分析中的应用CSDN博客ChatGPT python 实现水环境可视化_-CSDN博客

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

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

相关文章

领略Java内部类的“内部”

内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中内部类的两个特点: (1) 在外部…

springboot3项目练习详细步骤(第三部分:文章管理模块)

目录 发布文章 接口文档 业务实现 自定义参数校验 项目参数要求 实现思路 实现步骤 文章列表(条件分页) 接口文档 业务实现 mapper映射 更新文章 接口文档 业务实现 获取文章详情 接口文档 业务实现 删除文章 接口文档 业务实现 文章管理业务表结构…

数据可视化训练第6天(美国人口调查获得关于收入与教育背景的数据,并且可视化)

数据来源 https://archive.ics.uci.edu/dataset/2/adult 过程 首先;关于教育背景的部分翻译有问题。 本次使用字典嵌套记录数据,并且通过lambda在sorted内部进行对某个字典的排序,最后用plotly进行绘图 本次提取数据的时候,用到…

ubuntu server 22.04.4 系统安装详细教程

本教程使用vmware workstation 17创建虚拟机进行安装演示,安装方式和真机安装没有区别。 1、下载镜像 下载ubuntu server版本系统镜像,官网下载地址:https://cn.ubuntu.com/download/server/step1 注意:自己下载时需要确认是否是…

MySQL索引的存储结构

2.3.2. 索引存储结构 索引存储结构有堆表和索引组织表两种方式。 堆表和索引组织表有什么区别? 堆表: 数据和索引是分开存放的,索引是排序后的,但堆数据是无序的进行的都是随机访问,索引的叶子节点中存放的是数据在…

基于springboot + vue 实现的简易博客系统

项目效果图 登陆页面 文章列表 发表文章 用户管理 栏目管理 数据统计 后端技术栈后端主要采用了: 1.SpringBoot 2.SpringSecurity 3.MyBatis 4.部分接口遵循Restful风格 5.MySQL 前端技术栈前端主要采用了: 1.Vue 2.axios 3.Elemen…

每周一算法:传递闭包

题目描述 不等式排序 给定 n n n个变量和 m m m个不等式。其中 n n n小于等于 26 26 26,变量分别用前 n n n 的大写英文字母表示。 不等式之间具有传递性,即若 A > B A>B A>B 且 B > C B>C B>C,则 A > C A>C …

GPU prompt

提问: GPU是如何与CPU协调工作的? GPU也有缓存机制吗?有几层?速度差异是多少? GPU渲染流程有哪些阶段?他们的功能分别是什么? Early-Z技术是什么?发生在哪个阶段?这个…

Cocos 2048从创建到发布上线

二、审核通过之后上线流程 代码通过审核之后,会通过站内信和微信消息发送通知,在管理后台,点击提交发布,去备案

ensp简单ac+ap+sta无线配置和脚本

接入交换机与ap连线配置: interface E0/0/5 port link-type trunk port trunk pvid vlan 10 port trunk allow-pass vlan all配置AC的IP配置: [AC]Vlan 2 创建vlan 2 [AC]interface Vlanif 2 进入vlan 2 [AC-Vlanif2]ip address 192.168.80.3 24 设置一个IP地址…

File类~路径、创建文件对象

路径分为相对路径(不带盘符),绝对路径(带盘符) 路径是可以存在的,也可以是不存在的 创建文件对象的三个方法:

IDEA-SpringBoot项目启动类位置错误导致启动报错

文章目录 前言:本文为SpringBoot项目启动类位置错误导致启动报错解决方案 笔者在初学SpringBoot项目时遇到过因启动类位置错误导致项目启动报错现象,总结如下: SpringBoot启动发送请求后遇到如下错误: Postman界面信息&#xff1…

速了解及使用布隆过滤器

布隆过滤器 介绍 概念:是一种高效查询的数据结构 作用:判断某个元素是否在一个集合中。(但是会出现误判的情况) 实现原理 加入元素: 当一个元素需要加入到布隆过滤器中时,会使用一组哈希函数对该元素进…

个人模拟面试java2

文章目录 SQL如何进行优化数据库性能调优1. 性能评估2. 确定调优目标 3. 监控和分析4. 硬件和配置调优5. 数据库设计和模式优化6. 查询优化7. 并发控制8. 缓存策略9. 定期维护10. 监控和持续调优 Redis支持哪些数据类型?Redis如何实现持久化?如何解决Red…

☀️提高生产力:这10个Lambda表达式必须掌握!!!

1.使用Lambda表达式进行集合遍历 ❌ 未使用Lambda表达式: List list Arrays.aslist("apple", "banana", "orange"); for (String fruit : list) {System.out.println(fruit); }✅使用Lambda表达式: List list Arrays.aslist("apple&qu…

Dubbo为何放弃JDK SPI机制:一探究竟

引言 在当今的软件开发领域,随着微服务架构的普及和服务化治理的需要,Dubbo作为一款优秀的分布式服务框架,扮演着至关重要的角色。Dubbo以其强大的功能和易用性成为了众多企业和开发者的首选。然而,在Dubbo的设计中,我…

JVM调优:JVM运行时数据区详解

一、前言 Java运行时数据区域划分,Java虚拟机在执行Java程序时,将其所管理的内存划分为不同的数据区域,每个区域都有特定的用途和创建销毁的时间。 其中,有些区域在虚拟机进程启动时就存在,而有些区域则是随着用户线程…

CANape测量分析标定

CANape创建工程及标定 1 创建工程 1. 创建ape工程 打开CANape软件,创建新的ape工程 2.添加数据库文件 通过添加Device(确定信号源)的方式加载数据库文件 A2L:通过添加CCP、 XCP、VX1000的Device DBC:对总线报文检测 CAN CDD: 诊断功能 Diagnostic 如需导入MAP文件…

16. 封装全屏功能

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>封装全屏功能</title><style>#box {…

js通过视频链接获取视频时长

js通过视频链接获取视频时长 这个函数用提供的URL创建一个新的Video元素&#xff0c;并在loadedmetadata事件被触发时解析一个带有视频持续时间的Promise。它还处理可能发生的任何错误。 注意&#xff0c;Video元素的duration属性是以秒为单位的&#xff0c;因此如果需要&…