今天要向大家介绍的是一个超级厉害的 Python 库——NeuralProphet。
NeuralProphet 是 Facebook 核心数据科学团队开发的 Python 库,它将 Prophet 的简单性和神经网络的灵活性结合在一起。
NeuralProphet 是一个易于学习的可解释时间序列预测框架,基于 PyTorch 构建,融合了神经网络和传统时间序列算法,受到了 Facebook Prophet 和 AR-Net 的启发。
只需几行代码,你就能定义、自定义、可视化和评估自己的预测模型。它专为迭代人机交互模型构建而设计,因此你可以快速构建第一个模型,解释结果,改进,重复。由于注重可解释性和定制能力,NeuralProphet 可能不是现成的最准确的模型;因此,请毫不犹豫地进行调整和迭代,直到你满意为止。
NeuralProphet 最适合频率较高(次日)和持续时间较长(至少两个完整周期/年)的时间序列数据。
初次体验
安装库非常简单,只需使用 pip 进行安装即可。
<code>pip install neuralprophet</code>
示例
让我们通过一个示例来了解 NeuralProphet 的工作原理。
在我们的示例中,我们将使用西班牙 4 年来的能源价格数据。
首先,我们导入必要的库并加载数据。
<code>import pandas as pd import matplotlib.pyplot as plt # Load the dataset from the CSV file using pandas df = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv") # Plot the dataset, showing price (y column) over time (ds column) plt.figure(figsize=(15, 5)) plt.plot(df['ds'], df['y']) plt.xlabel('Date') plt.ylabel('Price') plt.title('Energy Price Over Time') plt.show()</code>
注意:NeuralProphet 要求数据集必须是具有特定格式和属性的 pandas 数据帧:
- 时间列必须命名为 “ds”,包含日期时间值。
- 值列必须命名为 “y”,包含浮点值。
接下来,我们创建一个 NeuralProphet 模型并拟合数据。
<code>from neuralprophet import NeuralProphet # Create a NeuralProphet model with default parameters m = NeuralProphet() # Fit the model on the dataset (this might take a bit) metrics = m.fit(df)</code>
为了预测未来的价格,我们需要扩展数据集。在我们的示例中,我们希望创建明年(365 天)的预测。
<code># Create a new dataframe reaching 365 days into the future for our forecast future = m.make_future_dataframe(df, periods=365) # Predict the future forecast = m.predict(future) # Visualize the forecast fig = m.plot(forecast)</code>
预测结果包括趋势、年度和每周季节性等组成部分,它们被组合起来创建最终的预测。
m.plot_parameters(components=["trend", "seasonality"])
NeuralProphet 是一个功能强大的时间序列预测库,结合了 Prophet 的简单性和神经网络的灵活性。凭借其处理复杂模式和非线性关系的能力,NeuralProphet 对于任何处理时间序列数据的数据科学家或分析师来说都是一个极其有价值的工具。
暂无评论内容