拓端tecdat|Python中用Prophet模型对天气时间序列进行预测与异常检测
原文链接:http://tecdat.cn/?p=22673
原文出处:拓端数据部落公众号
方法
Prophet异常检测使用了Prophet时间序列预测。基本的Prophet模型是一个可分解的单变量时间序列模型,结合了趋势、季节性和节假日效应。该模型预测还包括一个围绕估计的趋势部分的不确定性区间。另外,完全的贝叶斯推断也可以以增加计算量为代价。然后,不确定性区间的上限和下限值可以作为每个时间点的离群点阈值。首先,计算从观测值到最近的不确定度边界(上限或下限)的距离。如果观察值在边界内,离群点得分等于负距离。因此,当观测值与模型预测值相等时,离群点得分最低。如果观察值在边界之外,得分等于距离测量,观察值被标记为离群点。然而,该方法的一个主要缺点是,当新的数据进来时,你需要重新调整模型。这对于具有实时检测的应用来说是不可取的。
数据集
这个例子使用了地球化学研究所记录的天气时间序列数据集。该数据集包含14个不同的特征,如空气温度、大气压力和湿度。这些都是在2003年开始,每10分钟收集一次。我们只使用2009年至2016年期间收集的数据。
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
import tensorflow as tf
加载数据集
df = pd.read_csv(csv_path)
df['Date Time'] = pd.to_datetime(df['Date Time'], format='%d.%m.%Y %H:%M:%S')
df.head()
选择子集来测试Prophet模型。
n_prophet = 10000
Prophet模型需要得到一个有两列的DataFrame:一列名为ds,包含时间戳,一列名为y,包含要评估的时间序列。我们只看温度数据。
print(df_T.shape)
df_T.head()
plt.plot(df_T['ds'], df_T['y'])
加载或定义离群检测
你可以将预训练的模型保存在本地目录的文件路径中,并加载检测模型。或者,你也可以从头开始训练一个检测模型。
filepath = 'my_path' # 改为下载模型的目录
if outlier_detector: # 加载预训练的离群检测器filepath = os.path.join(filepath, detector_name)
else: # 初始化、拟合并保存离群检测od.fit(df_T)
请查看文档以及原始的Prophet文档,了解如何定制基于Prophet的异常值检测器,并添加季节性因素、假期、选择饱和逻辑增长模型或应用参数正则化。
预测测试数据中的异常值
定义测试数据。重要的是,测试数据的时间与训练数据一致。下面我们通过比较测试数据框的前几行和训练数据框的最后几行来检查这一点。
df_T_test = pd.DataFrame(data=d)
df_T.tail()
预测测试数据的异常值。
predict(df_T_test
)
结果可视化
我们可以用Prophet将我们的预测结果可视化。包括历史预测。
model.predict(future)
model.plot(forecast)
我们还可以绘制预测中不同成分的细分。预测的不确定性区间是由外推趋势的MAP估计值决定的。
plot_component(forecast)
很明显,我们对未来的预测越远,决定离群值阈值的不确定性区间就越大。
让我们把实际数据与离群点阈值的上限和下限预测值叠加起来,检查我们预测的离群点在哪里。
plot(x='ds', y=['y', 'yhat', 'yhat_upper', 'yhat_lower'])
异常点的得分和预测。
np.zeros(n_periods)
plot(x='ds', y=['score', 'threshold'])
当我们进一步预测未来时,随着不确定性的增加,离群点的分数自然呈下降趋势。
让我们来看看一些个别的离群值。
outlier = fcst.loc[fcst['score'] > 0]
print((outlier.shape[0]))
最受欢迎的见解
1.在python中使用lstm和pytorch进行时间序列预测
2.python中利用长短期记忆模型lstm进行时间序列预测分析
3.使用r语言进行时间序列(arima,指数平滑)分析
4.r语言多元copula-garch-模型时间序列预测
5.r语言copulas和金融时间序列案例
6.使用r语言随机波动模型sv处理时间序列中的随机波动
7.r语言时间序列tar阈值自回归模型
8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类
9.python3用arima模型进行时间序列预测
拓端tecdat|Python中用Prophet模型对天气时间序列进行预测与异常检测相关推荐
- 拓端tecdat荣获掘金社区入驻新人奖
2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...
- 拓端tecdat荣获2022年度51CTO博主之星
相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...
- 拓端tecdat|bilibili视频流量数据潜望镜
最近我们被客户要求撰写关于bilibili视频流量的研究报告,包括一些图形和统计输出. 最新研究表明,中国有超过7亿人在观看在线视频内容.Bilibili,被称为哔哩哔哩或简称为B站,是中国大陆第二个 ...
- python 时间序列prophet 模型分析_时间序列预测模型Prophet[Facebook]
Forecasting at Scale Abstract 预测是十分常见的数据科学任务,可用于企业的容量规划,目标设定,异常检测等.当时间序列多种多样并且缺少专家经验时,时间序列预测就变得尤其困难. ...
- ML.NET 1.1 发布,模型构建器升级和新的异常检测算法
https://www.toutiao.com/a6703297861997560328/ 2019-06-17 08:59:15 ML.NET 1.1 已发布.ML.NET 是一个跨平台的机器学习框 ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- Prophet模型的简介以及案例分析
目录 前言 一.Prophet安装以及简介 二.适用场景 三.算法的输入输出 四.算法原理 五.使用时可以设置的参数 六.学习资料参考 七.模型应用 7-1.股票收盘价格预测 7-1-1.导入相关库 ...
最新文章
- Guice系列之用户指南(十)
- Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException奇葩解决方案
- centos6.x 安装elasticsearch6.x步骤
- 内核虚拟机原理|网络可编程
- 视图之二--视图中数据的更新
- [渝粤教育] 西南科技大学 数控机床与编程 在线考试复习资料
- 群里又会python的吗_自从会了Python在群里斗图就没输过,Python批量下载表情包!...
- Flink AggOperator 增量聚合函数
- 农村新农保加钱可不可以转城市社保?
- VB小技巧 文本框中屏蔽系统右键菜单用自定义菜单代替自带右键菜单
- python模拟鼠标点击脚本_python模拟鼠标点击和键盘输入的操作
- ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1.
- 极限的无穷小和无穷大
- 四川岳池2021年高考成绩查询,2021年岳池中学升学率高不高?
- [深度学习 - 发现有趣项目] masking-gan 人脸生成笑脸表情
- 【windows】系统主机名、IP地址、Mac 地址、硬盘序列号
- Docker 安装 TensorFlow GPU 实战
- 基于Tor网络的HTTP代理搭建过程
- matlab优化设计凸轮,基于MATLAB的配气凸轮优化设计
- 如何用Unity3D实现游戏中的角色换装?