暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PYTHON中用PROPHET模型对天气时间序列进行预测与异常检测

拓端数据部落 2022-12-22
801

原文链接: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'\])



点击标题查阅往期内容


python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列


左右滑动查看更多


01

02

03

04



加载或定义离群检测

你可以将预训练的模型保存在本地目录的文件路径中,并加载检测模型。或者,你也可以从头开始训练一个检测模型。

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\]))




点击文末“阅读原文”

获取全文完整代码数据资料


本文选自《PYTHON中用PROPHET模型对天气时间序列进行预测与异常检测》。


点击标题查阅往期内容

python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
R语言时间序列分解和异常检测方法应用案例
R语言指数平滑法holt-winters分析谷歌Google Analytics博客用户访问时间序列数据
R语言Outliers异常值检测方法比较
PYTHON中用PROPHET模型对天气时间序列进行预测与异常检测
R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
matlab使用分位数随机森林(QRF)回归树检测异常值
(数据挖掘)如何用大数据做用户异常行为分析
R语言异常值检测方法比较
时间序列分解和异常检测方法应用案例
matlab使用hampel滤波,去除异常值
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择
R语言离群值处理分析
spss modeler用决策树神经网络预测ST的股票
Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列
R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类


文章转载自拓端数据部落,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论