NeuralProphet:基于神经网络的时间序列建模库

简介: NeuralProphet:基于神经网络的时间序列建模库

NeuralProphet是一个python库,用于基于神经网络对时间序列数据进行建模。它建立在PyTorch之上,并受到Facebook Prophet和AR-Net库的极大启发。

NeuralProphet 和 Prophet对比

从库名称中,您可能会问Facebook的Prophet库和NeuralProphet之间的主要区别是什么。根据NeuralProphet的文档,增加的功能是[1]:

  • 使用PyTorch的Gradient Descent进行优化,使建模过程比Prophet快得多
  • 使用AR-Net建模时间序列自相关(也称为序列相关)
  • 自定义损失和指标
  • 具有前馈神经网络的可配置非线性层,
  • 等等

项目维护者

基于该项目的GitHub页面,该项目的主要维护者是斯坦福大学的Oskar Triebe,Facebook和莫纳什大学的合作。

安装

该项目处于测试阶段,因此,如果您要在生产环境中使用此库,我建议您谨慎使用。

不幸的是,在撰写本文时,该库没有pip或conda软件包。只能通过克隆存储库并运行pip install。来安装它。但是,如果要在Jupyter Notebook环境中使用该软件包,则应安装其实时版本pip install . 这将提供更多功能,例如使用plot_live_loss()实时训练和验证损失。

gitclonehttps://github.com/ourownstory/neural_prophetcdneural_prophetpipinstall .[live]

我建议创建一个新环境(conda或venv),并从新环境安装NeuralProphet软件包,让安装程序处理所有依赖项(它具有Pandas,Jupyter Notebook,PyTorch作为依赖项)。

现在我们已经安装了软件包,让我们开始吧!

案例分析实践

在这里,我使用在Kaggle上的2013年至2017年德里的每日气候数据。首先,让我们导入主要包。

importpandasaspdfromneuralprophetimportNeuralProphet

然后,我们可以将数据读取到Panda DataFrame中。NeuralProphet对象期望时间序列数据具有一个名为ds的日期列,而我们希望将其预测为y。

#Dataisfromhttps://www.kaggle.com/sumanthvrao/daily-climate-time-series-datadf=pd.read_csv("./DailyDelhiClimateTrain.csv", parse_dates=["date"])
df=df[["date", "meantemp"]]
df.rename(columns={"date": "ds", "meantemp": "y"}, inplace=True)

现在,让我们初始化模型,为NeuralProphet对象定义的所有默认参数,包括有关某些参数的其他信息。这些是您可以在模型中配置的超参数。当然,如果您打算使用默认变量,则只需执行model = NeuralProphet()。

#model=NeuralProphet() ifyou're using default variables below.model = NeuralProphet(growth="linear", # Determine trend types: 'linear', 'discontinuous', 'off'changepoints=None, # list of dates that may include change points (None -> automatic )n_changepoints=5,changepoints_range=0.8,trend_reg=0,trend_reg_threshold=False,yearly_seasonality="auto",weekly_seasonality="auto",daily_seasonality="auto",seasonality_mode="additive",seasonality_reg=0,n_forecasts=1,n_lags=0,num_hidden_layers=0,d_hidden=None,     # Dimension of hidden layers of AR-Netar_sparsity=None, # Sparcity in the AR coefficientslearning_rate=None,epochs=40,loss_func="Huber",normalize="auto", # Type of normalization ('minmax', 'standardize', 'soft', 'off')impute_missing=True,log_level=None, # Determines the logging level of the logger object)

配置模型及其超参数后,我们需要训练模型并进行预测。让我们对温度进行一年的预测。

metrics=model.fit(df, validate_each_epoch=True, freq="D")
future=model.make_future_dataframe(df, periods=365, n_historic_predictions=len(df))
forecast=model.predict(future)

您可以通过调用model.plot(forecast)来简单地绘制预测,如下所示:

fig, ax=plt.subplots(figsize=(14, 10))
model.plot(forecast, xlabel="Date", ylabel="Temp", ax=ax)
ax.set_title("Mean Temperature in Delhi", fontsize=28, fontweight="bold")

640.png

上面显示了一年的预测图,其中从2017-01-01到2018-01-01之间的时间段是预测。可以看出,预测图类似于历史时间序列。它既捕获了季节性,又捕获了线性趋势的缓慢增长。

也可以通过调用model.plot_parameters()来绘制参数。

640.png

使用平均绝对误差(MAE)的模型损失如下图所示。您也可以使用“平滑的L1损失”功能。

fig, ax=plt.subplots(figsize=(14, 10))
ax.plot(metrics["MAE"], 'ob', linewidth=6, label="Training Loss")  
ax.plot(metrics["MAE_val"], '-r', linewidth=2, label="Validation Loss")
#Youcanusemetrics["SmoothL1Loss"] andmetrics["SmoothL1Loss_val"] too.

640.png

总结

在本文中,我们讨论了NeuralProphet,这是一个基于神经网络对时间序列进行建模的python库。该库使用PyTorch作为后端。作为案例研究,我们为德里的每日气候时间序列数据创建了一个预测模型,并进行了一年的预测。使用此库的一个优点是其语法与Facebook的Prophet库类似。

您可以在GitHub上找到此博客文章的Jupyter笔记本。谢谢阅读!

https://github.com/e-alizadeh/medium/blob/master/notebooks/NeuralProphet/neural_prophet.ipynb

目录
相关文章
|
3天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
110 80
|
2月前
|
机器学习/深度学习 数据采集 存储
时间序列预测新突破:深入解析循环神经网络(RNN)在金融数据分析中的应用
【10月更文挑战第7天】时间序列预测是数据科学领域的一个重要课题,特别是在金融行业中。准确的时间序列预测能够帮助投资者做出更明智的决策,比如股票价格预测、汇率变动预测等。近年来,随着深度学习技术的发展,尤其是循环神经网络(Recurrent Neural Networks, RNNs)及其变体如长短期记忆网络(LSTM)和门控循环单元(GRU),在处理时间序列数据方面展现出了巨大的潜力。本文将探讨RNN的基本概念,并通过具体的代码示例展示如何使用这些模型来进行金融数据分析。
404 2
|
18天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
1月前
|
机器学习/深度学习
NeurIPS 2024:标签噪声下图神经网络有了首个综合基准库,还开源
NoisyGL是首个针对标签噪声下图神经网络(GLN)的综合基准库,由浙江大学和阿里巴巴集团的研究人员开发。该基准库旨在解决现有GLN研究中因数据集选择、划分及预处理技术差异导致的缺乏统一标准问题,提供了一个公平、用户友好的平台,支持多维分析,有助于深入理解GLN方法在处理标签噪声时的表现。通过17种代表性方法在8个常用数据集上的广泛实验,NoisyGL揭示了多个关键发现,推动了GLN领域的进步。尽管如此,NoisyGL目前主要适用于同质图,对异质图的支持有限。
41 7
|
3月前
|
JavaScript 前端开发 API
网络请求库 – axios库
网络请求库 – axios库
211 60
|
2月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
3月前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
127 3

热门文章

最新文章