原文链接:http://tecdat.cn/?p=22673
办法
Prophet异样检测应用了Prophet工夫序列预测。根本的Prophet模型是一个可分解的单变量工夫序列模型,联合了趋势、季节性和节假日效应。该模型预测还包含一个围绕预计的趋势局部的不确定性区间。另外,齐全的贝叶斯推断也能够以减少计算量为代价。而后,不确定性区间的下限和下限值能够作为每个工夫点的离群点阈值。首先,计算从观测值到最近的不确定度边界(下限或上限)的间隔。如果察看值在边界内,离群点得分等于负间隔。因而,当观测值与模型预测值相等时,离群点得分最低。如果察看值在边界之外,得分等于间隔测量,察看值被标记为离群点。然而,该办法的一个次要毛病是,当新的数据进来时,你须要从新调整模型。这对于具备实时检测的利用来说是不可取的。
数据集
这个例子应用了地球化学研究所记录的天气工夫序列数据集。该数据集蕴含14个不同的特色,如空气温度、大气压力和湿度。这些都是在2003年开始,每10分钟收集一次。咱们只应用2009年至2016年期间收集的数据。
import matplotlib.pyplot as pltimport numpy as npimport osimport pandas as pdimport 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模型进行工夫序列预测