天气|拓端数据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()
文章图片
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)
预测测试数据中的异常值
定义测试数据 。 重要的是 , 测试数据的时间与训练数据一致 。 下面我们通过比较测试数据框的前几行和训练数据框的最后几行来检查这一点 。
- df_T_test = pd.DataFrame(data=https://www.sohu.com/a/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时间序列聚类方法对股票价格时间序列聚类
【天气|拓端数据tecdat:Python中用Prophet模型对天气时间序列进行预测与异常检测】9.python3用arima模型进行时间序列预测
推荐阅读
- 区块|面向2030:影响数据存储产业的十大应用(下):新兴应用
- 选型|数据架构选型必读:2021上半年数据库产品技术解析
- 殊荣|蝉联殊荣!数梦工场荣获DAMA2021数据治理三项大奖
- 数据|数智安防时代 东芝硬盘助力智慧安防新赛道
- 平台|数梦工场助力北京市中小企业公共服务平台用数据驱动业务创新
- 数据|中标 | 数梦工场以数字新动能助力科技优鄂
- 建设|数据赋能业务,数梦工场助力湖北省智慧应急“十四五”开局
- 市民|大数据、人工智能带来城市新变化 科技赋能深化文明成效
- 趋势|[转]从“智能湖仓”升级看数据平台架构未来方向
- 数据|天问一号火星离子与中性粒子分析仪首个成果面世